commit 60dffad5839125954cdc11b0702160905590423a Author: Leonardo Bonati Date: Wed Dec 8 20:17:46 2021 +0000 First commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..58bd689 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +._* +*.bkp + +# created by setup-ric.sh script +setup/router.txt +setup/e2term_config.conf + diff --git a/README.md b/README.md new file mode 100644 index 0000000..cc315eb --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# colosseum-near-rt-ric + +Initialization scripts are in the directory `repository`: +- `setup-ric.sh` sets up RIC containers +- `setup-xapp.sh` sets up xApp containers + +See container logs with: +- `docker logs -f container_name` diff --git a/setup-scripts/import-base-images.sh b/setup-scripts/import-base-images.sh new file mode 100755 index 0000000..677a948 --- /dev/null +++ b/setup-scripts/import-base-images.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +images=('bldr-alpine3-go_6-a3.11-rmr3' 'bldr-ubuntu18-c-go_9-u18.04') +images_dir=/root/o-ran_images/ + +# load Docker images in parallel +for i in "${images[@]}"; do + docker load --input ${images_dir}${i}.tar.gz & +done + +# wait for above jobs to finish +wait diff --git a/setup-scripts/setup-lib.sh b/setup-scripts/setup-lib.sh new file mode 100755 index 0000000..34663b0 --- /dev/null +++ b/setup-scripts/setup-lib.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# get sudo if needed +if [ -z "$EUID" ]; then + EUID=`id -u` +fi +SUDO= +if [ ! $EUID -eq 0 ] ; then + SUDO=sudo +fi + +# default IPs and ports +RIC_SUBNET=10.0.2.0/24 +RIC_IP=10.0.2.1 +E2TERM_IP=10.0.2.10 +E2TERM_SCTP_PORT=36422 +E2MGR_IP=10.0.2.11 +DBAAS_IP=10.0.2.12 +DBAAS_PORT=6379 +E2RTMANSIM_IP=10.0.2.15 +XAPP_IP=10.0.2.24 # generic xApp IP + diff --git a/setup-scripts/setup-ric.sh b/setup-scripts/setup-ric.sh new file mode 100755 index 0000000..4d0dcc7 --- /dev/null +++ b/setup-scripts/setup-ric.sh @@ -0,0 +1,193 @@ +#!/bin/sh + +set -x + +# get flags +for ARGUMENT in "$@" +do + KEY=$(echo $ARGUMENT | cut -f1 -d=) + case "$KEY" in + arena) arena=true;; + import) import=true;; + *) + esac +done + +# get RIC interface from cli arguments +if [ $# -eq 0 ] || [ "$import" = false ] ; then + RIC_INTERFACE="can0" +else + if [ "$arena" = true ]; then + RIC_INTERFACE="brric" + else + RIC_INTERFACE=$1 + fi +fi + +export SRC=`dirname $0` +. $SRC/setup-lib.sh + +OURDIR=../setup + +# import base RIC images +if [ "$import" = true ] || [ $(docker image ls -q | wc -l) -eq "0" ]; then + echo "Importing base Docker images" + cd $SRC + ./import-base-images.sh +fi + +cd $OURDIR +tagvers=`git log --pretty=format:"%h" -n 1` + +# build e2term +$SUDO docker image inspect e2term:latest >/dev/null 2>&1 +if [ ! $? -eq 0 ]; then + cd e2/RIC-E2-TERMINATION + $SUDO docker image inspect e2term:$tagvers >/dev/null 2>&1 + if [ ! $? -eq 0 ]; then + $SUDO docker build -f Dockerfile -t e2term:$tagvers . + fi + $SUDO docker tag e2term:$tagvers e2term:latest + $SUDO docker rmi e2term:$tagvers + cd ../.. +fi + +# build e2mgr +$SUDO docker image inspect e2mgr:latest >/dev/null 2>&1 +if [ ! $? -eq 0 ]; then + cd e2mgr/E2Manager + $SUDO docker image inspect e2mgr:$tagvers >/dev/null 2>&1 + if [ ! $? -eq 0 ]; then + $SUDO docker build -f Dockerfile -t e2mgr:$tagvers . + fi + $SUDO docker tag e2mgr:$tagvers e2mgr:latest + $SUDO docker rmi e2mgr:$tagvers + cd ../.. +fi + +# build e2rtmansim +$SUDO docker image inspect e2rtmansim:latest >/dev/null 2>&1 +if [ ! $? -eq 0 ]; then + cd e2mgr/tools/RoutingManagerSimulator + $SUDO docker image inspect e2rtmansim:$tagvers >/dev/null 2>&1 + if [ ! $? -eq 0 ]; then + $SUDO docker build -f Dockerfile -t e2rtmansim:$tagvers . + fi + $SUDO docker tag e2rtmansim:$tagvers e2rtmansim:latest + $SUDO docker rmi e2rtmansim:$tagvers + cd ../../.. +fi + +# build dbaas +$SUDO docker image inspect dbaas:latest >/dev/null 2>&1 +if [ ! $? -eq 0 ]; then + cd dbaas + $SUDO docker build -f docker/Dockerfile.redis -t dbaas:latest . + cd .. +fi + +# remove dangling images +docker rmi $(docker images --filter "dangling=true" -q --no-trunc) 2> /dev/null + +# create a private network for near-real-time RIC +$SUDO docker network inspect ric >/dev/null 2>&1 +if [ ! $? -eq 0 ]; then + $SUDO brctl addbr brric + $SUDO docker network create --subnet=$RIC_SUBNET -d bridge --attachable -o com.docker.network.bridge.name=brric ric +fi + +# Create a route info file to tell the containers where to send various +# messages. This will be mounted on the containers +ROUTERFILE=`pwd`/router.txt +cat << EOF > $ROUTERFILE +newrt|start +rte|10020|$E2MGR_IP:3801 +rte|10060|$E2TERM_IP:38000 +rte|10061|$E2MGR_IP:3801 +rte|10062|$E2MGR_IP:3801 +rte|10070|$E2MGR_IP:3801 +rte|10071|$E2MGR_IP:3801 +rte|10080|$E2MGR_IP:3801 +rte|10081|$E2TERM_IP:38000 +rte|10082|$E2TERM_IP:38000 +rte|10360|$E2TERM_IP:38000 +rte|10361|$E2MGR_IP:3801 +rte|10362|$E2MGR_IP:3801 +rte|10370|$E2MGR_IP:3801 +rte|10371|$E2TERM_IP:38000 +rte|10372|$E2TERM_IP:38000 +rte|1080|$E2MGR_IP:3801 +rte|1090|$E2TERM_IP:38000 +rte|1100|$E2MGR_IP:3801 +rte|12010|$E2MGR_IP:38010 +rte|1101|$E2TERM_IP:38000 +rte|12002|$E2TERM_IP:38000 +rte|12003|$E2TERM_IP:38000 +rte|10091|$E2MGR_IP:4801 +rte|10092|$E2MGR_IP:4801 +rte|1101|$E2TERM_IP:38000 +rte|1102|$E2MGR_IP:3801 +rte|12001|$E2MGR_IP:3801 +mse|12050|$(echo $XAPP_IP | cut -d "." -f 4)|$XAPP_IP:4560 +newrt|end +EOF + +remove_container() { + $SUDO docker inspect $1 >/dev/null 2>&1 + if [ $? -eq 0 ]; then + $SUDO docker kill $1 + $SUDO docker rm $1 + fi +} + +# create RIC various containers. Kill and remove them if they exist. +remove_container db +$SUDO docker run -d --network ric --ip $DBAAS_IP --name db dbaas:latest + +remove_container e2rtmansim +$SUDO docker run -d -it --network ric --ip $E2RTMANSIM_IP --name e2rtmansim e2rtmansim:latest + +remove_container e2mgr +$SUDO docker run -d -it --network ric --ip $E2MGR_IP -e RIC_ID=7b0000-000000/18 \ + -e DBAAS_PORT_6379_TCP_ADDR=$DBAAS_IP -e DBAAS_PORT_6379_TCP_PORT="6379" \ + -e DBAAS_SERVICE_HOST=$DBAAS_IP -e DBAAS_SERCE_PORT="6379" \ + --mount type=bind,source=$ROUTERFILE,destination=/opt/E2Manager/router.txt,ro \ + --name e2mgr e2mgr:latest + +remove_container e2term +E2TERMCONFFILE=`pwd`/e2term_config.conf +if [ ! -e $E2TERMCONFFILE ]; then +cat <$E2TERMCONFFILE +nano=38000 +loglevel=debug +volume=log +#the key name of the environment holds the local ip address +#ip address of the E2T in the RMR +local-ip=$E2TERM_IP +#trace is start, stop +trace=start +external-fqdn=e2t.com +#put pointer to the key that point to pod name +pod_name=E2TERM_POD_NAME +sctp-port=$E2TERM_SCTP_PORT +EOF +fi + E2TERM_CONFIG_BIND="--mount type=bind,source=$E2TERMCONFFILE,destination=/opt/e2/config/config.conf,ro" + +export RIC_IP=`ifconfig ${RIC_INTERFACE} | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*'` + + +if [ "$arena" = true ]; then + echo 'Starting local setup' + # if both RIC and DU are executed on the same machine, do not set Docker NAT rules + $SUDO docker run -d -it --network=ric --ip $E2TERM_IP --name e2term \ + --mount type=bind,source=$ROUTERFILE,destination=/opt/e2/dockerRouter.txt,ro \ + $E2TERM_CONFIG_BIND \ + e2term:latest +else + $SUDO docker run -d -it --network=ric --ip $E2TERM_IP --name e2term -p ${RIC_IP}:${E2TERM_SCTP_PORT}:${E2TERM_SCTP_PORT}/sctp\ + --mount type=bind,source=$ROUTERFILE,destination=/opt/e2/dockerRouter.txt,ro \ + $E2TERM_CONFIG_BIND e2term:latest +fi + +exit 0 diff --git a/setup-scripts/setup-sample-xapp.sh b/setup-scripts/setup-sample-xapp.sh new file mode 100755 index 0000000..5c4fa12 --- /dev/null +++ b/setup-scripts/setup-sample-xapp.sh @@ -0,0 +1,71 @@ +#!/bin/sh +# call as setup-sample-xapp.sh gnb_id + +set -x + +IMAGE_NAME=sample-xapp +MODEL_DIR=sample-xapp +CONNECTOR_DIR=xapp-bs-connector +DOCKER_FILE=Dockerfile +SETUP_DIR=../setup + +export SRC=`dirname $0` +cd $SRC +. $SRC/setup-lib.sh + +ENTRYPOINT=/bin/bash +GNB_ID=$1 + +# if changing xApp IP or ID, you need to define new RMR routes +# in the setup-ric.sh/setup-lib.sh scripts and restart the RIC +XAPP_IP=$XAPP_IP +XAPP_ID=$(echo $XAPP_IP | cut -d "." -f 4) + +CONTAINER_NAME=${IMAGE_NAME}-${XAPP_ID} + +# Build docker image +$SUDO docker image inspect ${IMAGE_NAME}:latest >/dev/null 2>&1 +if [ ! $? -eq 0 ]; then + tagvers=`git log --pretty=format:"%h" -n 1` + $SUDO docker image inspect ${IMAGE_NAME}:$tagvers >/dev/null 2>&1 + if [ ! $? -eq 0 ]; then + # copy Dockerfile out + cd ${SETUP_DIR} + cp ${MODEL_DIR}/${DOCKER_FILE} ./${DOCKER_FILE}_${IMAGE_NAME} + + $SUDO docker build \ + --build-arg DBAAS_SERVICE_HOST=$DBAAS_IP \ + --build-arg DBAAS_SERVICE_PORT=$DBAAS_PORT \ + -f ${DOCKER_FILE}_${IMAGE_NAME} -t ${IMAGE_NAME}:$tagvers . + + # remove copied Dockerfile + rm ${DOCKER_FILE}_${IMAGE_NAME} + + fi + $SUDO docker tag ${IMAGE_NAME}:$tagvers ${IMAGE_NAME}:latest + $SUDO docker rmi ${IMAGE_NAME}:$tagvers +fi + +remove_container() { + $SUDO docker inspect $1 >/dev/null 2>&1 + if [ $? -eq 0 ]; then + $SUDO docker kill $1 + $SUDO docker rm $1 + fi +} + +# run containers +remove_container ${CONTAINER_NAME} + +# replace parameters, recompile code and restart container +$SUDO docker run -d -it --entrypoint ${ENTRYPOINT} --network ric --ip ${XAPP_IP} \ + -e DBAAS_SERVICE_HOST=$DBAAS_IP -e DBAAS_SERVICE_PORT=$DBAAS_PORT --name ${CONTAINER_NAME} ${IMAGE_NAME}:latest + +if [ -n "${GNB_ID}" ]; then + docker exec ${CONTAINER_NAME} sed -i "s/^export GNB_ID.*/export GNB_ID=${GNB_ID}/g" /home/xapp-bs-connector/build_xapp.sh +fi + +docker exec ${CONTAINER_NAME} sed -i "s/^export XAPP_ID.*/export XAPP_ID=${XAPP_ID}/g" /home/xapp-bs-connector/build_xapp.sh +docker exec ${CONTAINER_NAME} /home/xapp-bs-connector/build_xapp.sh clean +docker container restart ${CONTAINER_NAME} + diff --git a/setup-scripts/start-ric-arena.sh b/setup-scripts/start-ric-arena.sh new file mode 100755 index 0000000..4efc19b --- /dev/null +++ b/setup-scripts/start-ric-arena.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +./setup-ric.sh arena + diff --git a/setup-scripts/start-xapp.sh b/setup-scripts/start-xapp.sh new file mode 100755 index 0000000..cce22aa --- /dev/null +++ b/setup-scripts/start-xapp.sh @@ -0,0 +1,2 @@ +#!/bin/bash +./setup-sample-xapp.sh gnb:311-048-01000501 diff --git a/setup/dbaas/.gitattributes b/setup/dbaas/.gitattributes new file mode 100644 index 0000000..d4628c1 --- /dev/null +++ b/setup/dbaas/.gitattributes @@ -0,0 +1,25 @@ +# https://help.github.com/articles/dealing-with-line-endings/ + +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized +# and converted to native line endings on checkout. +*.c text diff=cpp +*.cpp text diff=cpp +*.css text +*.go text diff=golang +*.htm text diff=html +*.html text diff=html +*.java text diff=java +*.js text +*.jsp text +*.less text +*.properties text +*.py text diff=python +*.sql text +*.xml text + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary diff --git a/setup/dbaas/.gitignore b/setup/dbaas/.gitignore new file mode 100644 index 0000000..9c14461 --- /dev/null +++ b/setup/dbaas/.gitignore @@ -0,0 +1,3 @@ +# documentation +.tox +docs/_build/ diff --git a/setup/dbaas/.gitreview b/setup/dbaas/.gitreview new file mode 100644 index 0000000..bdea5f9 --- /dev/null +++ b/setup/dbaas/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=gerrit.o-ran-sc.org +port=29418 +project=ric-plt/dbaas.git diff --git a/setup/dbaas/.readthedocs.yaml b/setup/dbaas/.readthedocs.yaml new file mode 100644 index 0000000..095222a --- /dev/null +++ b/setup/dbaas/.readthedocs.yaml @@ -0,0 +1,16 @@ +--- +version: 2 + +formats: + - htmlzip + +build: + image: latest + +python: + version: 3.7 + install: + - requirements: docs/requirements-docs.txt + +sphinx: + configuration: docs/conf.py diff --git a/setup/dbaas/INFO.yaml b/setup/dbaas/INFO.yaml new file mode 100644 index 0000000..802ddac --- /dev/null +++ b/setup/dbaas/INFO.yaml @@ -0,0 +1,68 @@ +--- +project: 'ric_plt_dbaas' +project_creation_date: '2019-11-08' +project_category: '' +lifecycle_state: 'Incubation' +project_lead: &oran_ric_plt_dbaas_ptl + name: 'Thoralf Czichy' + email: 'thoralf.czichy@nokia.com' + id: 'czichy' + company: 'Nokia' + timezone: 'America/New_York' +primary_contact: *oran_ric_plt_dbaas_ptl +issue_tracking: + type: 'jira' + url: 'https://jira.o-ran-sc.org/projects/' + key: 'ric_plt_dbaas' +mailing_list: + type: 'groups.io' + url: 'technical-discuss@lists.o-ran-sc.org' + tag: '[]' +realtime_discussion: + type: 'irc' + server: 'freenode.net' + channel: '#oran' +meetings: + - type: 'gotomeeting+irc' + agenda: 'https://wiki.o-ran-sc.org/display/' + url: '' + server: 'freenode.net' + channel: '#oran' + repeats: '' + time: '' +repositories: + - ric-plt/dbaas +committers: + - <<: *oran_ric_plt_dbaas_ptl + - name: 'makiaija' + email: 'jussi.maki-aijala@nokia.com' + company: 'nokia' + id: 'makiaija' + timezone: 'Unknown/Unknown' + - name: 'Marco Tallskog' + email: 'marco.tallskog@nokia.com' + company: 'nokia' + id: 'tallskog' + timezone: 'Unknown/Unknown' + - name: 'Timo Tietavainen' + email: 'timo.tietavainen@nokia.com' + company: 'nokia' + id: 'tietavai' + timezone: 'Unknown/Unknown' + - name: 'Rolf Badorek' + email: 'rolf.badorek@nokia.com' + company: 'nokia' + id: 'badorek' + timezone: 'Unknown/Unknown' + - name: 'Arvo Heinonen' + email: 'arvo.heinonen@nokia.com' + company: 'nokia' + id: 'arvo.heinonen' + timezone: 'Unknown/Unknown' +tsc: + # yamllint disable rule:line-length + approval: 'missing' + changes: + - type: '' + name: '' + link: '' diff --git a/setup/dbaas/LICENSES.txt b/setup/dbaas/LICENSES.txt new file mode 100644 index 0000000..7863b1e --- /dev/null +++ b/setup/dbaas/LICENSES.txt @@ -0,0 +1,34 @@ +LICENSES.txt + + +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the "Software License"); +you may not use this software except in compliance with the Software +License. You may obtain a copy of the Software License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the Software License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the Software License for the specific language governing permissions +and limitations under the Software License. + + + +Unless otherwise specified, all documentation contained herein is licensed +under the Creative Commons License, Attribution 4.0 Intl. (the +"Documentation License"); you may not use this documentation except in +compliance with the Documentation License. You may obtain a copy of the +Documentation License at + +https://creativecommons.org/licenses/by/4.0/ + +Unless required by applicable law or agreed to in writing, documentation +distributed under the Documentation License is distributed on an "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the Documentation License for the specific language governing +permissions and limitations under the Documentation License. + + + diff --git a/setup/dbaas/README.md b/setup/dbaas/README.md new file mode 100644 index 0000000..6391fc4 --- /dev/null +++ b/setup/dbaas/README.md @@ -0,0 +1,122 @@ +# Database as a service repository + +This repository containes all the needed elements to deploy database as a service to kubernetes + +## Architecture + +Redis is the chosen database technology and the final product will deploy autonomous +redis cluster. In R0 schedule, single, non-redundant, non-persistent redis server is +deployed + +## Subsystem structure + +**docker** Contains dockerfiles to produce dbaas / testapplication container images +**charts** Contais helm charts to deploy dbaas service / testapplication +**testapplication** Contains dbaas test applications with various languages such as go, .. + +## Container image creation + +The images must be built at subsystem root level + +To produce dbaas service image: +``` +docker build --file docker/Dockerfile.redis --tag redis-standalone . +``` + +To produce testapplication image: +``` +docker build --file docker/Dockerfile.testapp --tag dbaas-test . +``` + +## Deployment + +### DBaaS service + +In R0, dbaas service is realized with single container running redis database. +The database is configured to be non-persistent and non-redundant. The container +exposes single port which is hardcoded to be 6379. + +After dbaas service is installed, environment variables **DBAAS_SERVICE_HOST** +and **DBAAS_SERVICE_PORT** are exposed to application containers. SDL library +will automatically use these environment variables. + +The service is installed via helm by using dbaas-service chart. Modify the +values accordingly before installation (repository location, image name, ..) + +``` +helm install ./dbaas-service +``` + +### DBaaS test application + +Test application is installed via helm by using dbaas-test chart. Modify the +values accordingly before installation (repository location, image name, ..) + +``` +helm install ./dbaas-test +``` + +## Testing + +Make sure that dbaas-service and dbaas-test application are deployed: +``` +>>helm ls +NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE +angry-greyhound 1 Thu Mar 21 11:36:23 2019 DEPLOYED dbaas-test-0.1.0 1.0 default +loitering-toad 1 Thu Mar 21 11:35:21 2019 DEPLOYED dbaas-0.1.0 1.0 default +``` + +Check the deployed pods +``` +>>kubectl get pods +NAME READY STATUS RESTARTS AGE +dbaas-test-app-7695dbb9ff-qn8c2 1/1 Running 0 5s +redis-standalone-78978f4c6f-54b2s 1/1 Running 0 66s +``` + +Connect to the test application container: +``` +kubectl exec -it dbaas-test-app-7695dbb9ff-qn8c2 -- /bin/bash +``` + +In test application container: +``` +The environment variables for database backend should be set: + +>>printenv +DBAAS_SERVICE_HOST=10.108.103.51 +DBAAS_SERVICE_PORT=6379 + + +Go test application using preliminary go SDL-API should be able to perform reads and writes: + +>>./testapp +key1:data1 +key3:%!s() +key2:data2 +num1:1 +num2:2 +------------- +mix2:2 +num1:1 +num2:2 +pair1:data1 +array1:adata1 +mix1:data1 +mix3:data3 +mix4:4 +arr1: +key1:data1 +key2:data2 +pair2:data2 +array2:adata2 + + +Redis server can be pinged with redis-cli: + +>>redis-cli -h $DBAAS_SERVICE_HOST -p $DBAAS_SERVICE_PORT ping +PONG +``` + +## License +This project is licensed under the Apache License 2.0 - see the [LICENSE.md](LICENSE.md) file for details diff --git a/setup/dbaas/charts/dbaas-service/Chart.yaml b/setup/dbaas/charts/dbaas-service/Chart.yaml new file mode 100644 index 0000000..8d183de --- /dev/null +++ b/setup/dbaas/charts/dbaas-service/Chart.yaml @@ -0,0 +1,25 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +apiVersion: v1 +appVersion: "1.0" +description: DBaaS realized with standalone, non-persistent, non-redundant Redis +name: dbaas +version: 0.1.0 diff --git a/setup/dbaas/charts/dbaas-service/templates/deployment.yaml b/setup/dbaas/charts/dbaas-service/templates/deployment.yaml new file mode 100644 index 0000000..341d898 --- /dev/null +++ b/setup/dbaas/charts/dbaas-service/templates/deployment.yaml @@ -0,0 +1,39 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ .Values.backend.name }} +spec: + replicas: {{ .Values.backend.replicas }} + template: + metadata: + labels: + app: {{ .Values.backend.name }} + spec: + terminationGracePeriodSeconds: {{ .Values.backend.terminationGracePeriodSeconds }} + containers: + - image: {{ .Values.backend.image.name }}:{{ .Values.backend.image.tag }} + imagePullPolicy: {{ .Values.backend.image.imagePullPolicy }} + ports: + - containerPort: {{ .Values.backend.targetPort }} + name: {{ .Values.backend.name }} + restartPolicy: Always diff --git a/setup/dbaas/charts/dbaas-service/templates/service.yaml b/setup/dbaas/charts/dbaas-service/templates/service.yaml new file mode 100644 index 0000000..472aeac --- /dev/null +++ b/setup/dbaas/charts/dbaas-service/templates/service.yaml @@ -0,0 +1,30 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Chart.Name }} +spec: + selector: + app: {{ .Values.backend.name }} + ports: + - port: {{ .Values.backend.port }} + targetPort: {{ .Values.backend.targetPort }} diff --git a/setup/dbaas/charts/dbaas-service/values.yaml b/setup/dbaas/charts/dbaas-service/values.yaml new file mode 100644 index 0000000..9c66759 --- /dev/null +++ b/setup/dbaas/charts/dbaas-service/values.yaml @@ -0,0 +1,30 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +backend: + terminationGracePeriodSeconds: 0 + replicas: 1 + name: "redis-standalone" + port: 6379 + targetPort: 6379 + image: + name: snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com/redis-standalone + tag: latest + imagePullPolicy: IfNotPresent diff --git a/setup/dbaas/charts/dbaas-test/Chart.yaml b/setup/dbaas/charts/dbaas-test/Chart.yaml new file mode 100644 index 0000000..2af2367 --- /dev/null +++ b/setup/dbaas/charts/dbaas-test/Chart.yaml @@ -0,0 +1,25 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +apiVersion: v1 +appVersion: "1.0" +description: Application for testing DBAAS connectivity +name: dbaas-test +version: 0.1.0 diff --git a/setup/dbaas/charts/dbaas-test/templates/deployment.yaml b/setup/dbaas/charts/dbaas-test/templates/deployment.yaml new file mode 100644 index 0000000..d748f06 --- /dev/null +++ b/setup/dbaas/charts/dbaas-test/templates/deployment.yaml @@ -0,0 +1,37 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: {{ .Values.testapp.name }} +spec: + replicas: {{ .Values.testapp.replicas }} + template: + metadata: + labels: + app: {{ .Values.testapp.name }} + spec: + terminationGracePeriodSeconds: {{ .Values.testapp.terminationGracePeriodSeconds }} + containers: + - image: {{ .Values.testapp.image.name }}:{{ .Values.testapp.image.tag }} + imagePullPolicy: {{ .Values.testapp.image.imagePullPolicy }} + name: {{ .Values.testapp.name }} + restartPolicy: Always diff --git a/setup/dbaas/charts/dbaas-test/values.yaml b/setup/dbaas/charts/dbaas-test/values.yaml new file mode 100644 index 0000000..1b23afa --- /dev/null +++ b/setup/dbaas/charts/dbaas-test/values.yaml @@ -0,0 +1,28 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +testapp: + terminationGracePeriodSeconds: 0 + replicas: 1 + name: "dbaas-test-app" + image: + name: snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com/dbaas-test + tag: latest + imagePullPolicy: IfNotPresent diff --git a/setup/dbaas/container-tag.yaml b/setup/dbaas/container-tag.yaml new file mode 100644 index 0000000..1f5d874 --- /dev/null +++ b/setup/dbaas/container-tag.yaml @@ -0,0 +1,5 @@ +# The Jenkins job requires a tag to build the Docker image. +# This file is expected to be in the docker build directory; +# can be moved with suitable JJB configuration. +--- +tag: '0.4.1' diff --git a/setup/dbaas/docker/Dockerfile.redis b/setup/dbaas/docker/Dockerfile.redis new file mode 100644 index 0000000..afba0da --- /dev/null +++ b/setup/dbaas/docker/Dockerfile.redis @@ -0,0 +1,77 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +# Alpine-linux based containers use musl implementation of libc which causes +# valgrind to emit false positives. Therefore we run UT with valgrind in +# a separate build stage that uses ubuntu container with GNU libc installed. +# +# NOTE: The valgrind false positive problem could also potentially be solved +# with valgrind suppression files but that kind of approach may be fragile. +FROM ubuntu:18.04 as cpputest-build + +RUN apt-get update \ + && apt install -y \ + automake \ + autoconf \ + cmake \ + curl \ + g++ \ + gcc \ + libtool \ + make \ + pkg-config \ + valgrind \ + && rm -rf /var/lib/apt/lists/* + +# Cpputest built-in memory checks generate false positives in valgrind. +# This is solved by compiling cpputest with memory checking disabled. +WORKDIR /cpputest +RUN curl -L https://github.com/cpputest/cpputest/releases/download/v3.8/cpputest-3.8.tar.gz | \ + tar --strip-components=1 -xzf - +WORKDIR /cpputest/builddir +RUN cmake -DMEMORY_LEAK_DETECTION=OFF .. && \ + make install + +COPY ./redismodule /redismodule +WORKDIR /redismodule +RUN ./autogen.sh && \ + ./configure +#&& make test + + +FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-alpine3-go:6-a3.11-rmr3 as build-env + +RUN apk add cpputest +COPY ./redismodule /redismodule +WORKDIR /redismodule +RUN ./autogen.sh && \ + ./configure --disable-unit-test-memcheck && \ + # make test && \ + make install + +FROM redis:5.0.5-alpine3.9 + +RUN apk add curl +COPY --from=build-env /usr/local/libexec/redismodule/libredismodule.so /usr/local/libexec/redismodule/libredismodule.so +WORKDIR /data + +#ENTRYPOINT ["sh", "/usr/local/bin/docker-entrypoint.sh"] +ENTRYPOINT ["redis-server"] diff --git a/setup/dbaas/docker/Dockerfile.testapp b/setup/dbaas/docker/Dockerfile.testapp new file mode 100644 index 0000000..1e88a62 --- /dev/null +++ b/setup/dbaas/docker/Dockerfile.testapp @@ -0,0 +1,44 @@ +# Copyright (c) 2019 AT&T Intellectual Property. +# Copyright (c) 2019 Nokia. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +FROM ubuntu:latest + +# Install redis tools & golang & git +RUN apt-get update && \ + apt install -y redis-tools && \ + apt install -y git && \ + apt install -y wget && \ + wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz && \ + tar -xvf go1.11.4.linux-amd64.tar.gz && \ + mv go /usr/local && \ + apt-get clean + +# Copy sourcefiles +COPY ./testapplication ./testapplication + +# Install go testapplication +RUN export GOROOT=/usr/local/go && \ + export GOPATH=$HOME/Projects/Proj1 && \ + export PATH=$GOPATH/bin:$GOROOT/bin:$PATH && \ + go get github.com/go-redis/redis && \ + go build /testapplication/go/testapp.go + +# Keep the container alive +ENTRYPOINT ["tail", "-f", "/dev/null"] diff --git a/setup/dbaas/docs/_static/logo.png b/setup/dbaas/docs/_static/logo.png new file mode 100644 index 0000000..c3b6ce5 Binary files /dev/null and b/setup/dbaas/docs/_static/logo.png differ diff --git a/setup/dbaas/docs/conf.py b/setup/dbaas/docs/conf.py new file mode 100644 index 0000000..922e22f --- /dev/null +++ b/setup/dbaas/docs/conf.py @@ -0,0 +1,6 @@ +from docs_conf.conf import * +linkcheck_ignore = [ + 'http://localhost.*', + 'http://127.0.0.1.*', + 'https://gerrit.o-ran-sc.org.*' +] diff --git a/setup/dbaas/docs/conf.yaml b/setup/dbaas/docs/conf.yaml new file mode 100644 index 0000000..ffce5da --- /dev/null +++ b/setup/dbaas/docs/conf.yaml @@ -0,0 +1,3 @@ +--- +project_cfg: oran +project: ric-plt/dbaas diff --git a/setup/dbaas/docs/favicon.ico b/setup/dbaas/docs/favicon.ico new file mode 100644 index 0000000..00b0fd0 Binary files /dev/null and b/setup/dbaas/docs/favicon.ico differ diff --git a/setup/dbaas/docs/index.rst b/setup/dbaas/docs/index.rst new file mode 100644 index 0000000..34e2176 --- /dev/null +++ b/setup/dbaas/docs/index.rst @@ -0,0 +1,31 @@ +.. +.. Copyright (c) 2019 AT&T Intellectual Property. +.. Copyright (c) 2019 Nokia. +.. +.. Licensed under the Creative Commons Attribution 4.0 International +.. Public License (the "License"); you may not use this file except +.. in compliance with the License. You may obtain a copy of the License at +.. +.. https://creativecommons.org/licenses/by/4.0/ +.. +.. Unless required by applicable law or agreed to in writing, documentation +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. + +Welcome to O-RAN DBAAS Documentation +==================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + overview.rst + release-notes.rst + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/setup/dbaas/docs/overview.rst b/setup/dbaas/docs/overview.rst new file mode 100644 index 0000000..2de1e74 --- /dev/null +++ b/setup/dbaas/docs/overview.rst @@ -0,0 +1,28 @@ +.. +.. Copyright (c) 2019 AT&T Intellectual Property. +.. Copyright (c) 2019 Nokia. +.. +.. Licensed under the Creative Commons Attribution 4.0 International +.. Public License (the "License"); you may not use this file except +.. in compliance with the License. You may obtain a copy of the License at +.. +.. https://creativecommons.org/licenses/by/4.0/ +.. +.. Unless required by applicable law or agreed to in writing, documentation +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. + +Overview +======== + +The ric-plt/dbaas repo provides all the needed elements to deploy database as +a service (Dbaas) to kubernetes. Dbaas service is realized with a single +container running Redis database. The database is configured to be +non-persistent and non-redundant. + +For the time being Dbaas only allowed usage is to provide database backend +service for Shared Data Layer (SDL). diff --git a/setup/dbaas/docs/release-notes.rst b/setup/dbaas/docs/release-notes.rst new file mode 100644 index 0000000..0b77d09 --- /dev/null +++ b/setup/dbaas/docs/release-notes.rst @@ -0,0 +1,75 @@ +.. +.. Copyright (c) 2019 AT&T Intellectual Property. +.. Copyright (c) 2019 Nokia. +.. +.. Licensed under the Creative Commons Attribution 4.0 International +.. Public License (the "License"); you may not use this file except +.. in compliance with the License. You may obtain a copy of the License at +.. +.. https://creativecommons.org/licenses/by/4.0/ +.. +.. Unless required by applicable law or agreed to in writing, documentation +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. + +Release-Notes +============= + +This document provides the release notes of the dbaas. + +.. contents:: + :depth: 3 + :local: + + + +Version history +--------------- + +[0.4.1] - 2020-06-17 + +* Upgrade base image to bldr-alpine3:12-a3.11 in Redis docker build + +[0.4.0] - 2020-04-23 + +* Bump version to 0.4.0 to follow RIC versioning rules (4 is meaning RIC release R4). No functional changes. + +[0.3.2] - 2020-04-22 + +* Upgrade base image to bldr-alpine3:10-a3.22-rmr3 in Redis docker build +* Fix redismodule resource leak + +[0.3.1] - 2020-02-13 + +* Upgrade base image to alpine3-go:1-rmr1.13.1 in Redis docker build + +[0.3.0] - 2020-01-23 + +* Enable unit tests and valgrind in CI. +* Update redismodule with new commands. +* Update documentation. + +[0.2.2] - 2019-11-12 + +* Take Alpine (version 6-a3.9) linux base image into use in Redis docker image. +* Add mandatory documentation files. + +[0.2.1] - 2019-09-17 + +* Add the curl tool to docker image to facilitate trouble-shooting. + +[0.2.0] - 2019-09-03 + +* Take Redis 5.0 in use. + +[0.1.0] - 2019-06-17 + +* Initial Implementation to provide all the needed elements to deploy database + as a service docker image to kubernetes. +* Introduce new Redis modules: SETIE, SETNE, DELIE, DELNE, MSETPUB, MSETMPUB, + SETXXPUB, SETNXPUB, SETIEPUB, SETNEPUB, DELPUB, DELMPUB, DELIEPUB, DELNEPUB, + NGET, NDEL. diff --git a/setup/dbaas/docs/requirements-docs.txt b/setup/dbaas/docs/requirements-docs.txt new file mode 100644 index 0000000..09a0c1c --- /dev/null +++ b/setup/dbaas/docs/requirements-docs.txt @@ -0,0 +1,5 @@ +sphinx +sphinx-rtd-theme +sphinxcontrib-httpdomain +recommonmark +lfdocs-conf diff --git a/setup/dbaas/redismodule/Makefile.am b/setup/dbaas/redismodule/Makefile.am new file mode 100755 index 0000000..a798ed1 --- /dev/null +++ b/setup/dbaas/redismodule/Makefile.am @@ -0,0 +1,134 @@ +ACLOCAL_AMFLAGS = -I m4 + +redismoduledir = @libexecdir@/$(PACKAGE) +redismodule_LTLIBRARIES = libredismodule.la +#lib_LTLIBRARIES = libredismodule.la + +BASE_LDFLAGS = + +libredismodule_la_SOURCES = \ + include/redismodule.h\ + src/exstrings.c + +libredismodule_la_CFLAGS = \ + -std=c11 -fPIC -g -Wall -Werror -Wextra \ + -DREDISMODULE_EXPERIMENTAL_API \ + -I${includedir} -I${top_srcdir}/include + + +libredismodule_la_LDFLAGS = $(BASE_LDFLAGS) -avoid-version -module -shared + +#pkgincludedir = ${includedir} +#pkginclude_HEADERS = include/redismodule.h + +clean-local: + rm -rf ${builddir}/libredismodule.pc + +if UNIT_TEST_ENABLED +# UT +CPP_U_TEST=$(CPP_U_TEST_LATEST) +check_PROGRAMS = redismodule_ut redismodule_ut2 +#TESTS = ${check_PROGRAMS} +redismodule_ut_SOURCES = \ + src/exstrings.c \ + tst/mock/include/commonStub.h \ + tst/mock/include/exstringsStub.h \ + tst/mock/include/redismodule.h \ + tst/mock/src/commonStub.cpp \ + tst/mock/src/redismoduleStub.cpp \ + tst/src/exstrings_test.cpp \ + tst/src/main.cpp + + +redismodule_ut_CFLAGS = \ + -std=c11 -g -Wall \ + -fprofile-arcs -ftest-coverage \ + -D__UT__ \ + $(LIBCPPUTEST_CFLAGS) \ + -I${top_srcdir}/tst/mock/include \ + -I${includedir} \ + -I${top_srcdir}/include \ + -I${CPP_U_TEST_LATEST}/include \ + -Wall -Werror -Wextra + +redismodule_ut_CXXFLAGS = \ + -std=c++11 -g -Wall \ + -fprofile-arcs -ftest-coverage \ + -D__UT__ \ + $(LIBCPPUTEST_CFLAGS) \ + -I${top_srcdir}/tst/mock/include \ + -I${includedir} \ + -I${top_srcdir}/include \ + -I${CPP_U_TEST_LATEST}/include \ + -Wall -Werror -Wextra + + +redismodule_ut_LDFLAGS = -Wl,-rpath=${libdir} ${UT_COVERAGE_LDFLAGS} +redismodule_ut_LDADD = -L${libdir} $(LIBCPPUTEST_LIBS) -lgcov + + +redismodule_ut2_SOURCES = \ + src/exstrings.c \ + tst/include/ut_helpers.hpp \ + tst/mock/include/commonStub.h \ + tst/mock/include/exstringsStub.h \ + tst/mock/include/redismodule.h \ + tst/mock/src/commonStub.cpp \ + tst/mock/src/redismoduleNewStub.cpp \ + tst/src/exstrings_ndel_test.cpp \ + tst/src/exstrings_nget_test.cpp \ + tst/src/main.cpp \ + tst/src/ut_helpers.cpp + + +redismodule_ut2_CFLAGS = \ + -std=c11 -g -Wall \ + -fprofile-arcs -ftest-coverage \ + -D__UT__ \ + $(LIBCPPUTEST_CFLAGS) \ + -I${top_srcdir}/tst/mock/include \ + -I${includedir} \ + -I${top_srcdir}/include \ + -I${CPP_U_TEST_LATEST}/include \ + -Wall -Werror -Wextra + +redismodule_ut2_CXXFLAGS = \ + -std=c++11 -g -Wall \ + -fprofile-arcs -ftest-coverage \ + -D__UT__ \ + $(LIBCPPUTEST_CFLAGS) \ + -I${top_srcdir}/tst/mock/include \ + -I${top_srcdir}/tst/include \ + -I${includedir} \ + -I${top_srcdir}/include \ + -I${CPP_U_TEST_LATEST}/include \ + -Wall -Werror -Wextra + + +redismodule_ut2_LDFLAGS = -Wl,-rpath=${libdir} ${UT_COVERAGE_LDFLAGS} +redismodule_ut2_LDADD = -L${libdir} $(LIBCPPUTEST_LIBS) -lgcov + + +if UNIT_TEST_MEMCHECK_ENABLED +test: ut_memcheck_test +else +test: ut_test +endif + +ut_test: redismodule_ut redismodule_ut2 + ./redismodule_ut + ./redismodule_ut2 + +ut_memcheck_test: redismodule_ut redismodule_ut2 + valgrind --error-exitcode=1 --leak-check=full ./redismodule_ut + valgrind --error-exitcode=1 --leak-check=full ./redismodule_ut2 + +TESTS = run-tests.sh + +else + +test: + echo 'enable ut with configure flag: --enable-unit-test and valgrind memcheck with: --enable-unit-test-memcheck' + exit 1 + +endif #UNIT_TEST_ENABLED diff --git a/setup/dbaas/redismodule/README.md b/setup/dbaas/redismodule/README.md new file mode 100755 index 0000000..7bccee0 --- /dev/null +++ b/setup/dbaas/redismodule/README.md @@ -0,0 +1,260 @@ +# Introduction + +This subdirectory provides implementation for the commands which are implemented +as a [Redis modules](https://redis.io/topics/modules-intro). + +# Compiling and Unit Tests + +To compile, run unit tests and install use the commands: +``` +./autogen.sh +./configure +make +make test +make install +``` + +By default unit tests and valgrind memory checking are enabled. +This requires `cpputest` and `valgrind` as additional dependencies. +Unit test memory checking can be disabled with the `configure` option +`--disable-unit-test-memcheck` and the unit tests can be completely disabled +with the `configure` option `--disable-unit-test`. +For example to compile and install with unit tests completely disabled +one would run the commands: +``` +./autogen.sh +./configure --disable-unit-test +make +make install +``` + +# Commands + +## SETIE key value oldvalue [expiration EX seconds|PX milliseconds] + +Time complexity: O(1) + O(1) + +Checks a String 'key' for 'oldvalue' equality and set key for 'value' with +optional expired. + +``` +Example: + +redis> get mykey +(nil) +redis> setie mykey "Hello again" "Hello" +(nil) + +redis> set mykey "Hello" +OK +redis> get mykey +"Hello" +redis> setie mykey "Hello again" "Hello" +"OK" +redis> get mykey +"Hello again" +redis> setie mykey "Hello 2" "Hello" +(nil) +redis> get mykey +"Hello again" +redis> setie mykey "Hello 2" "Hello again" ex 100 +"OK" +redis> ttl mykey +(integer) 96 +redis> get mykey +"Hello 2" +``` + +## SETNE key value oldvalue [expiration EX seconds|PX milliseconds] + +Time complexity: O(1) + O(1) + +Checks a String 'key' for 'oldvalue' not equality and set key for 'value' with optional expired. + +Example: + +``` +redis> get mykey +(nil) +redis> setne mykey "Hello again" "Hello" +"OK" +redis> get mykey +"Hello again" +redis> setne mykey "Hello 2" "Hello again" +(nil) +redis> setne mykey "Hello 2" "Hello" +"OK" +redis> get mykey +"Hello 2" +redis> setne mykey "Hello 3" "Hello" ex 100 +"OK" +redis> get mykey +"Hello 3" +redis> ttl mykey +(integer) 93 +``` + +## DELIE key oldvalue + +Time complexity: O(1) + O(1) + +Checks a String 'key' for 'oldvalue' equality and delete the key. + +``` +Example: +redis> get mykey +(nil) +redis> set mykey "Hello" +"OK" +redis> get mykey +"Hello" +redis> delie mykey "Hello again" +(integer) 0 +redis> get mykey +"Hello" +redis> delie mykey "Hello" +(integer) 1 +redis> get mykey +(nil) +``` + +## DELNE key oldvalue + +Time complexity: O(1) + O(1) + +Checks a String 'key' for 'oldvalue' not equality and delete the key. + +``` +Example: +redis> get mykey +(nil) +redis> set mykey "Hello" +"OK" +redis> get mykey +"Hello" +redis> delne mykey "Hello" +(integer) 0 +redis> get mykey +"Hello" +redis> delne mykey "Hello again" +(integer) 1 +redis> get mykey +(nil) +``` + +## MSETPUB key value [key value...] channel message + +Time complexity: O(N) where N is the number of keys to set + O(N+M) where N is the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client) + +Set the given keys to their respective values and post a message to the given channel + +## MSETMPUB number_of_key_value_pairs number_of_channel_message_pairs key value [ key value ... ] channel message [ channel message ... ] + +Time complexity: O(N) where N is the number of keys to set + O(N_1+M) [ + O(N_2+M) + ... ] where N_i are the number of clients subscribed to the corresponding receiving channel and M is the total number of subscribed patterns (by any client) + +Set the given keys to their respective values and post messages to their respective channels + +## SETXXPUB key value channel message [channel message...] + +Time complexity: O(1) + O(1) + O(N_1+M) [ + O(N_2+M) + ... ] where N_i are the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client). + +Set key to hold string value if key already exists and post given messages to the corresponding channels if key value was set successfully + +## SETNXPUB key value channel message [channel message...] + +Time complexity: O(1) + O(1) + O(N_1+M) [ + O(N_2+M) + ... ] where N_i are the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client). + +Set key to hold string value if key does not exist and post given messages to the corresponding channels if key value was set successfully + +## SETIEPUB key value oldvalue channel message [channel message...] + +Time complexity: O(1) + O(1) + O(1) + O(N_1+M) [ + O(N_2+M) + ... ] where N_i are the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client). + +If the string corresponding to 'key' is equal to 'oldvalue' then set key for 'value' and post given messages to the corresponding channels if key value was set successfully + +## SETNEPUB key value oldvalue channel message [channel message...] + +Time complexity: O(1) + O(1) + O(1) + O(N_1+M) [ + O(N_2+M) + ... ] where N_i are the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client). + +If the string corresponding to 'key' is not equal to 'oldvalue' then set key for 'value' and post given messages to the corresponding channels if key value was set successfully + +## DELPUB key [key...] channel message + +Time complexity: O(N) where N is the number of keys that will be removed + O(N+M) where N is the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client) + +Removes the specified keys and post a message to the given channel if delete key successfully(return >0) + +## DELMPUB number_of_keys number_of_channel_message_pairs key [ key ... ] channel message [ channel message ... ] + +Time complexity: O(N) where N is the number of keys that will be removed + O(N_1+M) [ + O(N_2+M) + ... ] where N_i are the number of clients subscribed to the receiving channel and M is the total number of subscribed patterns (by any client) + +Remove the specified keys. If any of the keys was deleted succesfully (delete return value > 0) then post given messages to the corresponding channels. + +## DELIEPUB key oldvalue channel message [channel message...] + +Time complexity: O(1) + O(1) + O(1) + O(N_1+M) [ + O(N_2+M) + ...] where N_i are the number of clients subscribed to the corrensponding receiving channel and M is the total number of subscribed patterns (by any client) + +If the string corresponding to 'key' is equal to 'oldvalue' then delete the key. If deletion was succesful (delete return value was 1) then post given messages to the corresponding channels. + +## DELNEPUB key oldvalue channel message [channel message...] + +Time complexity: O(1) + O(1) + O(1) + O(N_1+M) [ + O(N_2+M) + ...] where N_i are the number of clients subscribed to the corrensponding receiving channel and M is the total number of subscribed patterns (by any client) + +If the string corresponding to 'key' is not equal to 'oldvalue' then delete the key. If deletion was succesful (delete return value was 1) then post given messages to the corresponding channels. + +## NGET pattern + +Time complexity: O(N) with N being the number of keys in the instance + O(N) where N is the number of keys to retrieve + +Returns all key-value pairs matching pattern. + +``` +example: + +redis> nget mykey* +(empty list or set) + +redis> set mykey1 "myvalue1" +OK +redis> set mykey2 "myvalue2" +OK +redis> set mykey3 "myvalue3" +OK +redis> set mykey4 "myvalue4" +OK +redis> nget mykey* +1) "mykey2" +2) "myvalue2" +3) "mykey1" +4) "myvalue1" +5) "mykey4" +6) "myvalue4" +7) "mykey3" +8) "myvalue3" +``` + +## NDEL pattern + +Time complexity: O(N) with N being the number of keys in the instance + O(N) where N is the number of keys that will be removed + +Remove all key-value pairs matching pattern. + +``` +example: + +redis> nget mykey* +1) "mykey2" +2) "myvalue2" +3) "mykey1" +4) "myvalue1" +5) "mykey4" +6) "myvalue4" +7) "mykey3" +8) "myvalue3" + +redis> ndel mykey* +(integer) 4 + +redis> ndel mykey* +(integer) 0 +``` diff --git a/setup/dbaas/redismodule/autogen.sh b/setup/dbaas/redismodule/autogen.sh new file mode 100755 index 0000000..d87dafd --- /dev/null +++ b/setup/dbaas/redismodule/autogen.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +autoreconf --install diff --git a/setup/dbaas/redismodule/configure.ac b/setup/dbaas/redismodule/configure.ac new file mode 100755 index 0000000..48289c3 --- /dev/null +++ b/setup/dbaas/redismodule/configure.ac @@ -0,0 +1,54 @@ +AC_INIT([redismodule], [0.0.0], [], [], [https://gerrit.oran-osc.org/r/#/admin/projects/ric-plt/dbaas]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_MACRO_DIRS([m4]) +AC_CONFIG_HEADERS([config.h]) + + +AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects tar-pax]) + +m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) +LT_INIT([disable-static]) + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_INSTALL +AC_PROG_MAKE_SET + +AC_ARG_ENABLE([unit-test], + [--disable-unit-test], [Disable unit tests] +) + +AS_IF([test x"$enable_unit_test" != x"no"], + [ + PKG_CHECK_MODULES([LIBCPPUTEST],[cpputest]) + AM_CONDITIONAL([UNIT_TEST_ENABLED], [true]) + ], + [ + AM_CONDITIONAL([UNIT_TEST_ENABLED], [false]) + ] +) + +AC_ARG_ENABLE([unit-test-memcheck], + [AS_HELP_STRING([--disable-unit-test-memcheck], [Do not run unit tests with valgrind])] +) + +AS_IF([test x"$enable_unit_test_memcheck" != x"no"], + [ + AC_CHECK_PROG(VALGRIND_CHECK, valgrind, yes) + AM_CONDITIONAL([UNIT_TEST_MEMCHECK_ENABLED], [true]) + ], + [ + AM_CONDITIONAL([UNIT_TEST_MEMCHECK_ENABLED], [false]) + ] +) + + +# Checks for header files. + +# Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_STDBOOL + +AC_CONFIG_FILES([Makefile]) + +AC_OUTPUT diff --git a/setup/dbaas/redismodule/include/redismodule.h b/setup/dbaas/redismodule/include/redismodule.h new file mode 100755 index 0000000..e64b1a9 --- /dev/null +++ b/setup/dbaas/redismodule/include/redismodule.h @@ -0,0 +1,574 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#ifndef REDISMODULE_H +#define REDISMODULE_H + +#include +#include +#include + +/* ---------------- Defines common between core and modules --------------- */ + +/* Error status return values. */ +#define REDISMODULE_OK 0 +#define REDISMODULE_ERR 1 + +/* API versions. */ +#define REDISMODULE_APIVER_1 1 + +/* API flags and constants */ +#define REDISMODULE_READ (1<<0) +#define REDISMODULE_WRITE (1<<1) + +#define REDISMODULE_LIST_HEAD 0 +#define REDISMODULE_LIST_TAIL 1 + +/* Key types. */ +#define REDISMODULE_KEYTYPE_EMPTY 0 +#define REDISMODULE_KEYTYPE_STRING 1 +#define REDISMODULE_KEYTYPE_LIST 2 +#define REDISMODULE_KEYTYPE_HASH 3 +#define REDISMODULE_KEYTYPE_SET 4 +#define REDISMODULE_KEYTYPE_ZSET 5 +#define REDISMODULE_KEYTYPE_MODULE 6 + +/* Reply types. */ +#define REDISMODULE_REPLY_UNKNOWN -1 +#define REDISMODULE_REPLY_STRING 0 +#define REDISMODULE_REPLY_ERROR 1 +#define REDISMODULE_REPLY_INTEGER 2 +#define REDISMODULE_REPLY_ARRAY 3 +#define REDISMODULE_REPLY_NULL 4 + +/* Postponed array length. */ +#define REDISMODULE_POSTPONED_ARRAY_LEN -1 + +/* Expire */ +#define REDISMODULE_NO_EXPIRE -1 + +/* Sorted set API flags. */ +#define REDISMODULE_ZADD_XX (1<<0) +#define REDISMODULE_ZADD_NX (1<<1) +#define REDISMODULE_ZADD_ADDED (1<<2) +#define REDISMODULE_ZADD_UPDATED (1<<3) +#define REDISMODULE_ZADD_NOP (1<<4) + +/* Hash API flags. */ +#define REDISMODULE_HASH_NONE 0 +#define REDISMODULE_HASH_NX (1<<0) +#define REDISMODULE_HASH_XX (1<<1) +#define REDISMODULE_HASH_CFIELDS (1<<2) +#define REDISMODULE_HASH_EXISTS (1<<3) + +/* Context Flags: Info about the current context returned by + * RM_GetContextFlags(). */ + +/* The command is running in the context of a Lua script */ +#define REDISMODULE_CTX_FLAGS_LUA (1<<0) +/* The command is running inside a Redis transaction */ +#define REDISMODULE_CTX_FLAGS_MULTI (1<<1) +/* The instance is a master */ +#define REDISMODULE_CTX_FLAGS_MASTER (1<<2) +/* The instance is a slave */ +#define REDISMODULE_CTX_FLAGS_SLAVE (1<<3) +/* The instance is read-only (usually meaning it's a slave as well) */ +#define REDISMODULE_CTX_FLAGS_READONLY (1<<4) +/* The instance is running in cluster mode */ +#define REDISMODULE_CTX_FLAGS_CLUSTER (1<<5) +/* The instance has AOF enabled */ +#define REDISMODULE_CTX_FLAGS_AOF (1<<6) +/* The instance has RDB enabled */ +#define REDISMODULE_CTX_FLAGS_RDB (1<<7) +/* The instance has Maxmemory set */ +#define REDISMODULE_CTX_FLAGS_MAXMEMORY (1<<8) +/* Maxmemory is set and has an eviction policy that may delete keys */ +#define REDISMODULE_CTX_FLAGS_EVICT (1<<9) +/* Redis is out of memory according to the maxmemory flag. */ +#define REDISMODULE_CTX_FLAGS_OOM (1<<10) +/* Less than 25% of memory available according to maxmemory. */ +#define REDISMODULE_CTX_FLAGS_OOM_WARNING (1<<11) +/* The command was sent over the replication link. */ +#define REDISMODULE_CTX_FLAGS_REPLICATED (1<<12) +/* Redis is currently loading either from AOF or RDB. */ +#define REDISMODULE_CTX_FLAGS_LOADING (1<<13) + + +#define REDISMODULE_NOTIFY_GENERIC (1<<2) /* g */ +#define REDISMODULE_NOTIFY_STRING (1<<3) /* $ */ +#define REDISMODULE_NOTIFY_LIST (1<<4) /* l */ +#define REDISMODULE_NOTIFY_SET (1<<5) /* s */ +#define REDISMODULE_NOTIFY_HASH (1<<6) /* h */ +#define REDISMODULE_NOTIFY_ZSET (1<<7) /* z */ +#define REDISMODULE_NOTIFY_EXPIRED (1<<8) /* x */ +#define REDISMODULE_NOTIFY_EVICTED (1<<9) /* e */ +#define REDISMODULE_NOTIFY_STREAM (1<<10) /* t */ +#define REDISMODULE_NOTIFY_ALL (REDISMODULE_NOTIFY_GENERIC | REDISMODULE_NOTIFY_STRING | REDISMODULE_NOTIFY_LIST | REDISMODULE_NOTIFY_SET | REDISMODULE_NOTIFY_HASH | REDISMODULE_NOTIFY_ZSET | REDISMODULE_NOTIFY_EXPIRED | REDISMODULE_NOTIFY_EVICTED | REDISMODULE_NOTIFY_STREAM) /* A */ + + +/* A special pointer that we can use between the core and the module to signal + * field deletion, and that is impossible to be a valid pointer. */ +#define REDISMODULE_HASH_DELETE ((RedisModuleString*)(long)1) + +/* Error messages. */ +#define REDISMODULE_ERRORMSG_WRONGTYPE "WRONGTYPE Operation against a key holding the wrong kind of value" + +#define REDISMODULE_POSITIVE_INFINITE (1.0/0.0) +#define REDISMODULE_NEGATIVE_INFINITE (-1.0/0.0) + +/* Cluster API defines. */ +#define REDISMODULE_NODE_ID_LEN 40 +#define REDISMODULE_NODE_MYSELF (1<<0) +#define REDISMODULE_NODE_MASTER (1<<1) +#define REDISMODULE_NODE_SLAVE (1<<2) +#define REDISMODULE_NODE_PFAIL (1<<3) +#define REDISMODULE_NODE_FAIL (1<<4) +#define REDISMODULE_NODE_NOFAILOVER (1<<5) + +#define REDISMODULE_CLUSTER_FLAG_NONE 0 +#define REDISMODULE_CLUSTER_FLAG_NO_FAILOVER (1<<1) +#define REDISMODULE_CLUSTER_FLAG_NO_REDIRECTION (1<<2) + +#define REDISMODULE_NOT_USED(V) ((void) V) + +/* Bit flags for aux_save_triggers and the aux_load and aux_save callbacks */ +#define REDISMODULE_AUX_BEFORE_RDB (1<<0) +#define REDISMODULE_AUX_AFTER_RDB (1<<1) + +/* This type represents a timer handle, and is returned when a timer is + * registered and used in order to invalidate a timer. It's just a 64 bit + * number, because this is how each timer is represented inside the radix tree + * of timers that are going to expire, sorted by expire time. */ +typedef uint64_t RedisModuleTimerID; + +/* CommandFilter Flags */ + +/* Do filter RedisModule_Call() commands initiated by module itself. */ +#define REDISMODULE_CMDFILTER_NOSELF (1<<0) + +/* ------------------------- End of common defines ------------------------ */ + +#ifndef REDISMODULE_CORE + +typedef long long mstime_t; + +/* Incomplete structures for compiler checks but opaque access. */ +typedef struct RedisModuleCtx RedisModuleCtx; +typedef struct RedisModuleKey RedisModuleKey; +typedef struct RedisModuleString RedisModuleString; +typedef struct RedisModuleCallReply RedisModuleCallReply; +typedef struct RedisModuleIO RedisModuleIO; +typedef struct RedisModuleType RedisModuleType; +typedef struct RedisModuleDigest RedisModuleDigest; +typedef struct RedisModuleBlockedClient RedisModuleBlockedClient; +typedef struct RedisModuleClusterInfo RedisModuleClusterInfo; +typedef struct RedisModuleDict RedisModuleDict; +typedef struct RedisModuleDictIter RedisModuleDictIter; +typedef struct RedisModuleCommandFilterCtx RedisModuleCommandFilterCtx; +typedef struct RedisModuleCommandFilter RedisModuleCommandFilter; + +typedef int (*RedisModuleCmdFunc)(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +typedef void (*RedisModuleDisconnectFunc)(RedisModuleCtx *ctx, RedisModuleBlockedClient *bc); +typedef int (*RedisModuleNotificationFunc)(RedisModuleCtx *ctx, int type, const char *event, RedisModuleString *key); +typedef void *(*RedisModuleTypeLoadFunc)(RedisModuleIO *rdb, int encver); +typedef void (*RedisModuleTypeSaveFunc)(RedisModuleIO *rdb, void *value); +typedef int (*RedisModuleTypeAuxLoadFunc)(RedisModuleIO *rdb, int encver, int when); +typedef void (*RedisModuleTypeAuxSaveFunc)(RedisModuleIO *rdb, int when); +typedef void (*RedisModuleTypeRewriteFunc)(RedisModuleIO *aof, RedisModuleString *key, void *value); +typedef size_t (*RedisModuleTypeMemUsageFunc)(const void *value); +typedef void (*RedisModuleTypeDigestFunc)(RedisModuleDigest *digest, void *value); +typedef void (*RedisModuleTypeFreeFunc)(void *value); +typedef void (*RedisModuleClusterMessageReceiver)(RedisModuleCtx *ctx, const char *sender_id, uint8_t type, const unsigned char *payload, uint32_t len); +typedef void (*RedisModuleTimerProc)(RedisModuleCtx *ctx, void *data); +typedef void (*RedisModuleCommandFilterFunc) (RedisModuleCommandFilterCtx *filter); + +#define REDISMODULE_TYPE_METHOD_VERSION 2 +typedef struct RedisModuleTypeMethods { + uint64_t version; + RedisModuleTypeLoadFunc rdb_load; + RedisModuleTypeSaveFunc rdb_save; + RedisModuleTypeRewriteFunc aof_rewrite; + RedisModuleTypeMemUsageFunc mem_usage; + RedisModuleTypeDigestFunc digest; + RedisModuleTypeFreeFunc free; + RedisModuleTypeAuxLoadFunc aux_load; + RedisModuleTypeAuxSaveFunc aux_save; + int aux_save_triggers; +} RedisModuleTypeMethods; + +#define REDISMODULE_GET_API(name) \ + RedisModule_GetApi("RedisModule_" #name, ((void **)&RedisModule_ ## name)) + +#define REDISMODULE_API_FUNC(x) (*x) + + +void *REDISMODULE_API_FUNC(RedisModule_Alloc)(size_t bytes); +void *REDISMODULE_API_FUNC(RedisModule_Realloc)(void *ptr, size_t bytes); +void REDISMODULE_API_FUNC(RedisModule_Free)(void *ptr); +void *REDISMODULE_API_FUNC(RedisModule_Calloc)(size_t nmemb, size_t size); +char *REDISMODULE_API_FUNC(RedisModule_Strdup)(const char *str); +int REDISMODULE_API_FUNC(RedisModule_GetApi)(const char *, void *); +int REDISMODULE_API_FUNC(RedisModule_CreateCommand)(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep); +void REDISMODULE_API_FUNC(RedisModule_SetModuleAttribs)(RedisModuleCtx *ctx, const char *name, int ver, int apiver); +int REDISMODULE_API_FUNC(RedisModule_IsModuleNameBusy)(const char *name); +int REDISMODULE_API_FUNC(RedisModule_WrongArity)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithLongLong)(RedisModuleCtx *ctx, long long ll); +int REDISMODULE_API_FUNC(RedisModule_GetSelectedDb)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_SelectDb)(RedisModuleCtx *ctx, int newid); +void *REDISMODULE_API_FUNC(RedisModule_OpenKey)(RedisModuleCtx *ctx, RedisModuleString *keyname, int mode); +void REDISMODULE_API_FUNC(RedisModule_CloseKey)(RedisModuleKey *kp); +int REDISMODULE_API_FUNC(RedisModule_KeyType)(RedisModuleKey *kp); +size_t REDISMODULE_API_FUNC(RedisModule_ValueLength)(RedisModuleKey *kp); +int REDISMODULE_API_FUNC(RedisModule_ListPush)(RedisModuleKey *kp, int where, RedisModuleString *ele); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_ListPop)(RedisModuleKey *key, int where); +RedisModuleCallReply *REDISMODULE_API_FUNC(RedisModule_Call)(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...); +const char *REDISMODULE_API_FUNC(RedisModule_CallReplyProto)(RedisModuleCallReply *reply, size_t *len); +void REDISMODULE_API_FUNC(RedisModule_FreeCallReply)(RedisModuleCallReply *reply); +int REDISMODULE_API_FUNC(RedisModule_CallReplyType)(RedisModuleCallReply *reply); +long long REDISMODULE_API_FUNC(RedisModule_CallReplyInteger)(RedisModuleCallReply *reply); +size_t REDISMODULE_API_FUNC(RedisModule_CallReplyLength)(RedisModuleCallReply *reply); +RedisModuleCallReply *REDISMODULE_API_FUNC(RedisModule_CallReplyArrayElement)(RedisModuleCallReply *reply, size_t idx); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateString)(RedisModuleCtx *ctx, const char *ptr, size_t len); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringFromLongLong)(RedisModuleCtx *ctx, long long ll); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringFromString)(RedisModuleCtx *ctx, const RedisModuleString *str); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringPrintf)(RedisModuleCtx *ctx, const char *fmt, ...); +void REDISMODULE_API_FUNC(RedisModule_FreeString)(RedisModuleCtx *ctx, RedisModuleString *str); +const char *REDISMODULE_API_FUNC(RedisModule_StringPtrLen)(const RedisModuleString *str, size_t *len); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithError)(RedisModuleCtx *ctx, const char *err); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithSimpleString)(RedisModuleCtx *ctx, const char *msg); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithArray)(RedisModuleCtx *ctx, long len); +void REDISMODULE_API_FUNC(RedisModule_ReplySetArrayLength)(RedisModuleCtx *ctx, long len); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithStringBuffer)(RedisModuleCtx *ctx, const char *buf, size_t len); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithCString)(RedisModuleCtx *ctx, const char *buf); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithString)(RedisModuleCtx *ctx, RedisModuleString *str); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithNull)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithDouble)(RedisModuleCtx *ctx, double d); +int REDISMODULE_API_FUNC(RedisModule_ReplyWithCallReply)(RedisModuleCtx *ctx, RedisModuleCallReply *reply); +int REDISMODULE_API_FUNC(RedisModule_StringToLongLong)(const RedisModuleString *str, long long *ll); +int REDISMODULE_API_FUNC(RedisModule_StringToDouble)(const RedisModuleString *str, double *d); +void REDISMODULE_API_FUNC(RedisModule_AutoMemory)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_Replicate)(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...); +int REDISMODULE_API_FUNC(RedisModule_ReplicateVerbatim)(RedisModuleCtx *ctx); +const char *REDISMODULE_API_FUNC(RedisModule_CallReplyStringPtr)(RedisModuleCallReply *reply, size_t *len); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CreateStringFromCallReply)(RedisModuleCallReply *reply); +int REDISMODULE_API_FUNC(RedisModule_DeleteKey)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_UnlinkKey)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_StringSet)(RedisModuleKey *key, RedisModuleString *str); +char *REDISMODULE_API_FUNC(RedisModule_StringDMA)(RedisModuleKey *key, size_t *len, int mode); +int REDISMODULE_API_FUNC(RedisModule_StringTruncate)(RedisModuleKey *key, size_t newlen); +mstime_t REDISMODULE_API_FUNC(RedisModule_GetExpire)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_SetExpire)(RedisModuleKey *key, mstime_t expire); +int REDISMODULE_API_FUNC(RedisModule_ZsetAdd)(RedisModuleKey *key, double score, RedisModuleString *ele, int *flagsptr); +int REDISMODULE_API_FUNC(RedisModule_ZsetIncrby)(RedisModuleKey *key, double score, RedisModuleString *ele, int *flagsptr, double *newscore); +int REDISMODULE_API_FUNC(RedisModule_ZsetScore)(RedisModuleKey *key, RedisModuleString *ele, double *score); +int REDISMODULE_API_FUNC(RedisModule_ZsetRem)(RedisModuleKey *key, RedisModuleString *ele, int *deleted); +void REDISMODULE_API_FUNC(RedisModule_ZsetRangeStop)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_ZsetFirstInScoreRange)(RedisModuleKey *key, double min, double max, int minex, int maxex); +int REDISMODULE_API_FUNC(RedisModule_ZsetLastInScoreRange)(RedisModuleKey *key, double min, double max, int minex, int maxex); +int REDISMODULE_API_FUNC(RedisModule_ZsetFirstInLexRange)(RedisModuleKey *key, RedisModuleString *min, RedisModuleString *max); +int REDISMODULE_API_FUNC(RedisModule_ZsetLastInLexRange)(RedisModuleKey *key, RedisModuleString *min, RedisModuleString *max); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_ZsetRangeCurrentElement)(RedisModuleKey *key, double *score); +int REDISMODULE_API_FUNC(RedisModule_ZsetRangeNext)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_ZsetRangePrev)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_ZsetRangeEndReached)(RedisModuleKey *key); +int REDISMODULE_API_FUNC(RedisModule_HashSet)(RedisModuleKey *key, int flags, ...); +int REDISMODULE_API_FUNC(RedisModule_HashGet)(RedisModuleKey *key, int flags, ...); +int REDISMODULE_API_FUNC(RedisModule_IsKeysPositionRequest)(RedisModuleCtx *ctx); +void REDISMODULE_API_FUNC(RedisModule_KeyAtPos)(RedisModuleCtx *ctx, int pos); +unsigned long long REDISMODULE_API_FUNC(RedisModule_GetClientId)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_GetContextFlags)(RedisModuleCtx *ctx); +void *REDISMODULE_API_FUNC(RedisModule_PoolAlloc)(RedisModuleCtx *ctx, size_t bytes); +RedisModuleType *REDISMODULE_API_FUNC(RedisModule_CreateDataType)(RedisModuleCtx *ctx, const char *name, int encver, RedisModuleTypeMethods *typemethods); +int REDISMODULE_API_FUNC(RedisModule_ModuleTypeSetValue)(RedisModuleKey *key, RedisModuleType *mt, void *value); +RedisModuleType *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetType)(RedisModuleKey *key); +void *REDISMODULE_API_FUNC(RedisModule_ModuleTypeGetValue)(RedisModuleKey *key); +void REDISMODULE_API_FUNC(RedisModule_SaveUnsigned)(RedisModuleIO *io, uint64_t value); +uint64_t REDISMODULE_API_FUNC(RedisModule_LoadUnsigned)(RedisModuleIO *io); +void REDISMODULE_API_FUNC(RedisModule_SaveSigned)(RedisModuleIO *io, int64_t value); +int64_t REDISMODULE_API_FUNC(RedisModule_LoadSigned)(RedisModuleIO *io); +void REDISMODULE_API_FUNC(RedisModule_EmitAOF)(RedisModuleIO *io, const char *cmdname, const char *fmt, ...); +void REDISMODULE_API_FUNC(RedisModule_SaveString)(RedisModuleIO *io, RedisModuleString *s); +void REDISMODULE_API_FUNC(RedisModule_SaveStringBuffer)(RedisModuleIO *io, const char *str, size_t len); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_LoadString)(RedisModuleIO *io); +char *REDISMODULE_API_FUNC(RedisModule_LoadStringBuffer)(RedisModuleIO *io, size_t *lenptr); +void REDISMODULE_API_FUNC(RedisModule_SaveDouble)(RedisModuleIO *io, double value); +double REDISMODULE_API_FUNC(RedisModule_LoadDouble)(RedisModuleIO *io); +void REDISMODULE_API_FUNC(RedisModule_SaveFloat)(RedisModuleIO *io, float value); +float REDISMODULE_API_FUNC(RedisModule_LoadFloat)(RedisModuleIO *io); +void REDISMODULE_API_FUNC(RedisModule_Log)(RedisModuleCtx *ctx, const char *level, const char *fmt, ...); +void REDISMODULE_API_FUNC(RedisModule_LogIOError)(RedisModuleIO *io, const char *levelstr, const char *fmt, ...); +int REDISMODULE_API_FUNC(RedisModule_StringAppendBuffer)(RedisModuleCtx *ctx, RedisModuleString *str, const char *buf, size_t len); +void REDISMODULE_API_FUNC(RedisModule_RetainString)(RedisModuleCtx *ctx, RedisModuleString *str); +int REDISMODULE_API_FUNC(RedisModule_StringCompare)(RedisModuleString *a, RedisModuleString *b); +RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetContextFromIO)(RedisModuleIO *io); +const RedisModuleString *REDISMODULE_API_FUNC(RedisModule_GetKeyNameFromIO)(RedisModuleIO *io); +long long REDISMODULE_API_FUNC(RedisModule_Milliseconds)(void); +void REDISMODULE_API_FUNC(RedisModule_DigestAddStringBuffer)(RedisModuleDigest *md, unsigned char *ele, size_t len); +void REDISMODULE_API_FUNC(RedisModule_DigestAddLongLong)(RedisModuleDigest *md, long long ele); +void REDISMODULE_API_FUNC(RedisModule_DigestEndSequence)(RedisModuleDigest *md); +RedisModuleDict *REDISMODULE_API_FUNC(RedisModule_CreateDict)(RedisModuleCtx *ctx); +void REDISMODULE_API_FUNC(RedisModule_FreeDict)(RedisModuleCtx *ctx, RedisModuleDict *d); +uint64_t REDISMODULE_API_FUNC(RedisModule_DictSize)(RedisModuleDict *d); +int REDISMODULE_API_FUNC(RedisModule_DictSetC)(RedisModuleDict *d, void *key, size_t keylen, void *ptr); +int REDISMODULE_API_FUNC(RedisModule_DictReplaceC)(RedisModuleDict *d, void *key, size_t keylen, void *ptr); +int REDISMODULE_API_FUNC(RedisModule_DictSet)(RedisModuleDict *d, RedisModuleString *key, void *ptr); +int REDISMODULE_API_FUNC(RedisModule_DictReplace)(RedisModuleDict *d, RedisModuleString *key, void *ptr); +void *REDISMODULE_API_FUNC(RedisModule_DictGetC)(RedisModuleDict *d, void *key, size_t keylen, int *nokey); +void *REDISMODULE_API_FUNC(RedisModule_DictGet)(RedisModuleDict *d, RedisModuleString *key, int *nokey); +int REDISMODULE_API_FUNC(RedisModule_DictDelC)(RedisModuleDict *d, void *key, size_t keylen, void *oldval); +int REDISMODULE_API_FUNC(RedisModule_DictDel)(RedisModuleDict *d, RedisModuleString *key, void *oldval); +RedisModuleDictIter *REDISMODULE_API_FUNC(RedisModule_DictIteratorStartC)(RedisModuleDict *d, const char *op, void *key, size_t keylen); +RedisModuleDictIter *REDISMODULE_API_FUNC(RedisModule_DictIteratorStart)(RedisModuleDict *d, const char *op, RedisModuleString *key); +void REDISMODULE_API_FUNC(RedisModule_DictIteratorStop)(RedisModuleDictIter *di); +int REDISMODULE_API_FUNC(RedisModule_DictIteratorReseekC)(RedisModuleDictIter *di, const char *op, void *key, size_t keylen); +int REDISMODULE_API_FUNC(RedisModule_DictIteratorReseek)(RedisModuleDictIter *di, const char *op, RedisModuleString *key); +void *REDISMODULE_API_FUNC(RedisModule_DictNextC)(RedisModuleDictIter *di, size_t *keylen, void **dataptr); +void *REDISMODULE_API_FUNC(RedisModule_DictPrevC)(RedisModuleDictIter *di, size_t *keylen, void **dataptr); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_DictNext)(RedisModuleCtx *ctx, RedisModuleDictIter *di, void **dataptr); +RedisModuleString *REDISMODULE_API_FUNC(RedisModule_DictPrev)(RedisModuleCtx *ctx, RedisModuleDictIter *di, void **dataptr); +int REDISMODULE_API_FUNC(RedisModule_DictCompareC)(RedisModuleDictIter *di, const char *op, void *key, size_t keylen); +int REDISMODULE_API_FUNC(RedisModule_DictCompare)(RedisModuleDictIter *di, const char *op, RedisModuleString *key); + +/* Experimental APIs */ +#ifdef REDISMODULE_EXPERIMENTAL_API +#define REDISMODULE_EXPERIMENTAL_API_VERSION 3 +RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_BlockClient)(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms); +int REDISMODULE_API_FUNC(RedisModule_UnblockClient)(RedisModuleBlockedClient *bc, void *privdata); +int REDISMODULE_API_FUNC(RedisModule_IsBlockedReplyRequest)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_IsBlockedTimeoutRequest)(RedisModuleCtx *ctx); +void *REDISMODULE_API_FUNC(RedisModule_GetBlockedClientPrivateData)(RedisModuleCtx *ctx); +RedisModuleBlockedClient *REDISMODULE_API_FUNC(RedisModule_GetBlockedClientHandle)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_AbortBlock)(RedisModuleBlockedClient *bc); +RedisModuleCtx *REDISMODULE_API_FUNC(RedisModule_GetThreadSafeContext)(RedisModuleBlockedClient *bc); +void REDISMODULE_API_FUNC(RedisModule_FreeThreadSafeContext)(RedisModuleCtx *ctx); +void REDISMODULE_API_FUNC(RedisModule_ThreadSafeContextLock)(RedisModuleCtx *ctx); +void REDISMODULE_API_FUNC(RedisModule_ThreadSafeContextUnlock)(RedisModuleCtx *ctx); +int REDISMODULE_API_FUNC(RedisModule_SubscribeToKeyspaceEvents)(RedisModuleCtx *ctx, int types, RedisModuleNotificationFunc cb); +int REDISMODULE_API_FUNC(RedisModule_BlockedClientDisconnected)(RedisModuleCtx *ctx); +void REDISMODULE_API_FUNC(RedisModule_RegisterClusterMessageReceiver)(RedisModuleCtx *ctx, uint8_t type, RedisModuleClusterMessageReceiver callback); +int REDISMODULE_API_FUNC(RedisModule_SendClusterMessage)(RedisModuleCtx *ctx, char *target_id, uint8_t type, unsigned char *msg, uint32_t len); +int REDISMODULE_API_FUNC(RedisModule_GetClusterNodeInfo)(RedisModuleCtx *ctx, const char *id, char *ip, char *master_id, int *port, int *flags); +char **REDISMODULE_API_FUNC(RedisModule_GetClusterNodesList)(RedisModuleCtx *ctx, size_t *numnodes); +void REDISMODULE_API_FUNC(RedisModule_FreeClusterNodesList)(char **ids); +RedisModuleTimerID REDISMODULE_API_FUNC(RedisModule_CreateTimer)(RedisModuleCtx *ctx, mstime_t period, RedisModuleTimerProc callback, void *data); +int REDISMODULE_API_FUNC(RedisModule_StopTimer)(RedisModuleCtx *ctx, RedisModuleTimerID id, void **data); +int REDISMODULE_API_FUNC(RedisModule_GetTimerInfo)(RedisModuleCtx *ctx, RedisModuleTimerID id, uint64_t *remaining, void **data); +const char *REDISMODULE_API_FUNC(RedisModule_GetMyClusterID)(void); +size_t REDISMODULE_API_FUNC(RedisModule_GetClusterSize)(void); +void REDISMODULE_API_FUNC(RedisModule_GetRandomBytes)(unsigned char *dst, size_t len); +void REDISMODULE_API_FUNC(RedisModule_GetRandomHexChars)(char *dst, size_t len); +void REDISMODULE_API_FUNC(RedisModule_SetDisconnectCallback)(RedisModuleBlockedClient *bc, RedisModuleDisconnectFunc callback); +void REDISMODULE_API_FUNC(RedisModule_SetClusterFlags)(RedisModuleCtx *ctx, uint64_t flags); +int REDISMODULE_API_FUNC(RedisModule_ExportSharedAPI)(RedisModuleCtx *ctx, const char *apiname, void *func); +void *REDISMODULE_API_FUNC(RedisModule_GetSharedAPI)(RedisModuleCtx *ctx, const char *apiname); +RedisModuleCommandFilter *REDISMODULE_API_FUNC(RedisModule_RegisterCommandFilter)(RedisModuleCtx *ctx, RedisModuleCommandFilterFunc cb, int flags); +int REDISMODULE_API_FUNC(RedisModule_UnregisterCommandFilter)(RedisModuleCtx *ctx, RedisModuleCommandFilter *filter); +int REDISMODULE_API_FUNC(RedisModule_CommandFilterArgsCount)(RedisModuleCommandFilterCtx *fctx); +const RedisModuleString *REDISMODULE_API_FUNC(RedisModule_CommandFilterArgGet)(RedisModuleCommandFilterCtx *fctx, int pos); +int REDISMODULE_API_FUNC(RedisModule_CommandFilterArgInsert)(RedisModuleCommandFilterCtx *fctx, int pos, RedisModuleString *arg); +int REDISMODULE_API_FUNC(RedisModule_CommandFilterArgReplace)(RedisModuleCommandFilterCtx *fctx, int pos, RedisModuleString *arg); +int REDISMODULE_API_FUNC(RedisModule_CommandFilterArgDelete)(RedisModuleCommandFilterCtx *fctx, int pos); +#endif + +/* This is included inline inside each Redis module. */ +static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) __attribute__((unused)); +static int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) { + void *getapifuncptr = ((void**)ctx)[0]; + RedisModule_GetApi = (int (*)(const char *, void *)) (unsigned long)getapifuncptr; + REDISMODULE_GET_API(Alloc); + REDISMODULE_GET_API(Calloc); + REDISMODULE_GET_API(Free); + REDISMODULE_GET_API(Realloc); + REDISMODULE_GET_API(Strdup); + REDISMODULE_GET_API(CreateCommand); + REDISMODULE_GET_API(SetModuleAttribs); + REDISMODULE_GET_API(IsModuleNameBusy); + REDISMODULE_GET_API(WrongArity); + REDISMODULE_GET_API(ReplyWithLongLong); + REDISMODULE_GET_API(ReplyWithError); + REDISMODULE_GET_API(ReplyWithSimpleString); + REDISMODULE_GET_API(ReplyWithArray); + REDISMODULE_GET_API(ReplySetArrayLength); + REDISMODULE_GET_API(ReplyWithStringBuffer); + REDISMODULE_GET_API(ReplyWithCString); + REDISMODULE_GET_API(ReplyWithString); + REDISMODULE_GET_API(ReplyWithNull); + REDISMODULE_GET_API(ReplyWithCallReply); + REDISMODULE_GET_API(ReplyWithDouble); + REDISMODULE_GET_API(ReplySetArrayLength); + REDISMODULE_GET_API(GetSelectedDb); + REDISMODULE_GET_API(SelectDb); + REDISMODULE_GET_API(OpenKey); + REDISMODULE_GET_API(CloseKey); + REDISMODULE_GET_API(KeyType); + REDISMODULE_GET_API(ValueLength); + REDISMODULE_GET_API(ListPush); + REDISMODULE_GET_API(ListPop); + REDISMODULE_GET_API(StringToLongLong); + REDISMODULE_GET_API(StringToDouble); + REDISMODULE_GET_API(Call); + REDISMODULE_GET_API(CallReplyProto); + REDISMODULE_GET_API(FreeCallReply); + REDISMODULE_GET_API(CallReplyInteger); + REDISMODULE_GET_API(CallReplyType); + REDISMODULE_GET_API(CallReplyLength); + REDISMODULE_GET_API(CallReplyArrayElement); + REDISMODULE_GET_API(CallReplyStringPtr); + REDISMODULE_GET_API(CreateStringFromCallReply); + REDISMODULE_GET_API(CreateString); + REDISMODULE_GET_API(CreateStringFromLongLong); + REDISMODULE_GET_API(CreateStringFromString); + REDISMODULE_GET_API(CreateStringPrintf); + REDISMODULE_GET_API(FreeString); + REDISMODULE_GET_API(StringPtrLen); + REDISMODULE_GET_API(AutoMemory); + REDISMODULE_GET_API(Replicate); + REDISMODULE_GET_API(ReplicateVerbatim); + REDISMODULE_GET_API(DeleteKey); + REDISMODULE_GET_API(UnlinkKey); + REDISMODULE_GET_API(StringSet); + REDISMODULE_GET_API(StringDMA); + REDISMODULE_GET_API(StringTruncate); + REDISMODULE_GET_API(GetExpire); + REDISMODULE_GET_API(SetExpire); + REDISMODULE_GET_API(ZsetAdd); + REDISMODULE_GET_API(ZsetIncrby); + REDISMODULE_GET_API(ZsetScore); + REDISMODULE_GET_API(ZsetRem); + REDISMODULE_GET_API(ZsetRangeStop); + REDISMODULE_GET_API(ZsetFirstInScoreRange); + REDISMODULE_GET_API(ZsetLastInScoreRange); + REDISMODULE_GET_API(ZsetFirstInLexRange); + REDISMODULE_GET_API(ZsetLastInLexRange); + REDISMODULE_GET_API(ZsetRangeCurrentElement); + REDISMODULE_GET_API(ZsetRangeNext); + REDISMODULE_GET_API(ZsetRangePrev); + REDISMODULE_GET_API(ZsetRangeEndReached); + REDISMODULE_GET_API(HashSet); + REDISMODULE_GET_API(HashGet); + REDISMODULE_GET_API(IsKeysPositionRequest); + REDISMODULE_GET_API(KeyAtPos); + REDISMODULE_GET_API(GetClientId); + REDISMODULE_GET_API(GetContextFlags); + REDISMODULE_GET_API(PoolAlloc); + REDISMODULE_GET_API(CreateDataType); + REDISMODULE_GET_API(ModuleTypeSetValue); + REDISMODULE_GET_API(ModuleTypeGetType); + REDISMODULE_GET_API(ModuleTypeGetValue); + REDISMODULE_GET_API(SaveUnsigned); + REDISMODULE_GET_API(LoadUnsigned); + REDISMODULE_GET_API(SaveSigned); + REDISMODULE_GET_API(LoadSigned); + REDISMODULE_GET_API(SaveString); + REDISMODULE_GET_API(SaveStringBuffer); + REDISMODULE_GET_API(LoadString); + REDISMODULE_GET_API(LoadStringBuffer); + REDISMODULE_GET_API(SaveDouble); + REDISMODULE_GET_API(LoadDouble); + REDISMODULE_GET_API(SaveFloat); + REDISMODULE_GET_API(LoadFloat); + REDISMODULE_GET_API(EmitAOF); + REDISMODULE_GET_API(Log); + REDISMODULE_GET_API(LogIOError); + REDISMODULE_GET_API(StringAppendBuffer); + REDISMODULE_GET_API(RetainString); + REDISMODULE_GET_API(StringCompare); + REDISMODULE_GET_API(GetContextFromIO); + REDISMODULE_GET_API(GetKeyNameFromIO); + REDISMODULE_GET_API(Milliseconds); + REDISMODULE_GET_API(DigestAddStringBuffer); + REDISMODULE_GET_API(DigestAddLongLong); + REDISMODULE_GET_API(DigestEndSequence); + REDISMODULE_GET_API(CreateDict); + REDISMODULE_GET_API(FreeDict); + REDISMODULE_GET_API(DictSize); + REDISMODULE_GET_API(DictSetC); + REDISMODULE_GET_API(DictReplaceC); + REDISMODULE_GET_API(DictSet); + REDISMODULE_GET_API(DictReplace); + REDISMODULE_GET_API(DictGetC); + REDISMODULE_GET_API(DictGet); + REDISMODULE_GET_API(DictDelC); + REDISMODULE_GET_API(DictDel); + REDISMODULE_GET_API(DictIteratorStartC); + REDISMODULE_GET_API(DictIteratorStart); + REDISMODULE_GET_API(DictIteratorStop); + REDISMODULE_GET_API(DictIteratorReseekC); + REDISMODULE_GET_API(DictIteratorReseek); + REDISMODULE_GET_API(DictNextC); + REDISMODULE_GET_API(DictPrevC); + REDISMODULE_GET_API(DictNext); + REDISMODULE_GET_API(DictPrev); + REDISMODULE_GET_API(DictCompare); + REDISMODULE_GET_API(DictCompareC); + +#ifdef REDISMODULE_EXPERIMENTAL_API + REDISMODULE_GET_API(GetThreadSafeContext); + REDISMODULE_GET_API(FreeThreadSafeContext); + REDISMODULE_GET_API(ThreadSafeContextLock); + REDISMODULE_GET_API(ThreadSafeContextUnlock); + REDISMODULE_GET_API(BlockClient); + REDISMODULE_GET_API(UnblockClient); + REDISMODULE_GET_API(IsBlockedReplyRequest); + REDISMODULE_GET_API(IsBlockedTimeoutRequest); + REDISMODULE_GET_API(GetBlockedClientPrivateData); + REDISMODULE_GET_API(GetBlockedClientHandle); + REDISMODULE_GET_API(AbortBlock); + REDISMODULE_GET_API(SetDisconnectCallback); + REDISMODULE_GET_API(SubscribeToKeyspaceEvents); + REDISMODULE_GET_API(BlockedClientDisconnected); + REDISMODULE_GET_API(RegisterClusterMessageReceiver); + REDISMODULE_GET_API(SendClusterMessage); + REDISMODULE_GET_API(GetClusterNodeInfo); + REDISMODULE_GET_API(GetClusterNodesList); + REDISMODULE_GET_API(FreeClusterNodesList); + REDISMODULE_GET_API(CreateTimer); + REDISMODULE_GET_API(StopTimer); + REDISMODULE_GET_API(GetTimerInfo); + REDISMODULE_GET_API(GetMyClusterID); + REDISMODULE_GET_API(GetClusterSize); + REDISMODULE_GET_API(GetRandomBytes); + REDISMODULE_GET_API(GetRandomHexChars); + REDISMODULE_GET_API(SetClusterFlags); + REDISMODULE_GET_API(ExportSharedAPI); + REDISMODULE_GET_API(GetSharedAPI); + REDISMODULE_GET_API(RegisterCommandFilter); + REDISMODULE_GET_API(UnregisterCommandFilter); + REDISMODULE_GET_API(CommandFilterArgsCount); + REDISMODULE_GET_API(CommandFilterArgGet); + REDISMODULE_GET_API(CommandFilterArgInsert); + REDISMODULE_GET_API(CommandFilterArgReplace); + REDISMODULE_GET_API(CommandFilterArgDelete); +#endif + + if (RedisModule_IsModuleNameBusy && RedisModule_IsModuleNameBusy(name)) return REDISMODULE_ERR; + RedisModule_SetModuleAttribs(ctx,name,ver,apiver); + return REDISMODULE_OK; +} + +#else + +/* Things only defined for the modules core, not exported to modules + * including this file. */ +#define RedisModuleString robj + +#endif /* REDISMODULE_CORE */ +#endif /* REDISMOUDLE_H */ diff --git a/setup/dbaas/redismodule/m4/ax_prog_doxygen.m4 b/setup/dbaas/redismodule/m4/ax_prog_doxygen.m4 new file mode 100755 index 0000000..a371f7f --- /dev/null +++ b/setup/dbaas/redismodule/m4/ax_prog_doxygen.m4 @@ -0,0 +1,586 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_prog_doxygen.html +# =========================================================================== +# +# SYNOPSIS +# +# DX_INIT_DOXYGEN(PROJECT-NAME, [DOXYFILE-PATH], [OUTPUT-DIR], ...) +# DX_DOXYGEN_FEATURE(ON|OFF) +# DX_DOT_FEATURE(ON|OFF) +# DX_HTML_FEATURE(ON|OFF) +# DX_CHM_FEATURE(ON|OFF) +# DX_CHI_FEATURE(ON|OFF) +# DX_MAN_FEATURE(ON|OFF) +# DX_RTF_FEATURE(ON|OFF) +# DX_XML_FEATURE(ON|OFF) +# DX_PDF_FEATURE(ON|OFF) +# DX_PS_FEATURE(ON|OFF) +# +# DESCRIPTION +# +# The DX_*_FEATURE macros control the default setting for the given +# Doxygen feature. Supported features are 'DOXYGEN' itself, 'DOT' for +# generating graphics, 'HTML' for plain HTML, 'CHM' for compressed HTML +# help (for MS users), 'CHI' for generating a separate .chi file by the +# .chm file, and 'MAN', 'RTF', 'XML', 'PDF' and 'PS' for the appropriate +# output formats. The environment variable DOXYGEN_PAPER_SIZE may be +# specified to override the default 'a4wide' paper size. +# +# By default, HTML, PDF and PS documentation is generated as this seems to +# be the most popular and portable combination. MAN pages created by +# Doxygen are usually problematic, though by picking an appropriate subset +# and doing some massaging they might be better than nothing. CHM and RTF +# are specific for MS (note that you can't generate both HTML and CHM at +# the same time). The XML is rather useless unless you apply specialized +# post-processing to it. +# +# The macros mainly control the default state of the feature. The use can +# override the default by specifying --enable or --disable. The macros +# ensure that contradictory flags are not given (e.g., +# --enable-doxygen-html and --enable-doxygen-chm, +# --enable-doxygen-anything with --disable-doxygen, etc.) Finally, each +# feature will be automatically disabled (with a warning) if the required +# programs are missing. +# +# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN +# with the following parameters: a one-word name for the project for use +# as a filename base etc., an optional configuration file name (the +# default is '$(srcdir)/Doxyfile', the same as Doxygen's default), and an +# optional output directory name (the default is 'doxygen-doc'). To run +# doxygen multiple times for different configuration files and output +# directories provide more parameters: the second, forth, sixth, etc +# parameter are configuration file names and the third, fifth, seventh, +# etc parameter are output directories. No checking is done to catch +# duplicates. +# +# Automake Support +# +# The DX_RULES substitution can be used to add all needed rules to the +# Makefile. Note that this is a substitution without being a variable: +# only the @DX_RULES@ syntax will work. +# +# The provided targets are: +# +# doxygen-doc: Generate all doxygen documentation. +# +# doxygen-run: Run doxygen, which will generate some of the +# documentation (HTML, CHM, CHI, MAN, RTF, XML) +# but will not do the post processing required +# for the rest of it (PS, PDF). +# +# doxygen-ps: Generate doxygen PostScript documentation. +# +# doxygen-pdf: Generate doxygen PDF documentation. +# +# Note that by default these are not integrated into the automake targets. +# If doxygen is used to generate man pages, you can achieve this +# integration by setting man3_MANS to the list of man pages generated and +# then adding the dependency: +# +# $(man3_MANS): doxygen-doc +# +# This will cause make to run doxygen and generate all the documentation. +# +# The following variable is intended for use in Makefile.am: +# +# DX_CLEANFILES = everything to clean. +# +# Then add this variable to MOSTLYCLEANFILES. +# +# LICENSE +# +# Copyright (c) 2009 Oren Ben-Kiki +# Copyright (c) 2015 Olaf Mandel +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 23 + +## ----------## +## Defaults. ## +## ----------## + +DX_ENV="" +AC_DEFUN([DX_FEATURE_doc], ON) +AC_DEFUN([DX_FEATURE_dot], OFF) +AC_DEFUN([DX_FEATURE_man], OFF) +AC_DEFUN([DX_FEATURE_html], ON) +AC_DEFUN([DX_FEATURE_chm], OFF) +AC_DEFUN([DX_FEATURE_chi], OFF) +AC_DEFUN([DX_FEATURE_rtf], OFF) +AC_DEFUN([DX_FEATURE_xml], OFF) +AC_DEFUN([DX_FEATURE_pdf], ON) +AC_DEFUN([DX_FEATURE_ps], ON) + +## --------------- ## +## Private macros. ## +## --------------- ## + +# DX_ENV_APPEND(VARIABLE, VALUE) +# ------------------------------ +# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen and add it +# as a substitution (but not a Makefile variable). The substitution +# is skipped if the variable name is VERSION. +AC_DEFUN([DX_ENV_APPEND], +[AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])dnl +m4_if([$1], [VERSION], [], [AC_SUBST([$1], [$2])dnl +AM_SUBST_NOTMAKE([$1])])dnl +]) + +# DX_DIRNAME_EXPR +# --------------- +# Expand into a shell expression prints the directory part of a path. +AC_DEFUN([DX_DIRNAME_EXPR], + [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']]) + +# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF) +# ------------------------------------- +# Expands according to the M4 (static) status of the feature. +AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])]) + +# DX_REQUIRE_PROG(VARIABLE, PROGRAM) +# ---------------------------------- +# Require the specified program to be found for the DX_CURRENT_FEATURE to work. +AC_DEFUN([DX_REQUIRE_PROG], [ +AC_PATH_TOOL([$1], [$2]) +if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then + AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION]) + AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) +fi +]) + +# DX_TEST_FEATURE(FEATURE) +# ------------------------ +# Expand to a shell expression testing whether the feature is active. +AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1]) + +# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE) +# ------------------------------------------------- +# Verify that a required features has the right state before trying to turn on +# the DX_CURRENT_FEATURE. +AC_DEFUN([DX_CHECK_DEPEND], [ +test "$DX_FLAG_$1" = "$2" \ +|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1, + requires, contradicts) doxygen-DX_CURRENT_FEATURE]) +]) + +# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE) +# ---------------------------------------------------------- +# Turn off the DX_CURRENT_FEATURE if the required feature is off. +AC_DEFUN([DX_CLEAR_DEPEND], [ +test "$DX_FLAG_$1" = "$2" || AC_SUBST(DX_FLAG_[]DX_CURRENT_FEATURE, 0) +]) + +# DX_FEATURE_ARG(FEATURE, DESCRIPTION, +# CHECK_DEPEND, CLEAR_DEPEND, +# REQUIRE, DO-IF-ON, DO-IF-OFF) +# -------------------------------------------- +# Parse the command-line option controlling a feature. CHECK_DEPEND is called +# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND), +# otherwise CLEAR_DEPEND is called to turn off the default state if a required +# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional +# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and +# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature. +AC_DEFUN([DX_ARG_ABLE], [ + AC_DEFUN([DX_CURRENT_FEATURE], [$1]) + AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2]) + AC_ARG_ENABLE(doxygen-$1, + [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1], + [--enable-doxygen-$1]), + DX_IF_FEATURE([$1], [don't $2], [$2]))], + [ +case "$enableval" in +#( +y|Y|yes|Yes|YES) + AC_SUBST([DX_FLAG_$1], 1) + $3 +;; #( +n|N|no|No|NO) + AC_SUBST([DX_FLAG_$1], 0) +;; #( +*) + AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1]) +;; +esac +], [ +AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)]) +$4 +]) +if DX_TEST_FEATURE([$1]); then + $5 + : +fi +if DX_TEST_FEATURE([$1]); then + $6 + : +else + $7 + : +fi +]) + +## -------------- ## +## Public macros. ## +## -------------- ## + +# DX_XXX_FEATURE(DEFAULT_STATE) +# ----------------------------- +AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc], [$1])]) +AC_DEFUN([DX_DOT_FEATURE], [AC_DEFUN([DX_FEATURE_dot], [$1])]) +AC_DEFUN([DX_MAN_FEATURE], [AC_DEFUN([DX_FEATURE_man], [$1])]) +AC_DEFUN([DX_HTML_FEATURE], [AC_DEFUN([DX_FEATURE_html], [$1])]) +AC_DEFUN([DX_CHM_FEATURE], [AC_DEFUN([DX_FEATURE_chm], [$1])]) +AC_DEFUN([DX_CHI_FEATURE], [AC_DEFUN([DX_FEATURE_chi], [$1])]) +AC_DEFUN([DX_RTF_FEATURE], [AC_DEFUN([DX_FEATURE_rtf], [$1])]) +AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) +AC_DEFUN([DX_XML_FEATURE], [AC_DEFUN([DX_FEATURE_xml], [$1])]) +AC_DEFUN([DX_PDF_FEATURE], [AC_DEFUN([DX_FEATURE_pdf], [$1])]) +AC_DEFUN([DX_PS_FEATURE], [AC_DEFUN([DX_FEATURE_ps], [$1])]) + +# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR], ...) +# -------------------------------------------------------------- +# PROJECT also serves as the base name for the documentation files. +# The default CONFIG-FILE is "$(srcdir)/Doxyfile" and OUTPUT-DOC-DIR is +# "doxygen-doc". +# More arguments are interpreted as interleaved CONFIG-FILE and +# OUTPUT-DOC-DIR values. +AC_DEFUN([DX_INIT_DOXYGEN], [ + +# Files: +AC_SUBST([DX_PROJECT], [$1]) +AC_SUBST([DX_CONFIG], ['ifelse([$2], [], [$(srcdir)/Doxyfile], [$2])']) +AC_SUBST([DX_DOCDIR], ['ifelse([$3], [], [doxygen-doc], [$3])']) +m4_if(m4_eval(3 < m4_count($@)), 1, [m4_for([DX_i], 4, m4_count($@), 2, + [AC_SUBST([DX_CONFIG]m4_eval(DX_i[/2]), + 'm4_default_nblank_quoted(m4_argn(DX_i, $@), + [$(srcdir)/Doxyfile])')])])dnl +m4_if(m4_eval(3 < m4_count($@)), 1, [m4_for([DX_i], 5, m4_count($@,), 2, + [AC_SUBST([DX_DOCDIR]m4_eval([(]DX_i[-1)/2]), + 'm4_default_nblank_quoted(m4_argn(DX_i, $@), + [doxygen-doc])')])])dnl +m4_define([DX_loop], m4_dquote(m4_if(m4_eval(3 < m4_count($@)), 1, + [m4_for([DX_i], 4, m4_count($@), 2, [, m4_eval(DX_i[/2])])], + [])))dnl + +# Environment variables used inside doxygen.cfg: +DX_ENV_APPEND(SRCDIR, $srcdir) +DX_ENV_APPEND(PROJECT, $DX_PROJECT) +DX_ENV_APPEND(VERSION, $PACKAGE_VERSION) + +# Doxygen itself: +DX_ARG_ABLE(doc, [generate any doxygen documentation], + [], + [], + [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen) + DX_REQUIRE_PROG([DX_PERL], perl)], + [DX_ENV_APPEND(PERL_PATH, $DX_PERL)]) + +# Dot for graphics: +DX_ARG_ABLE(dot, [generate graphics for doxygen documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_DOT], dot)], + [DX_ENV_APPEND(HAVE_DOT, YES) + DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])], + [DX_ENV_APPEND(HAVE_DOT, NO)]) + +# Man pages generation: +DX_ARG_ABLE(man, [generate doxygen manual pages], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [], + [DX_ENV_APPEND(GENERATE_MAN, YES)], + [DX_ENV_APPEND(GENERATE_MAN, NO)]) + +# RTF file generation: +DX_ARG_ABLE(rtf, [generate doxygen RTF documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [], + [DX_ENV_APPEND(GENERATE_RTF, YES)], + [DX_ENV_APPEND(GENERATE_RTF, NO)]) + +# XML file generation: +DX_ARG_ABLE(xml, [generate doxygen XML documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [], + [DX_ENV_APPEND(GENERATE_XML, YES)], + [DX_ENV_APPEND(GENERATE_XML, NO)]) + +# (Compressed) HTML help generation: +DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_HHC], hhc)], + [DX_ENV_APPEND(HHC_PATH, $DX_HHC) + DX_ENV_APPEND(GENERATE_HTML, YES) + DX_ENV_APPEND(GENERATE_HTMLHELP, YES)], + [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)]) + +# Separate CHI file generation. +DX_ARG_ABLE(chi, [generate doxygen separate compressed HTML help index file], + [DX_CHECK_DEPEND(chm, 1)], + [DX_CLEAR_DEPEND(chm, 1)], + [], + [DX_ENV_APPEND(GENERATE_CHI, YES)], + [DX_ENV_APPEND(GENERATE_CHI, NO)]) + +# Plain HTML pages generation: +DX_ARG_ABLE(html, [generate doxygen plain HTML documentation], + [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)], + [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)], + [], + [DX_ENV_APPEND(GENERATE_HTML, YES)], + [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)]) + +# PostScript file generation: +DX_ARG_ABLE(ps, [generate doxygen PostScript documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_LATEX], latex) + DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) + DX_REQUIRE_PROG([DX_DVIPS], dvips) + DX_REQUIRE_PROG([DX_EGREP], egrep)]) + +# PDF file generation: +DX_ARG_ABLE(pdf, [generate doxygen PDF documentation], + [DX_CHECK_DEPEND(doc, 1)], + [DX_CLEAR_DEPEND(doc, 1)], + [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex) + DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex) + DX_REQUIRE_PROG([DX_EGREP], egrep)]) + +# LaTeX generation for PS and/or PDF: +if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then + DX_ENV_APPEND(GENERATE_LATEX, YES) +else + DX_ENV_APPEND(GENERATE_LATEX, NO) +fi + +# Paper size for PS and/or PDF: +AC_ARG_VAR(DOXYGEN_PAPER_SIZE, + [a4wide (default), a4, letter, legal or executive]) +case "$DOXYGEN_PAPER_SIZE" in +#( +"") + AC_SUBST(DOXYGEN_PAPER_SIZE, "") +;; #( +a4wide|a4|letter|legal|executive) + DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE) +;; #( +*) + AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE']) +;; +esac + +# Rules: +AS_IF([[test $DX_FLAG_html -eq 1]], +[[DX_SNIPPET_html="## ------------------------------- ## +## Rules specific for HTML output. ## +## ------------------------------- ## + +DX_CLEAN_HTML = \$(DX_DOCDIR)/html]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/html]])[ + +"]], +[[DX_SNIPPET_html=""]]) +AS_IF([[test $DX_FLAG_chi -eq 1]], +[[DX_SNIPPET_chi=" +DX_CLEAN_CHI = \$(DX_DOCDIR)/\$(PACKAGE).chi]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).chi]])["]], +[[DX_SNIPPET_chi=""]]) +AS_IF([[test $DX_FLAG_chm -eq 1]], +[[DX_SNIPPET_chm="## ------------------------------ ## +## Rules specific for CHM output. ## +## ------------------------------ ## + +DX_CLEAN_CHM = \$(DX_DOCDIR)/chm]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/chm]])[\ +${DX_SNIPPET_chi} + +"]], +[[DX_SNIPPET_chm=""]]) +AS_IF([[test $DX_FLAG_man -eq 1]], +[[DX_SNIPPET_man="## ------------------------------ ## +## Rules specific for MAN output. ## +## ------------------------------ ## + +DX_CLEAN_MAN = \$(DX_DOCDIR)/man]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/man]])[ + +"]], +[[DX_SNIPPET_man=""]]) +AS_IF([[test $DX_FLAG_rtf -eq 1]], +[[DX_SNIPPET_rtf="## ------------------------------ ## +## Rules specific for RTF output. ## +## ------------------------------ ## + +DX_CLEAN_RTF = \$(DX_DOCDIR)/rtf]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/rtf]])[ + +"]], +[[DX_SNIPPET_rtf=""]]) +AS_IF([[test $DX_FLAG_xml -eq 1]], +[[DX_SNIPPET_xml="## ------------------------------ ## +## Rules specific for XML output. ## +## ------------------------------ ## + +DX_CLEAN_XML = \$(DX_DOCDIR)/xml]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/xml]])[ + +"]], +[[DX_SNIPPET_xml=""]]) +AS_IF([[test $DX_FLAG_ps -eq 1]], +[[DX_SNIPPET_ps="## ----------------------------- ## +## Rules specific for PS output. ## +## ----------------------------- ## + +DX_CLEAN_PS = \$(DX_DOCDIR)/\$(PACKAGE).ps]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps]])[ + +DX_PS_GOAL = doxygen-ps + +doxygen-ps: \$(DX_CLEAN_PS) + +]m4_foreach([DX_i], [DX_loop], +[[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).ps: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag + \$(DX_V_LATEX)cd \$(DX_DOCDIR]DX_i[)/latex; \\ + rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \\ + \$(DX_LATEX) refman.tex; \\ + \$(DX_MAKEINDEX) refman.idx; \\ + \$(DX_LATEX) refman.tex; \\ + countdown=5; \\ + while \$(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \\ + refman.log > /dev/null 2>&1 \\ + && test \$\$countdown -gt 0; do \\ + \$(DX_LATEX) refman.tex; \\ + countdown=\`expr \$\$countdown - 1\`; \\ + done; \\ + \$(DX_DVIPS) -o ../\$(PACKAGE).ps refman.dvi + +]])["]], +[[DX_SNIPPET_ps=""]]) +AS_IF([[test $DX_FLAG_pdf -eq 1]], +[[DX_SNIPPET_pdf="## ------------------------------ ## +## Rules specific for PDF output. ## +## ------------------------------ ## + +DX_CLEAN_PDF = \$(DX_DOCDIR)/\$(PACKAGE).pdf]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf]])[ + +DX_PDF_GOAL = doxygen-pdf + +doxygen-pdf: \$(DX_CLEAN_PDF) + +]m4_foreach([DX_i], [DX_loop], +[[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).pdf: \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag + \$(DX_V_LATEX)cd \$(DX_DOCDIR]DX_i[)/latex; \\ + rm -f *.aux *.toc *.idx *.ind *.ilg *.log *.out; \\ + \$(DX_PDFLATEX) refman.tex; \\ + \$(DX_MAKEINDEX) refman.idx; \\ + \$(DX_PDFLATEX) refman.tex; \\ + countdown=5; \\ + while \$(DX_EGREP) 'Rerun (LaTeX|to get cross-references right)' \\ + refman.log > /dev/null 2>&1 \\ + && test \$\$countdown -gt 0; do \\ + \$(DX_PDFLATEX) refman.tex; \\ + countdown=\`expr \$\$countdown - 1\`; \\ + done; \\ + mv refman.pdf ../\$(PACKAGE).pdf + +]])["]], +[[DX_SNIPPET_pdf=""]]) +AS_IF([[test $DX_FLAG_ps -eq 1 -o $DX_FLAG_pdf -eq 1]], +[[DX_SNIPPET_latex="## ------------------------------------------------- ## +## Rules specific for LaTeX (shared for PS and PDF). ## +## ------------------------------------------------- ## + +DX_V_LATEX = \$(_DX_v_LATEX_\$(V)) +_DX_v_LATEX_ = \$(_DX_v_LATEX_\$(AM_DEFAULT_VERBOSITY)) +_DX_v_LATEX_0 = @echo \" LATEX \" \$][@; + +DX_CLEAN_LATEX = \$(DX_DOCDIR)/latex]dnl +m4_foreach([DX_i], [m4_shift(DX_loop)], [[\\ + \$(DX_DOCDIR]DX_i[)/latex]])[ + +"]], +[[DX_SNIPPET_latex=""]]) + +AS_IF([[test $DX_FLAG_doc -eq 1]], +[[DX_SNIPPET_doc="## --------------------------------- ## +## Format-independent Doxygen rules. ## +## --------------------------------- ## + +${DX_SNIPPET_html}\ +${DX_SNIPPET_chm}\ +${DX_SNIPPET_man}\ +${DX_SNIPPET_rtf}\ +${DX_SNIPPET_xml}\ +${DX_SNIPPET_ps}\ +${DX_SNIPPET_pdf}\ +${DX_SNIPPET_latex}\ +DX_V_DXGEN = \$(_DX_v_DXGEN_\$(V)) +_DX_v_DXGEN_ = \$(_DX_v_DXGEN_\$(AM_DEFAULT_VERBOSITY)) +_DX_v_DXGEN_0 = @echo \" DXGEN \" \$<; + +.PHONY: doxygen-run doxygen-doc \$(DX_PS_GOAL) \$(DX_PDF_GOAL) + +.INTERMEDIATE: doxygen-run \$(DX_PS_GOAL) \$(DX_PDF_GOAL) + +doxygen-run:]m4_foreach([DX_i], [DX_loop], + [[ \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag]])[ + +doxygen-doc: doxygen-run \$(DX_PS_GOAL) \$(DX_PDF_GOAL) + +]m4_foreach([DX_i], [DX_loop], +[[\$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag: \$(DX_CONFIG]DX_i[) \$(pkginclude_HEADERS) + \$(A""M_V_at)rm -rf \$(DX_DOCDIR]DX_i[) + \$(DX_V_DXGEN)\$(DX_ENV) DOCDIR=\$(DX_DOCDIR]DX_i[) \$(DX_DOXYGEN) \$(DX_CONFIG]DX_i[) + \$(A""M_V_at)echo Timestamp >\$][@ + +]])dnl +[DX_CLEANFILES = \\] +m4_foreach([DX_i], [DX_loop], +[[ \$(DX_DOCDIR]DX_i[)/doxygen_sqlite3.db \\ + \$(DX_DOCDIR]DX_i[)/\$(PACKAGE).tag \\ +]])dnl +[ -r \\ + \$(DX_CLEAN_HTML) \\ + \$(DX_CLEAN_CHM) \\ + \$(DX_CLEAN_CHI) \\ + \$(DX_CLEAN_MAN) \\ + \$(DX_CLEAN_RTF) \\ + \$(DX_CLEAN_XML) \\ + \$(DX_CLEAN_PS) \\ + \$(DX_CLEAN_PDF) \\ + \$(DX_CLEAN_LATEX)"]], +[[DX_SNIPPET_doc=""]]) +AC_SUBST([DX_RULES], +["${DX_SNIPPET_doc}"])dnl +AM_SUBST_NOTMAKE([DX_RULES]) + +#For debugging: +#echo DX_FLAG_doc=$DX_FLAG_doc +#echo DX_FLAG_dot=$DX_FLAG_dot +#echo DX_FLAG_man=$DX_FLAG_man +#echo DX_FLAG_html=$DX_FLAG_html +#echo DX_FLAG_chm=$DX_FLAG_chm +#echo DX_FLAG_chi=$DX_FLAG_chi +#echo DX_FLAG_rtf=$DX_FLAG_rtf +#echo DX_FLAG_xml=$DX_FLAG_xml +#echo DX_FLAG_pdf=$DX_FLAG_pdf +#echo DX_FLAG_ps=$DX_FLAG_ps +#echo DX_ENV=$DX_ENV +]) diff --git a/setup/dbaas/redismodule/src/exstrings.c b/setup/dbaas/redismodule/src/exstrings.c new file mode 100755 index 0000000..11102d3 --- /dev/null +++ b/setup/dbaas/redismodule/src/exstrings.c @@ -0,0 +1,986 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#include "redismodule.h" +#include +#include +#include +#include +#include + +#ifdef __UT__ +#include "exstringsStub.h" +#include "commonStub.h" +#endif + + +/* make sure the response is not NULL or an error. +sends the error to the client and exit the current function if its */ +#define ASSERT_NOERROR(r) \ + if (r == NULL) { \ + return RedisModule_ReplyWithError(ctx,"ERR reply is NULL"); \ + } else if (RedisModule_CallReplyType(r) == REDISMODULE_REPLY_ERROR) { \ + return RedisModule_ReplyWithCallReply(ctx,r); \ + } + +#define OBJ_OP_NO 0 +#define OBJ_OP_XX (1<<1) /* OP if key exist */ +#define OBJ_OP_NX (1<<2) /* OP if key not exist */ +#define OBJ_OP_IE (1<<4) /* OP if equal old value */ +#define OBJ_OP_NE (1<<5) /* OP if not equal old value */ + +#define DEF_COUNT 50 +#define ZERO 0 +#define MATCH_STR "MATCH" +#define COUNT_STR "COUNT" +#define SCANARGC 5 + +RedisModuleString *def_count_str = NULL, *match_str = NULL, *count_str = NULL, *zero_str = NULL; + +typedef struct _NgetArgs { + RedisModuleString *key; + RedisModuleString *count; +} NgetArgs; + +typedef struct RedisModuleBlockedClientArgs { + RedisModuleBlockedClient *bc; + NgetArgs nget_args; +} RedisModuleBlockedClientArgs; + +void InitStaticVariable() +{ + if (def_count_str == NULL) + def_count_str = RedisModule_CreateStringFromLongLong(NULL, DEF_COUNT); + if (match_str == NULL) + match_str = RedisModule_CreateString(NULL, MATCH_STR, sizeof(MATCH_STR)); + if (count_str == NULL) + count_str = RedisModule_CreateString(NULL, COUNT_STR, sizeof(COUNT_STR)); + if (zero_str == NULL) + zero_str = RedisModule_CreateStringFromLongLong(NULL, ZERO); + + return; +} + +int getKeyType(RedisModuleCtx *ctx, RedisModuleString *key_str) +{ + RedisModuleKey *key = RedisModule_OpenKey(ctx, key_str, REDISMODULE_READ); + int type = RedisModule_KeyType(key); + RedisModule_CloseKey(key); + return type; +} + +bool replyContentsEqualString(RedisModuleCallReply *reply, RedisModuleString *expected_value) +{ + size_t replylen = 0, expectedlen = 0; + const char *expectedval = RedisModule_StringPtrLen(expected_value, &expectedlen); + const char *replyval = RedisModule_CallReplyStringPtr(reply, &replylen); + return replyval && + expectedlen == replylen && + !strncmp(expectedval, replyval, replylen); +} + +typedef struct _SetParams { + RedisModuleString **key_val_pairs; + size_t length; +} SetParams; + +typedef struct _PubParams { + RedisModuleString **channel_msg_pairs; + size_t length; +} PubParams; + +typedef struct _DelParams { + RedisModuleString **keys; + size_t length; +} DelParams; + +typedef enum _ExstringsStatus { + EXSTRINGS_STATUS_NO_ERRORS = 0, + EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT, + EXSTRINGS_STATUS_NOT_SET +} ExstringsStatus; + +void readNgetArgs(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, + NgetArgs* nget_args, ExstringsStatus* status) +{ + size_t str_len; + long long number; + + if(argc == 2) { + nget_args->key = argv[1]; + nget_args->count = def_count_str; + } else if (argc == 4) { + if (strcasecmp(RedisModule_StringPtrLen(argv[2], &str_len), "count")) { + RedisModule_ReplyWithError(ctx,"-ERR syntax error"); + *status = EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT; + return; + } + + int ret = RedisModule_StringToLongLong(argv[3], &number) != REDISMODULE_OK; + if (ret != REDISMODULE_OK || number < 1) { + RedisModule_ReplyWithError(ctx,"-ERR value is not an integer or out of range"); + *status = EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT; + return; + } + + nget_args->key = argv[1]; + nget_args->count = argv[3]; + } else { + /* In redis there is a bug (or undocumented feature see link) + * where calling 'RedisModule_WrongArity' + * within a blocked client will crash redis. + * + * Therefore we need to call this function to validate args + * before putting the client into blocking mode. + * + * Link to issue: + * https://github.com/antirez/redis/issues/6382 + * 'If any thread tries to access the command arguments from + * within the ThreadSafeContext they will crash redis' */ + RedisModule_WrongArity(ctx); + *status = EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT; + return; + } + + *status = EXSTRINGS_STATUS_NO_ERRORS; + return; +} + +long long callReplyLongLong(RedisModuleCallReply* reply) +{ + const char* cursor_str_ptr = RedisModule_CallReplyStringPtr(reply, NULL); + return strtoll(cursor_str_ptr, NULL, 10); +} + +void forwardIfError(RedisModuleCtx *ctx, RedisModuleCallReply *reply, ExstringsStatus* status) +{ + if (RedisModule_CallReplyType(reply) == REDISMODULE_REPLY_ERROR) { + RedisModule_ReplyWithCallReply(ctx, reply); + RedisModule_FreeCallReply(reply); + *status = EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT; + } + *status = EXSTRINGS_STATUS_NO_ERRORS; +} + +typedef struct _ScannedKeys { + RedisModuleString **keys; + size_t len; +} ScannedKeys; + +ScannedKeys* allocScannedKeys(size_t len) +{ + ScannedKeys *sk = RedisModule_Alloc(sizeof(ScannedKeys)); + if (sk) { + sk->len = len; + sk->keys = RedisModule_Alloc(sizeof(RedisModuleString *)*len); + } + return sk; +} + +void freeScannedKeys(RedisModuleCtx *ctx, ScannedKeys* sk) +{ + if (sk) { + size_t j; + for (j = 0; j < sk->len; j++) + RedisModule_FreeString(ctx, sk->keys[j]); + RedisModule_Free(sk->keys); + } + RedisModule_Free(sk); +} + +typedef struct _ScanSomeState { + RedisModuleString *key; + RedisModuleString *count; + long long cursor; +} ScanSomeState; + +ScannedKeys *scanSome(RedisModuleCtx* ctx, ScanSomeState* state, ExstringsStatus* status) +{ + RedisModuleString *scanargv[SCANARGC] = {NULL}; + + scanargv[0] = RedisModule_CreateStringFromLongLong(ctx, state->cursor); + scanargv[1] = match_str; + scanargv[2] = state->key; + scanargv[3] = count_str; + scanargv[4] = state->count; + + RedisModuleCallReply *reply; + reply = RedisModule_Call(ctx, "SCAN", "v", scanargv, SCANARGC); + RedisModule_FreeString(ctx, scanargv[0]); + forwardIfError(ctx, reply, status); + if (*status == EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT) + return NULL; + + state->cursor = callReplyLongLong(RedisModule_CallReplyArrayElement(reply, 0)); + RedisModuleCallReply *cr_keys = + RedisModule_CallReplyArrayElement(reply, 1); + + size_t scanned_keys_len = RedisModule_CallReplyLength(cr_keys); + if (scanned_keys_len == 0) { + RedisModule_FreeCallReply(reply); + *status = EXSTRINGS_STATUS_NO_ERRORS; + return NULL; + } + + ScannedKeys *scanned_keys = allocScannedKeys(scanned_keys_len); + if (scanned_keys == NULL) { + RedisModule_FreeCallReply(reply); + RedisModule_ReplyWithError(ctx,"-ERR Out of memory"); + *status = EXSTRINGS_STATUS_ERROR_AND_REPLY_SENT; + return NULL; + } + + scanned_keys->len = scanned_keys_len; + size_t j; + for (j = 0; j < scanned_keys_len; j++) { + RedisModuleString *rms = RedisModule_CreateStringFromCallReply(RedisModule_CallReplyArrayElement(cr_keys,j)); + scanned_keys->keys[j] = rms; + } + RedisModule_FreeCallReply(reply); + *status = EXSTRINGS_STATUS_NO_ERRORS; + return scanned_keys; +} + +inline void unlockThreadsafeContext(RedisModuleCtx *ctx, bool using_threadsafe_context) +{ + if (using_threadsafe_context) + RedisModule_ThreadSafeContextUnlock(ctx); +} + +inline void lockThreadsafeContext(RedisModuleCtx *ctx, bool using_threadsafe_context) +{ + if (using_threadsafe_context) + RedisModule_ThreadSafeContextLock(ctx); +} + +void multiPubCommand(RedisModuleCtx *ctx, PubParams* pubParams) +{ + RedisModuleCallReply *reply = NULL; + for (unsigned int i = 0 ; i < pubParams->length ; i += 2) { + reply = RedisModule_Call(ctx, "PUBLISH", "v", pubParams->channel_msg_pairs + i, 2); + RedisModule_FreeCallReply(reply); + } +} + +int setStringGenericCommand(RedisModuleCtx *ctx, RedisModuleString **argv, + int argc, const int flag) +{ + RedisModuleString *oldvalstr = NULL; + RedisModuleCallReply *reply = NULL; + + if (argc < 4) + return RedisModule_WrongArity(ctx); + else + oldvalstr = argv[3]; + + /*Check if key type is string*/ + RedisModuleKey *key = RedisModule_OpenKey(ctx,argv[1], + REDISMODULE_READ); + int type = RedisModule_KeyType(key); + RedisModule_CloseKey(key); + + if (type == REDISMODULE_KEYTYPE_EMPTY) { + if (flag == OBJ_OP_IE){ + RedisModule_ReplyWithNull(ctx); + return REDISMODULE_OK; + } + } else if (type != REDISMODULE_KEYTYPE_STRING) { + return RedisModule_ReplyWithError(ctx,REDISMODULE_ERRORMSG_WRONGTYPE); + } + + /*Get the value*/ + reply = RedisModule_Call(ctx, "GET", "s", argv[1]); + ASSERT_NOERROR(reply) + size_t curlen=0, oldvallen=0; + const char *oldval = RedisModule_StringPtrLen(oldvalstr, &oldvallen); + const char *curval = RedisModule_CallReplyStringPtr(reply, &curlen); + if (((flag == OBJ_OP_IE) && + (!curval || (oldvallen != curlen) || strncmp(oldval, curval, curlen))) + || + ((flag == OBJ_OP_NE) && curval && (oldvallen == curlen) && + !strncmp(oldval, curval, curlen))) { + RedisModule_FreeCallReply(reply); + return RedisModule_ReplyWithNull(ctx); + } + RedisModule_FreeCallReply(reply); + + /* Prepare the arguments for the command. */ + int i, j=0, cmdargc=argc-2; + RedisModuleString *cmdargv[cmdargc]; + for (i = 1; i < argc; i++) { + if (i == 3) + continue; + cmdargv[j++] = argv[i]; + } + + /* Call the command and pass back the reply. */ + reply = RedisModule_Call(ctx, "SET", "v!", cmdargv, cmdargc); + ASSERT_NOERROR(reply) + RedisModule_ReplyWithCallReply(ctx, reply); + + RedisModule_FreeCallReply(reply); + return REDISMODULE_OK; +} + +int SetIE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + return setStringGenericCommand(ctx, argv, argc, OBJ_OP_IE); +} + +int SetNE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + return setStringGenericCommand(ctx, argv, argc, OBJ_OP_NE); +} + +int delStringGenericCommand(RedisModuleCtx *ctx, RedisModuleString **argv, + int argc, const int flag) +{ + RedisModuleString *oldvalstr = NULL; + RedisModuleCallReply *reply = NULL; + + if (argc == 3) + oldvalstr = argv[2]; + else + return RedisModule_WrongArity(ctx); + + /*Check if key type is string*/ + RedisModuleKey *key = RedisModule_OpenKey(ctx,argv[1], + REDISMODULE_READ); + int type = RedisModule_KeyType(key); + RedisModule_CloseKey(key); + + if (type == REDISMODULE_KEYTYPE_EMPTY) { + return RedisModule_ReplyWithLongLong(ctx, 0); + } else if (type != REDISMODULE_KEYTYPE_STRING) { + return RedisModule_ReplyWithError(ctx,REDISMODULE_ERRORMSG_WRONGTYPE); + } + + /*Get the value*/ + reply = RedisModule_Call(ctx, "GET", "s", argv[1]); + ASSERT_NOERROR(reply) + size_t curlen = 0, oldvallen = 0; + const char *oldval = RedisModule_StringPtrLen(oldvalstr, &oldvallen); + const char *curval = RedisModule_CallReplyStringPtr(reply, &curlen); + if (((flag == OBJ_OP_IE) && + (!curval || (oldvallen != curlen) || strncmp(oldval, curval, curlen))) + || + ((flag == OBJ_OP_NE) && curval && (oldvallen == curlen) && + !strncmp(oldval, curval, curlen))) { + RedisModule_FreeCallReply(reply); + return RedisModule_ReplyWithLongLong(ctx, 0); + } + RedisModule_FreeCallReply(reply); + + /* Prepare the arguments for the command. */ + int cmdargc=1; + RedisModuleString *cmdargv[1]; + cmdargv[0] = argv[1]; + + /* Call the command and pass back the reply. */ + reply = RedisModule_Call(ctx, "UNLINK", "v!", cmdargv, cmdargc); + ASSERT_NOERROR(reply) + RedisModule_ReplyWithCallReply(ctx, reply); + + RedisModule_FreeCallReply(reply); + return REDISMODULE_OK; +} + +int DelIE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + return delStringGenericCommand(ctx, argv, argc, OBJ_OP_IE); +} + +int DelNE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + return delStringGenericCommand(ctx, argv, argc, OBJ_OP_NE); +} +int setPubStringCommon(RedisModuleCtx *ctx, SetParams* setParamsPtr, PubParams* pubParamsPtr) +{ + RedisModuleCallReply *setReply; + setReply = RedisModule_Call(ctx, "MSET", "v!", setParamsPtr->key_val_pairs, setParamsPtr->length); + ASSERT_NOERROR(setReply) + multiPubCommand(ctx, pubParamsPtr); + RedisModule_ReplyWithCallReply(ctx, setReply); + RedisModule_FreeCallReply(setReply); + return REDISMODULE_OK; +} + +int SetPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 5 || (argc % 2) == 0) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + SetParams setParams = { + .key_val_pairs = argv + 1, + .length = argc - 3 + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 1 + setParams.length, + .length = 2 + }; + + return setPubStringCommon(ctx, &setParams, &pubParams); +} + +int SetMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 7 || (argc % 2) == 0) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + long long setPairsCount, pubPairsCount; + RedisModule_StringToLongLong(argv[1], &setPairsCount); + RedisModule_StringToLongLong(argv[2], &pubPairsCount); + if (setPairsCount < 1 || pubPairsCount < 1) + return RedisModule_ReplyWithError(ctx, "ERR SET_PAIR_COUNT and PUB_PAIR_COUNT must be greater than zero"); + + long long setLen, pubLen; + setLen = 2*setPairsCount; + pubLen = 2*pubPairsCount; + + if (setLen + pubLen + 3 != argc) + return RedisModule_ReplyWithError(ctx, "ERR SET_PAIR_COUNT or PUB_PAIR_COUNT do not match the total pair count"); + + SetParams setParams = { + .key_val_pairs = argv + 3, + .length = setLen + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 3 + setParams.length, + .length = pubLen + }; + + return setPubStringCommon(ctx, &setParams, &pubParams); +} + +int setIENEPubStringCommon(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int flag) +{ + SetParams setParams = { + .key_val_pairs = argv + 1, + .length = 2 + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 4, + .length = argc - 4 + }; + RedisModuleString *key = setParams.key_val_pairs[0]; + RedisModuleString *oldvalstr = argv[3]; + + int type = getKeyType(ctx, key); + if (flag == OBJ_OP_IE && type == REDISMODULE_KEYTYPE_EMPTY) { + return RedisModule_ReplyWithNull(ctx); + } else if (type != REDISMODULE_KEYTYPE_STRING && type != REDISMODULE_KEYTYPE_EMPTY) { + return RedisModule_ReplyWithError(ctx, REDISMODULE_ERRORMSG_WRONGTYPE); + } + + RedisModuleCallReply *reply = RedisModule_Call(ctx, "GET", "s", key); + ASSERT_NOERROR(reply) + bool is_equal = replyContentsEqualString(reply, oldvalstr); + RedisModule_FreeCallReply(reply); + if ((flag == OBJ_OP_IE && !is_equal) || + (flag == OBJ_OP_NE && is_equal)) { + return RedisModule_ReplyWithNull(ctx); + } + + return setPubStringCommon(ctx, &setParams, &pubParams); +} + +int SetIEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc != 6) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return setIENEPubStringCommon(ctx, argv, argc, OBJ_OP_IE); +} + +int SetIEMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 6 || (argc % 2) != 0) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return setIENEPubStringCommon(ctx, argv, argc, OBJ_OP_IE); +} + +int SetNEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc != 6) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return setIENEPubStringCommon(ctx, argv, argc, OBJ_OP_NE); +} + +int setXXNXPubStringCommon(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int flag) +{ + SetParams setParams = { + .key_val_pairs = argv + 1, + .length = 2 + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 3, + .length = argc - 3 + }; + RedisModuleString *key = setParams.key_val_pairs[0]; + + int type = getKeyType(ctx, key); + if ((flag == OBJ_OP_XX && type == REDISMODULE_KEYTYPE_EMPTY) || + (flag == OBJ_OP_NX && type == REDISMODULE_KEYTYPE_STRING)) { + return RedisModule_ReplyWithNull(ctx); + } else if (type != REDISMODULE_KEYTYPE_STRING && type != REDISMODULE_KEYTYPE_EMPTY) { + RedisModule_ReplyWithError(ctx, REDISMODULE_ERRORMSG_WRONGTYPE); + return REDISMODULE_OK; + } + + return setPubStringCommon(ctx, &setParams, &pubParams); +} + +int SetNXPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc != 5) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return setXXNXPubStringCommon(ctx, argv, argc, OBJ_OP_NX); +} + +int SetNXMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 5 || (argc % 2) == 0) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return setXXNXPubStringCommon(ctx, argv, argc, OBJ_OP_NX); +} + +int SetXXPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc != 5) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return setXXNXPubStringCommon(ctx, argv, argc, OBJ_OP_XX); +} + +int delPubStringCommon(RedisModuleCtx *ctx, DelParams *delParamsPtr, PubParams *pubParamsPtr) +{ + RedisModuleCallReply *reply = RedisModule_Call(ctx, "UNLINK", "v!", delParamsPtr->keys, delParamsPtr->length); + ASSERT_NOERROR(reply) + int replytype = RedisModule_CallReplyType(reply); + if (replytype == REDISMODULE_REPLY_NULL) { + RedisModule_ReplyWithNull(ctx); + } else if (RedisModule_CallReplyInteger(reply) == 0) { + RedisModule_ReplyWithCallReply(ctx, reply); + } else { + RedisModule_ReplyWithCallReply(ctx, reply); + multiPubCommand(ctx, pubParamsPtr); + } + RedisModule_FreeCallReply(reply); + return REDISMODULE_OK; +} + +int DelPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 4) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + DelParams delParams = { + .keys = argv + 1, + .length = argc - 3 + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 1 + delParams.length, + .length = 2 + }; + + return delPubStringCommon(ctx, &delParams, &pubParams); +} + +int DelMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 6) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + long long delCount, pubPairsCount; + RedisModule_StringToLongLong(argv[1], &delCount); + RedisModule_StringToLongLong(argv[2], &pubPairsCount); + if (delCount < 1 || pubPairsCount < 1) + return RedisModule_ReplyWithError(ctx, "ERR DEL_COUNT and PUB_PAIR_COUNT must be greater than zero"); + + long long delLen, pubLen; + delLen = delCount; + pubLen = 2*pubPairsCount; + if (delLen + pubLen + 3 != argc) + return RedisModule_ReplyWithError(ctx, "ERR DEL_COUNT or PUB_PAIR_COUNT do not match the total pair count"); + + DelParams delParams = { + .keys = argv + 3, + .length = delLen + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 3 + delParams.length, + .length = pubLen + }; + + return delPubStringCommon(ctx, &delParams, &pubParams); +} + +int delIENEPubStringCommon(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, int flag) +{ + DelParams delParams = { + .keys = argv + 1, + .length = 1 + }; + PubParams pubParams = { + .channel_msg_pairs = argv + 3, + .length = argc - 3 + }; + RedisModuleString *key = argv[1]; + RedisModuleString *oldvalstr = argv[2]; + + int type = getKeyType(ctx, key); + if (type == REDISMODULE_KEYTYPE_EMPTY) { + return RedisModule_ReplyWithLongLong(ctx, 0); + } else if (type != REDISMODULE_KEYTYPE_STRING) { + return RedisModule_ReplyWithError(ctx, REDISMODULE_ERRORMSG_WRONGTYPE); + } + + RedisModuleCallReply *reply = RedisModule_Call(ctx, "GET", "s", key); + ASSERT_NOERROR(reply) + bool is_equal = replyContentsEqualString(reply, oldvalstr); + RedisModule_FreeCallReply(reply); + if ((flag == OBJ_OP_IE && !is_equal) || + (flag == OBJ_OP_NE && is_equal)) { + return RedisModule_ReplyWithLongLong(ctx, 0); + } + + return delPubStringCommon(ctx, &delParams, &pubParams); +} + +int DelIEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc != 5) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return delIENEPubStringCommon(ctx, argv, argc, OBJ_OP_IE); +} + +int DelIEMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc < 5 || (argc % 2) == 0) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return delIENEPubStringCommon(ctx, argv, argc, OBJ_OP_IE); +} + +int DelNEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + if (argc != 5) + return RedisModule_WrongArity(ctx); + + RedisModule_AutoMemory(ctx); + return delIENEPubStringCommon(ctx, argv, argc, OBJ_OP_NE); +} + +int Nget_RedisCommand(RedisModuleCtx *ctx, NgetArgs* nget_args, bool using_threadsafe_context) +{ + int ret = REDISMODULE_OK; + size_t replylen = 0; + RedisModuleCallReply *reply = NULL; + ExstringsStatus status = EXSTRINGS_STATUS_NOT_SET; + ScanSomeState scan_state; + ScannedKeys *scanned_keys; + + scan_state.key = nget_args->key; + scan_state.count = nget_args->count; + scan_state.cursor = 0; + + RedisModule_ReplyWithArray(ctx, REDISMODULE_POSTPONED_ARRAY_LEN); + do { + lockThreadsafeContext(ctx, using_threadsafe_context); + + status = EXSTRINGS_STATUS_NOT_SET; + scanned_keys = scanSome(ctx, &scan_state, &status); + + if (status != EXSTRINGS_STATUS_NO_ERRORS) { + unlockThreadsafeContext(ctx, using_threadsafe_context); + ret = REDISMODULE_ERR; + break; + } else if (scanned_keys == NULL) { + unlockThreadsafeContext(ctx, using_threadsafe_context); + continue; + } + + reply = RedisModule_Call(ctx, "MGET", "v", scanned_keys->keys, scanned_keys->len); + + unlockThreadsafeContext(ctx, using_threadsafe_context); + + status = EXSTRINGS_STATUS_NOT_SET; + forwardIfError(ctx, reply, &status); + if (status != EXSTRINGS_STATUS_NO_ERRORS) { + freeScannedKeys(ctx, scanned_keys); + ret = REDISMODULE_ERR; + break; + } + + size_t i; + for (i = 0; i < scanned_keys->len; i++) { + RedisModuleString *rms = RedisModule_CreateStringFromCallReply(RedisModule_CallReplyArrayElement(reply, i)); + if (rms) { + RedisModule_ReplyWithString(ctx, scanned_keys->keys[i]); + RedisModule_ReplyWithString(ctx, rms); + RedisModule_FreeString(ctx, rms); + replylen += 2; + } + } + RedisModule_FreeCallReply(reply); + freeScannedKeys(ctx, scanned_keys); + } while (scan_state.cursor != 0); + + RedisModule_ReplySetArrayLength(ctx,replylen); + return ret; +} + +/* The thread entry point that actually executes the blocking part + * of the command nget.noatomic + */ +void *NGet_NoAtomic_ThreadMain(void *arg) +{ + pthread_detach(pthread_self()); + + RedisModuleBlockedClientArgs *bca = arg; + RedisModuleBlockedClient *bc = bca->bc; + RedisModuleCtx *ctx = RedisModule_GetThreadSafeContext(bc); + + Nget_RedisCommand(ctx, &bca->nget_args, true); + RedisModule_FreeThreadSafeContext(ctx); + RedisModule_UnblockClient(bc, NULL); + RedisModule_Free(bca); + return NULL; +} + +int NGet_NoAtomic_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + pthread_t tid; + + InitStaticVariable(); + + RedisModuleBlockedClientArgs *bca = RedisModule_Alloc(sizeof(RedisModuleBlockedClientArgs)); + if (bca == NULL) { + RedisModule_ReplyWithError(ctx,"-ERR Out of memory"); + return REDISMODULE_ERR; + } + + ExstringsStatus status = EXSTRINGS_STATUS_NOT_SET; + readNgetArgs(ctx, argv, argc, &bca->nget_args, &status); + if (status != EXSTRINGS_STATUS_NO_ERRORS) { + RedisModule_Free(bca); + return REDISMODULE_ERR; + } + + /* Note that when blocking the client we do not set any callback: no + * timeout is possible since we passed '0', nor we need a reply callback + * because we'll use the thread safe context to accumulate a reply. */ + RedisModuleBlockedClient *bc = RedisModule_BlockClient(ctx,NULL,NULL,NULL,0); + + bca->bc = bc; + + /* Now that we setup a blocking client, we need to pass the control + * to the thread. However we need to pass arguments to the thread: + * the reference to the blocked client handle. */ + if (pthread_create(&tid,NULL,NGet_NoAtomic_ThreadMain,bca) != 0) { + RedisModule_AbortBlock(bc); + RedisModule_Free(bca); + return RedisModule_ReplyWithError(ctx,"-ERR Can't start thread"); + } + + return REDISMODULE_OK; +} + +int NGet_Atomic_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + NgetArgs nget_args; + ExstringsStatus status = EXSTRINGS_STATUS_NOT_SET; + + InitStaticVariable(); + + readNgetArgs(ctx, argv, argc, &nget_args, &status); + if (status != EXSTRINGS_STATUS_NO_ERRORS) { + return REDISMODULE_ERR; + } + + return Nget_RedisCommand(ctx, &nget_args, false); +} + +int NDel_Atomic_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) +{ + RedisModule_AutoMemory(ctx); + int ret = REDISMODULE_OK; + long long replylen = 0; + RedisModuleCallReply *reply = NULL; + ExstringsStatus status = EXSTRINGS_STATUS_NOT_SET; + ScanSomeState scan_state; + ScannedKeys *scanned_keys = NULL; + + InitStaticVariable(); + if (argc != 2) + return RedisModule_WrongArity(ctx); + + scan_state.key = argv[1]; + scan_state.count = def_count_str; + scan_state.cursor = 0; + + do { + status = EXSTRINGS_STATUS_NOT_SET; + scanned_keys = scanSome(ctx, &scan_state, &status); + + if (status != EXSTRINGS_STATUS_NO_ERRORS) { + ret = REDISMODULE_ERR; + break; + } else if (scanned_keys == NULL) { + continue; + } + + reply = RedisModule_Call(ctx, "UNLINK", "v!", scanned_keys->keys, scanned_keys->len); + + status = EXSTRINGS_STATUS_NOT_SET; + forwardIfError(ctx, reply, &status); + if (status != EXSTRINGS_STATUS_NO_ERRORS) { + freeScannedKeys(ctx, scanned_keys); + ret = REDISMODULE_ERR; + break; + } + + replylen += RedisModule_CallReplyInteger(reply); + RedisModule_FreeCallReply(reply); + freeScannedKeys(ctx, scanned_keys); + } while (scan_state.cursor != 0); + + if (ret == REDISMODULE_OK) { + RedisModule_ReplyWithLongLong(ctx, replylen); + } + + return ret; +} + +/* This function must be present on each Redis module. It is used in order to + * register the commands into the Redis server. */ +int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) { + REDISMODULE_NOT_USED(argv); + REDISMODULE_NOT_USED(argc); + + if (RedisModule_Init(ctx,"exstrings",1,REDISMODULE_APIVER_1) + == REDISMODULE_ERR) return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setie", + SetIE_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setne", + SetNE_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"delie", + DelIE_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"delne", + DelNE_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"nget.atomic", + NGet_Atomic_RedisCommand,"readonly",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"nget.noatomic", + NGet_NoAtomic_RedisCommand,"readonly",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"ndel.atomic", + NDel_Atomic_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"msetpub", + SetPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"msetmpub", + SetMPub_RedisCommand,"write deny-oom pubsub",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setiepub", + SetIEPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setiempub", + SetIEMPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setnepub", + SetNEPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setxxpub", + SetXXPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setnxpub", + SetNXPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"setnxmpub", + SetNXMPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"delpub", + DelPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"delmpub", + DelMPub_RedisCommand,"write deny-oom pubsub",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"deliepub", + DelIEPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"deliempub", + DelIEMPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + if (RedisModule_CreateCommand(ctx,"delnepub", + DelNEPub_RedisCommand,"write deny-oom",1,1,1) == REDISMODULE_ERR) + return REDISMODULE_ERR; + + return REDISMODULE_OK; +} diff --git a/setup/dbaas/redismodule/tst/include/ut_helpers.hpp b/setup/dbaas/redismodule/tst/include/ut_helpers.hpp new file mode 100644 index 0000000..c183f66 --- /dev/null +++ b/setup/dbaas/redismodule/tst/include/ut_helpers.hpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#ifndef EXSTRING_UT_HELPERS_H_ +#define EXSTRING_UT_HELPERS_H_ + +extern "C" { +#include "exstringsStub.h" +#include "redismodule.h" +} + +#define UT_DUMMY_BUFFER_SIZE 1 +#define UT_DUMMY_PTR_ADDRESS 1234 + +RedisModuleString **createRedisStrVec(size_t size); + +void returnNKeysFromScanSome(long keys); + +#endif diff --git a/setup/dbaas/redismodule/tst/mock/include/commonStub.h b/setup/dbaas/redismodule/tst/mock/include/commonStub.h new file mode 100644 index 0000000..e57de1b --- /dev/null +++ b/setup/dbaas/redismodule/tst/mock/include/commonStub.h @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#ifndef COMMONSTUB_H_ +#define COMMONSTUB_H_ + + +#include + +#define UT_DUMMY_THREAD_ID 1234 + +int pthread_create(pthread_t *thread, const pthread_attr_t *attr, + void *(*start_routine) (void *), void *arg); + +int pthread_detach(pthread_t thread); + +pthread_t pthread_self(void); + +#endif diff --git a/setup/dbaas/redismodule/tst/mock/include/exstringsStub.h b/setup/dbaas/redismodule/tst/mock/include/exstringsStub.h new file mode 100755 index 0000000..49e1f48 --- /dev/null +++ b/setup/dbaas/redismodule/tst/mock/include/exstringsStub.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#ifndef EXSTRINGSTUB_H_ +#define EXSTRINGSTUB_H_ + + +#include "redismodule.h" + +int setStringGenericCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, const int flag); +int SetIE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetNE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int RedisModule_OnLoad(RedisModuleCtx *ctx, RedisModuleString **argv, int argc) ; +int delStringGenericCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc, const int flag); +int DelIE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int DelNE_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetIEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetIEMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetNEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetNXPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetNXMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int SetXXPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int DelPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int DelMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int DelIEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int DelIEMPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int DelNEPub_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int NDel_Atomic_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int NGet_Atomic_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +int NGet_NoAtomic_RedisCommand(RedisModuleCtx *ctx, RedisModuleString **argv, int argc); +void *NGet_NoAtomic_ThreadMain(void *arg); + +#endif diff --git a/setup/dbaas/redismodule/tst/mock/include/redismodule.h b/setup/dbaas/redismodule/tst/mock/include/redismodule.h new file mode 100755 index 0000000..414bdc7 --- /dev/null +++ b/setup/dbaas/redismodule/tst/mock/include/redismodule.h @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#ifndef REDISMODULE_H +#define REDISMODULE_H + +#include +#include +#include + +/* Error status return values. */ +#define REDISMODULE_OK 0 +#define REDISMODULE_ERR 1 + +/* API versions. */ +#define REDISMODULE_APIVER_1 1 + +/* API flags and constants */ +#define REDISMODULE_READ (1<<0) +#define REDISMODULE_WRITE (1<<1) + +/* Key types. */ +#define REDISMODULE_KEYTYPE_EMPTY 0 +#define REDISMODULE_KEYTYPE_STRING 1 +#define REDISMODULE_KEYTYPE_LIST 2 +#define REDISMODULE_KEYTYPE_HASH 3 +#define REDISMODULE_KEYTYPE_SET 4 +#define REDISMODULE_KEYTYPE_ZSET 5 +#define REDISMODULE_KEYTYPE_MODULE 6 + +/* Reply types. */ +#define REDISMODULE_REPLY_UNKNOWN -1 +#define REDISMODULE_REPLY_STRING 0 +#define REDISMODULE_REPLY_ERROR 1 +#define REDISMODULE_REPLY_INTEGER 2 +#define REDISMODULE_REPLY_ARRAY 3 +#define REDISMODULE_REPLY_NULL 4 + +/* Postponed array length. */ +#define REDISMODULE_POSTPONED_ARRAY_LEN -1 + +/* Error messages. */ +#define REDISMODULE_ERRORMSG_WRONGTYPE "WRONGTYPE Operation against a key holding the wrong kind of value" + +#define REDISMODULE_NOT_USED(V) ((void) V) + +typedef long long mstime_t; + +/* UT dummy definitions for opaque redis types */ +typedef struct { int dummy; } RedisModuleCtx; +typedef struct { int dummy; } RedisModuleKey; +typedef struct { int dummy; } RedisModuleString; +typedef struct { int dummy; } RedisModuleCallReply; +typedef struct { int dummy; } RedisModuleIO; +typedef struct { int dummy; } RedisModuleType; +typedef struct { int dummy; } RedisModuleDigest; +typedef struct { int dummy; } RedisModuleBlockedClient; + +typedef void *(*RedisModuleTypeLoadFunc)(RedisModuleIO *rdb, int encver); +typedef void (*RedisModuleTypeSaveFunc)(RedisModuleIO *rdb, void *value); +typedef void (*RedisModuleTypeRewriteFunc)(RedisModuleIO *aof, RedisModuleString *key, void *value); +typedef size_t (*RedisModuleTypeMemUsageFunc)(const void *value); +typedef void (*RedisModuleTypeDigestFunc)(RedisModuleDigest *digest, void *value); +typedef void (*RedisModuleTypeFreeFunc)(void *value); + +typedef int (*RedisModuleCmdFunc) (RedisModuleCtx *ctx, RedisModuleString **argv, int argc); + +int RedisModule_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep); +int RedisModule_WrongArity(RedisModuleCtx *ctx); +int RedisModule_ReplyWithLongLong(RedisModuleCtx *ctx, long long ll); +void *RedisModule_OpenKey(RedisModuleCtx *ctx, RedisModuleString *keyname, int mode); +RedisModuleCallReply *RedisModule_Call(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...); +void RedisModule_FreeCallReply(RedisModuleCallReply *reply); +int RedisModule_CallReplyType(RedisModuleCallReply *reply); +long long RedisModule_CallReplyInteger(RedisModuleCallReply *reply); +const char *RedisModule_StringPtrLen(const RedisModuleString *str, size_t *len); +int RedisModule_ReplyWithError(RedisModuleCtx *ctx, const char *err); +int RedisModule_ReplyWithString(RedisModuleCtx *ctx, RedisModuleString *str); +int RedisModule_ReplyWithNull(RedisModuleCtx *ctx); +int RedisModule_ReplyWithCallReply(RedisModuleCtx *ctx, RedisModuleCallReply *reply); +const char *RedisModule_CallReplyStringPtr(RedisModuleCallReply *reply, size_t *len); +RedisModuleString *RedisModule_CreateStringFromCallReply(RedisModuleCallReply *reply); + +int RedisModule_KeyType(RedisModuleKey *kp); +void RedisModule_CloseKey(RedisModuleKey *kp); + +int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver); + +size_t RedisModule_CallReplyLength(RedisModuleCallReply *reply); +RedisModuleCallReply *RedisModule_CallReplyArrayElement(RedisModuleCallReply *reply, size_t idx); +int RedisModule_ReplyWithArray(RedisModuleCtx *ctx, long len); +void RedisModule_FreeString(RedisModuleCtx *ctx, RedisModuleString *str); +RedisModuleBlockedClient *RedisModule_BlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms); +int RedisModule_UnblockClient(RedisModuleBlockedClient *bc, void *privdata); +int RedisModule_AbortBlock(RedisModuleBlockedClient *bc); +RedisModuleString *RedisModule_CreateString(RedisModuleCtx *ctx, const char *ptr, size_t len); +void RedisModule_FreeThreadSafeContext(RedisModuleCtx *ctx); +int RedisModule_StringToLongLong(const RedisModuleString *str, long long *ll); +void RedisModule_ThreadSafeContextLock(RedisModuleCtx *ctx); +void RedisModule_ThreadSafeContextUnlock(RedisModuleCtx *ctx); +void RedisModule_ReplySetArrayLength(RedisModuleCtx *ctx, long len); +RedisModuleCtx *RedisModule_GetThreadSafeContext(RedisModuleBlockedClient *bc); +RedisModuleString *RedisModule_CreateStringFromLongLong(RedisModuleCtx *ctx, long long ll); +void RedisModule_AutoMemory(RedisModuleCtx *ctx); +void *RedisModule_Alloc(size_t bytes); +void RedisModule_Free(void *ptr); + +#endif /* REDISMODULE_H */ diff --git a/setup/dbaas/redismodule/tst/mock/src/commonStub.cpp b/setup/dbaas/redismodule/tst/mock/src/commonStub.cpp new file mode 100644 index 0000000..5e9a0f1 --- /dev/null +++ b/setup/dbaas/redismodule/tst/mock/src/commonStub.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include + +extern "C" { +#include +#include +#include + +#include "redismodule.h" +#include "commonStub.h" +} + +#include +#include +#include + +typedef struct RedisModuleBlockedClientArgs { + RedisModuleBlockedClient *bc; + RedisModuleString **argv; + int argc; +} RedisModuleBlockedClientArgs; + +int pthread_create(pthread_t *thread, const pthread_attr_t *attr, + void *(*start_routine) (void *), void *arg) +{ + (void)thread; + (void)attr; + (void)start_routine; + if (mock().getData("pthread_create_free_block_client_args").getIntValue()) { + RedisModuleBlockedClientArgs* bca = (RedisModuleBlockedClientArgs*)arg; + free(bca->bc); + free(bca); + } + + return mock() + .actualCall("pthread_create") + .returnIntValueOrDefault(0); +} + +int pthread_detach(pthread_t thread) +{ + (void)thread; + + return mock() + .actualCall("pthread_detach") + .returnIntValueOrDefault(0); +} + +pthread_t pthread_self(void) +{ + return mock() + .actualCall("pthread_self") + .returnIntValueOrDefault(UT_DUMMY_THREAD_ID); +} diff --git a/setup/dbaas/redismodule/tst/mock/src/redismoduleNewStub.cpp b/setup/dbaas/redismodule/tst/mock/src/redismoduleNewStub.cpp new file mode 100755 index 0000000..5a25867 --- /dev/null +++ b/setup/dbaas/redismodule/tst/mock/src/redismoduleNewStub.cpp @@ -0,0 +1,360 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include + +extern "C" { +#include "redismodule.h" +#include +#include +#include +} + +#include +#include + +#include "ut_helpers.hpp" + +RedisModuleCallReply *RedisModule_Call(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...) +{ + (void)ctx; + (void)fmt; + return (RedisModuleCallReply *)mock().actualCall("RedisModule_Call") + .withParameter("cmdname", cmdname) + .returnPointerValueOrDefault(malloc(UT_DUMMY_BUFFER_SIZE)); +} + +int RedisModule_ReplyWithString(RedisModuleCtx *ctx, RedisModuleString *str) +{ + (void)ctx; + (void)str; + return mock() + .actualCall("RedisModule_ReplyWithString") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +RedisModuleString *RedisModule_CreateStringFromCallReply(RedisModuleCallReply *reply) +{ + (void)reply; + return (RedisModuleString *)mock().actualCall("RedisModule_CreateStringFromCallReply") + .returnPointerValue(); +} + +void RedisModule_CloseKey(RedisModuleKey *kp) +{ + (void)kp; + mock().actualCall("RedisModule_CloseKey"); +} + +size_t RedisModule_CallReplyLength(RedisModuleCallReply *reply) +{ + (void)reply; + return (size_t)mock().actualCall("RedisModule_CallReplyLength") + .returnIntValue(); +} + +int RedisModule_ReplyWithArray(RedisModuleCtx *ctx, long len) +{ + (void)ctx; + return (int)mock().actualCall("RedisModule_ReplyWithArray") + .withParameter("len", len) + .returnIntValueOrDefault(REDISMODULE_OK); +} + +void RedisModule_ReplySetArrayLength(RedisModuleCtx *ctx, long len) +{ + (void)ctx; + mock().actualCall("RedisModule_ReplySetArrayLength") + .withParameter("len", len); +} + +RedisModuleString *RedisModule_CreateString(RedisModuleCtx *ctx, const char *ptr, size_t len) +{ + (void)ctx; + (void)ptr; + (void)len; + void* buf = malloc(UT_DUMMY_BUFFER_SIZE); + return (RedisModuleString *) mock() + .actualCall("RedisModule_CreateString") + .returnPointerValueOrDefault(buf); +} + +RedisModuleString *RedisModule_CreateStringFromLongLong(RedisModuleCtx *ctx, long long ll) +{ + (void)ctx; + (void)ll; + void* buf = malloc(UT_DUMMY_BUFFER_SIZE); + return (RedisModuleString *)mock() + .actualCall("RedisModule_CreateStringFromLongLong") + .returnPointerValueOrDefault(buf); +} + +void RedisModule_AutoMemory(RedisModuleCtx *ctx) +{ + (void)ctx; + mock().actualCall("RedisModule_AutoMemory"); +} + +void RedisModule_FreeString(RedisModuleCtx *ctx, RedisModuleString *str) +{ + (void)ctx; + free(str); + mock().actualCall("RedisModule_FreeString"); +} + +int RedisModule_StringToLongLong(const RedisModuleString *str, long long *ll) +{ + (void)str; + return (int)mock().actualCall("RedisModule_StringToLongLong") + .withOutputParameter("ll", ll) + .returnIntValueOrDefault(REDISMODULE_OK); +} + +void RedisModule_FreeCallReply(RedisModuleCallReply *reply) +{ + free(reply); + mock().actualCall("RedisModule_FreeCallReply"); +} + +RedisModuleCallReply *RedisModule_CallReplyArrayElement(RedisModuleCallReply *reply, size_t idx) +{ + (void)reply; + (void)idx; + return (RedisModuleCallReply *)mock() + .actualCall("RedisModule_CallReplyArrayElement") + .returnPointerValueOrDefault(NULL); +} + +int RedisModule_ReplyWithLongLong(RedisModuleCtx *ctx, long long ll) +{ + (void)ctx; + return (int)mock() + .actualCall("RedisModule_ReplyWithLongLong") + .withParameter("ll", (int)ll) + .returnIntValueOrDefault(REDISMODULE_OK); +} + +long long RedisModule_CallReplyInteger(RedisModuleCallReply *reply) +{ + (void)reply; + return (long long)mock() + .actualCall("RedisModule_CallReplyInteger") + .returnIntValue(); +} + +int RedisModule_CallReplyType(RedisModuleCallReply *reply) +{ + (void)reply; + return (int)mock() + .actualCall("RedisModule_CallReplyType") + .returnIntValue(); +} + +int RedisModule_WrongArity(RedisModuleCtx *ctx) +{ + (void)ctx; + return (int)mock() + .actualCall("RedisModule_WrongArity") + .returnIntValueOrDefault(REDISMODULE_ERR); +} + +int RedisModule_ReplyWithError(RedisModuleCtx *ctx, const char *err) +{ + (void)ctx; + (void)err; + return (int)mock() + .actualCall("RedisModule_ReplyWithError") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +int RedisModule_ReplyWithCallReply(RedisModuleCtx *ctx, RedisModuleCallReply *reply) +{ + (void)ctx; + (void)reply; + return (int)mock() + .actualCall("RedisModule_ReplyWithCallReply") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +void *RedisModule_OpenKey(RedisModuleCtx *ctx, RedisModuleString *keyname, int mode) +{ + (void)ctx; + (void)keyname; + (void)mode; + return (void *)mock() + .actualCall("RedisModule_OpenKey") + .returnPointerValue(); +} + +int RedisModule_KeyType(RedisModuleKey *kp) +{ + (void)kp; + return (int)mock() + .actualCall("RedisModule_KeyType") + .returnIntValue(); +} + +const char *RedisModule_StringPtrLen(const RedisModuleString *str, size_t *len) +{ + (void)str; + if (len != NULL) { + return (const char *)mock() + .actualCall("RedisModule_StringPtrLen") + .withOutputParameter("len", len) + .returnPointerValue(); + } else { + return (const char *)mock() + .actualCall("RedisModule_StringPtrLen") + .returnPointerValue(); + } +} + +RedisModuleBlockedClient *RedisModule_BlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, + RedisModuleCmdFunc timeout_callback, + void (*free_privdata)(RedisModuleCtx*,void*), + long long timeout_ms) +{ + (void)ctx; + (void)reply_callback; + (void)timeout_callback; + (void)free_privdata; + (void)timeout_ms; + + void *buf = malloc(UT_DUMMY_BUFFER_SIZE); + return (RedisModuleBlockedClient *)mock() + .actualCall("RedisModule_BlockClient") + .returnPointerValueOrDefault(buf); +} + +int RedisModule_UnblockClient(RedisModuleBlockedClient *bc, void *privdata) +{ + (void)privdata; + + free(bc); + return (int)mock() + .actualCall("RedisModule_UnblockClient") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +const char *RedisModule_CallReplyStringPtr(RedisModuleCallReply *reply, size_t *len) +{ + (void)reply; + (void)len; + + static char cursor_zero_literal[] = "0"; + return (const char *)mock() + .actualCall("RedisModule_CallReplyStringPtr") + .returnPointerValueOrDefault(cursor_zero_literal); +} + +int RedisModule_AbortBlock(RedisModuleBlockedClient *bc) +{ + free(bc); + return mock() + .actualCall("RedisModule_AbortBlock") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +int RedisModule_ReplyWithNull(RedisModuleCtx *ctx) +{ + (void)ctx; + return mock() + .actualCall("RedisModule_ReplyWithNull") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +void RedisModule_ThreadSafeContextUnlock(RedisModuleCtx *ctx) +{ + (void)ctx; + int tmp = mock().getData("TimesThreadSafeContextWasUnlocked").getIntValue(); + mock().setData("TimesThreadSafeContextWasUnlocked", tmp + 1); + mock() + .actualCall("RedisModule_ThreadSafeContextUnlock"); +} + +void RedisModule_ThreadSafeContextLock(RedisModuleCtx *ctx) +{ + (void)ctx; + int tmp = mock().getData("TimesThreadSafeContextWasLocked").getIntValue(); + mock().setData("TimesThreadSafeContextWasLocked", tmp + 1); + mock() + .actualCall("RedisModule_ThreadSafeContextLock"); +} + +RedisModuleCtx *RedisModule_GetThreadSafeContext(RedisModuleBlockedClient *bc) +{ + (void)bc; + return (RedisModuleCtx *)mock() + .actualCall("RedisModule_GetThreadSafeContext") + .returnPointerValueOrDefault(0); +} + +void RedisModule_FreeThreadSafeContext(RedisModuleCtx *ctx) +{ + (void)ctx; + mock() + .actualCall("RedisModule_FreeThreadSafeContext"); +} + +/* This is included inline inside each Redis module. */ +int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) +{ + (void)ctx; + (void)name; + (void)ver; + (void)apiver; + + return mock() + .actualCall("RedisModule_Init") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +int RedisModule_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep) +{ + (void)ctx; + (void)name; + (void)cmdfunc; + (void)strflags; + (void)firstkey; + (void)lastkey; + (void)keystep; + + return mock() + .actualCall("RedisModule_CreateCommand") + .returnIntValueOrDefault(REDISMODULE_OK); +} + +void *RedisModule_Alloc(size_t bytes) +{ + void *buf = malloc(bytes); + return mock() + .actualCall("RedisModule_Alloc") + .returnPointerValueOrDefault(buf); +} + +void RedisModule_Free(void *ptr) +{ + free(ptr); + mock() + .actualCall("RedisModule_Free"); +} diff --git a/setup/dbaas/redismodule/tst/mock/src/redismoduleStub.cpp b/setup/dbaas/redismodule/tst/mock/src/redismoduleStub.cpp new file mode 100755 index 0000000..bfcdb22 --- /dev/null +++ b/setup/dbaas/redismodule/tst/mock/src/redismoduleStub.cpp @@ -0,0 +1,437 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include + +extern "C" { +#include "redismodule.h" +#include +#include +#include +} + +#include +#include + + +int RedisModule_CreateCommand(RedisModuleCtx *ctx, const char *name, RedisModuleCmdFunc cmdfunc, const char *strflags, int firstkey, int lastkey, int keystep) +{ + (void)ctx; + (void)name; + (void)cmdfunc; + (void)strflags; + (void)firstkey; + (void)lastkey; + (void)keystep; + return REDISMODULE_OK; + +} + +int RedisModule_WrongArity(RedisModuleCtx *ctx) +{ + (void)ctx; + mock().setData("RedisModule_WrongArity", 1); + return REDISMODULE_ERR; +} + +int RedisModule_ReplyWithLongLong(RedisModuleCtx *ctx, long long ll) +{ + + (void)ctx; + mock().setData("RedisModule_ReplyWithLongLong", (int)ll); + return REDISMODULE_OK; +} + +void *RedisModule_OpenKey(RedisModuleCtx *ctx, RedisModuleString *keyname, int mode) +{ + (void)ctx; + (void)keyname; + (void)mode; + + if (mock().hasData("RedisModule_OpenKey_no")) + { + return (void*)(0); + } + + if (mock().hasData("RedisModule_OpenKey_have")) + { + return (void*)(111111); + } + + + return (void*)(0); +} + +RedisModuleCallReply *RedisModule_Call(RedisModuleCtx *ctx, const char *cmdname, const char *fmt, ...) +{ + (void)ctx; + (void)cmdname; + (void)fmt; + + if (!strcmp(cmdname, "GET")) + mock().setData("GET", 1); + else if (!strcmp(cmdname, "SET")) + mock().setData("SET", 1); + else if (!strcmp(cmdname, "MSET")) + mock().setData("MSET", 1); + else if (!strcmp(cmdname, "DEL")) + mock().setData("DEL", 1); + else if (!strcmp(cmdname, "UNLINK")) + mock().setData("UNLINK", 1); + else if (!strcmp(cmdname, "PUBLISH")) + mock().setData("PUBLISH", mock().getData("PUBLISH").getIntValue() + 1); + else if (!strcmp(cmdname, "KEYS")) + mock().setData("KEYS", 1); + else if (!strcmp(cmdname, "MGET")) + mock().setData("MGET", 1); + else if (!strcmp(cmdname, "SCAN")) + mock().setData("SCAN", 1); + + if (mock().hasData("RedisModule_Call_Return_Null")) + return NULL; + else + return (RedisModuleCallReply *)1; +} + +void RedisModule_FreeCallReply(RedisModuleCallReply *reply) +{ + (void)reply; + mock().setData("RedisModule_FreeCallReply", mock().getData("RedisModule_FreeCallReply").getIntValue()+1); +} + +int RedisModule_CallReplyType(RedisModuleCallReply *reply) +{ + + (void)reply; + if (mock().hasData("RedisModule_CallReplyType_null")) + { + return REDISMODULE_REPLY_NULL; + } + + if (mock().hasData("RedisModule_CallReplyType_inter")) + { + return REDISMODULE_REPLY_INTEGER; + } + + if (mock().hasData("RedisModule_CallReplyType_str")) + { + return REDISMODULE_REPLY_STRING; + } + + if (mock().hasData("RedisModule_CallReplyType_err")) + { + return REDISMODULE_REPLY_ERROR; + } + + return REDISMODULE_REPLY_NULL;; + +} + +long long RedisModule_CallReplyInteger(RedisModuleCallReply *reply) +{ + + (void)reply; + return mock().getData("RedisModule_CallReplyInteger").getIntValue(); +} + +const char *RedisModule_StringPtrLen(const RedisModuleString *str, size_t *len) +{ + + (void)str; + if (len) *len = 5; + if (mock().hasData("RedisModule_String_same")) + { + return "11111"; + } + + if (mock().hasData("RedisModule_String_nosame")) + { + return "22222"; + } + + if (mock().hasData("RedisModule_String_count")) + { + return "COUNT"; + } + + if (mock().hasData("RedisModule_String_count1")) + { + if (len) *len = 6; + return "COUNT1"; + } + + return "11111"; +} + +int RedisModule_ReplyWithError(RedisModuleCtx *ctx, const char *err) +{ + (void)ctx; + (void)err; + mock().setData("RedisModule_ReplyWithError", 1); + return REDISMODULE_OK; +} + +int RedisModule_ReplyWithString(RedisModuleCtx *ctx, RedisModuleString *str) +{ + (void)ctx; + (void)str; + mock().setData("RedisModule_ReplyWithString", mock().getData("RedisModule_ReplyWithString").getIntValue()+1); + return REDISMODULE_OK; +} + +int RedisModule_ReplyWithNull(RedisModuleCtx *ctx) +{ + + (void)ctx; + mock().setData("RedisModule_ReplyWithNull", 1); + return REDISMODULE_OK; +} + +int RedisModule_ReplyWithCallReply(RedisModuleCtx *ctx, RedisModuleCallReply *reply) +{ + (void)ctx; + (void)reply; + mock().setData("RedisModule_ReplyWithCallReply", 1); + return REDISMODULE_OK; +} + +const char *RedisModule_CallReplyStringPtr(RedisModuleCallReply *reply, size_t *len) +{ + (void)reply; + + if (mock().hasData("RedisModule_String_same")) + { + if (len) + *len = 5; + return "11111"; + } + + if (mock().hasData("RedisModule_String_nosame")) + { + if (len) + *len = 6; + return "333333"; + } + + return "11111"; +} + +RedisModuleString *RedisModule_CreateStringFromCallReply(RedisModuleCallReply *reply) +{ + (void)reply; + return (RedisModuleString *)1; +} + + +int RedisModule_KeyType(RedisModuleKey *kp) +{ + + + (void)kp; + if (mock().hasData("RedisModule_KeyType_empty")) + { + return REDISMODULE_KEYTYPE_EMPTY; + } + + if (mock().hasData("RedisModule_KeyType_str")) + { + return REDISMODULE_KEYTYPE_STRING; + } + + if (mock().hasData("RedisModule_KeyType_set")) + { + + return REDISMODULE_KEYTYPE_SET; + } + + return REDISMODULE_KEYTYPE_EMPTY; + + +} + +void RedisModule_CloseKey(RedisModuleKey *kp) +{ + (void)kp; + mock().actualCall("RedisModule_CloseKey"); +} + +/* This is included inline inside each Redis module. */ +int RedisModule_Init(RedisModuleCtx *ctx, const char *name, int ver, int apiver) +{ + (void)ctx; + (void)name; + (void)ver; + (void)apiver; + return REDISMODULE_OK; +} + +size_t RedisModule_CallReplyLength(RedisModuleCallReply *reply) +{ + (void)reply; + return mock().getData("RedisModule_CallReplyLength").getIntValue(); +} + + +RedisModuleCallReply *RedisModule_CallReplyArrayElement(RedisModuleCallReply *reply, size_t idx) +{ + (void)reply; + (void)idx; + return (RedisModuleCallReply *)1; +} + +int RedisModule_ReplyWithArray(RedisModuleCtx *ctx, long len) +{ + (void)ctx; + mock().setData("RedisModule_ReplyWithArray", (int)len); + return REDISMODULE_OK; +} + +void RedisModule_FreeString(RedisModuleCtx *ctx, RedisModuleString *str) +{ + (void)ctx; + (void)str; + mock().setData("RedisModule_FreeString", mock().getData("RedisModule_FreeString").getIntValue()+1); + return; +} + +RedisModuleBlockedClient *RedisModule_BlockClient(RedisModuleCtx *ctx, RedisModuleCmdFunc reply_callback, RedisModuleCmdFunc timeout_callback, void (*free_privdata)(RedisModuleCtx*,void*), long long timeout_ms) +{ + (void)ctx; + (void)reply_callback; + (void)timeout_callback; + (void)free_privdata; + (void)timeout_ms; + RedisModuleBlockedClient *bc = (RedisModuleBlockedClient*)malloc(sizeof(RedisModuleBlockedClient)); + mock().setData("RedisModule_BlockClient", 1); + return bc; +} + +int RedisModule_UnblockClient(RedisModuleBlockedClient *bc, void *privdata) +{ + (void)privdata; + free(bc); + mock().setData("RedisModule_UnblockClient", mock().getData("RedisModule_UnblockClient").getIntValue()+1); + return REDISMODULE_OK; +} + +int RedisModule_AbortBlock(RedisModuleBlockedClient *bc) +{ + free(bc); + mock().setData("RedisModule_AbortBlock", 1); + return REDISMODULE_OK; +} + +RedisModuleString *RedisModule_CreateString(RedisModuleCtx *ctx, const char *ptr, size_t len) +{ + (void)ctx; + (void)ptr; + (void)len; + RedisModuleString *rms = (RedisModuleString*)malloc(sizeof(RedisModuleString)); + mock().setData("RedisModule_CreateString", mock().getData("RedisModule_CreateString").getIntValue()+1); + return rms; +} + +void RedisModule_FreeThreadSafeContext(RedisModuleCtx *ctx) +{ + (void)ctx; + mock().setData("RedisModule_FreeThreadSafeContext", 1); + return; +} + +int RedisModule_StringToLongLong(const RedisModuleString *str, long long *ll) +{ + (void)str; + + int call_no = mock().getData("RedisModule_StringToLongLongCallCount").getIntValue(); + switch(call_no) { + case 0: + *ll = mock().getData("RedisModule_StringToLongLongCall_1").getIntValue(); + break; + case 1: + *ll = mock().getData("RedisModule_StringToLongLongCall_2").getIntValue(); + break; + default: + *ll = mock().getData("RedisModule_StringToLongLongCallDefault").getIntValue(); + } + mock().setData("RedisModule_StringToLongLongCallCount", call_no + 1); + return REDISMODULE_OK; +} + +void RedisModule_ThreadSafeContextLock(RedisModuleCtx *ctx) +{ + (void)ctx; + mock().setData("RedisModule_ThreadSafeContextLock", 1); + return; +} + +void RedisModule_ThreadSafeContextUnlock(RedisModuleCtx *ctx) +{ + (void)ctx; + mock().setData("RedisModule_ThreadSafeContextUnlock", 1); + return; +} + +void RedisModule_ReplySetArrayLength(RedisModuleCtx *ctx, long len) +{ + (void)ctx; + mock().setData("RedisModule_ReplySetArrayLength", (int)len); + return; +} + +RedisModuleCtx *RedisModule_GetThreadSafeContext(RedisModuleBlockedClient *bc) +{ + (void) bc; + mock().setData("RedisModule_GetThreadSafeContext", 1); + return NULL; +} + +RedisModuleString *RedisModule_CreateStringFromLongLong(RedisModuleCtx *ctx, long long ll) +{ + (void)ctx; + (void)ll; + RedisModuleString *rms = (RedisModuleString*)malloc(sizeof(RedisModuleString)); + mock().setData("RedisModule_CreateStringFromLongLong", mock().getData("RedisModule_CreateStringFromLongLong").getIntValue()+1); + return rms; +} + +void RedisModule_AutoMemory(RedisModuleCtx *ctx) +{ + (void)ctx; + int old = mock().getData("RedisModule_AutoMemory").getIntValue(); + mock().setData("RedisModule_AutoMemory", old + 1); + return; +} + +void *RedisModule_Alloc(size_t bytes) +{ + mock() + .actualCall("RedisModule_Alloc"); + return malloc(bytes); +} + +void RedisModule_Free(void *ptr) +{ + mock() + .actualCall("RedisModule_Free"); + free(ptr); +} diff --git a/setup/dbaas/redismodule/tst/src/exstrings_ndel_test.cpp b/setup/dbaas/redismodule/tst/src/exstrings_ndel_test.cpp new file mode 100644 index 0000000..28f2b16 --- /dev/null +++ b/setup/dbaas/redismodule/tst/src/exstrings_ndel_test.cpp @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +extern "C" { +#include "exstringsStub.h" +#include "redismodule.h" +} + +#include "CppUTest/TestHarness.h" +#include "CppUTestExt/MockSupport.h" + +#include "ut_helpers.hpp" + +void nDelReturnNKeysFromUnlink(int count) +{ + mock() + .expectOneCall("RedisModule_CallReplyInteger") + .andReturnValue(count); + +} + +TEST_GROUP(exstrings_ndel) +{ + void setup() + { + mock().enable(); + mock().ignoreOtherCalls(); + } + + void teardown() + { + mock().clear(); + mock().disable(); + } + +}; + +TEST(exstrings_ndel, ndel_atomic_automemory_enabled) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_AutoMemory"); + int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 3); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + delete []redisStrVec; +} + +TEST(exstrings_ndel, ndel_atomic_command_parameter_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_WrongArity"); + int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 3); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + delete []redisStrVec; +} + +TEST(exstrings_ndel, ndel_atomic_command_scan_0_keys_found) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + returnNKeysFromScanSome(0); + mock().expectOneCall("RedisModule_ReplyWithLongLong") + .withParameter("ll", 0); + int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} + +TEST(exstrings_ndel, ndel_atomic_command_scan_3_keys_found_3_keys_deleted) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock() + .expectOneCall("RedisModule_Call") + .withParameter("cmdname", "UNLINK"); + nDelReturnNKeysFromUnlink(3); + mock().expectOneCall("RedisModule_ReplyWithLongLong") + .withParameter("ll", 3); + int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} + +TEST(exstrings_ndel, ndel_atomic_command_scan_3_keys_found_0_keys_deleted) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock() + .expectOneCall("RedisModule_Call") + .withParameter("cmdname", "UNLINK"); + nDelReturnNKeysFromUnlink(0); + mock().expectOneCall("RedisModule_ReplyWithLongLong") + .withParameter("ll", 0); + int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} + +TEST(exstrings_ndel, ndel_atomic_command_scan_3_keys_found_1_keys_deleted) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock() + .expectOneCall("RedisModule_Call") + .withParameter("cmdname", "UNLINK"); + nDelReturnNKeysFromUnlink(1); + mock().expectOneCall("RedisModule_ReplyWithLongLong") + .withParameter("ll", 1); + int ret = NDel_Atomic_RedisCommand(&ctx, redisStrVec, 2); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} diff --git a/setup/dbaas/redismodule/tst/src/exstrings_nget_test.cpp b/setup/dbaas/redismodule/tst/src/exstrings_nget_test.cpp new file mode 100644 index 0000000..1944876 --- /dev/null +++ b/setup/dbaas/redismodule/tst/src/exstrings_nget_test.cpp @@ -0,0 +1,552 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +extern "C" { +#include "exstringsStub.h" +#include "redismodule.h" +} + +#include + +#include "CppUTest/TestHarness.h" +#include "CppUTestExt/MockSupport.h" + +#include "ut_helpers.hpp" + +TEST_GROUP(exstrings_nget) +{ + void setup() + { + mock().enable(); + mock().ignoreOtherCalls(); + } + + void teardown() + { + mock().clear(); + mock().disable(); + } + +}; + +void threadDetachedSuccess() +{ + mock().expectOneCall("pthread_detach") + .andReturnValue(0); +} + +void nKeysFoundMget(long keys) +{ + for (long i = 0 ; i < keys ; i++) { + mock().expectOneCall("RedisModule_CreateStringFromCallReply") + .andReturnValue(malloc(UT_DUMMY_BUFFER_SIZE)); + mock().expectNCalls(2, "RedisModule_ReplyWithString"); + } +} + +void nKeysNotFoundMget(long keys) +{ + void* ptr = NULL; + mock().expectNCalls(keys, "RedisModule_CreateStringFromCallReply") + .andReturnValue(ptr); + mock().expectNoCall("RedisModule_ReplyWithString"); +} + +void expectNReplies(long count) +{ + mock().expectOneCall("RedisModule_ReplySetArrayLength") + .withParameter("len", 2*count); +} + +void threadSafeContextLockedAndUnlockedEqualTimes() +{ + int locked = mock().getData("TimesThreadSafeContextWasLocked").getIntValue(); + int unlocked = mock().getData("TimesThreadSafeContextWasUnlocked").getIntValue(); + CHECK_EQUAL(locked, unlocked); +} + +TEST(exstrings_nget, nget_atomic_automemory_enabled) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + long keys_found_with_scan = 0; + + mock().expectOneCall("RedisModule_AutoMemory"); + mock().expectOneCall("RedisModule_CallReplyLength") + .andReturnValue((int)keys_found_with_scan); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 2); + mock().checkExpectations(); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().expectOneCall("RedisModule_WrongArity"); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 3); + CHECK_EQUAL(ret, REDISMODULE_ERR); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_3rd_parameter_was_not_equal_to_COUNT) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(4); + const char * not_count_literal = "NOT_COUNT"; + size_t not_count_len = strlen(not_count_literal); + + mock().expectOneCall("RedisModule_StringPtrLen") + .withOutputParameterReturning("len", ¬_count_len, sizeof(size_t)) + .andReturnValue((void*)not_count_literal); + mock().expectOneCall("RedisModule_ReplyWithError"); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_4th_parameter_was_not_integer) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(4); + const char * count_literal = "COUNT"; + size_t count_len = strlen(count_literal); + size_t count_number = 123; + + mock().expectOneCall("RedisModule_StringPtrLen") + .withOutputParameterReturning("len", &count_len, sizeof(size_t)) + .andReturnValue((void*)count_literal); + mock().expectOneCall("RedisModule_StringToLongLong") + .withOutputParameterReturning("ll", &count_number, sizeof(size_t)) + .andReturnValue(REDISMODULE_ERR); + mock().expectOneCall("RedisModule_ReplyWithError"); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_4th_parameter_was_negative) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(4); + const char * count_literal = "COUNT"; + size_t count_len = strlen(count_literal); + size_t count_number = -123; + + mock().expectOneCall("RedisModule_StringPtrLen") + .withOutputParameterReturning("len", &count_len, sizeof(size_t)) + .andReturnValue((void*)count_literal); + mock().expectOneCall("RedisModule_StringToLongLong") + .withOutputParameterReturning("ll", &count_number, sizeof(size_t)) + .andReturnValue(REDISMODULE_OK); + mock().expectOneCall("RedisModule_ReplyWithError"); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_scan_returned_zero_keys) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(0); + expectNReplies(0); + mock().expectNoCall("RedisModule_Call"); + + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_3_keys_scanned_0_keys_mget) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "MGET"); + nKeysNotFoundMget(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + expectNReplies(0); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_3_keys_scanned_3_keys_mget) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "MGET"); + nKeysFoundMget(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + expectNReplies(3); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_atomic_command_3_keys_scanned_2_keys_mget) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "MGET"); + nKeysFoundMget(2); + nKeysNotFoundMget(1); + mock().expectOneCall("RedisModule_FreeCallReply"); + expectNReplies(2); + int ret = NGet_Atomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_automemory_enabled) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().setData("pthread_create_free_block_client_args", 1); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_AutoMemory"); + + int ret = NGet_NoAtomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_thread_create_success) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().setData("pthread_create_free_block_client_args", 1); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_BlockClient"); + mock().expectOneCall("pthread_create"); + mock().expectNoCall("RedisModule_AbortBlock"); + + int ret = NGet_NoAtomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_thread_create_fail) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + mock().ignoreOtherCalls(); + mock().expectOneCall("RedisModule_BlockClient"); + mock().expectOneCall("pthread_create") + .andReturnValue(1); + mock().expectOneCall("RedisModule_AbortBlock"); + + int ret = NGet_NoAtomic_RedisCommand(&ctx, redisStrVec, 2); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(4); + + mock().expectOneCall("RedisModule_WrongArity"); + mock().expectNoCall("RedisModule_BlockClient"); + + int ret = NGet_NoAtomic_RedisCommand(&ctx, redisStrVec, 3); + + CHECK_EQUAL(ret, REDISMODULE_ERR); + mock().checkExpectations(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_threadmain_3rd_parameter_was_not_equal_to_COUNT) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = createRedisStrVec(4); + const char * not_count_literal = "NOT_COUNT"; + size_t not_count_len = strlen(not_count_literal); + + mock().expectOneCall("RedisModule_StringPtrLen") + .withOutputParameterReturning("len", ¬_count_len, sizeof(size_t)) + .andReturnValue((void*)not_count_literal); + mock().expectOneCall("RedisModule_ReplyWithError"); + mock().expectNoCall("RedisModule_BlockClient"); + + int ret = NGet_NoAtomic_RedisCommand(&ctx, redisStrVec, 4); + + CHECK_EQUAL(ret, REDISMODULE_ERR); + + mock().checkExpectations(); + threadSafeContextLockedAndUnlockedEqualTimes(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_4th_parameter_was_not_integer) +{ + RedisModuleCtx ctx; + const char * count_literal = "COUNT"; + size_t count_len = strlen(count_literal); + size_t count_number = -123; + RedisModuleString ** redisStrVec = createRedisStrVec(4); + + mock().expectOneCall("RedisModule_StringPtrLen") + .withOutputParameterReturning("len", &count_len, sizeof(size_t)) + .andReturnValue((void*)count_literal); + mock().expectOneCall("RedisModule_StringToLongLong") + .withOutputParameterReturning("ll", &count_number, sizeof(size_t)) + .andReturnValue(REDISMODULE_OK); + mock().expectOneCall("RedisModule_ReplyWithError"); + + int ret = NGet_NoAtomic_RedisCommand(&ctx, redisStrVec, 4); + + CHECK_EQUAL(ret, REDISMODULE_ERR); + mock().checkExpectations(); + threadSafeContextLockedAndUnlockedEqualTimes(); + + delete []redisStrVec; +} + +typedef struct RedisModuleBlockedClientArgs { + RedisModuleBlockedClient *bc; + RedisModuleString **argv; + int argc; +} RedisModuleBlockedClientArgs; + +TEST(exstrings_nget, nget_noatomic_threadmain_3_keys_scanned_3_keys_mget) +{ + RedisModuleCtx ctx; + RedisModuleBlockedClientArgs *bca = + (RedisModuleBlockedClientArgs*)RedisModule_Alloc(sizeof(RedisModuleBlockedClientArgs)); + RedisModuleBlockedClient *bc = RedisModule_BlockClient(&ctx,NULL,NULL,NULL,0); + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + bca->bc = bc; + bca->argv = redisStrVec; + bca->argc = 2; + + mock().ignoreOtherCalls(); + threadDetachedSuccess(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "MGET"); + nKeysFoundMget(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + expectNReplies(3); + mock().expectOneCall("RedisModule_FreeThreadSafeContext"); + mock().expectOneCall("RedisModule_UnblockClient"); + + NGet_NoAtomic_ThreadMain((void*)bca); + + mock().checkExpectations(); + threadSafeContextLockedAndUnlockedEqualTimes(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_threadmain_3_keys_scanned_0_keys_mget) +{ + RedisModuleCtx ctx; + RedisModuleBlockedClientArgs *bca = (RedisModuleBlockedClientArgs*)malloc(sizeof(RedisModuleBlockedClientArgs)); + RedisModuleBlockedClient *bc = RedisModule_BlockClient(&ctx,NULL,NULL,NULL,0); + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + bca->bc = bc; + bca->argv = redisStrVec; + bca->argc = 2; + + mock().ignoreOtherCalls(); + threadDetachedSuccess(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "MGET"); + nKeysNotFoundMget(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + expectNReplies(0); + mock().expectOneCall("RedisModule_FreeThreadSafeContext"); + mock().expectOneCall("RedisModule_UnblockClient"); + + NGet_NoAtomic_ThreadMain((void*)bca); + + mock().checkExpectations(); + threadSafeContextLockedAndUnlockedEqualTimes(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_threadmain_3_keys_scanned_2_keys_mget) +{ + RedisModuleCtx ctx; + RedisModuleBlockedClientArgs *bca = (RedisModuleBlockedClientArgs*)malloc(sizeof(RedisModuleBlockedClientArgs)); + RedisModuleBlockedClient *bc = RedisModule_BlockClient(&ctx,NULL,NULL,NULL,0); + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + bca->bc = bc; + bca->argv = redisStrVec; + bca->argc = 2; + + mock().ignoreOtherCalls(); + threadDetachedSuccess(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(3); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "MGET"); + nKeysNotFoundMget(1); + nKeysFoundMget(2); + mock().expectOneCall("RedisModule_FreeCallReply"); + expectNReplies(2); + mock().expectOneCall("RedisModule_FreeThreadSafeContext"); + mock().expectOneCall("RedisModule_UnblockClient"); + + NGet_NoAtomic_ThreadMain((void*)bca); + + mock().checkExpectations(); + threadSafeContextLockedAndUnlockedEqualTimes(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_threadmain_scan_returned_zero_keys) +{ + RedisModuleCtx ctx; + RedisModuleBlockedClientArgs *bca = (RedisModuleBlockedClientArgs*)malloc(sizeof(RedisModuleBlockedClientArgs)); + RedisModuleBlockedClient *bc = RedisModule_BlockClient(&ctx,NULL,NULL,NULL,0); + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + bca->bc = bc; + bca->argv = redisStrVec; + bca->argc = 2; + + mock().ignoreOtherCalls(); + threadDetachedSuccess(); + mock().expectOneCall("RedisModule_ReplyWithArray") + .withParameter("len", (long)REDISMODULE_POSTPONED_ARRAY_LEN); + mock().expectOneCall("RedisModule_Call") + .withParameter("cmdname", "SCAN"); + returnNKeysFromScanSome(0); + mock().expectOneCall("RedisModule_FreeCallReply"); + mock().expectNoCall("RedisModule_Call"); + mock().expectOneCall("RedisModule_FreeThreadSafeContext"); + mock().expectOneCall("RedisModule_UnblockClient"); + + NGet_NoAtomic_ThreadMain((void*)bca); + + mock().checkExpectations(); + threadSafeContextLockedAndUnlockedEqualTimes(); + + delete []redisStrVec; +} + +TEST(exstrings_nget, nget_noatomic_threadmain_thread_detached) +{ + RedisModuleCtx ctx; + RedisModuleBlockedClientArgs *bca = (RedisModuleBlockedClientArgs*)malloc(sizeof(RedisModuleBlockedClientArgs)); + RedisModuleBlockedClient *bc = RedisModule_BlockClient(&ctx,NULL,NULL,NULL,0); + RedisModuleString ** redisStrVec = createRedisStrVec(2); + + bca->bc = bc; + bca->argv = redisStrVec; + bca->argc = 2; + + mock().ignoreOtherCalls(); + threadDetachedSuccess(); + + NGet_NoAtomic_ThreadMain((void*)bca); + + mock().checkExpectations(); + + delete []redisStrVec; +} diff --git a/setup/dbaas/redismodule/tst/src/exstrings_test.cpp b/setup/dbaas/redismodule/tst/src/exstrings_test.cpp new file mode 100755 index 0000000..d239eea --- /dev/null +++ b/setup/dbaas/redismodule/tst/src/exstrings_test.cpp @@ -0,0 +1,1691 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +extern "C" { +#include "exstringsStub.h" +#include "redismodule.h" +} + +#include "CppUTest/TestHarness.h" +#include "CppUTestExt/MockSupport.h" + +#define OBJ_OP_NO 0 +#define OBJ_OP_XX (1<<1) /* OP if key exist */ +#define OBJ_OP_NX (1<<2) /* OP if key not exist */ +#define OBJ_OP_IE (1<<4) /* OP if equal old value */ +#define OBJ_OP_NE (1<<5) /* OP if not equal old value */ + +typedef struct RedisModuleBlockedClientArgs { + RedisModuleBlockedClient *bc; + RedisModuleString **argv; + int argc; +} RedisModuleBlockedClientArgs; + +TEST_GROUP(exstring) +{ + void setup() + { + + mock().enable(); + mock().ignoreOtherCalls(); + } + + void teardown() + { + mock().clear(); + mock().disable(); + } + +}; + +TEST(exstring, OnLoad) +{ + RedisModuleCtx ctx; + int ret = RedisModule_OnLoad(&ctx, 0, 0); + CHECK_EQUAL(ret, 0); +} + +TEST(exstring, setie) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + int ret = SetIE_RedisCommand(&ctx, redisStrVec, 4); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + delete []redisStrVec; +} + +TEST(exstring, setne) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + int ret = SetNE_RedisCommand(&ctx,redisStrVec, 4); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + delete []redisStrVec; +} + +TEST(exstring, command_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + int ret = setStringGenericCommand(&ctx, 0, 3, OBJ_OP_IE); + CHECK_EQUAL(ret, 1); +} + + +TEST(exstring, setie_command_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + mock().setData("RedisModule_OpenKey_no", 1); + + int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE); + CHECK_EQUAL(ret, 0); + delete []redisStrVec; + +} + + +TEST(exstring, setie_command_has_key_set) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_set", 1); + int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE); + CHECK_EQUAL(ret, REDISMODULE_OK); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1); + delete []redisStrVec; + +} + +TEST(exstring, setie_command_key_string_nosame) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + + mock().setData("RedisModule_String_nosame", 1); + + + int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + delete []redisStrVec; + +} + +TEST(exstring, setie_command_key_same_string_reply) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_IE); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + delete []redisStrVec; +} + + + +TEST(exstring, setne_command_key_string_same_replrstr) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + //mock().setData("RedisModule_CallReplyType_str", 1); + + int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_NE); + CHECK_EQUAL(ret, 0); + delete []redisStrVec; + +} + +TEST(exstring, setne_command_setne_key_string_nosame_replrstr) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + int ret = setStringGenericCommand(&ctx, redisStrVec, 4, OBJ_OP_NE); + CHECK_EQUAL(ret, 0); + delete []redisStrVec; + +} + +TEST(exstring, delie) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIE_RedisCommand(&ctx, redisStrVec, 3); + CHECK_EQUAL(ret, 0); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + delete []redisStrVec; +} + +TEST(exstring, delne) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelNE_RedisCommand(&ctx,redisStrVec, 3); + CHECK_EQUAL(ret, 0); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + delete []redisStrVec; +} + +TEST(exstring, del_command_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + int ret = 0; + ret = delStringGenericCommand(&ctx, 0, 2, OBJ_OP_IE); + CHECK_EQUAL(ret, 1); + + ret = 0; + ret = delStringGenericCommand(&ctx, 0, 4, OBJ_OP_NE); + CHECK_EQUAL(ret, 1); +} + +TEST(exstring, delie_command_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + mock().setData("RedisModule_OpenKey_no", 1); + + int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0); + delete []redisStrVec; + +} + +TEST(exstring, delie_command_have_key_set) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_set", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1); + delete []redisStrVec; +} + +TEST(exstring, delie_command_key_string_nosame) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + + mock().setData("RedisModule_String_nosame", 1); + + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE); + CHECK_EQUAL(ret, 0); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + delete []redisStrVec; + +} + + +TEST(exstring, delie_command_key_same_string_reply) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_IE); + CHECK_EQUAL(ret, 0); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + delete []redisStrVec; +} + + +TEST(exstring, delne_command_key_string_same_reply) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_NE); + CHECK_EQUAL(ret, 0); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + delete []redisStrVec; + +} + +TEST(exstring, delne_command_key_string_nosame_reply) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[3]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = delStringGenericCommand(&ctx, redisStrVec, 3, OBJ_OP_NE); + CHECK_EQUAL(ret, 0); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + delete []redisStrVec; + +} + +TEST(exstring, setpub_command_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + int ret = 0; + + ret = SetPub_RedisCommand(&ctx, 0, 2); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetPub_RedisCommand(&ctx, 0, 8); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetMPub_RedisCommand(&ctx, 0, 2); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetMPub_RedisCommand(&ctx, 0, 8); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetXXPub_RedisCommand(&ctx, 0, 3); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetXXPub_RedisCommand(&ctx, 0, 6); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetNXPub_RedisCommand(&ctx, 0, 3); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetNXMPub_RedisCommand(&ctx, 0, 3); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetNXPub_RedisCommand(&ctx, 0, 6); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetIEPub_RedisCommand(&ctx, 0, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetIEMPub_RedisCommand(&ctx, 0, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetIEPub_RedisCommand(&ctx, 0, 9); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetNEPub_RedisCommand(&ctx, 0, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = SetNEPub_RedisCommand(&ctx, 0, 9); + CHECK_EQUAL(ret, REDISMODULE_ERR); +} + +TEST(exstring, setpub_command_no_key_replystr) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + int ret = SetPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setmpub_command_negative_key_val_count) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[7]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + redisStrVec[6] = (RedisModuleString *)6; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_StringToLongLongCall_1", -1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = SetMPub_RedisCommand(&ctx, redisStrVec, 7); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(0, mock().getData("MSET").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setmpub_command_negative_chan_msg_count) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[7]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + redisStrVec[6] = (RedisModuleString *)6; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", -1); + + int ret = SetMPub_RedisCommand(&ctx, redisStrVec, 7); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(0, mock().getData("MSET").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setmpub_command_invalid_total_count) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[7]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + redisStrVec[6] = (RedisModuleString *)6; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_StringToLongLongCall_1", 100); + mock().setData("RedisModule_StringToLongLongCall_2", 100); + + int ret = SetMPub_RedisCommand(&ctx, redisStrVec, 7); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(0, mock().getData("MSET").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setmpub_command_set) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[7]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + redisStrVec[6] = (RedisModuleString *)6; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = SetMPub_RedisCommand(&ctx, redisStrVec, 7); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(1, mock().getData("MSET").getIntValue()); + CHECK_EQUAL(1, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(2, mock().getData("RedisModule_FreeCallReply").getIntValue()); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setmpub_command_set_multipub) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[9]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + redisStrVec[6] = (RedisModuleString *)6; + redisStrVec[7] = (RedisModuleString *)7; + redisStrVec[8] = (RedisModuleString *)8; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 2); + + int ret = SetMPub_RedisCommand(&ctx, redisStrVec, 9); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(1, mock().getData("MSET").getIntValue()); + CHECK_EQUAL(2, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(3, mock().getData("RedisModule_FreeCallReply").getIntValue()); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setxxpub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setxxpub_command_parameter_has_key_set) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + + mock().setData("RedisModule_KeyType_set", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setxxpub_command_has_key_string) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetXXPub_RedisCommand(&ctx, redisStrVec, 5); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + + +TEST(exstring, setnxpub_command_has_key_string) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetNXPub_RedisCommand(&ctx, redisStrVec, 5); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setnxpub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetNXPub_RedisCommand(&ctx, redisStrVec, 5); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + + + +TEST(exstring, setiepub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + + +TEST(exstring, setiepub_command_key_string_nosame) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setiepub_command_key_same_string_reply) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetIEPub_RedisCommand(&ctx, redisStrVec, 6); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setnepub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + + mock().setData("RedisModule_KeyType_empty", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3); + CHECK_EQUAL(mock().getData("RedisModule_AutoMemory").getIntValue(),1); + + delete []redisStrVec; + +} + +TEST(exstring, setnepub_command_key_string_same_reply) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + + delete []redisStrVec; + +} + + +TEST(exstring, setnepub_command_key_string_nosame_reply) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)0; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)2; + redisStrVec[3] = (RedisModuleString *)3; + redisStrVec[4] = (RedisModuleString *)4; + redisStrVec[5] = (RedisModuleString *)5; + + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = SetNEPub_RedisCommand(&ctx, redisStrVec, 6); + + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("MSET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3); + + delete []redisStrVec; + +} + +TEST(exstring, delpub) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[4]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + int ret = DelPub_RedisCommand(&ctx, redisStrVec, 4); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} + +TEST(exstring, delmpub) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[8]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + redisStrVec[6] = (RedisModuleString *)1; + redisStrVec[7] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 2); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 8); + CHECK_EQUAL(ret, REDISMODULE_OK); + + delete []redisStrVec; +} + +TEST(exstring, deliepub) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + delete []redisStrVec; +} + +TEST(exstring, deliempub) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEMPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + delete []redisStrVec; +} + +TEST(exstring, delnepub) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelNEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + delete []redisStrVec; +} + +TEST(exstring, delpub_command_parameter_number_incorrect) +{ + RedisModuleCtx ctx; + int ret = 0; + ret = DelPub_RedisCommand(&ctx, 0, 2); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = DelMPub_RedisCommand(&ctx, 0, 5); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = DelIEPub_RedisCommand(&ctx, 0, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = DelIEMPub_RedisCommand(&ctx, 0, 4); + CHECK_EQUAL(ret, REDISMODULE_ERR); + + ret = 0; + ret = DelNEPub_RedisCommand(&ctx, 0, 8); + CHECK_EQUAL(ret, REDISMODULE_ERR); +} + +TEST(exstring, delpub_command_reply_null) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + mock().setData("RedisModule_CallReplyInteger", 0); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_Call_Return_Null", 0); + + int ret = DelPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1); + delete []redisStrVec; + +} + +TEST(exstring, delpub_command_reply_error) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + mock().setData("RedisModule_CallReplyInteger", 0); + mock().setData("RedisModule_CallReplyType_err", 1); + + int ret = DelPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + delete []redisStrVec; + +} + +TEST(exstring, delpub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + mock().setData("RedisModule_CallReplyInteger", 0); + mock().setData("RedisModule_CallReplyType_inter", 1); + + int ret = DelPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_reply_null) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + + mock().setData("RedisModule_Call_Return_Null", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(1, mock().getData("UNLINK").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_ReplyWithCallReply").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_reply_error) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 0); + mock().setData("RedisModule_CallReplyType_err", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(ret, REDISMODULE_OK); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 0); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_key_deleted) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(1, mock().getData("UNLINK").getIntValue()); + CHECK_EQUAL(1, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithCallReply").getIntValue()); + CHECK_EQUAL(2, mock().getData("RedisModule_FreeCallReply").getIntValue()); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_key_deleted_multi_pub) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[10]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + redisStrVec[6] = (RedisModuleString *)1; + redisStrVec[7] = (RedisModuleString *)1; + redisStrVec[8] = (RedisModuleString *)1; + redisStrVec[9] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", 3); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 10); + CHECK_EQUAL(0, ret); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(1, mock().getData("UNLINK").getIntValue()); + CHECK_EQUAL(3, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithCallReply").getIntValue()); + CHECK_EQUAL(4, mock().getData("RedisModule_FreeCallReply").getIntValue()); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_negative_del_count) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", -1); + mock().setData("RedisModule_StringToLongLongCall_2", 1); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(0, ret); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(0, mock().getData("UNLINK").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_negative_chan_msg_count) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 1); + mock().setData("RedisModule_StringToLongLongCall_2", -1); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(0, ret); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(0, mock().getData("UNLINK").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + delete []redisStrVec; + +} + +TEST(exstring, delmpub_command_invalid_total_count) +{ + RedisModuleCtx ctx; + RedisModuleString **redisStrVec = new (RedisModuleString*[6]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + redisStrVec[5] = (RedisModuleString *)1; + + mock().setData("RedisModule_CallReplyInteger", 1); + mock().setData("RedisModule_CallReplyType_inter", 1); + mock().setData("RedisModule_StringToLongLongCallCount", 0); + mock().setData("RedisModule_StringToLongLongCall_1", 100); + mock().setData("RedisModule_StringToLongLongCall_2", 100); + + int ret = DelMPub_RedisCommand(&ctx, redisStrVec, 6); + CHECK_EQUAL(0, ret); + CHECK_EQUAL(0, mock().getData("GET").getIntValue()); + CHECK_EQUAL(0, mock().getData("UNLINK").getIntValue()); + CHECK_EQUAL(0, mock().getData("PUBLISH").getIntValue()); + CHECK_EQUAL(1, mock().getData("RedisModule_ReplyWithError").getIntValue()); + CHECK_EQUAL(0, mock().getData("RedisModule_FreeCallReply").getIntValue()); + delete []redisStrVec; + +} + +TEST(exstring, deliepub_command_has_no_key) +{ + RedisModuleCtx ctx; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + mock().setData("RedisModule_KeyType_empty", 1); + + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + delete []redisStrVec; + +} + +TEST(exstring, deliepub_command_has_key_set) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_set", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 1); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 0); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 0); + + delete []redisStrVec; +} + +TEST(exstring, deliepub_command_key_string_nosame) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + + delete []redisStrVec; +} + +TEST(exstring, deliepub_command_same_string_replynull) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_null", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithNull").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 2); + + delete []redisStrVec; +} + +TEST(exstring, deliepub_command_same_string_reply) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_CallReplyInteger", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelIEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3); + + delete []redisStrVec; +} + +TEST(exstring, delnepub_command_same_string_reply) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_same", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelNEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 0); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithLongLong").getIntValue(), 0); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 1); + + delete []redisStrVec; +} + +TEST(exstring, delnepub_command_nosame_string_reply) +{ + RedisModuleCtx ctx; + //RedisModuleString str; + RedisModuleString ** redisStrVec = new (RedisModuleString*[5]); + + redisStrVec[0] = (RedisModuleString *)1; + redisStrVec[1] = (RedisModuleString *)1; + redisStrVec[2] = (RedisModuleString *)1; + redisStrVec[3] = (RedisModuleString *)1; + redisStrVec[4] = (RedisModuleString *)1; + + mock().setData("RedisModule_OpenKey_have", 1); + mock().setData("RedisModule_KeyType_str", 1); + mock().setData("RedisModule_String_nosame", 1); + mock().setData("RedisModule_CallReplyType_str", 1); + mock().setData("RedisModule_CallReplyInteger", 1); + mock().expectOneCall("RedisModule_CloseKey"); + int ret = DelNEPub_RedisCommand(&ctx, redisStrVec, 5); + CHECK_EQUAL(ret, REDISMODULE_OK); + mock().checkExpectations(); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithError").getIntValue(), 0); + CHECK_EQUAL(mock().getData("GET").getIntValue(), 1); + CHECK_EQUAL(mock().getData("UNLINK").getIntValue(), 1); + CHECK_EQUAL(mock().getData("PUBLISH").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_ReplyWithCallReply").getIntValue(), 1); + CHECK_EQUAL(mock().getData("RedisModule_FreeCallReply").getIntValue(), 3); + + delete []redisStrVec; +} diff --git a/setup/dbaas/redismodule/tst/src/main.cpp b/setup/dbaas/redismodule/tst/src/main.cpp new file mode 100755 index 0000000..e217468 --- /dev/null +++ b/setup/dbaas/redismodule/tst/src/main.cpp @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2018-2019 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#include "CppUTest/CommandLineTestRunner.h" + +extern "C" { +#include +} + +int main(int ac, char** av) +{ + MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); + return CommandLineTestRunner::RunAllTests(ac, av); +} diff --git a/setup/dbaas/redismodule/tst/src/ut_helpers.cpp b/setup/dbaas/redismodule/tst/src/ut_helpers.cpp new file mode 100644 index 0000000..2d63393 --- /dev/null +++ b/setup/dbaas/redismodule/tst/src/ut_helpers.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2018-2020 Nokia. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#include + +#include "redismodule.h" +#include "ut_helpers.hpp" + +#include +#include + +RedisModuleString **createRedisStrVec(size_t size) +{ + RedisModuleString ** redisStrVec = new RedisModuleString*[size]; + for (size_t i = 0 ; i < size ; i++) { + redisStrVec[i] = (RedisModuleString *)UT_DUMMY_PTR_ADDRESS; + } + return redisStrVec; +} + +void returnNKeysFromScanSome(long keys) +{ + mock().expectOneCall("RedisModule_CallReplyLength") + .andReturnValue((int)keys); + for (long i = 0 ; i < keys ; i++) { + mock().expectOneCall("RedisModule_CreateStringFromCallReply") + .andReturnValue(malloc(UT_DUMMY_BUFFER_SIZE)); + } +} + diff --git a/setup/dbaas/releases/container-release-ric-plt-dbaas-0.1.0.yaml b/setup/dbaas/releases/container-release-ric-plt-dbaas-0.1.0.yaml new file mode 100644 index 0000000..61d7b67 --- /dev/null +++ b/setup/dbaas/releases/container-release-ric-plt-dbaas-0.1.0.yaml @@ -0,0 +1,10 @@ +--- +distribution_type: container +container_release_tag: 0.1.0 +container_pull_registry: nexus3.o-ran-sc.org:10004 +container_push_registry: nexus3.o-ran-sc.org:10002 +project: ric-plt/dbaas +ref: a3454f896b5dc62ee0672febcb228a1b7c20e63e +containers: + - name: ric-plt-dbaas + version: 0.1.0 diff --git a/setup/dbaas/releases/container-release-ric-plt-dbaas.yaml b/setup/dbaas/releases/container-release-ric-plt-dbaas.yaml new file mode 100644 index 0000000..5d6c1cb --- /dev/null +++ b/setup/dbaas/releases/container-release-ric-plt-dbaas.yaml @@ -0,0 +1,10 @@ +--- +distribution_type: container +container_release_tag: 0.4.0 +container_pull_registry: nexus3.o-ran-sc.org:10004 +container_push_registry: nexus3.o-ran-sc.org:10002 +project: ric-plt/dbaas +ref: c8a0448d6b8f67f0c0bae546eeb8c0aae9914837 +containers: + - name: ric-plt-dbaas + version: 0.4.0 diff --git a/setup/dbaas/testapplication/go/sdl/sdl.go b/setup/dbaas/testapplication/go/sdl/sdl.go new file mode 100644 index 0000000..2a40dac --- /dev/null +++ b/setup/dbaas/testapplication/go/sdl/sdl.go @@ -0,0 +1,139 @@ +// Copyright (c) 2019 AT&T Intellectual Property. +// Copyright (c) 2019 Nokia. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). +// + +package sdl + +import ( + "github.com/go-redis/redis" + "os" + "reflect" +) + +type SdlInstance struct { + nameSpace string + nsPrefix string + client *redis.Client +} + +func Create(nameSpace string) *SdlInstance { + hostname := os.Getenv("DBAAS_SERVICE_HOST") + if hostname == "" { + hostname = "localhost" + } + port := os.Getenv("DBAAS_SERVICE_PORT") + if port == "" { + port = "6379" + } + redisAddress := hostname + ":" + port + client := redis.NewClient(&redis.Options{ + Addr: redisAddress, + Password: "", // no password set + DB: 0, // use default DB + }) + + s := SdlInstance{ + nameSpace: nameSpace, + nsPrefix: "{" + nameSpace + "},", + client: client, + } + + return &s +} + +func (s *SdlInstance) setNamespaceToKeys(pairs ...interface{}) []interface{} { + var retVal []interface{} + for i, v := range pairs { + if i%2 == 0 { + reflectType := reflect.TypeOf(v) + switch reflectType.Kind() { + case reflect.Slice: + x := reflect.ValueOf(v) + for i2 := 0; i2 < x.Len(); i2++ { + if i2%2 == 0 { + retVal = append(retVal, s.nsPrefix+x.Index(i2).Interface().(string)) + } else { + retVal = append(retVal, x.Index(i2).Interface()) + } + } + case reflect.Array: + x := reflect.ValueOf(v) + for i2 := 0; i2 < x.Len(); i2++ { + if i2%2 == 0 { + retVal = append(retVal, s.nsPrefix+x.Index(i2).Interface().(string)) + } else { + retVal = append(retVal, x.Index(i2).Interface()) + } + } + default: + retVal = append(retVal, s.nsPrefix+v.(string)) + } + } else { + retVal = append(retVal, v) + } + } + return retVal +} + +func (s *SdlInstance) Set(pairs ...interface{}) error { + keyAndData := s.setNamespaceToKeys(pairs...) + err := s.client.MSet(keyAndData...).Err() + return err +} + +func (s *SdlInstance) Get(keys []string) (map[string]interface{}, error) { + var keysWithNs []string + for _, v := range keys { + keysWithNs = append(keysWithNs, s.nsPrefix+v) + } + val, err := s.client.MGet(keysWithNs...).Result() + m := make(map[string]interface{}) + if err != nil { + return m, err + } + for i, v := range val { + m[keys[i]] = v + } + return m, err +} + +func (s *SdlInstance) SetIf(key string, oldData, newData interface{}) { + panic("SetIf not implemented\n") +} + +func (s *SdlInstance) SetIfiNotExists(key string, data interface{}) { + panic("SetIfiNotExists not implemented\n") +} + +func (s *SdlInstance) Remove(keys ...string) { + panic("Remove not implemented\n") +} + +func (s *SdlInstance) RemoveIf(key string, data interface{}) { + panic("RemoveIf not implemented\n") +} + +func (s *SdlInstance) GetAll() []string { + panic("GetAll not implemented\n") +} + +func (s *SdlInstance) RemoveAll() { + panic("RemoveAll not implemented\n") +} + diff --git a/setup/dbaas/testapplication/go/testapp.go b/setup/dbaas/testapplication/go/testapp.go new file mode 100644 index 0000000..ee39cb8 --- /dev/null +++ b/setup/dbaas/testapplication/go/testapp.go @@ -0,0 +1,104 @@ +// Copyright (c) 2019 AT&T Intellectual Property. +// Copyright (c) 2019 Nokia. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). +// + +package main + +import ( + "fmt" + "./sdl" +) + +func main() { + sdl1 := sdl.Create("test1") + + var err error + + err = sdl1.Set("key1", "data1", "key2", "data2") + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + err = sdl1.Set("num1", 1, "num2", 2) + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + d := make([]byte, 3) + d[0] = 1 + d[1] = 2 + d[2] = 3 + err = sdl1.Set("arr1", d) + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + p := []string{"pair1", "data1", "pair2", "data2"} + err = sdl1.Set(p) + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + a := [4]string{"array1", "adata1", "array2", "adata2"} + err = sdl1.Set(a) + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + mix1 := []interface{}{"mix1", "data1", "mix2", 2} + err = sdl1.Set(mix1) + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + mix2 := [4]interface{}{"mix3", "data3", "mix4", 4} + err = sdl1.Set(mix2) + if err != nil { + fmt.Printf("unable to write to DB\n") + } + + retDataMap, err := sdl1.Get([]string{"key1", "key3", "key2"}) + if err != nil { + fmt.Printf("Unable to read from DB\n") + } else { + for i, v := range retDataMap { + fmt.Printf("%s:%s\n", i, v) + } + } + + retDataMap2, err := sdl1.Get([]string{"num1", "num2"}) + if err != nil { + fmt.Printf("Unable to read from DB\n") + } else { + for i, v := range retDataMap2 { + fmt.Printf("%s:%s\n", i, v) + } + } + + fmt.Println("-------------") + allKeys := []string{"key1", "key2", "num1", "num2", "pair1", "pair2", "array1", "array2", "mix1", "mix2", "mix3", "mix4", "arr1"} + retDataMap3, err := sdl1.Get(allKeys) + if err != nil { + fmt.Printf("Unable to read from DB\n") + } else { + for i3, v3 := range retDataMap3 { + fmt.Printf("%s:%s\n", i3, v3) + } + } +} diff --git a/setup/dbaas/tox.ini b/setup/dbaas/tox.ini new file mode 100644 index 0000000..c86cfdf --- /dev/null +++ b/setup/dbaas/tox.ini @@ -0,0 +1,30 @@ +# documentation only +[tox] +minversion = 2.0 +envlist = + docs, + docs-linkcheck, +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = + sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf + +commands = + sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + echo "Generated docs available in {toxinidir}/docs/_build/html" +whitelist_externals = echo + +[testenv:docs-linkcheck] +basepython = python3 +deps = sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf +commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck diff --git a/setup/e2/.gitignore b/setup/e2/.gitignore new file mode 100644 index 0000000..26456b0 --- /dev/null +++ b/setup/e2/.gitignore @@ -0,0 +1,56 @@ +e2/cmake-build-debug/CMakeFiles +e2/.idea/* +e2/.idea +.idea/ +e2/asnFiles +asnFiles +CMakeCache.txt +CMakeFiles/ +RIC-E2-TERMINATION/CMakeCache.txt +RIC-E2-TERMINATION/CMakeFiles/ +RIC-E2-TERMINATION/cmake_install.cmake +RIC-E2-TERMINATION/x2ap_asn_files/ +cmake-build-debug/ +cmake-build-release/ +cmake_install.cmake +e2.cbp +e2 +setUpTest +subscriptionTest +RIC-E2-TERMINATION/asnFiles/e2sm-gNB-X2-release-1-v040.asn +e2smtest +libe2sm.a +e2/RIC-E2-TERMINATION/TEST/asn1c/*.o +RIC-E2-TERMINATION/TEST/asn1c/*.o +RIC-E2-TERMINATION/TEST/asn1c/libasncodec.a +/RIC-E2-TERMINATION/TEST/asn1c/libasncodec.a +/libasncodec.a +/libasn1codec.a +RIC-E2-TERMINATION/asnFiles/ +RIC-E2-TERMINATION/tracelibcpp/ +RIC-E2-TERMINATION/tracelibcpp/CMakeLists.txt +/RIC-E2-TERMINATION/tracelibcpp/CMakeLists.txt +RIC-E2-TERMINATION/nlohmann/ +RIC-E2-TERMINATION/concurrentqueue/ +/RIC-E2-TERMINATION/base64/ +/RIC-E2-TERMINATION/3rdparty/cxxopts/ +/RIC-E2-TERMINATION/3rdparty/cgreen_1.2.0_amd64.deb +/testConfigFile +/config/config.conf +/logTest +/b64Test +/T1 +/e2Cov +/RIC-E2-TERMINATION/3rdparty/pistache/ +/CMakeLists.txt.old +/cmake-modules/ +/e2_coverage.base +/teste2 +/RIC-E2-TERMINATION/3rdparty/log/ +/RIC-E2-TERMINATION/3rdparty/rapidjson/ +RIC-E2-TERMINATION/3rdparty/log/ +RIC-E2-TERMINATION/3rdparty/rapidjson/ +/RIC-E2-TERMINATION/3rdparty/int/ +/RIC-E2-TERMINATION/3rdparty/int/autogen/licenses/codevbak.txt +!/RIC-E2-TERMINATION/3rdparty/log/3rdparty/googletest/ +/libasn1ce2smcodec.a diff --git a/setup/e2/.gitreview b/setup/e2/.gitreview new file mode 100644 index 0000000..351d6b6 --- /dev/null +++ b/setup/e2/.gitreview @@ -0,0 +1,5 @@ +[gerrit] +host=gerrit.o-ran-sc.org +port=29418 +project=ric-plt/e2 +defaultbranch=master diff --git a/setup/e2/.readthedocs.yaml b/setup/e2/.readthedocs.yaml new file mode 100644 index 0000000..3797dc8 --- /dev/null +++ b/setup/e2/.readthedocs.yaml @@ -0,0 +1,20 @@ +--- +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Required +version: 2 + +formats: + - htmlzip + +build: + image: latest + +python: + version: 3.7 + install: + - requirements: docs/requirements-docs.txt + +sphinx: + configuration: docs/conf.py diff --git a/setup/e2/INFO.yaml b/setup/e2/INFO.yaml new file mode 100644 index 0000000..ef23f5a --- /dev/null +++ b/setup/e2/INFO.yaml @@ -0,0 +1,63 @@ +--- +project: 'ric_plt_e2' +project_creation_date: '2019-11-08' +project_category: '' +lifecycle_state: 'Incubation' +project_lead: &oran_ric_plt_e2_ptl + name: 'Thoralf Czichy' + email: 'thoralf.czichy@nokia.com' + id: 'czichy' + company: 'Nokia' + timezone: 'America/New_York' +primary_contact: *oran_ric_plt_e2_ptl +issue_tracking: + type: 'jira' + url: 'https://jira.o-ran-sc.org/projects/' + key: 'ric_plt_e2' +mailing_list: + type: 'groups.io' + url: 'technical-discuss@lists.o-ran-sc.org' + tag: '[]' +realtime_discussion: + type: 'irc' + server: 'freenode.net' + channel: '#oran' +meetings: + - type: 'gotomeeting+irc' + agenda: 'https://wiki.o-ran-sc.org/display/' + url: '' + server: 'freenode.net' + channel: '#oran' + repeats: '' + time: '' +repositories: + - ric-plt/e2 +committers: + - <<: *oran_ric_plt_e2_ptl + - name: 'Adi Enzel' + email: 'aa7133@att.com' + company: 'att' + id: 'adienzel' + timezone: 'Unknown/Unknown' + - name: 'Shuky Har-Noy' + email: 'shuky.har-noy@intl.att.com' + company: 'intl.att' + id: 'ss412g' + timezone: 'Unknown/Unknown' + - name: 'Yaki Ratz' + email: 'yaki.ratz@gmail.com' + company: 'gmail' + id: 'yakiratz' + timezone: 'Unknown/Unknown' + - name: 'Hila Anina' + email: 'hanina@intl.att.com' + company: 'intl.att' + id: 'hanina' + timezone: 'Unknown/Unknown' +tsc: + # yamllint disable rule:line-length + approval: 'missing' + changes: + - type: '' + name: '' + link: '' diff --git a/setup/e2/LICENSES.txt b/setup/e2/LICENSES.txt new file mode 100644 index 0000000..d323379 --- /dev/null +++ b/setup/e2/LICENSES.txt @@ -0,0 +1,31 @@ +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the "Software License"); +you may not use this software except in compliance with the Software +License. You may obtain a copy of the Software License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the Software License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the Software License for the specific language governing permissions +and limitations under the Software License. + + + +Unless otherwise specified, all documentation contained herein is licensed +under the Creative Commons License, Attribution 4.0 Intl. (the +"Documentation License"); you may not use this documentation except in +compliance with the Documentation License. You may obtain a copy of the +Documentation License at + +https://creativecommons.org/licenses/by/4.0/ + +Unless required by applicable law or agreed to in writing, documentation +distributed under the Documentation License is distributed on an "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the Documentation License for the specific language governing +permissions and limitations under the Documentation License. + +This source code is part of the near-RT RIC (RAN Intelligent Controller) +platform project (RICP). diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2APextFileList.txt b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2APextFileList.txt new file mode 100644 index 0000000..aa93de8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2APextFileList.txt @@ -0,0 +1,65 @@ +../oranE2/ANY.h +../oranE2/ANY.c +../oranE2/OCTET_STRING.h +../oranE2/OPEN_TYPE.h +../oranE2/OPEN_TYPE.c +../oranE2/constr_CHOICE.h +../oranE2/INTEGER.h +../oranE2/INTEGER.c +../oranE2/NativeEnumerated.h +../oranE2/NativeEnumerated.c +../oranE2/NativeInteger.h +../oranE2/NativeInteger.c +../oranE2/asn_SEQUENCE_OF.h +../oranE2/asn_SEQUENCE_OF.c +../oranE2/asn_SET_OF.h +../oranE2/asn_SET_OF.c +../oranE2/constr_CHOICE.c +../oranE2/constr_SEQUENCE.h +../oranE2/constr_SEQUENCE.c +../oranE2/constr_SEQUENCE_OF.h +../oranE2/constr_SEQUENCE_OF.c +../oranE2/constr_SET_OF.h +../oranE2/constr_SET_OF.c +../oranE2/asn_application.h +../oranE2/asn_application.c +../oranE2/asn_ioc.h +../oranE2/asn_system.h +../oranE2/asn_codecs.h +../oranE2/asn_internal.h +../oranE2/asn_internal.c +../oranE2/asn_random_fill.h +../oranE2/asn_random_fill.c +../oranE2/asn_bit_data.h +../oranE2/asn_bit_data.c +../oranE2/OCTET_STRING.c +../oranE2/BIT_STRING.h +../oranE2/BIT_STRING.c +../oranE2/asn_codecs_prim.c +../oranE2/asn_codecs_prim.h +../oranE2/ber_tlv_length.h +../oranE2/ber_tlv_length.c +../oranE2/ber_tlv_tag.h +../oranE2/ber_tlv_tag.c +../oranE2/ber_decoder.h +../oranE2/ber_decoder.c +../oranE2/der_encoder.h +../oranE2/der_encoder.c +../oranE2/constr_TYPE.h +../oranE2/constr_TYPE.c +../oranE2/constraints.h +../oranE2/constraints.c +../oranE2/xer_support.h +../oranE2/xer_support.c +../oranE2/xer_decoder.h +../oranE2/xer_decoder.c +../oranE2/xer_encoder.h +../oranE2/xer_encoder.c +../oranE2/per_support.h +../oranE2/per_support.c +../oranE2/per_decoder.h +../oranE2/per_decoder.c +../oranE2/per_encoder.h +../oranE2/per_encoder.c +../oranE2/per_opentype.h +../oranE2/per_opentype.c diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2SMextFileList.txt b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2SMextFileList.txt new file mode 100644 index 0000000..1c8485e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/E2SMextFileList.txt @@ -0,0 +1,63 @@ +../oranE2SM/OCTET_STRING.h +../oranE2SM/OPEN_TYPE.h +../oranE2SM/OPEN_TYPE.c +../oranE2SM/constr_CHOICE.h +../oranE2SM/INTEGER.h +../oranE2SM/INTEGER.c +../oranE2SM/NativeEnumerated.h +../oranE2SM/NativeEnumerated.c +../oranE2SM/NativeInteger.h +../oranE2SM/NativeInteger.c +../oranE2SM/asn_SEQUENCE_OF.h +../oranE2SM/asn_SEQUENCE_OF.c +../oranE2SM/asn_SET_OF.h +../oranE2SM/asn_SET_OF.c +../oranE2SM/constr_CHOICE.c +../oranE2SM/constr_SEQUENCE.h +../oranE2SM/constr_SEQUENCE.c +../oranE2SM/constr_SEQUENCE_OF.h +../oranE2SM/constr_SEQUENCE_OF.c +../oranE2SM/constr_SET_OF.h +../oranE2SM/constr_SET_OF.c +../oranE2SM/asn_application.h +../oranE2SM/asn_application.c +../oranE2SM/asn_ioc.h +../oranE2SM/asn_system.h +../oranE2SM/asn_codecs.h +../oranE2SM/asn_internal.h +../oranE2SM/asn_internal.c +../oranE2SM/asn_random_fill.h +../oranE2SM/asn_random_fill.c +../oranE2SM/asn_bit_data.h +../oranE2SM/asn_bit_data.c +../oranE2SM/OCTET_STRING.c +../oranE2SM/BIT_STRING.h +../oranE2SM/BIT_STRING.c +../oranE2SM/asn_codecs_prim.c +../oranE2SM/asn_codecs_prim.h +../oranE2SM/ber_tlv_length.h +../oranE2SM/ber_tlv_length.c +../oranE2SM/ber_tlv_tag.h +../oranE2SM/ber_tlv_tag.c +../oranE2SM/ber_decoder.h +../oranE2SM/ber_decoder.c +../oranE2SM/der_encoder.h +../oranE2SM/der_encoder.c +../oranE2SM/constr_TYPE.h +../oranE2SM/constr_TYPE.c +../oranE2SM/constraints.h +../oranE2SM/constraints.c +../oranE2SM/xer_support.h +../oranE2SM/xer_support.c +../oranE2SM/xer_decoder.h +../oranE2SM/xer_decoder.c +../oranE2SM/xer_encoder.h +../oranE2SM/xer_encoder.c +../oranE2SM/per_support.h +../oranE2SM/per_support.c +../oranE2SM/per_decoder.h +../oranE2SM/per_decoder.c +../oranE2SM/per_encoder.h +../oranE2SM/per_encoder.c +../oranE2SM/per_opentype.h +../oranE2SM/per_opentype.c diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/e2ap-v01.00.00.asn b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/e2ap-v01.00.00.asn new file mode 100644 index 0000000..453c6de --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/e2ap-v01.00.00.asn @@ -0,0 +1,1589 @@ +-- ASN1START +-- ************************************************************** +-- +-- Elementary Procedure definitions +-- Derived from 3GPP 38.413 v15.4.0 NGAP +-- ************************************************************** + +E2AP-PDU-Descriptions { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-PDU-Descriptions (0) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Criticality, + ProcedureCode +FROM E2AP-CommonDataTypes + + + + E2setupFailure, + E2setupRequest, + E2setupResponse, + ErrorIndication, + ResetRequest, + ResetResponse, + RICcontrolAcknowledge, + RICcontrolFailure, + RICcontrolRequest, + RICindication, + RICserviceQuery, + RICserviceUpdate, + RICserviceUpdateAcknowledge, + RICserviceUpdateFailure, + RICsubscriptionFailure, + RICsubscriptionRequest, + RICsubscriptionResponse, + RICsubscriptionDeleteFailure, + RICsubscriptionDeleteRequest, + RICsubscriptionDeleteResponse +FROM E2AP-PDU-Contents + + id-E2setup, + id-ErrorIndication, + id-Reset, + id-RICcontrol, + id-RICindication, + id-RICserviceQuery, + id-RICserviceUpdate, + id-RICsubscription, + id-RICsubscriptionDelete +FROM E2AP-Constants; + +-- ************************************************************** +-- +-- Interface Elementary Procedure Class +-- +-- ************************************************************** + +E2AP-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 +-- +-- ************************************************************** + +E2AP-PDU ::= CHOICE { + initiatingMessage InitiatingMessage, + successfulOutcome SuccessfulOutcome, + unsuccessfulOutcome UnsuccessfulOutcome, + ... +} + +InitiatingMessage ::= SEQUENCE { + procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&InitiatingMessage ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +SuccessfulOutcome ::= SEQUENCE { + procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&SuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +UnsuccessfulOutcome ::= SEQUENCE { + procedureCode E2AP-ELEMENTARY-PROCEDURE.&procedureCode ({E2AP-ELEMENTARY-PROCEDURES}), + criticality E2AP-ELEMENTARY-PROCEDURE.&criticality ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}), + value E2AP-ELEMENTARY-PROCEDURE.&UnsuccessfulOutcome ({E2AP-ELEMENTARY-PROCEDURES}{@procedureCode}) +} + +-- ************************************************************** +-- +-- Interface Elementary Procedure List +-- +-- ************************************************************** + +E2AP-ELEMENTARY-PROCEDURES E2AP-ELEMENTARY-PROCEDURE ::= { + E2AP-ELEMENTARY-PROCEDURES-CLASS-1 | + E2AP-ELEMENTARY-PROCEDURES-CLASS-2, + ... +} + +E2AP-ELEMENTARY-PROCEDURES-CLASS-1 E2AP-ELEMENTARY-PROCEDURE ::= { + ricSubscription | + ricSubscriptionDelete | + ricServiceUpdate | + ricControl | + e2setup | + reset, + ... +} + +E2AP-ELEMENTARY-PROCEDURES-CLASS-2 E2AP-ELEMENTARY-PROCEDURE ::= { + ricIndication | + ricServiceQuery | + errorIndication, + ... +} + +-- ************************************************************** +-- +-- Interface Elementary Procedures +-- +-- ************************************************************** + +e2setup E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE E2setupRequest + SUCCESSFUL OUTCOME E2setupResponse + UNSUCCESSFUL OUTCOME E2setupFailure + PROCEDURE CODE id-E2setup + CRITICALITY reject +} + +errorIndication E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ErrorIndication + PROCEDURE CODE id-ErrorIndication + CRITICALITY ignore +} + +reset E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE ResetRequest + SUCCESSFUL OUTCOME ResetResponse + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +ricControl E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICcontrolRequest + SUCCESSFUL OUTCOME RICcontrolAcknowledge + UNSUCCESSFUL OUTCOME RICcontrolFailure + PROCEDURE CODE id-RICcontrol + CRITICALITY reject +} + +ricIndication E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICindication + PROCEDURE CODE id-RICindication + CRITICALITY ignore +} + +ricServiceQuery E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICserviceQuery + PROCEDURE CODE id-RICserviceQuery + CRITICALITY ignore +} + +ricServiceUpdate E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICserviceUpdate + SUCCESSFUL OUTCOME RICserviceUpdateAcknowledge + UNSUCCESSFUL OUTCOME RICserviceUpdateFailure + PROCEDURE CODE id-RICserviceUpdate + CRITICALITY reject +} + +ricSubscription E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionRequest + SUCCESSFUL OUTCOME RICsubscriptionResponse + UNSUCCESSFUL OUTCOME RICsubscriptionFailure + PROCEDURE CODE id-RICsubscription + CRITICALITY reject +} + +ricSubscriptionDelete E2AP-ELEMENTARY-PROCEDURE ::= { + INITIATING MESSAGE RICsubscriptionDeleteRequest + SUCCESSFUL OUTCOME RICsubscriptionDeleteResponse + UNSUCCESSFUL OUTCOME RICsubscriptionDeleteFailure + PROCEDURE CODE id-RICsubscriptionDelete + CRITICALITY reject +} + + +END +-- ASN1STOP + + + + + + + + + + + + + + + + + + + + + + + + + + + +-- ASN1START +-- ************************************************************** +-- +-- PDU definitions for E2AP +-- Derived from 3GPP 38.413 v15.4.0 NGAP +-- +-- ************************************************************** + +E2AP-PDU-Contents { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-PDU-Contents (1) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + Cause, + CriticalityDiagnostics, + GlobalE2node-ID, + GlobalRIC-ID, + RANfunctionDefinition, + RANfunctionID, + RANfunctionRevision, + RICactionDefinition, + RICactionID, + RICactionType, + RICcallProcessID, + RICcontrolAckRequest, + RICcontrolHeader, + RICcontrolMessage, + RICcontrolOutcome, + RICcontrolStatus, + RICeventTriggerDefinition, + RICindicationHeader, + RICindicationMessage, + RICindicationSN, + RICindicationType, + RICrequestID, + RICsubsequentAction, + TimeToWait +FROM E2AP-IEs + + ProtocolIE-Container{}, + ProtocolIE-ContainerList{}, + ProtocolIE-SingleContainer{}, + E2AP-PROTOCOL-IES, + E2AP-PROTOCOL-IES-PAIR +FROM E2AP-Containers + + id-Cause, + id-CriticalityDiagnostics, + id-GlobalE2node-ID, + id-GlobalRIC-ID, + id-RANfunctionID, + id-RANfunctionID-Item, + id-RANfunctionIEcause-Item, + id-RANfunction-Item, + id-RANfunctionsAccepted, + id-RANfunctionsAdded, + id-RANfunctionsDeleted, + id-RANfunctionsModified, + id-RANfunctionsRejected, + id-RICaction-Admitted-Item, + id-RICactionID, + id-RICaction-NotAdmitted-Item, + id-RICactions-Admitted, + id-RICactions-NotAdmitted, + id-RICaction-ToBeSetup-Item, + id-RICcallProcessID, + id-RICcontrolAckRequest, + id-RICcontrolHeader, + id-RICcontrolMessage, + id-RICcontrolOutcome, + id-RICcontrolStatus, + id-RICindicationHeader, + id-RICindicationMessage, + id-RICindicationSN, + id-RICindicationType, + id-RICrequestID, + id-RICserviceQuery, + id-RICsubscriptionDetails, + id-TimeToWait, + + maxofRANfunctionID, + maxofRICactionID +FROM E2AP-Constants; + +-- ************************************************************** +-- +-- MESSAGES FOR NEAR-RT RIC FUNCTIONAL PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- RIC Subscription Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION REQUEST +-- +-- ************************************************************** +RICsubscriptionRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionRequest-IEs}}, + ... +} + +RICsubscriptionRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory}| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory}| + { ID id-RICsubscriptionDetails CRITICALITY reject TYPE RICsubscriptionDetails PRESENCE mandatory}, + ... +} + + +RICsubscriptionDetails ::= SEQUENCE { + ricEventTriggerDefinition RICeventTriggerDefinition, + ricAction-ToBeSetup-List RICactions-ToBeSetup-List, + ... +} + +RICactions-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-ToBeSetup-ItemIEs} } + +RICaction-ToBeSetup-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-ToBeSetup-Item CRITICALITY ignore TYPE RICaction-ToBeSetup-Item PRESENCE mandatory }, + ... +} + +RICaction-ToBeSetup-Item ::= SEQUENCE { + ricActionID RICactionID, + ricActionType RICactionType, + ricActionDefinition RICactionDefinition OPTIONAL, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION RESPONSE +-- +-- ************************************************************** +RICsubscriptionResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container{{RICsubscriptionResponse-IEs}}, + ... +} + +RICsubscriptionResponse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory } | + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory } | + { ID id-RICactions-Admitted CRITICALITY reject TYPE RICaction-Admitted-List PRESENCE mandatory } | + { ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE optional }, + ... +} + + + +RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer{{RICaction-Admitted-ItemIEs}} + +RICaction-Admitted-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-Admitted-Item CRITICALITY ignore TYPE RICaction-Admitted-Item PRESENCE mandatory }, + ... +} + +RICaction-Admitted-Item ::= SEQUENCE { + ricActionID RICactionID, + ... +} + +RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-NotAdmitted-ItemIEs} } + +RICaction-NotAdmitted-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RICaction-NotAdmitted-Item CRITICALITY ignore TYPE RICaction-NotAdmitted-Item PRESENCE mandatory }, + ... +} + +RICaction-NotAdmitted-Item ::= SEQUENCE { + ricActionID RICactionID, + cause Cause, + ... +} + +-- ************************************************************** +-- +-- RIC SUBSCRIPTION FAILURE +--E2AP-PROTOCOL-IES +-- ************************************************************** +RICsubscriptionFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionFailure-IEs}}, + ... +} + +RICsubscriptionFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICactions-NotAdmitted CRITICALITY reject TYPE RICaction-NotAdmitted-List PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Subscription Delete Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SUBSCRIPTION DELETE REQUEST +-- +-- ************************************************************** +RICsubscriptionDeleteRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteRequest-IEs}}, + ... +} + +RICsubscriptionDeleteRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }, + ... +} + +-- ************************************************************** +--E2AP-PROTOCOL-IES +-- RIC SUBSCRIPTION DELETE RESPONSE +-- +-- ************************************************************** +RICsubscriptionDeleteResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteResponse-IEs}}, + ... +} + +RICsubscriptionDeleteResponse-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }, + ... +} +-- ************************************************************** +-- +-- RIC SUBSCRIPTION DELETE FAILURE +-- +-- ************************************************************** +RICsubscriptionDeleteFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICsubscriptionDeleteFailure-IEs}}, + ... +} + +RICsubscriptionDeleteFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Indication Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC INDICATION +-- +-- ************************************************************** +RICindication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICindication-IEs}}, + ... +} + +RICindication-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICactionID CRITICALITY reject TYPE RICactionID PRESENCE mandatory }| + { ID id-RICindicationSN CRITICALITY reject TYPE RICindicationSN PRESENCE optional }| + { ID id-RICindicationType CRITICALITY reject TYPE RICindicationType PRESENCE mandatory }| + { ID id-RICindicationHeader CRITICALITY reject TYPE RICindicationHeader PRESENCE mandatory }| + { ID id-RICindicationMessage CRITICALITY reject TYPE RICindicationMessage PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Control Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC CONTROL REQUEST +-- +-- ************************************************************** +RICcontrolRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICcontrolRequest-IEs}}, + ... +} + +RICcontrolRequest-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }| + { ID id-RICcontrolHeader CRITICALITY reject TYPE RICcontrolHeader PRESENCE mandatory }| + { ID id-RICcontrolMessage CRITICALITY reject TYPE RICcontrolMessage PRESENCE mandatory }| + { ID id-RICcontrolAckRequest CRITICALITY reject TYPE RICcontrolAckRequest PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- RIC CONTROL ACKNOWLEDGE +-- +-- ************************************************************** +RICcontrolAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICcontrolAcknowledge-IEs}}, + ... +} + +RICcontrolAcknowledge-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }| + { ID id-RICcontrolStatus CRITICALITY reject TYPE RICcontrolStatus PRESENCE mandatory } | + { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional }, + ... +} +-- ************************************************************** +-- +-- RIC CONTROL FAILURE +-- +-- ************************************************************** +RICcontrolFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}}, + ... +} + +RICcontrolFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }| + { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } | + { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- MESSAGES FOR GLOBAL PROCEDURES +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- Error Indication Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- ERROR INDICATION +-- +-- ************************************************************** +ErrorIndication ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{ErrorIndication-IEs}}, + ... +} + +ErrorIndication-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE optional }| + { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE optional }| + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 Setup Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- E2 SETUP REQUEST +-- +-- ************************************************************** + +E2setupRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2setupRequestIEs} }, + ... +} + +E2setupRequestIEs E2AP-PROTOCOL-IES ::= { + { ID id-GlobalE2node-ID CRITICALITY reject TYPE GlobalE2node-ID PRESENCE mandatory }| + { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 SETUP RESPONSE +-- +-- ************************************************************** + +E2setupResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2setupResponseIEs} }, + ... +} + +E2setupResponseIEs E2AP-PROTOCOL-IES ::= { + { ID id-GlobalRIC-ID CRITICALITY reject TYPE GlobalRIC-ID PRESENCE mandatory }| + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }| + { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- E2 SETUP FAILURE +-- +-- ************************************************************** + +E2setupFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {E2setupFailureIEs} }, + ... +} + +E2setupFailureIEs E2AP-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 }, + ... +} + +-- ************************************************************** +-- +-- Reset Elementary Procedure +-- +-- ************************************************************** + +-- ************************************************************** +-- +-- RESET REQUEST +-- +-- ************************************************************** + +ResetRequest ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetRequestIEs} }, + ... +} + +ResetRequestIEs E2AP-PROTOCOL-IES ::= { + { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory }, + ... +} + +-- ************************************************************** +-- +-- RESET RESPONSE +-- +-- ************************************************************** + +ResetResponse ::= SEQUENCE { + protocolIEs ProtocolIE-Container { {ResetResponseIEs} }, + ... +} + +ResetResponseIEs E2AP-PROTOCOL-IES ::= { + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Service Update Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SERVICE UPDATE +-- +-- ************************************************************** +RICserviceUpdate ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceUpdate-IEs}}, + ... +} + +RICserviceUpdate-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionsAdded CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }| + { ID id-RANfunctionsModified CRITICALITY reject TYPE RANfunctions-List PRESENCE optional }| + { ID id-RANfunctionsDeleted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }, + ... +} + +RANfunctions-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunction-ItemIEs} } + +RANfunction-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunction-Item CRITICALITY ignore TYPE RANfunction-Item PRESENCE mandatory }, + ... +} + + +RANfunction-Item ::= SEQUENCE { + ranFunctionID RANfunctionID, + ranFunctionDefinition RANfunctionDefinition, + ranFunctionRevision RANfunctionRevision, + ... +} + +RANfunctionsID-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer{{RANfunctionID-ItemIEs}} + +RANfunctionID-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionID-Item CRITICALITY ignore TYPE RANfunctionID-Item PRESENCE mandatory }, + ... +} + +RANfunctionID-Item ::= SEQUENCE { + ranFunctionID RANfunctionID, + ranFunctionRevision RANfunctionRevision, + ... +} + +-- ************************************************************** +-- +-- RIC SERVICE UPDATE ACKNOWLEDGE +-- +-- ************************************************************** +RICserviceUpdateAcknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceUpdateAcknowledge-IEs}}, + ... +} + +RICserviceUpdateAcknowledge-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }| + { ID id-RANfunctionsRejected CRITICALITY reject TYPE RANfunctionsIDcause-List PRESENCE optional }, + ... +} + +RANfunctionsIDcause-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-SingleContainer { {RANfunctionIDcause-ItemIEs} } + +RANfunctionIDcause-ItemIEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionIEcause-Item CRITICALITY ignore TYPE RANfunctionIDcause-Item PRESENCE mandatory }, + ... +} + + +RANfunctionIDcause-Item ::= SEQUENCE { + ranFunctionID RANfunctionID, + cause Cause, + ... +} + + +-- ************************************************************** +-- +-- RIC SERVICE UPDATE FAILURE +-- +-- ************************************************************** +RICserviceUpdateFailure ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceUpdateFailure-IEs}}, + ... +} + +RICserviceUpdateFailure-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionsRejected CRITICALITY ignore TYPE RANfunctionsIDcause-List PRESENCE optional }| + { ID id-TimeToWait CRITICALITY ignore TYPE TimeToWait PRESENCE optional }| + { ID id-CriticalityDiagnostics CRITICALITY ignore TYPE CriticalityDiagnostics PRESENCE optional }, + ... +} + +-- ************************************************************** +-- +-- RIC Service Query Elementary Procedure +-- +-- ************************************************************** +-- ************************************************************** +-- +-- RIC SERVICE QUERY +-- +-- ************************************************************** +RICserviceQuery ::= SEQUENCE { + protocolIEs ProtocolIE-Container {{RICserviceQuery-IEs}}, + ... +} + +RICserviceQuery-IEs E2AP-PROTOCOL-IES ::= { + { ID id-RANfunctionsAccepted CRITICALITY reject TYPE RANfunctionsID-List PRESENCE optional }, + ... +} + +END +-- ASN1STOP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-- ASN1START +-- ************************************************************** +-- E2AP +-- Information Element Definitions +-- +-- ************************************************************** + +E2AP-IEs { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-IEs (2)} + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + Criticality, + Presence, + ProcedureCode, + ProtocolIE-ID, + TriggeringMessage +FROM E2AP-CommonDataTypes + + maxnoofErrors, + maxProtocolIEs +FROM E2AP-Constants; + +-- A +-- B +-- C +Cause ::= CHOICE { + ricRequest CauseRIC, + ricService CauseRICservice, + transport CauseTransport, + protocol CauseProtocol, + misc CauseMisc, + ... +} + +CauseMisc ::= ENUMERATED { + control-processing-overload, + hardware-failure, + om-intervention, + unspecified, + ... +} +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, + ... +} + +CauseRIC ::= ENUMERATED { + ran-function-id-Invalid, + action-not-supported, + excessive-actions, + duplicate-action, + duplicate-event, + function-resource-limit, + request-id-unknown, + inconsistent-action-subsequent-action-sequence, + control-message-invalid, + call-process-id-invalid, + unspecified, + ... +} + +CauseRICservice ::= ENUMERATED{ + function-not-required, + excessive-functions, + ric-resource-limit, + ... +} +CauseTransport ::= ENUMERATED { + unspecified, + transport-resource-unavailable, + ... +} + +-- ************************************************************** +-- copied from 3GPP 38.413 NGAP IEs v15.5.0 +-- note: ie-Extensions removed +-- ************************************************************** +CriticalityDiagnostics ::= SEQUENCE { + procedureCode ProcedureCode OPTIONAL, + triggeringMessage TriggeringMessage OPTIONAL, + procedureCriticality Criticality OPTIONAL, + ricRequestorID RICrequestID OPTIONAL, + iEsCriticalityDiagnostics CriticalityDiagnostics-IE-List OPTIONAL, + ... +} + +CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE(1..maxnoofErrors)) OF CriticalityDiagnostics-IE-Item + +CriticalityDiagnostics-IE-Item ::= SEQUENCE { + iECriticality Criticality, + iE-ID ProtocolIE-ID, + typeOfError TypeOfError, + ... +} + +-- D +-- E + +-- ************************************************************** +-- copied from 3GPP X2AP IEs v15.4.0 +-- note: ie-Extensions removed +-- ************************************************************** +ENB-ID ::= CHOICE { + macro-eNB-ID BIT STRING (SIZE (20)), + home-eNB-ID BIT STRING (SIZE (28)), + ... , + short-Macro-eNB-ID BIT STRING (SIZE(18)), + long-Macro-eNB-ID BIT STRING (SIZE(21)) +} +-- ************************************************************** +-- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- ************************************************************** +ENB-ID-Choice ::= CHOICE { + enb-ID-macro BIT STRING (SIZE(20)), + enb-ID-shortmacro BIT STRING (SIZE(18)), + enb-ID-longmacro BIT STRING (SIZE(21)), + ... +} + +-- ************************************************************** +-- copied from 3GPP X2AP IEs v15.4.0 +-- note: ie-Extensions removed +-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID +-- ************************************************************** +ENGNB-ID ::= CHOICE { + gNB-ID BIT STRING (SIZE (22..32)), + ... +} + +-- F +-- G +GlobalE2node-ID ::= CHOICE{ + gNB GlobalE2node-gNB-ID, + en-gNB GlobalE2node-en-gNB-ID, + ng-eNB GlobalE2node-ng-eNB-ID, + eNB GlobalE2node-eNB-ID, + ... +} + +GlobalE2node-en-gNB-ID ::= SEQUENCE{ + global-gNB-ID GlobalenGNB-ID, + ... +} +GlobalE2node-eNB-ID ::= SEQUENCE{ + global-eNB-ID GlobalENB-ID, + ... +} +GlobalE2node-gNB-ID ::= SEQUENCE{ + global-gNB-ID GlobalgNB-ID, + gNB-CU-UP-ID GNB-CU-UP-ID OPTIONAL, + gNB-DU-ID GNB-DU-ID OPTIONAL, + ... +} +GlobalE2node-ng-eNB-ID ::= SEQUENCE{ + global-ng-eNB-ID GlobalngeNB-ID, + ... +} +-- ************************************************************** +-- copied from 3GPP X2AP IEs v15.4.0 +-- note: ie-Extensions removed +-- ************************************************************** + +GlobalENB-ID ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + eNB-ID ENB-ID, + ... +} +-- ************************************************************** +-- copied from 3GPP X2AP IEs v15.4.0 +-- Note: to avoid duplicate names with XnAP, GNB-ID renamed ENGNB-ID, GlobalGNB-ID renamed GlobalenGNB-ID +-- ************************************************************** +GlobalenGNB-ID ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + gNB-ID ENGNB-ID, + ... +} +-- ************************************************************** +-- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- ************************************************************** +GlobalgNB-ID ::= SEQUENCE { + plmn-id PLMN-Identity, + gnb-id GNB-ID-Choice, + ... +} + + +-- ************************************************************** +-- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- ************************************************************** +GlobalngeNB-ID ::= SEQUENCE { + plmn-id PLMN-Identity, + enb-id ENB-ID-Choice, + ... +} + +GlobalRIC-ID ::= SEQUENCE{ + pLMN-Identity PLMN-Identity, + ric-ID BIT STRING (SIZE (20)), + ... +} + +-- ************************************************************** +-- copied from 3GPP 38.463 v15.5.0 E1AP IEs +-- ************************************************************** +GNB-CU-UP-ID::= INTEGER (0..68719476735) +GNB-DU-ID::= INTEGER (0..68719476735) + +-- ************************************************************** +-- copied from 3GPP 38.423 v15.5.0 XnAP IEs +-- ************************************************************** +GNB-ID-Choice ::= CHOICE { + gnb-ID BIT STRING (SIZE(22..32)), + ... +} +-- H +-- I +-- J +-- K +-- L +-- M +-- N +-- O +-- P +-- ************************************************************** +-- copied from 3GPP X2AP IEs v15.4.0 +-- ************************************************************** +PLMN-Identity ::= OCTET STRING (SIZE(3)) + +-- Q +-- R +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RANfunctionDefinition ::= OCTET STRING + +RANfunctionID ::= INTEGER (0..4095) + +RANfunctionRevision ::= INTEGER (0..4095) + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICactionDefinition ::= OCTET STRING + +RICactionID ::= INTEGER (0..255) + +RICactionType ::= ENUMERATED{ + report, + insert, + policy, + ... +} + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcallProcessID ::= OCTET STRING + +RICcontrolAckRequest ::= ENUMERATED{ + noAck, + ack, + nAck, + ... +} + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcontrolHeader ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcontrolMessage ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICcontrolOutcome ::= OCTET STRING + +RICcontrolStatus ::= ENUMERATED{ + success, + rejected, + failed, + ... +} + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICeventTriggerDefinition ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICindicationHeader ::= OCTET STRING + +-- ************************************************************** +-- Following IE defined in E2SM +-- ************************************************************** +RICindicationMessage ::= OCTET STRING + +RICindicationSN ::= INTEGER (0..65535) + +RICindicationType ::= ENUMERATED{ + report, + insert, + ... +} + +RICrequestID ::= SEQUENCE { + ricRequestorID INTEGER (0..65535), + ricInstanceID INTEGER (0..65535), + ... +} + +RICsubsequentAction ::=SEQUENCE{ + ricSubsequentActionType RICsubsequentActionType, + ricTimeToWait RICtimeToWait, + ... +} + +RICsubsequentActionType ::= ENUMERATED{ + continue, + wait, + ... +} + +RICtimeToWait ::= ENUMERATED{ + zero, + w1ms, + w2ms, + w5ms, + w10ms, + w20ms, + w30ms, + w40ms, + w50ms, + w100ms, + w200ms, + w500ms, + w1s, + w2s, + w5s, + w10s, + w20s, + w60s, + ... +} +-- S +-- T +-- ************************************************************** +-- copied from 3GPP 38.413 NGAP IEs v15.5.0 +-- ************************************************************** +TimeToWait ::= ENUMERATED {v1s, v2s, v5s, v10s, v20s, v60s, ...} + +-- ************************************************************** +-- copied from 3GPP 38.413 NGAP IEs v15.5.0 +-- ************************************************************** +TypeOfError ::= ENUMERATED { + not-understood, + missing, + ... +} + +-- U +-- V +-- W +-- X +-- Y +-- Z + +END +-- ASN1STOP + + + + + + + + + + + + + + + + + + + + + + + + +-- ASN1START +-- ************************************************************** +-- +-- Common definitions +-- Derived from 3GPP 38.413 v15.4.0 +-- +-- ************************************************************** + +E2AP-CommonDataTypes { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-CommonDataTypes (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +Criticality ::= ENUMERATED { reject, ignore, notify } + +Presence ::= ENUMERATED { optional, conditional, mandatory } + +ProcedureCode ::= INTEGER (0..255) + +ProtocolIE-ID ::= INTEGER (0..65535) + +TriggeringMessage ::= ENUMERATED { initiating-message, successful-outcome, unsuccessfull-outcome } + +END +-- ASN1STOP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-- ASN1START +-- ************************************************************** +-- +-- Constant definitions +-- +-- ************************************************************** + +E2AP-Constants { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-Constants (4) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +IMPORTS + ProcedureCode, + ProtocolIE-ID +FROM E2AP-CommonDataTypes; + +-- ************************************************************** +-- +-- Elementary Procedures +-- +-- ************************************************************** +id-E2setup ProcedureCode ::= 1 +id-ErrorIndication ProcedureCode ::= 2 +id-Reset ProcedureCode ::= 3 +id-RICcontrol ProcedureCode ::= 4 +id-RICindication ProcedureCode ::= 5 +id-RICserviceQuery ProcedureCode ::= 6 +id-RICserviceUpdate ProcedureCode ::= 7 +id-RICsubscription ProcedureCode ::= 8 +id-RICsubscriptionDelete ProcedureCode ::= 9 + +-- ************************************************************** +-- +-- Extension constants +-- +-- ************************************************************** + +maxProtocolIEs INTEGER ::= 65535 + + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** +maxnoofErrors INTEGER ::= 256 +maxofRANfunctionID INTEGER ::= 256 +maxofRICactionID INTEGER ::= 16 + +-- ************************************************************** +-- +-- IEs +-- +-- ************************************************************** +id-Cause ProtocolIE-ID ::= 1 +id-CriticalityDiagnostics ProtocolIE-ID ::= 2 +id-GlobalE2node-ID ProtocolIE-ID ::= 3 +id-GlobalRIC-ID ProtocolIE-ID ::= 4 +id-RANfunctionID ProtocolIE-ID ::= 5 +id-RANfunctionID-Item ProtocolIE-ID ::= 6 +id-RANfunctionIEcause-Item ProtocolIE-ID ::= 7 +id-RANfunction-Item ProtocolIE-ID ::= 8 +id-RANfunctionsAccepted ProtocolIE-ID ::= 9 +id-RANfunctionsAdded ProtocolIE-ID ::= 10 +id-RANfunctionsDeleted ProtocolIE-ID ::= 11 +id-RANfunctionsModified ProtocolIE-ID ::= 12 +id-RANfunctionsRejected ProtocolIE-ID ::= 13 +id-RICaction-Admitted-Item ProtocolIE-ID ::= 14 +id-RICactionID ProtocolIE-ID ::= 15 +id-RICaction-NotAdmitted-Item ProtocolIE-ID ::= 16 +id-RICactions-Admitted ProtocolIE-ID ::= 17 +id-RICactions-NotAdmitted ProtocolIE-ID ::= 18 +id-RICaction-ToBeSetup-Item ProtocolIE-ID ::= 19 +id-RICcallProcessID ProtocolIE-ID ::= 20 +id-RICcontrolAckRequest ProtocolIE-ID ::= 21 +id-RICcontrolHeader ProtocolIE-ID ::= 22 +id-RICcontrolMessage ProtocolIE-ID ::= 23 +id-RICcontrolStatus ProtocolIE-ID ::= 24 +id-RICindicationHeader ProtocolIE-ID ::= 25 +id-RICindicationMessage ProtocolIE-ID ::= 26 +id-RICindicationSN ProtocolIE-ID ::= 27 +id-RICindicationType ProtocolIE-ID ::= 28 +id-RICrequestID ProtocolIE-ID ::= 29 +id-RICsubscriptionDetails ProtocolIE-ID ::= 30 +id-TimeToWait ProtocolIE-ID ::= 31 +id-RICcontrolOutcome ProtocolIE-ID ::= 32 + + +END +-- ASN1STOP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +-- ASN1START +-- ************************************************************** +-- +-- Container definitions +-- +-- derived from 3GPP 38.413 v15.4.0 +-- ************************************************************** + +E2AP-Containers { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 53148 e2(1) version1 (1) e2ap(1) e2ap-Containers (5) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- IE parameter types from other modules. +-- +-- ************************************************************** + +IMPORTS + + Criticality, + Presence, + PrivateIE-ID, + ProtocolExtensionID, + ProtocolIE-ID +FROM E2AP-CommonDataTypes + + maxProtocolIEs +FROM E2AP-Constants; + +-- ************************************************************** +-- +-- Class Definition for Protocol IEs +-- +-- ************************************************************** + +E2AP-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 +-- +-- ************************************************************** + +E2AP-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 +} + + + + +-- ************************************************************** +-- +-- Container for Protocol IEs +-- +-- ************************************************************** + +ProtocolIE-Container {E2AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-SingleContainer {E2AP-PROTOCOL-IES : IEsSetParam} ::= + ProtocolIE-Field {{IEsSetParam}} + +ProtocolIE-Field {E2AP-PROTOCOL-IES : IEsSetParam} ::= SEQUENCE { + id E2AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality E2AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value E2AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container for Protocol IE Pairs +-- +-- ************************************************************** + +ProtocolIE-ContainerPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (0..maxProtocolIEs)) OF + ProtocolIE-FieldPair {{IEsSetParam}} + +ProtocolIE-FieldPair {E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= SEQUENCE { + id E2AP-PROTOCOL-IES-PAIR.&id ({IEsSetParam}), + firstCriticality E2AP-PROTOCOL-IES-PAIR.&firstCriticality ({IEsSetParam}{@id}), + firstValue E2AP-PROTOCOL-IES-PAIR.&FirstValue ({IEsSetParam}{@id}), + secondCriticality E2AP-PROTOCOL-IES-PAIR.&secondCriticality ({IEsSetParam}{@id}), + secondValue E2AP-PROTOCOL-IES-PAIR.&SecondValue ({IEsSetParam}{@id}) +} + +-- ************************************************************** +-- +-- Container Lists for Protocol IE Containers +-- +-- ************************************************************** + +ProtocolIE-ContainerList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-SingleContainer {{IEsSetParam}} + +ProtocolIE-ContainerPairList {INTEGER : lowerBound, INTEGER : upperBound, E2AP-PROTOCOL-IES-PAIR : IEsSetParam} ::= + SEQUENCE (SIZE (lowerBound..upperBound)) OF + ProtocolIE-ContainerPair {{IEsSetParam}} + + +END +-- ASN1STOP diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/e2sm-gNB-NRT-v401.asn b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/e2sm-gNB-NRT-v401.asn new file mode 100644 index 0000000..aadda67 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/e2sm-gNB-NRT-v401.asn @@ -0,0 +1,359 @@ +-- ASN1START +-- ************************************************************** +-- E2SM-gNB-NRT +-- Information Element Definitions +-- +-- ************************************************************** + +E2SM-gNB-NRT-IEs { +iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) 28458 exp(99) mobileDomain (0) ric (21) modules (3) e2sm (3) version1 (1) e2sm-gNB-NRT-IEs (3) } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- copied from X2AP IEs v15.4.0 +-- note: ie-Extensions removed +-- ************************************************************** + + + +ECGI ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + eUTRANcellIdentifier EUTRANCellIdentifier, + ... +} +EUTRANCellIdentifier ::= BIT STRING (SIZE (28)) + +NRCellIdentifier ::= BIT STRING (SIZE (36)) + +NRCGI ::= SEQUENCE { + pLMN-Identity PLMN-Identity, + nRcellIdentifier NRCellIdentifier, + ... +} + +PLMN-Identity ::= OCTET STRING (SIZE(3)) + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxofCellinRAN INTEGER ::= 16384 +maxNoOfNeighbours INTEGER ::= 1024 +maxofRANParameters INTEGER ::= 255 +maxofRICstyles INTEGER ::= 63 + +-- E2 Service model IEs + +-- --------------------------------------------------- +-- Event Trigger Definition OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-gNB-NRT-EventTriggerDefinition IE +E2SM-gNB-NRT-EventTriggerDefinition ::= CHOICE{ + eventDefinition-Format1 E2SM-gNB-NRT-EventTriggerDefinition-Format1, + ... +} + +-- E2SM-gNB-NRT-eventTriggerDefinition IE Format 1 +E2SM-gNB-NRT-EventTriggerDefinition-Format1 ::= SEQUENCE{ + triggerNature NRT-TriggerNature, + ... +} + +-- --------------------------------------------------- +-- Action Definition OCTET STRING contents +-- --------------------------------------------------- +E2SM-gNB-NRT-ActionDefinition ::= CHOICE{ + actionDefinition-Format1 E2SM-gNB-NRT-ActionDefinition-Format1, + ... +} + +-- E2SM-gNB-NRT-actionDefinition IE used for Action Format 1 +E2SM-gNB-NRT-ActionDefinition-Format1 ::= SEQUENCE{ + ranParameter-List SEQUENCE (SIZE(1..maxofRANParameters)) OF RANparameter-Item OPTIONAL, + ... +} + + + +-- --------------------------------------------------- +-- Indication Header OCTET STRING contents +-- --------------------------------------------------- + +E2SM-gNB-NRT-IndicationHeader ::= CHOICE{ + indicationHeader-Format1 E2SM-gNB-NRT-IndicationHeader-Format1, + ... +} + +-- E2SM-gNB-NRT-indicationHeader Format 1 +E2SM-gNB-NRT-IndicationHeader-Format1 ::= SEQUENCE{ + timestamp NRT-TimeStamp OPTIONAL, + ... +} + +-- --------------------------------------------------- +-- Indication Message OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-gNB-NRT-indicationMessage IE +E2SM-gNB-NRT-IndicationMessage ::= CHOICE{ + indicationMessage-Format1 E2SM-gNB-NRT-IndicationMessage-Format1, + ... +} + +-- E2SM-gNB-NRT-IndicationMessage Format 1 +NRT-Record-row-item ::= SEQUENCE{ + neighbourCellID NRT-Cell-ID, + nrt-Record NRT-TableRecord +} + +NRT-Record-List-item ::= SEQUENCE{ + servedCellID NRT-Cell-ID, + nrt-Record-row SEQUENCE (SIZE(1..maxNoOfNeighbours)) OF NRT-Record-row-item +} + +E2SM-gNB-NRT-IndicationMessage-Format1 ::= SEQUENCE{ + nrt-Record-List SEQUENCE (SIZE(1..maxofCellinRAN)) OF NRT-Record-List-item, + ... +} + +-- --------------------------------------------------- +-- Call Process ID +-- --------------------------------------------------- + +-- Not defined in this E2SM + +-- --------------------------------------------------- +-- Control Header OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-gNB-NRT-ControlHeader +E2SM-gNB-NRT-ControlHeader ::= CHOICE{ + controlHeader-Format1 E2SM-gNB-NRT-ControlHeader-Format1, + ... +} + +-- E2SM-gNB-NRT-ControlHeader Format 1 +E2SM-gNB-NRT-ControlHeader-Format1 ::= SEQUENCE{ + command NRT-ControlCommand, + servedCellID NRT-Cell-ID, + neighbourCellID NRT-Cell-ID, + ... +} + + +-- --------------------------------------------------- +-- Control Message OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-gNB-NRT-ControlMessage +E2SM-gNB-NRT-ControlMessage ::= CHOICE{ + controlMessage-Format1 E2SM-gNB-NRT-ControlMessage-Format1, + ... +} + +-- E2SM-gNB-NRT-controlMessage Format 1 +E2SM-gNB-NRT-ControlMessage-Format1 ::= SEQUENCE{ + tablerecord NRT-TableRecord, + ... +} + +-- NEW for Release 4 ***** +-- --------------------------------------------------- +-- RAN Function Definition OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-gNB-NRT-RANfunction-Definition +E2SM-gNB-NRT-RANfunction-Definition ::= SEQUENCE{ + ranFunction-Name RANfunction-Name, + ric-EventTriggerStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-EventTriggerStyle-List OPTIONAL, + ric-ReportStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ReportStyle-List OPTIONAL, + ric-InsertStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-InsertStyle-List OPTIONAL, + ric-ControlStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-ControlStyle-List OPTIONAL, + ric-PolicyStyle-List SEQUENCE (SIZE(1..maxofRICstyles)) OF RIC-PolicyStyle-List OPTIONAL, + ... +} +-- --------------------------------------------------- +-- commmon IEs +-- --------------------------------------------------- + +-- A +-- B +-- C +-- D +-- E +-- F +-- G +-- H +-- I +-- J +-- K +-- L +-- M +-- N + +NRT-Cell-ID ::= CHOICE{ + ecgi ECGI, + nrcgi NRCGI, + ... +} + +NRT-ControlCommand ::= ENUMERATED{ + addition, + deletion, + ... +} + +NRT-TableRecord ::= OCTET STRING + +NRT-TimeStamp ::= OCTET STRING (SIZE(8)) + +NRT-TriggerNature ::= ENUMERATED{ + now, + onchange, + ... +} + +-- O +-- P +-- Q +-- R + +-- NEW for Release 4 ***** +RANfunction-Name ::= SEQUENCE{ + ranFunction-ShortName PrintableString(SIZE(1..150,...)), + ranFunction-E2SM-OID PrintableString(SIZE(1..1000,...)), + ranFunction-Description PrintableString(SIZE(1..150,...)), + ranFunction-Instance INTEGER OPTIONAL, + ... +} + +RANparameter-Item ::= SEQUENCE { + ranParameter-ID RANparameter-ID, + ranParameter-Value RANparameter-Value, + ... +} + +-- NEW for Release 4 ***** +RANparameterDef-Item ::= SEQUENCE { + ranParameter-ID RANparameter-ID, + ranParameter-Name RANparameter-Name, + ranParameter-Type RANparameter-Type, + ... +} + +RANparameter-ID ::= INTEGER (0..maxofRANParameters) + +-- NEW for Release 4 ***** +RANparameter-Name ::= PrintableString(SIZE(1..150,...)) + +RANparameter-Test ::= ENUMERATED{ + equal, + greaterthan, + lessthan, + contains, + present, + ... +} + +-- NEW for Release 4 ***** +RANparameter-Type ::= ENUMERATED{ + integer, + enumerated, + boolean, + bit-string, + octet-string, + printable-string, + ... +} + +RANparameter-Value ::= CHOICE{ + valueInt INTEGER, + valueEnum INTEGER, + valueBool BOOLEAN, + valueBitS BIT STRING, + valueOctS OCTET STRING, + valuePrtS PrintableString, + ... +} + +-- NEW for Release 4 ***** +RIC-ControlStyle-List ::= SEQUENCE{ + ric-ControlStyle-Type RIC-Style-Type, + ric-ControlStyle-Name RIC-Style-Name, + ric-ControlHeaderFormat-Type RIC-Format-Type, + ric-ControlMessageFormat-Type RIC-Format-Type, + ric-CallProcessIDFormat-Type RIC-Format-Type, + ... +} + +-- NEW for Release 4 ***** +RIC-EventTriggerStyle-List ::= SEQUENCE{ + ric-EventTriggerStyle-Type RIC-Style-Type, + ric-EventTriggerStyle-Name RIC-Style-Name, + ric-EventTriggerFormat-Type RIC-Format-Type, + ... +} + +-- NEW for Release 4 ***** +RIC-InsertStyle-List ::= SEQUENCE{ + ric-InsertStyle-Type RIC-Style-Type, + ric-InsertStyle-Name RIC-Style-Name, + ric-InsertActionFormat-Type RIC-Format-Type, + ric-InsertRanParameterDef-List SEQUENCE (SIZE(1..maxofRANParameters)) OF RANparameterDef-Item, + ric-IndicationHeaderFormat-Type RIC-Format-Type, + ric-IndicationMessageFormat-Type RIC-Format-Type, + ric-CallProcessIDFormat-Type RIC-Format-Type, + ... +} + +-- NEW for Release 4 ***** +RIC-PolicyStyle-List ::= SEQUENCE{ + ric-PolicyStyle-Type RIC-Style-Type, + ric-PolicyStyle-Name RIC-Style-Name, + ric-PolicyActionFormat-Type RIC-Format-Type, + ric-PolicyRanParameterDef-List SEQUENCE (SIZE(1..maxofRANParameters)) OF RANparameterDef-Item, + ... +} + +-- NEW for Release 4 ***** +RIC-ReportStyle-List ::= SEQUENCE{ + ric-ReportStyle-Type RIC-Style-Type, + ric-ReportStyle-Name RIC-Style-Name, + ric-ReportActionFormat-Type RIC-Format-Type, + ric-ReportRanParameterDef-List SEQUENCE (SIZE(1..maxofRANParameters)) OF RANparameterDef-Item, + ric-IndicationHeaderFormat-Type RIC-Format-Type, + ric-IndicationMessageFormat-Type RIC-Format-Type, + ... +} + +-- NEW for Release 4 ***** +RIC-Format-Type ::= INTEGER + +-- NEW for Release 4 ***** +RIC-Style-Type ::= INTEGER + +-- NEW for Release 4 ***** +RIC-Style-Name ::= PrintableString(SIZE(1..150,...)) + +-- S +-- T +-- U +-- V +-- W +-- X +-- Y +-- Z + +END +-- ASN1STOP + + + + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/header.sh b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/header.sh new file mode 100755 index 0000000..0445289 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/asnTextFiles/header.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +mkdir -p E2APtmpFiles +mkdir -p E2SMtmpFiles +cat E2APextFileList.txt | xargs mv -t E2APtmpFiles/. +cat E2SMextFileList.txt | xargs mv -t E2SMtmpFiles/. +cd ../oranE2 +rm +find . -type f -name \*.c -exec ../int/autogen/autogen -i --no-top-level-comment -l codev {} \; +find . -type f -name \*.h -exec ../int/autogen/autogen -i --no-top-level-comment -l codev {} \; +mv ../asnTextFiles/E2APtmpFiles/* . +rmdir ../asnTextFiles/E2APtmpFiles +rm converter-example.c +cd ../oranE2SM +find . -type f -name \*.c -exec ../int/autogen/autogen -i --no-top-level-comment -l codev {} \; +find . -type f -name \*.h -exec ../int/autogen/autogen -i --no-top-level-comment -l codev {} \; +mv ../asnTextFiles/E2SMtmpFiles/* . +rmdir ../asnTextFiles/E2SMtmpFiles +rm converter-example.c + + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c new file mode 100644 index 0000000..0b81557 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c @@ -0,0 +1,450 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, + OCTET_STRING_print, + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + 0, + 0, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + ANY_decode_uper, + ANY_encode_uper, + ANY_decode_aper, + ANY_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { 0, 0, asn_generic_no_constraint }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key); + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.h new file mode 100644 index 0000000..b30381f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.h @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +asn_struct_free_f ANY_free; +asn_struct_print_f ANY_print; +ber_type_decoder_f ANY_decode_ber; +der_type_encoder_f ANY_encode_der; +xer_type_encoder_f ANY_encode_xer; +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; + +#define ANY_free OCTET_STRING_free +#define ANY_print OCTET_STRING_print +#define ANY_compare OCTET_STRING_compare +#define ANY_constraint asn_generic_no_constraint +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#define ANY_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c new file mode 100644 index 0000000..e8d7354 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c @@ -0,0 +1,656 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BIT_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +static const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.h new file mode 100644 index 0000000..c1bdbbc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_struct_compare_f BIT_STRING_compare; +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +asn_random_fill_f BIT_STRING_random_fill; + +#define BIT_STRING_free OCTET_STRING_free +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c new file mode 100644 index 0000000..13e68be --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c @@ -0,0 +1,110 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Cause.h" + +asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricRequest), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRIC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricService), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRICservice, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricService" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* misc */ +}; +asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { + sizeof(struct Cause), + offsetof(struct Cause, _asn_ctx), + offsetof(struct Cause, present), + sizeof(((struct Cause *)0)->present), + asn_MAP_Cause_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Cause = { + "Cause", + "Cause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, + asn_MBR_Cause_1, + 5, /* Elements count */ + &asn_SPC_Cause_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.h new file mode 100644 index 0000000..cf1180c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.h @@ -0,0 +1,86 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Cause_H_ +#define _Cause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CauseRIC.h" +#include "CauseRICservice.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_ricRequest, + Cause_PR_ricService, + Cause_PR_transport, + Cause_PR_protocol, + Cause_PR_misc + /* Extensions may appear below */ + +} Cause_PR; + +/* Cause */ +typedef struct Cause { + Cause_PR present; + union Cause_u { + CauseRIC_t ricRequest; + CauseRICservice_t ricService; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Cause; +extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; +extern asn_TYPE_member_t asn_MBR_Cause_1[5]; +extern asn_per_constraints_t asn_PER_type_Cause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cause_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c new file mode 100644 index 0000000..80f0bbd --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c @@ -0,0 +1,77 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseMisc.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { + { 0, 27, "control-processing-overload" }, + { 1, 16, "hardware-failure" }, + { 2, 15, "om-intervention" }, + { 3, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { + 0, /* control-processing-overload(0) */ + 1, /* hardware-failure(1) */ + 2, /* om-intervention(2) */ + 3 /* unspecified(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { + asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseMisc = { + "CauseMisc", + "CauseMisc", + &asn_OP_NativeEnumerated, + asn_DEF_CauseMisc_tags_1, + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.h new file mode 100644 index 0000000..73c3c6a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseMisc_H_ +#define _CauseMisc_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseMisc { + CauseMisc_control_processing_overload = 0, + CauseMisc_hardware_failure = 1, + CauseMisc_om_intervention = 2, + CauseMisc_unspecified = 3 + /* + * Enumeration is extensible + */ +} e_CauseMisc; + +/* CauseMisc */ +typedef long CauseMisc_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; +extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseMisc_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c new file mode 100644 index 0000000..9dbb542 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c @@ -0,0 +1,83 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseProtocol.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { + { 0, 21, "transfer-syntax-error" }, + { 1, 28, "abstract-syntax-error-reject" }, + { 2, 39, "abstract-syntax-error-ignore-and-notify" }, + { 3, 42, "message-not-compatible-with-receiver-state" }, + { 4, 14, "semantic-error" }, + { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, + { 6, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { + 5, /* abstract-syntax-error-falsely-constructed-message(5) */ + 2, /* abstract-syntax-error-ignore-and-notify(2) */ + 1, /* abstract-syntax-error-reject(1) */ + 3, /* message-not-compatible-with-receiver-state(3) */ + 4, /* semantic-error(4) */ + 0, /* transfer-syntax-error(0) */ + 6 /* unspecified(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { + asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + &asn_OP_NativeEnumerated, + asn_DEF_CauseProtocol_tags_1, + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.h new file mode 100644 index 0000000..baf6d65 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseProtocol_H_ +#define _CauseProtocol_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseProtocol { + CauseProtocol_transfer_syntax_error = 0, + CauseProtocol_abstract_syntax_error_reject = 1, + CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + CauseProtocol_message_not_compatible_with_receiver_state = 3, + CauseProtocol_semantic_error = 4, + CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, + CauseProtocol_unspecified = 6 + /* + * Enumeration is extensible + */ +} e_CauseProtocol; + +/* CauseProtocol */ +typedef long CauseProtocol_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; +extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseProtocol_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c new file mode 100644 index 0000000..5d565b3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c @@ -0,0 +1,91 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseRIC.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRIC_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 10 } /* (0..10,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRIC_value2enum_1[] = { + { 0, 23, "ran-function-id-Invalid" }, + { 1, 20, "action-not-supported" }, + { 2, 17, "excessive-actions" }, + { 3, 16, "duplicate-action" }, + { 4, 15, "duplicate-event" }, + { 5, 23, "function-resource-limit" }, + { 6, 18, "request-id-unknown" }, + { 7, 46, "inconsistent-action-subsequent-action-sequence" }, + { 8, 23, "control-message-invalid" }, + { 9, 23, "call-process-id-invalid" }, + { 10, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRIC_enum2value_1[] = { + 1, /* action-not-supported(1) */ + 9, /* call-process-id-invalid(9) */ + 8, /* control-message-invalid(8) */ + 3, /* duplicate-action(3) */ + 4, /* duplicate-event(4) */ + 2, /* excessive-actions(2) */ + 5, /* function-resource-limit(5) */ + 7, /* inconsistent-action-subsequent-action-sequence(7) */ + 0, /* ran-function-id-Invalid(0) */ + 6, /* request-id-unknown(6) */ + 10 /* unspecified(10) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1 = { + asn_MAP_CauseRIC_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRIC_enum2value_1, /* N => "tag"; sorted by N */ + 11, /* Number of elements in the maps */ + 12, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRIC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRIC = { + "CauseRIC", + "CauseRIC", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRIC_tags_1, + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + asn_DEF_CauseRIC_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRIC_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRIC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.h new file mode 100644 index 0000000..40bce8a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.h @@ -0,0 +1,81 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseRIC_H_ +#define _CauseRIC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRIC { + CauseRIC_ran_function_id_Invalid = 0, + CauseRIC_action_not_supported = 1, + CauseRIC_excessive_actions = 2, + CauseRIC_duplicate_action = 3, + CauseRIC_duplicate_event = 4, + CauseRIC_function_resource_limit = 5, + CauseRIC_request_id_unknown = 6, + CauseRIC_inconsistent_action_subsequent_action_sequence = 7, + CauseRIC_control_message_invalid = 8, + CauseRIC_call_process_id_invalid = 9, + CauseRIC_unspecified = 10 + /* + * Enumeration is extensible + */ +} e_CauseRIC; + +/* CauseRIC */ +typedef long CauseRIC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRIC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRIC; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1; +asn_struct_free_f CauseRIC_free; +asn_struct_print_f CauseRIC_print; +asn_constr_check_f CauseRIC_constraint; +ber_type_decoder_f CauseRIC_decode_ber; +der_type_encoder_f CauseRIC_encode_der; +xer_type_decoder_f CauseRIC_decode_xer; +xer_type_encoder_f CauseRIC_encode_xer; +per_type_decoder_f CauseRIC_decode_uper; +per_type_encoder_f CauseRIC_encode_uper; +per_type_decoder_f CauseRIC_decode_aper; +per_type_encoder_f CauseRIC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRIC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c new file mode 100644 index 0000000..9a3073d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c @@ -0,0 +1,75 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseRICservice.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRICservice_value2enum_1[] = { + { 0, 21, "function-not-required" }, + { 1, 19, "excessive-functions" }, + { 2, 18, "ric-resource-limit" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRICservice_enum2value_1[] = { + 1, /* excessive-functions(1) */ + 0, /* function-not-required(0) */ + 2 /* ric-resource-limit(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1 = { + asn_MAP_CauseRICservice_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRICservice_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRICservice_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRICservice = { + "CauseRICservice", + "CauseRICservice", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRICservice_tags_1, + sizeof(asn_DEF_CauseRICservice_tags_1) + /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ + asn_DEF_CauseRICservice_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRICservice_tags_1) + /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRICservice_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRICservice_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.h new file mode 100644 index 0000000..fa07cf8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseRICservice_H_ +#define _CauseRICservice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRICservice { + CauseRICservice_function_not_required = 0, + CauseRICservice_excessive_functions = 1, + CauseRICservice_ric_resource_limit = 2 + /* + * Enumeration is extensible + */ +} e_CauseRICservice; + +/* CauseRICservice */ +typedef long CauseRICservice_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRICservice; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1; +asn_struct_free_f CauseRICservice_free; +asn_struct_print_f CauseRICservice_print; +asn_constr_check_f CauseRICservice_constraint; +ber_type_decoder_f CauseRICservice_decode_ber; +der_type_encoder_f CauseRICservice_encode_der; +xer_type_decoder_f CauseRICservice_decode_xer; +xer_type_encoder_f CauseRICservice_encode_xer; +per_type_decoder_f CauseRICservice_decode_uper; +per_type_encoder_f CauseRICservice_encode_uper; +per_type_decoder_f CauseRICservice_decode_aper; +per_type_encoder_f CauseRICservice_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRICservice_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c new file mode 100644 index 0000000..b44f4ff --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseTransport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { + { 0, 11, "unspecified" }, + { 1, 30, "transport-resource-unavailable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { + 1, /* transport-resource-unavailable(1) */ + 0 /* unspecified(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { + asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseTransport = { + "CauseTransport", + "CauseTransport", + &asn_OP_NativeEnumerated, + asn_DEF_CauseTransport_tags_1, + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.h new file mode 100644 index 0000000..9c25253 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseTransport_H_ +#define _CauseTransport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseTransport { + CauseTransport_unspecified = 0, + CauseTransport_transport_resource_unavailable = 1 + /* + * Enumeration is extensible + */ +} e_CauseTransport; + +/* CauseTransport */ +typedef long CauseTransport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; +extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseTransport_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c new file mode 100644 index 0000000..734cf50 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Criticality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { + asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Criticality = { + "Criticality", + "Criticality", + &asn_OP_NativeEnumerated, + asn_DEF_Criticality_tags_1, + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + asn_DEF_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.h new file mode 100644 index 0000000..172be67 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Criticality_H_ +#define _Criticality_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Criticality { + Criticality_reject = 0, + Criticality_ignore = 1, + Criticality_notify = 2 +} e_Criticality; + +/* Criticality */ +typedef long Criticality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Criticality; +extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Criticality_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c new file mode 100644 index 0000000..f2e6c4f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics-IE-Item.h" + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfError, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfError" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* typeOfError */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_Item), + offsetof(struct CriticalityDiagnostics_IE_Item, _asn_ctx), + asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item = { + "CriticalityDiagnostics-IE-Item", + "CriticalityDiagnostics-IE-Item", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_IE_Item_1, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.h new file mode 100644 index 0000000..28eb8b6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.h @@ -0,0 +1,66 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_IE_Item_H_ +#define _CriticalityDiagnostics_IE_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Criticality.h" +#include "ProtocolIE-ID.h" +#include "TypeOfError.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CriticalityDiagnostics-IE-Item */ +typedef struct CriticalityDiagnostics_IE_Item { + Criticality_t iECriticality; + ProtocolIE_ID_t iE_ID; + TypeOfError_t typeOfError; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000..8d7b465 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics-IE-List.h" + +#include "CriticalityDiagnostics-IE-Item.h" +asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_IE_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_List), + offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000..f9f6e5d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_IE_List_H_ +#define _CriticalityDiagnostics_IE_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CriticalityDiagnostics_IE_Item; + +/* CriticalityDiagnostics-IE-List */ +typedef struct CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; +extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; +extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c new file mode 100644 index 0000000..91586bb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c @@ -0,0 +1,112 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics.h" + +#include "RICrequestID.h" +#include "CriticalityDiagnostics-IE-List.h" +static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TriggeringMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CriticalityDiagnostics_IE_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iEsCriticalityDiagnostics" + }, +}; +static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iEsCriticalityDiagnostics */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { + sizeof(struct CriticalityDiagnostics), + offsetof(struct CriticalityDiagnostics, _asn_ctx), + asn_MAP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.h new file mode 100644 index 0000000..c2677db --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_H_ +#define _CriticalityDiagnostics_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TriggeringMessage.h" +#include "Criticality.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICrequestID; +struct CriticalityDiagnostics_IE_List; + +/* CriticalityDiagnostics */ +typedef struct CriticalityDiagnostics { + ProcedureCode_t *procedureCode; /* OPTIONAL */ + TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ + Criticality_t *procedureCriticality; /* OPTIONAL */ + struct RICrequestID *ricRequestorID; /* OPTIONAL */ + struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c new file mode 100644 index 0000000..e016df6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c @@ -0,0 +1,93 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2AP-PDU.h" + +#include "InitiatingMessage.h" +#include "SuccessfulOutcome.h" +#include "UnsuccessfulOutcome.h" +static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InitiatingMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiatingMessage" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "successfulOutcome" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { + sizeof(struct E2AP_PDU), + offsetof(struct E2AP_PDU, _asn_ctx), + offsetof(struct E2AP_PDU, present), + sizeof(((struct E2AP_PDU *)0)->present), + asn_MAP_E2AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { + "E2AP-PDU", + "E2AP-PDU", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, + asn_MBR_E2AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.h new file mode 100644 index 0000000..1fe52c5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2AP_PDU_H_ +#define _E2AP_PDU_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2AP_PDU_PR { + E2AP_PDU_PR_NOTHING, /* No components present */ + E2AP_PDU_PR_initiatingMessage, + E2AP_PDU_PR_successfulOutcome, + E2AP_PDU_PR_unsuccessfulOutcome + /* Extensions may appear below */ + +} E2AP_PDU_PR; + +/* Forward declarations */ +struct InitiatingMessage; +struct SuccessfulOutcome; +struct UnsuccessfulOutcome; + +/* E2AP-PDU */ +typedef struct E2AP_PDU { + E2AP_PDU_PR present; + union E2AP_PDU_u { + struct InitiatingMessage *initiatingMessage; + struct SuccessfulOutcome *successfulOutcome; + struct UnsuccessfulOutcome *unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_PDU_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c new file mode 100644 index 0000000..6be1dc4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2setupFailure.h" + +asn_TYPE_member_t asn_MBR_E2setupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1 = { + sizeof(struct E2setupFailure), + offsetof(struct E2setupFailure, _asn_ctx), + asn_MAP_E2setupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupFailure = { + "E2setupFailure", + "E2setupFailure", + &asn_OP_SEQUENCE, + asn_DEF_E2setupFailure_tags_1, + sizeof(asn_DEF_E2setupFailure_tags_1) + /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ + asn_DEF_E2setupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupFailure_tags_1) + /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupFailure_1, + 1, /* Elements count */ + &asn_SPC_E2setupFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.h new file mode 100644 index 0000000..87f1fdb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2setupFailure_H_ +#define _E2setupFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupFailure */ +typedef struct E2setupFailure { + ProtocolIE_Container_1544P13_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c new file mode 100644 index 0000000..e7e841a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2setupRequest.h" + +asn_TYPE_member_t asn_MBR_E2setupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1 = { + sizeof(struct E2setupRequest), + offsetof(struct E2setupRequest, _asn_ctx), + asn_MAP_E2setupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupRequest = { + "E2setupRequest", + "E2setupRequest", + &asn_OP_SEQUENCE, + asn_DEF_E2setupRequest_tags_1, + sizeof(asn_DEF_E2setupRequest_tags_1) + /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ + asn_DEF_E2setupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupRequest_tags_1) + /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupRequest_1, + 1, /* Elements count */ + &asn_SPC_E2setupRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.h new file mode 100644 index 0000000..de15ccc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2setupRequest_H_ +#define _E2setupRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupRequest */ +typedef struct E2setupRequest { + ProtocolIE_Container_1544P11_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c new file mode 100644 index 0000000..2ac24be --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2setupResponse.h" + +asn_TYPE_member_t asn_MBR_E2setupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1 = { + sizeof(struct E2setupResponse), + offsetof(struct E2setupResponse, _asn_ctx), + asn_MAP_E2setupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupResponse = { + "E2setupResponse", + "E2setupResponse", + &asn_OP_SEQUENCE, + asn_DEF_E2setupResponse_tags_1, + sizeof(asn_DEF_E2setupResponse_tags_1) + /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ + asn_DEF_E2setupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupResponse_tags_1) + /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupResponse_1, + 1, /* Elements count */ + &asn_SPC_E2setupResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.h new file mode 100644 index 0000000..5079764 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2setupResponse_H_ +#define _E2setupResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupResponse */ +typedef struct E2setupResponse { + ProtocolIE_Container_1544P12_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c new file mode 100644 index 0000000..b5c00e3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c @@ -0,0 +1,198 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENB-ID-Choice.h" + +static int +memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enb_ID_macro_constr_2, memb_enb_ID_macro_constraint_1 }, + 0, 0, /* No default value */ + "enb-ID-macro" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enb_ID_shortmacro_constr_3, memb_enb_ID_shortmacro_constraint_1 }, + 0, 0, /* No default value */ + "enb-ID-shortmacro" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enb_ID_longmacro_constr_4, memb_enb_ID_longmacro_constraint_1 }, + 0, 0, /* No default value */ + "enb-ID-longmacro" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = { + sizeof(struct ENB_ID_Choice), + offsetof(struct ENB_ID_Choice, _asn_ctx), + offsetof(struct ENB_ID_Choice, present), + sizeof(((struct ENB_ID_Choice *)0)->present), + asn_MAP_ENB_ID_Choice_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = { + "ENB-ID-Choice", + "ENB-ID-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENB_ID_Choice_constr_1, CHOICE_constraint }, + asn_MBR_ENB_ID_Choice_1, + 3, /* Elements count */ + &asn_SPC_ENB_ID_Choice_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.h new file mode 100644 index 0000000..0240688 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.h @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENB_ID_Choice_H_ +#define _ENB_ID_Choice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_Choice_PR { + ENB_ID_Choice_PR_NOTHING, /* No components present */ + ENB_ID_Choice_PR_enb_ID_macro, + ENB_ID_Choice_PR_enb_ID_shortmacro, + ENB_ID_Choice_PR_enb_ID_longmacro + /* Extensions may appear below */ + +} ENB_ID_Choice_PR; + +/* ENB-ID-Choice */ +typedef struct ENB_ID_Choice { + ENB_ID_Choice_PR present; + union ENB_ID_Choice_u { + BIT_STRING_t enb_ID_macro; + BIT_STRING_t enb_ID_shortmacro; + BIT_STRING_t enb_ID_longmacro; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_Choice_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c new file mode 100644 index 0000000..32daa98 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c @@ -0,0 +1,244 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENB-ID.h" + +static int +memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "home-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "short-Macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "long-Macro-eNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { + sizeof(struct ENB_ID), + offsetof(struct ENB_ID, _asn_ctx), + offsetof(struct ENB_ID, present), + sizeof(((struct ENB_ID *)0)->present), + asn_MAP_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, + asn_MBR_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.h new file mode 100644 index 0000000..16bf10e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENB_ID_H_ +#define _ENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_PR { + ENB_ID_PR_NOTHING, /* No components present */ + ENB_ID_PR_macro_eNB_ID, + ENB_ID_PR_home_eNB_ID, + /* Extensions may appear below */ + ENB_ID_PR_short_Macro_eNB_ID, + ENB_ID_PR_long_Macro_eNB_ID +} ENB_ID_PR; + +/* ENB-ID */ +typedef struct ENB_ID { + ENB_ID_PR present; + union ENB_ID_u { + BIT_STRING_t macro_eNB_ID; + BIT_STRING_t home_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_Macro_eNB_ID; + BIT_STRING_t long_Macro_eNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c new file mode 100644 index 0000000..222bcc3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c @@ -0,0 +1,106 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENGNB-ID.h" + +static int +memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = { + sizeof(struct ENGNB_ID), + offsetof(struct ENGNB_ID, _asn_ctx), + offsetof(struct ENGNB_ID, present), + sizeof(((struct ENGNB_ID *)0)->present), + asn_MAP_ENGNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = { + "ENGNB-ID", + "ENGNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENGNB_ID_constr_1, CHOICE_constraint }, + asn_MBR_ENGNB_ID_1, + 1, /* Elements count */ + &asn_SPC_ENGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.h new file mode 100644 index 0000000..e6cdbb9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENGNB_ID_H_ +#define _ENGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENGNB_ID_PR { + ENGNB_ID_PR_NOTHING, /* No components present */ + ENGNB_ID_PR_gNB_ID + /* Extensions may appear below */ + +} ENGNB_ID_PR; + +/* ENGNB-ID */ +typedef struct ENGNB_ID { + ENGNB_ID_PR present; + union ENGNB_ID_u { + BIT_STRING_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c new file mode 100644 index 0000000..f08dad6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ErrorIndication.h" + +asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { + sizeof(struct ErrorIndication), + offsetof(struct ErrorIndication, _asn_ctx), + asn_MAP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_tags_1, + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.h new file mode 100644 index 0000000..6a9d5aa --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ErrorIndication_H_ +#define _ErrorIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ErrorIndication */ +typedef struct ErrorIndication { + ProtocolIE_Container_1544P10_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ErrorIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c new file mode 100644 index 0000000..dbd7a94 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c @@ -0,0 +1,85 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNB-CU-UP-ID.h" + +int +GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 68719476735)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID = { + "GNB-CU-UP-ID", + "GNB-CU-UP-ID", + &asn_OP_INTEGER, + asn_DEF_GNB_CU_UP_ID_tags_1, + sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + asn_DEF_GNB_CU_UP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GNB_CU_UP_ID_constr_1, GNB_CU_UP_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.h new file mode 100644 index 0000000..cf495f8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNB_CU_UP_ID_H_ +#define _GNB_CU_UP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNB-CU-UP-ID */ +typedef INTEGER_t GNB_CU_UP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID; +asn_struct_free_f GNB_CU_UP_ID_free; +asn_struct_print_f GNB_CU_UP_ID_print; +asn_constr_check_f GNB_CU_UP_ID_constraint; +ber_type_decoder_f GNB_CU_UP_ID_decode_ber; +der_type_encoder_f GNB_CU_UP_ID_encode_der; +xer_type_decoder_f GNB_CU_UP_ID_decode_xer; +xer_type_encoder_f GNB_CU_UP_ID_encode_xer; +per_type_decoder_f GNB_CU_UP_ID_decode_uper; +per_type_encoder_f GNB_CU_UP_ID_encode_uper; +per_type_decoder_f GNB_CU_UP_ID_decode_aper; +per_type_encoder_f GNB_CU_UP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_CU_UP_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c new file mode 100644 index 0000000..c9fa241 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c @@ -0,0 +1,85 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNB-DU-ID.h" + +int +GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 68719476735)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GNB_DU_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID = { + "GNB-DU-ID", + "GNB-DU-ID", + &asn_OP_INTEGER, + asn_DEF_GNB_DU_ID_tags_1, + sizeof(asn_DEF_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ + asn_DEF_GNB_DU_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GNB_DU_ID_constr_1, GNB_DU_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.h new file mode 100644 index 0000000..657421d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNB_DU_ID_H_ +#define _GNB_DU_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNB-DU-ID */ +typedef INTEGER_t GNB_DU_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID; +asn_struct_free_f GNB_DU_ID_free; +asn_struct_print_f GNB_DU_ID_print; +asn_constr_check_f GNB_DU_ID_constraint; +ber_type_decoder_f GNB_DU_ID_decode_ber; +der_type_encoder_f GNB_DU_ID_encode_der; +xer_type_decoder_f GNB_DU_ID_decode_xer; +xer_type_encoder_f GNB_DU_ID_encode_xer; +per_type_decoder_f GNB_DU_ID_decode_uper; +per_type_encoder_f GNB_DU_ID_encode_uper; +per_type_decoder_f GNB_DU_ID_decode_aper; +per_type_encoder_f GNB_DU_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_DU_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c new file mode 100644 index 0000000..df13a32 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c @@ -0,0 +1,106 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNB-ID-Choice.h" + +static int +memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_gnb_ID_constr_2, memb_gnb_ID_constraint_1 }, + 0, 0, /* No default value */ + "gnb-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = { + sizeof(struct GNB_ID_Choice), + offsetof(struct GNB_ID_Choice, _asn_ctx), + offsetof(struct GNB_ID_Choice, present), + sizeof(((struct GNB_ID_Choice *)0)->present), + asn_MAP_GNB_ID_Choice_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = { + "GNB-ID-Choice", + "GNB-ID-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_GNB_ID_Choice_constr_1, CHOICE_constraint }, + asn_MBR_GNB_ID_Choice_1, + 1, /* Elements count */ + &asn_SPC_GNB_ID_Choice_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.h new file mode 100644 index 0000000..869b591 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNB_ID_Choice_H_ +#define _GNB_ID_Choice_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNB_ID_Choice_PR { + GNB_ID_Choice_PR_NOTHING, /* No components present */ + GNB_ID_Choice_PR_gnb_ID + /* Extensions may appear below */ + +} GNB_ID_Choice_PR; + +/* GNB-ID-Choice */ +typedef struct GNB_ID_Choice { + GNB_ID_Choice_PR present; + union GNB_ID_Choice_u { + BIT_STRING_t gnb_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNB_ID_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice; +extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1]; +extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_ID_Choice_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c new file mode 100644 index 0000000..e781d3b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c @@ -0,0 +1,104 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalE2node-ID.h" + +#include "GlobalE2node-gNB-ID.h" +#include "GlobalE2node-en-gNB-ID.h" +#include "GlobalE2node-ng-eNB-ID.h" +#include "GlobalE2node-eNB-ID.h" +static asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_gNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_en_gNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_ng_eNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ng-eNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_eNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = { + sizeof(struct GlobalE2node_ID), + offsetof(struct GlobalE2node_ID, _asn_ctx), + offsetof(struct GlobalE2node_ID, present), + sizeof(((struct GlobalE2node_ID *)0)->present), + asn_MAP_GlobalE2node_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = { + "GlobalE2node-ID", + "GlobalE2node-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_GlobalE2node_ID_constr_1, CHOICE_constraint }, + asn_MBR_GlobalE2node_ID_1, + 4, /* Elements count */ + &asn_SPC_GlobalE2node_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.h new file mode 100644 index 0000000..bb5e8dc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.h @@ -0,0 +1,82 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalE2node_ID_H_ +#define _GlobalE2node_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GlobalE2node_ID_PR { + GlobalE2node_ID_PR_NOTHING, /* No components present */ + GlobalE2node_ID_PR_gNB, + GlobalE2node_ID_PR_en_gNB, + GlobalE2node_ID_PR_ng_eNB, + GlobalE2node_ID_PR_eNB + /* Extensions may appear below */ + +} GlobalE2node_ID_PR; + +/* Forward declarations */ +struct GlobalE2node_gNB_ID; +struct GlobalE2node_en_gNB_ID; +struct GlobalE2node_ng_eNB_ID; +struct GlobalE2node_eNB_ID; + +/* GlobalE2node-ID */ +typedef struct GlobalE2node_ID { + GlobalE2node_ID_PR present; + union GlobalE2node_ID_u { + struct GlobalE2node_gNB_ID *gNB; + struct GlobalE2node_en_gNB_ID *en_gNB; + struct GlobalE2node_ng_eNB_ID *ng_eNB; + struct GlobalE2node_eNB_ID *eNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c new file mode 100644 index 0000000..b488157 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalE2node-eNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = { + sizeof(struct GlobalE2node_eNB_ID), + offsetof(struct GlobalE2node_eNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_eNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = { + "GlobalE2node-eNB-ID", + "GlobalE2node-eNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_eNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_eNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_eNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_eNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.h new file mode 100644 index 0000000..96d59ba --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalE2node_eNB_ID_H_ +#define _GlobalE2node_eNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-eNB-ID */ +typedef struct GlobalE2node_eNB_ID { + GlobalENB_ID_t global_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_eNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_eNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c new file mode 100644 index 0000000..6aeee8d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalE2node-en-gNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalenGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = { + sizeof(struct GlobalE2node_en_gNB_ID), + offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = { + "GlobalE2node-en-gNB-ID", + "GlobalE2node-en-gNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_en_gNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_en_gNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_en_gNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_en_gNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.h new file mode 100644 index 0000000..de660dd --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalE2node_en_gNB_ID_H_ +#define _GlobalE2node_en_gNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalenGNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-en-gNB-ID */ +typedef struct GlobalE2node_en_gNB_ID { + GlobalenGNB_ID_t global_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_en_gNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_en_gNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c new file mode 100644 index 0000000..e0ed41e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c @@ -0,0 +1,90 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalE2node-gNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalgNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, + { ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_UP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-CU-UP-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_DU_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-DU-ID" + }, +}; +static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = { + sizeof(struct GlobalE2node_gNB_ID), + offsetof(struct GlobalE2node_gNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_gNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalE2node_gNB_ID_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = { + "GlobalE2node-gNB-ID", + "GlobalE2node-gNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_gNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_gNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_gNB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalE2node_gNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.h new file mode 100644 index 0000000..f3d4d50 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.h @@ -0,0 +1,66 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalE2node_gNB_ID_H_ +#define _GlobalE2node_gNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalgNB-ID.h" +#include "GNB-CU-UP-ID.h" +#include "GNB-DU-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-gNB-ID */ +typedef struct GlobalE2node_gNB_ID { + GlobalgNB_ID_t global_gNB_ID; + GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ + GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_gNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_gNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c new file mode 100644 index 0000000..ab32f74 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalE2node-ng-eNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalngeNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-ng-eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = { + sizeof(struct GlobalE2node_ng_eNB_ID), + offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = { + "GlobalE2node-ng-eNB-ID", + "GlobalE2node-ng-eNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_ng_eNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.h new file mode 100644 index 0000000..2ae7d61 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalE2node_ng_eNB_ID_H_ +#define _GlobalE2node_ng_eNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalngeNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-ng-eNB-ID */ +typedef struct GlobalE2node_ng_eNB_ID { + GlobalngeNB_ID_t global_ng_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_ng_eNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_ng_eNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c new file mode 100644 index 0000000..4446756 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalENB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { + sizeof(struct GlobalENB_ID), + offsetof(struct GlobalENB_ID, _asn_ctx), + asn_MAP_GlobalENB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { + "GlobalENB-ID", + "GlobalENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalENB_ID_tags_1, + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalENB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.h new file mode 100644 index 0000000..dcabc98 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalENB_ID_H_ +#define _GlobalENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalENB-ID */ +typedef struct GlobalENB_ID { + PLMN_Identity_t pLMN_Identity; + ENB_ID_t eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalENB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c new file mode 100644 index 0000000..948c395 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c @@ -0,0 +1,114 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalRIC-ID.h" + +static int +memb_ric_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_ric_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, ric_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_ric_ID_constr_3, memb_ric_ID_constraint_1 }, + 0, 0, /* No default value */ + "ric-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalRIC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalRIC_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1 = { + sizeof(struct GlobalRIC_ID), + offsetof(struct GlobalRIC_ID, _asn_ctx), + asn_MAP_GlobalRIC_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID = { + "GlobalRIC-ID", + "GlobalRIC-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalRIC_ID_tags_1, + sizeof(asn_DEF_GlobalRIC_ID_tags_1) + /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalRIC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalRIC_ID_tags_1) + /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalRIC_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalRIC_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.h new file mode 100644 index 0000000..b0ffc74 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalRIC_ID_H_ +#define _GlobalRIC_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalRIC-ID */ +typedef struct GlobalRIC_ID { + PLMN_Identity_t pLMN_Identity; + BIT_STRING_t ric_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalRIC_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalRIC_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c new file mode 100644 index 0000000..08c64b4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalenGNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalenGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalenGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1 = { + sizeof(struct GlobalenGNB_ID), + offsetof(struct GlobalenGNB_ID, _asn_ctx), + asn_MAP_GlobalenGNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID = { + "GlobalenGNB-ID", + "GlobalenGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalenGNB_ID_tags_1, + sizeof(asn_DEF_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalenGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalenGNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalenGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.h new file mode 100644 index 0000000..a9cdd22 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalenGNB_ID_H_ +#define _GlobalenGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENGNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalenGNB-ID */ +typedef struct GlobalenGNB_ID { + PLMN_Identity_t pLMN_Identity; + ENGNB_ID_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalenGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalenGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c new file mode 100644 index 0000000..d1c0e3e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalgNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmn-id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GNB_ID_Choice, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gnb-id" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = { + sizeof(struct GlobalgNB_ID), + offsetof(struct GlobalgNB_ID, _asn_ctx), + asn_MAP_GlobalgNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = { + "GlobalgNB-ID", + "GlobalgNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalgNB_ID_tags_1, + sizeof(asn_DEF_GlobalgNB_ID_tags_1) + /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalgNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalgNB_ID_tags_1) + /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalgNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalgNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.h new file mode 100644 index 0000000..e82a8d0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalgNB_ID_H_ +#define _GlobalgNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "GNB-ID-Choice.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalgNB-ID */ +typedef struct GlobalgNB_ID { + PLMN_Identity_t plmn_id; + GNB_ID_Choice_t gnb_id; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalgNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalgNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c new file mode 100644 index 0000000..cec4ede --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalngeNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmn-id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID_Choice, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "enb-id" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = { + sizeof(struct GlobalngeNB_ID), + offsetof(struct GlobalngeNB_ID, _asn_ctx), + asn_MAP_GlobalngeNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = { + "GlobalngeNB-ID", + "GlobalngeNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalngeNB_ID_tags_1, + sizeof(asn_DEF_GlobalngeNB_ID_tags_1) + /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalngeNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalngeNB_ID_tags_1) + /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalngeNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalngeNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.h new file mode 100644 index 0000000..7ed4aea --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalngeNB_ID_H_ +#define _GlobalngeNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID-Choice.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalngeNB-ID */ +typedef struct GlobalngeNB_ID { + PLMN_Identity_t plmn_id; + ENB_ID_Choice_t enb_id; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalngeNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalngeNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c new file mode 100644 index 0000000..2a2f4d7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c @@ -0,0 +1,1735 @@ +/*- + * Copyright (c) 2003-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* Encoder and decoder of a primitive type */ +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, + INTEGER_print, + INTEGER_compare, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + INTEGER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( + const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop); + +/* + * INTEGER specific human-readable output. + */ +static ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long uvalue = 0; + long svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_long_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_long2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + if(specs && specs->field_unsigned) { + if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) + || ((unsigned long)value < (unsigned long)ct->lower_bound)) + || ((unsigned long)value > (unsigned long)ct->upper_bound) + ) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = (unsigned long)value - (unsigned long)ct->lower_bound; + } else { + if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + if (ct->range_bits < 8) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, + 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = aper_put_length(po, -1, end - buf); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + +#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) + const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; + intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; +#undef ASN1_INTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + +#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) + const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; + uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; +#undef ASN1_UINTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.h new file mode 100644 index 0000000..f776c07 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.h @@ -0,0 +1,108 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free +#define INTEGER_decode_ber ber_decode_primitive +#define INTEGER_constraint asn_generic_no_constraint +asn_struct_print_f INTEGER_print; +asn_struct_compare_f INTEGER_compare; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +asn_random_fill_f INTEGER_random_fill; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c new file mode 100644 index 0000000..950ceb5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c @@ -0,0 +1,407 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingMessage.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICserviceUpdate = 7; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICcontrol = 4; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_E2setup = 1; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_Reset = 3; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICindication = 5; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_8_id_RICserviceQuery = 6; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_9_id_ErrorIndication = 2; +static const long asn_VAL_9_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 0; /* &InitiatingMessage */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2setupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E2setupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ErrorIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 8 }, /* RICsubscriptionRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 7 }, /* RICsubscriptionDeleteRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 6 }, /* RICserviceUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 5 }, /* RICcontrolRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 4 }, /* E2setupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 3 }, /* ResetRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 2 }, /* RICindication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 1 }, /* RICserviceQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 0 } /* ErrorIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct InitiatingMessage__value), + offsetof(struct InitiatingMessage__value, _asn_ctx), + offsetof(struct InitiatingMessage__value, present), + sizeof(((struct InitiatingMessage__value *)0)->present), + asn_MAP_value_tag2el_4, + 9, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 9, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_InitiatingMessage_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_InitiatingMessage_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { + sizeof(struct InitiatingMessage), + offsetof(struct InitiatingMessage, _asn_ctx), + asn_MAP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + &asn_OP_SEQUENCE, + asn_DEF_InitiatingMessage_tags_1, + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.h new file mode 100644 index 0000000..c42ffe9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.h @@ -0,0 +1,115 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingMessage_H_ +#define _InitiatingMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingMessage__value_PR { + InitiatingMessage__value_PR_NOTHING, /* No components present */ + InitiatingMessage__value_PR_RICsubscriptionRequest, + InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, + InitiatingMessage__value_PR_RICserviceUpdate, + InitiatingMessage__value_PR_RICcontrolRequest, + InitiatingMessage__value_PR_E2setupRequest, + InitiatingMessage__value_PR_ResetRequest, + InitiatingMessage__value_PR_RICindication, + InitiatingMessage__value_PR_RICserviceQuery, + InitiatingMessage__value_PR_ErrorIndication +} InitiatingMessage__value_PR; + +/* InitiatingMessage */ +typedef struct InitiatingMessage { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct InitiatingMessage__value { + InitiatingMessage__value_PR present; + union InitiatingMessage__value_u { + RICsubscriptionRequest_t RICsubscriptionRequest; + RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; + RICserviceUpdate_t RICserviceUpdate; + RICcontrolRequest_t RICcontrolRequest; + E2setupRequest_t E2setupRequest; + ResetRequest_t ResetRequest; + RICindication_t RICindication; + RICserviceQuery_t RICserviceQuery; + ErrorIndication_t ErrorIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Makefile.am.asn1convert b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Makefile.am.asn1convert new file mode 100644 index 0000000..bdf965f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Makefile.am.asn1convert @@ -0,0 +1,14 @@ +include ./Makefile.am.libasncodec + +bin_PROGRAMS += asn1convert +asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION +asn1convert_CPPFLAGS = -I$(top_srcdir)/./ +asn1convert_LDADD = libasncodec.la +asn1convert_SOURCES = \ + ./converter-example.c\ + ./pdu_collection.c +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../asnTextFiles/e2ap-v01.00.00.asn + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Makefile.am.libasncodec b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Makefile.am.libasncodec new file mode 100644 index 0000000..e711007 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Makefile.am.libasncodec @@ -0,0 +1,273 @@ +ASN_MODULE_SRCS= \ + ./E2AP-PDU.c \ + ./InitiatingMessage.c \ + ./SuccessfulOutcome.c \ + ./UnsuccessfulOutcome.c \ + ./RICsubscriptionRequest.c \ + ./RICsubscriptionDetails.c \ + ./RICactions-ToBeSetup-List.c \ + ./RICaction-ToBeSetup-Item.c \ + ./RICsubscriptionResponse.c \ + ./RICaction-Admitted-List.c \ + ./RICaction-Admitted-Item.c \ + ./RICaction-NotAdmitted-List.c \ + ./RICaction-NotAdmitted-Item.c \ + ./RICsubscriptionFailure.c \ + ./RICsubscriptionDeleteRequest.c \ + ./RICsubscriptionDeleteResponse.c \ + ./RICsubscriptionDeleteFailure.c \ + ./RICindication.c \ + ./RICcontrolRequest.c \ + ./RICcontrolAcknowledge.c \ + ./RICcontrolFailure.c \ + ./ErrorIndication.c \ + ./E2setupRequest.c \ + ./E2setupResponse.c \ + ./E2setupFailure.c \ + ./ResetRequest.c \ + ./ResetResponse.c \ + ./RICserviceUpdate.c \ + ./RANfunctions-List.c \ + ./RANfunction-Item.c \ + ./RANfunctionsID-List.c \ + ./RANfunctionID-Item.c \ + ./RICserviceUpdateAcknowledge.c \ + ./RANfunctionsIDcause-List.c \ + ./RANfunctionIDcause-Item.c \ + ./RICserviceUpdateFailure.c \ + ./RICserviceQuery.c \ + ./Cause.c \ + ./CauseMisc.c \ + ./CauseProtocol.c \ + ./CauseRIC.c \ + ./CauseRICservice.c \ + ./CauseTransport.c \ + ./CriticalityDiagnostics.c \ + ./CriticalityDiagnostics-IE-List.c \ + ./CriticalityDiagnostics-IE-Item.c \ + ./ENB-ID.c \ + ./ENB-ID-Choice.c \ + ./ENGNB-ID.c \ + ./GlobalE2node-ID.c \ + ./GlobalE2node-en-gNB-ID.c \ + ./GlobalE2node-eNB-ID.c \ + ./GlobalE2node-gNB-ID.c \ + ./GlobalE2node-ng-eNB-ID.c \ + ./GlobalENB-ID.c \ + ./GlobalenGNB-ID.c \ + ./GlobalgNB-ID.c \ + ./GlobalngeNB-ID.c \ + ./GlobalRIC-ID.c \ + ./GNB-CU-UP-ID.c \ + ./GNB-DU-ID.c \ + ./GNB-ID-Choice.c \ + ./PLMN-Identity.c \ + ./RANfunctionDefinition.c \ + ./RANfunctionID.c \ + ./RANfunctionRevision.c \ + ./RICactionDefinition.c \ + ./RICactionID.c \ + ./RICactionType.c \ + ./RICcallProcessID.c \ + ./RICcontrolAckRequest.c \ + ./RICcontrolHeader.c \ + ./RICcontrolMessage.c \ + ./RICcontrolOutcome.c \ + ./RICcontrolStatus.c \ + ./RICeventTriggerDefinition.c \ + ./RICindicationHeader.c \ + ./RICindicationMessage.c \ + ./RICindicationSN.c \ + ./RICindicationType.c \ + ./RICrequestID.c \ + ./RICsubsequentAction.c \ + ./RICsubsequentActionType.c \ + ./RICtimeToWait.c \ + ./TimeToWait.c \ + ./TypeOfError.c \ + ./Criticality.c \ + ./Presence.c \ + ./ProcedureCode.c \ + ./ProtocolIE-ID.c \ + ./TriggeringMessage.c \ + ./ProtocolIE-Container.c \ + ./ProtocolIE-SingleContainer.c \ + ./ProtocolIE-Field.c \ + ./ProtocolIE-ContainerPair.c \ + ./ProtocolIE-FieldPair.c \ + ./ProtocolIE-ContainerList.c \ + ./ProtocolIE-ContainerPairList.c + +ASN_MODULE_HDRS= \ + ./E2AP-PDU.h \ + ./InitiatingMessage.h \ + ./SuccessfulOutcome.h \ + ./UnsuccessfulOutcome.h \ + ./RICsubscriptionRequest.h \ + ./RICsubscriptionDetails.h \ + ./RICactions-ToBeSetup-List.h \ + ./RICaction-ToBeSetup-Item.h \ + ./RICsubscriptionResponse.h \ + ./RICaction-Admitted-List.h \ + ./RICaction-Admitted-Item.h \ + ./RICaction-NotAdmitted-List.h \ + ./RICaction-NotAdmitted-Item.h \ + ./RICsubscriptionFailure.h \ + ./RICsubscriptionDeleteRequest.h \ + ./RICsubscriptionDeleteResponse.h \ + ./RICsubscriptionDeleteFailure.h \ + ./RICindication.h \ + ./RICcontrolRequest.h \ + ./RICcontrolAcknowledge.h \ + ./RICcontrolFailure.h \ + ./ErrorIndication.h \ + ./E2setupRequest.h \ + ./E2setupResponse.h \ + ./E2setupFailure.h \ + ./ResetRequest.h \ + ./ResetResponse.h \ + ./RICserviceUpdate.h \ + ./RANfunctions-List.h \ + ./RANfunction-Item.h \ + ./RANfunctionsID-List.h \ + ./RANfunctionID-Item.h \ + ./RICserviceUpdateAcknowledge.h \ + ./RANfunctionsIDcause-List.h \ + ./RANfunctionIDcause-Item.h \ + ./RICserviceUpdateFailure.h \ + ./RICserviceQuery.h \ + ./Cause.h \ + ./CauseMisc.h \ + ./CauseProtocol.h \ + ./CauseRIC.h \ + ./CauseRICservice.h \ + ./CauseTransport.h \ + ./CriticalityDiagnostics.h \ + ./CriticalityDiagnostics-IE-List.h \ + ./CriticalityDiagnostics-IE-Item.h \ + ./ENB-ID.h \ + ./ENB-ID-Choice.h \ + ./ENGNB-ID.h \ + ./GlobalE2node-ID.h \ + ./GlobalE2node-en-gNB-ID.h \ + ./GlobalE2node-eNB-ID.h \ + ./GlobalE2node-gNB-ID.h \ + ./GlobalE2node-ng-eNB-ID.h \ + ./GlobalENB-ID.h \ + ./GlobalenGNB-ID.h \ + ./GlobalgNB-ID.h \ + ./GlobalngeNB-ID.h \ + ./GlobalRIC-ID.h \ + ./GNB-CU-UP-ID.h \ + ./GNB-DU-ID.h \ + ./GNB-ID-Choice.h \ + ./PLMN-Identity.h \ + ./RANfunctionDefinition.h \ + ./RANfunctionID.h \ + ./RANfunctionRevision.h \ + ./RICactionDefinition.h \ + ./RICactionID.h \ + ./RICactionType.h \ + ./RICcallProcessID.h \ + ./RICcontrolAckRequest.h \ + ./RICcontrolHeader.h \ + ./RICcontrolMessage.h \ + ./RICcontrolOutcome.h \ + ./RICcontrolStatus.h \ + ./RICeventTriggerDefinition.h \ + ./RICindicationHeader.h \ + ./RICindicationMessage.h \ + ./RICindicationSN.h \ + ./RICindicationType.h \ + ./RICrequestID.h \ + ./RICsubsequentAction.h \ + ./RICsubsequentActionType.h \ + ./RICtimeToWait.h \ + ./TimeToWait.h \ + ./TypeOfError.h \ + ./Criticality.h \ + ./Presence.h \ + ./ProcedureCode.h \ + ./ProtocolIE-ID.h \ + ./TriggeringMessage.h \ + ./ProtocolIE-Container.h \ + ./ProtocolIE-SingleContainer.h \ + ./ProtocolIE-Field.h \ + ./ProtocolIE-ContainerPair.h \ + ./ProtocolIE-FieldPair.h \ + ./ProtocolIE-ContainerList.h \ + ./ProtocolIE-ContainerPairList.h + +ASN_MODULE_HDRS+=./ANY.h +ASN_MODULE_SRCS+=./ANY.c +ASN_MODULE_HDRS+=./OCTET_STRING.h +ASN_MODULE_HDRS+=./OPEN_TYPE.h +ASN_MODULE_SRCS+=./OPEN_TYPE.c +ASN_MODULE_HDRS+=./constr_CHOICE.h +ASN_MODULE_HDRS+=./INTEGER.h +ASN_MODULE_SRCS+=./INTEGER.c +ASN_MODULE_HDRS+=./NativeEnumerated.h +ASN_MODULE_SRCS+=./NativeEnumerated.c +ASN_MODULE_HDRS+=./NativeInteger.h +ASN_MODULE_SRCS+=./NativeInteger.c +ASN_MODULE_HDRS+=./asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./asn_SET_OF.h +ASN_MODULE_SRCS+=./asn_SET_OF.c +ASN_MODULE_SRCS+=./constr_CHOICE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE.h +ASN_MODULE_SRCS+=./constr_SEQUENCE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./constr_SET_OF.h +ASN_MODULE_SRCS+=./constr_SET_OF.c +ASN_MODULE_HDRS+=./asn_application.h +ASN_MODULE_SRCS+=./asn_application.c +ASN_MODULE_HDRS+=./asn_ioc.h +ASN_MODULE_HDRS+=./asn_system.h +ASN_MODULE_HDRS+=./asn_codecs.h +ASN_MODULE_HDRS+=./asn_internal.h +ASN_MODULE_SRCS+=./asn_internal.c +ASN_MODULE_HDRS+=./asn_random_fill.h +ASN_MODULE_SRCS+=./asn_random_fill.c +ASN_MODULE_HDRS+=./asn_bit_data.h +ASN_MODULE_SRCS+=./asn_bit_data.c +ASN_MODULE_SRCS+=./OCTET_STRING.c +ASN_MODULE_HDRS+=./BIT_STRING.h +ASN_MODULE_SRCS+=./BIT_STRING.c +ASN_MODULE_SRCS+=./asn_codecs_prim.c +ASN_MODULE_HDRS+=./asn_codecs_prim.h +ASN_MODULE_HDRS+=./ber_tlv_length.h +ASN_MODULE_SRCS+=./ber_tlv_length.c +ASN_MODULE_HDRS+=./ber_tlv_tag.h +ASN_MODULE_SRCS+=./ber_tlv_tag.c +ASN_MODULE_HDRS+=./ber_decoder.h +ASN_MODULE_SRCS+=./ber_decoder.c +ASN_MODULE_HDRS+=./der_encoder.h +ASN_MODULE_SRCS+=./der_encoder.c +ASN_MODULE_HDRS+=./constr_TYPE.h +ASN_MODULE_SRCS+=./constr_TYPE.c +ASN_MODULE_HDRS+=./constraints.h +ASN_MODULE_SRCS+=./constraints.c +ASN_MODULE_HDRS+=./xer_support.h +ASN_MODULE_SRCS+=./xer_support.c +ASN_MODULE_HDRS+=./xer_decoder.h +ASN_MODULE_SRCS+=./xer_decoder.c +ASN_MODULE_HDRS+=./xer_encoder.h +ASN_MODULE_SRCS+=./xer_encoder.c +ASN_MODULE_HDRS+=./per_support.h +ASN_MODULE_SRCS+=./per_support.c +ASN_MODULE_HDRS+=./per_decoder.h +ASN_MODULE_SRCS+=./per_decoder.c +ASN_MODULE_HDRS+=./per_encoder.h +ASN_MODULE_SRCS+=./per_encoder.c +ASN_MODULE_HDRS+=./per_opentype.h +ASN_MODULE_SRCS+=./per_opentype.c + +ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT + +lib_LTLIBRARIES+=libasncodec.la +libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) +libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./ +libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) +libasncodec_la_LDFLAGS=-lm diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c new file mode 100644 index 0000000..800da97 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c @@ -0,0 +1,367 @@ +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeEnumerated_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +static int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.h new file mode 100644 index 0000000..459f0e6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +xer_type_encoder_f NativeEnumerated_encode_xer; +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; + +#define NativeEnumerated_free NativeInteger_free +#define NativeEnumerated_print NativeInteger_print +#define NativeEnumerated_compare NativeInteger_compare +#define NativeEnumerated_random_fill NativeInteger_random_fill +#define NativeEnumerated_constraint asn_generic_no_constraint +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#define NativeEnumerated_decode_xer NativeInteger_decode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c new file mode 100644 index 0000000..316e872 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c @@ -0,0 +1,550 @@ +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeInteger_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occured, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.h new file mode 100644 index 0000000..c74406a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.h @@ -0,0 +1,46 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +asn_struct_compare_f NativeInteger_compare; +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +asn_random_fill_f NativeInteger_random_fill; + +#define NativeInteger_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c new file mode 100644 index 0000000..432ce5a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c @@ -0,0 +1,2409 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; + +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +#undef _CH_PHASE +#undef NEXT_PHASE +#undef PREV_PHASE +#define _CH_PHASE(ctx, inc) do { \ + if(ctx->phase == 0) \ + ctx->context = 0; \ + ctx->phase += inc; \ + } while(0) +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do { \ + size_t _bs = (bufsize); /* Append size */ \ + size_t _ns = ctx->context; /* Allocated now */ \ + size_t _es = st->size + _bs; /* Expected size */ \ + /* int is really a typeof(st->size): */ \ + if((int)_es < 0) RETURN(RC_FAIL); \ + if(_ns <= _es) { \ + void *ptr; \ + /* Be nice and round to the memory allocator */ \ + do { _ns = _ns ? _ns << 1 : 16; } \ + while(_ns <= _es); \ + /* int is really a typeof(st->size): */ \ + if((int)_ns < 0) RETURN(RC_FAIL); \ + ptr = REALLOC(st->buf, _ns); \ + if(ptr) { \ + st->buf = (uint8_t *)ptr; \ + ctx->context = _ns; \ + } else { \ + RETURN(RC_FAIL); \ + } \ + ASN_DEBUG("Reallocating into %ld", (long)_ns); \ + } \ + memcpy(st->buf + st->size, bufptr, _bs); \ + /* Convenient nul-termination */ \ + st->buf[_es] = '\0'; \ + st->size = _es; \ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that aquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; + +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + /sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, + app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +static int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +static int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); + repeat = 0; + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + if (raw_len > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], raw_len, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + /* case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; + */ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, sizeinunits, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); + if(ret) ASN__ENCODE_FAILED; + } + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %lu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = aper_put_length(po, -1, sizeinunits); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, + maySave, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + + /* + * Remove decode-time stack. + */ + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + + return rnd_len; +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.h new file mode 100644 index 0000000..c2f8bae --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +asn_struct_compare_f OCTET_STRING_compare; +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +asn_random_fill_f OCTET_STRING_random_fill; + +#define OCTET_STRING_constraint asn_generic_no_constraint +#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c new file mode 100644 index 0000000..a54e99c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c @@ -0,0 +1,509 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, + OPEN_TYPE_print, + OPEN_TYPE_compare, + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, 0, /* No OER support, use "-gen-OER" to enable */ +#else + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#endif + 0, /* Random fill is not supported for open type */ + 0 /* Use generic outmost tag fetcher */ +}; + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} + + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.h new file mode 100644 index 0000000..b0d023c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.h @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPEN_TYPE_free CHOICE_free +#define OPEN_TYPE_print CHOICE_print +#define OPEN_TYPE_compare CHOICE_compare +#define OPEN_TYPE_constraint CHOICE_constraint +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#define OPEN_TYPE_decode_uper NULL +#define OPEN_TYPE_decode_aper NULL + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ +asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); + +asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c new file mode 100644 index 0000000..6cb4d6f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMN-Identity.h" + +int +PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { + "PLMN-Identity", + "PLMN-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMN_Identity_tags_1, + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + asn_DEF_PLMN_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.h new file mode 100644 index 0000000..1da66d0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMN_Identity_H_ +#define _PLMN_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMN-Identity */ +typedef OCTET_STRING_t PLMN_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; +asn_struct_free_f PLMN_Identity_free; +asn_struct_print_f PLMN_Identity_print; +asn_constr_check_f PLMN_Identity_constraint; +ber_type_decoder_f PLMN_Identity_decode_ber; +der_type_encoder_f PLMN_Identity_encode_der; +xer_type_decoder_f PLMN_Identity_decode_xer; +xer_type_encoder_f PLMN_Identity_encode_xer; +per_type_decoder_f PLMN_Identity_decode_uper; +per_type_encoder_f PLMN_Identity_encode_uper; +per_type_decoder_f PLMN_Identity_decode_aper; +per_type_encoder_f PLMN_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMN_Identity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c new file mode 100644 index 0000000..2803334 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Presence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { + asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Presence = { + "Presence", + "Presence", + &asn_OP_NativeEnumerated, + asn_DEF_Presence_tags_1, + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + asn_DEF_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Presence_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.h new file mode 100644 index 0000000..622f9ae --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Presence_H_ +#define _Presence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Presence { + Presence_optional = 0, + Presence_conditional = 1, + Presence_mandatory = 2 +} e_Presence; + +/* Presence */ +typedef long Presence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Presence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Presence; +extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Presence_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c new file mode 100644 index 0000000..78c156f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProcedureCode.h" + +int +ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + &asn_OP_NativeInteger, + asn_DEF_ProcedureCode_tags_1, + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.h new file mode 100644 index 0000000..84197b6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProcedureCode_H_ +#define _ProcedureCode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProcedureCode */ +typedef long ProcedureCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; +asn_struct_free_f ProcedureCode_free; +asn_struct_print_f ProcedureCode_print; +asn_constr_check_f ProcedureCode_constraint; +ber_type_decoder_f ProcedureCode_decode_ber; +der_type_encoder_f ProcedureCode_encode_der; +xer_type_decoder_f ProcedureCode_decode_xer; +xer_type_encoder_f ProcedureCode_encode_xer; +per_type_decoder_f ProcedureCode_decode_uper; +per_type_encoder_f ProcedureCode_encode_uper; +per_type_decoder_f ProcedureCode_decode_aper; +per_type_encoder_f ProcedureCode_encode_aper; +#define ProcedureCode_id_E2setup ((ProcedureCode_t)1) +#define ProcedureCode_id_ErrorIndication ((ProcedureCode_t)2) +#define ProcedureCode_id_Reset ((ProcedureCode_t)3) +#define ProcedureCode_id_RICcontrol ((ProcedureCode_t)4) +#define ProcedureCode_id_RICindication ((ProcedureCode_t)5) +#define ProcedureCode_id_RICserviceQuery ((ProcedureCode_t)6) +#define ProcedureCode_id_RICserviceUpdate ((ProcedureCode_t)7) +#define ProcedureCode_id_RICsubscription ((ProcedureCode_t)8) +#define ProcedureCode_id_RICsubscriptionDelete ((ProcedureCode_t)9) + +#ifdef __cplusplus +} +#endif + +#endif /* _ProcedureCode_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c new file mode 100644 index 0000000..a541e64 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c @@ -0,0 +1,828 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Container.h" + +#include "ProtocolIE-Field.h" +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P0_specs_1 = { + sizeof(struct ProtocolIE_Container_1544P0), + offsetof(struct ProtocolIE_Container_1544P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P0 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Container_1544P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_1544P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_1544P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P1_specs_3 = { + sizeof(struct ProtocolIE_Container_1544P1), + offsetof(struct ProtocolIE_Container_1544P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P1 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P1_tags_3, + sizeof(asn_DEF_ProtocolIE_Container_1544P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_1544P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_1544P1_tags_3[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P2_specs_5 = { + sizeof(struct ProtocolIE_Container_1544P2), + offsetof(struct ProtocolIE_Container_1544P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P2 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P2_tags_5, + sizeof(asn_DEF_ProtocolIE_Container_1544P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_1544P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_1544P2_tags_5[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P3_specs_7 = { + sizeof(struct ProtocolIE_Container_1544P3), + offsetof(struct ProtocolIE_Container_1544P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P3 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P3_tags_7, + sizeof(asn_DEF_ProtocolIE_Container_1544P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_1544P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_1544P3_tags_7[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P4_specs_9 = { + sizeof(struct ProtocolIE_Container_1544P4), + offsetof(struct ProtocolIE_Container_1544P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P4 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P4_tags_9, + sizeof(asn_DEF_ProtocolIE_Container_1544P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_1544P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_1544P4_tags_9[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P5_specs_11 = { + sizeof(struct ProtocolIE_Container_1544P5), + offsetof(struct ProtocolIE_Container_1544P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P5 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P5_tags_11, + sizeof(asn_DEF_ProtocolIE_Container_1544P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_1544P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_1544P5_tags_11[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P6_specs_13 = { + sizeof(struct ProtocolIE_Container_1544P6), + offsetof(struct ProtocolIE_Container_1544P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P6 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P6_tags_13, + sizeof(asn_DEF_ProtocolIE_Container_1544P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_1544P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_1544P6_tags_13[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P7_specs_15 = { + sizeof(struct ProtocolIE_Container_1544P7), + offsetof(struct ProtocolIE_Container_1544P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P7 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P7_tags_15, + sizeof(asn_DEF_ProtocolIE_Container_1544P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_1544P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_1544P7_tags_15[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P8_specs_17 = { + sizeof(struct ProtocolIE_Container_1544P8), + offsetof(struct ProtocolIE_Container_1544P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P8 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P8_tags_17, + sizeof(asn_DEF_ProtocolIE_Container_1544P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_1544P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_1544P8_tags_17[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P9_specs_19 = { + sizeof(struct ProtocolIE_Container_1544P9), + offsetof(struct ProtocolIE_Container_1544P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P9 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P9_tags_19, + sizeof(asn_DEF_ProtocolIE_Container_1544P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_1544P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_1544P9_tags_19[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P10_specs_21 = { + sizeof(struct ProtocolIE_Container_1544P10), + offsetof(struct ProtocolIE_Container_1544P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P10 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P10_tags_21, + sizeof(asn_DEF_ProtocolIE_Container_1544P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_1544P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_1544P10_tags_21[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P11_specs_23 = { + sizeof(struct ProtocolIE_Container_1544P11), + offsetof(struct ProtocolIE_Container_1544P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P11 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P11_tags_23, + sizeof(asn_DEF_ProtocolIE_Container_1544P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_1544P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_1544P11_tags_23[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P12_specs_25 = { + sizeof(struct ProtocolIE_Container_1544P12), + offsetof(struct ProtocolIE_Container_1544P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P12 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P12_tags_25, + sizeof(asn_DEF_ProtocolIE_Container_1544P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_1544P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_1544P12_tags_25[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P13_specs_27 = { + sizeof(struct ProtocolIE_Container_1544P13), + offsetof(struct ProtocolIE_Container_1544P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P13 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P13_tags_27, + sizeof(asn_DEF_ProtocolIE_Container_1544P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_1544P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_1544P13_tags_27[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P14_specs_29 = { + sizeof(struct ProtocolIE_Container_1544P14), + offsetof(struct ProtocolIE_Container_1544P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P14 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P14_tags_29, + sizeof(asn_DEF_ProtocolIE_Container_1544P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_1544P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_1544P14_tags_29[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P15_specs_31 = { + sizeof(struct ProtocolIE_Container_1544P15), + offsetof(struct ProtocolIE_Container_1544P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P15 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P15_tags_31, + sizeof(asn_DEF_ProtocolIE_Container_1544P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_1544P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_1544P15_tags_31[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P16_specs_33 = { + sizeof(struct ProtocolIE_Container_1544P16), + offsetof(struct ProtocolIE_Container_1544P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P16 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P16_tags_33, + sizeof(asn_DEF_ProtocolIE_Container_1544P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_1544P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_1544P16_tags_33[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P17_specs_35 = { + sizeof(struct ProtocolIE_Container_1544P17), + offsetof(struct ProtocolIE_Container_1544P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P17 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P17_tags_35, + sizeof(asn_DEF_ProtocolIE_Container_1544P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_1544P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_1544P17_tags_35[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P18_specs_37 = { + sizeof(struct ProtocolIE_Container_1544P18), + offsetof(struct ProtocolIE_Container_1544P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P18 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P18_tags_37, + sizeof(asn_DEF_ProtocolIE_Container_1544P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_1544P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_1544P18_tags_37[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1544P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P19_specs_39 = { + sizeof(struct ProtocolIE_Container_1544P19), + offsetof(struct ProtocolIE_Container_1544P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P19 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1544P19_tags_39, + sizeof(asn_DEF_ProtocolIE_Container_1544P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_1544P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1544P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1544P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_1544P19_tags_39[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1544P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1544P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1544P19_specs_39 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.h new file mode 100644 index 0000000..1651662 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.h @@ -0,0 +1,271 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Container_H_ +#define _ProtocolIE_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubscriptionRequest_IEs; +struct RICsubscriptionResponse_IEs; +struct RICsubscriptionFailure_IEs; +struct RICsubscriptionDeleteRequest_IEs; +struct RICsubscriptionDeleteResponse_IEs; +struct RICsubscriptionDeleteFailure_IEs; +struct RICindication_IEs; +struct RICcontrolRequest_IEs; +struct RICcontrolAcknowledge_IEs; +struct RICcontrolFailure_IEs; +struct ErrorIndication_IEs; +struct E2setupRequestIEs; +struct E2setupResponseIEs; +struct E2setupFailureIEs; +struct ResetRequestIEs; +struct ResetResponseIEs; +struct RICserviceUpdate_IEs; +struct RICserviceUpdateAcknowledge_IEs; +struct RICserviceUpdateFailure_IEs; +struct RICserviceQuery_IEs; + +/* ProtocolIE-Container */ +typedef struct ProtocolIE_Container_1544P0 { + A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P0_t; +typedef struct ProtocolIE_Container_1544P1 { + A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P1_t; +typedef struct ProtocolIE_Container_1544P2 { + A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P2_t; +typedef struct ProtocolIE_Container_1544P3 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P3_t; +typedef struct ProtocolIE_Container_1544P4 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P4_t; +typedef struct ProtocolIE_Container_1544P5 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P5_t; +typedef struct ProtocolIE_Container_1544P6 { + A_SEQUENCE_OF(struct RICindication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P6_t; +typedef struct ProtocolIE_Container_1544P7 { + A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P7_t; +typedef struct ProtocolIE_Container_1544P8 { + A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P8_t; +typedef struct ProtocolIE_Container_1544P9 { + A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P9_t; +typedef struct ProtocolIE_Container_1544P10 { + A_SEQUENCE_OF(struct ErrorIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P10_t; +typedef struct ProtocolIE_Container_1544P11 { + A_SEQUENCE_OF(struct E2setupRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P11_t; +typedef struct ProtocolIE_Container_1544P12 { + A_SEQUENCE_OF(struct E2setupResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P12_t; +typedef struct ProtocolIE_Container_1544P13 { + A_SEQUENCE_OF(struct E2setupFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P13_t; +typedef struct ProtocolIE_Container_1544P14 { + A_SEQUENCE_OF(struct ResetRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P14_t; +typedef struct ProtocolIE_Container_1544P15 { + A_SEQUENCE_OF(struct ResetResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P15_t; +typedef struct ProtocolIE_Container_1544P16 { + A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P16_t; +typedef struct ProtocolIE_Container_1544P17 { + A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P17_t; +typedef struct ProtocolIE_Container_1544P18 { + A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P18_t; +typedef struct ProtocolIE_Container_1544P19 { + A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1544P19_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1544P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1544P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1544P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1544P19_constr_39; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Container_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c new file mode 100644 index 0000000..0ce5868 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c @@ -0,0 +1,27 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerList.h" + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.h new file mode 100644 index 0000000..98b75f4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.h @@ -0,0 +1,41 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerList_H_ +#define _ProtocolIE_ContainerList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c new file mode 100644 index 0000000..98af571 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c @@ -0,0 +1,27 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerPair.h" + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.h new file mode 100644 index 0000000..41fe713 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.h @@ -0,0 +1,41 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerPair_H_ +#define _ProtocolIE_ContainerPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPair_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c new file mode 100644 index 0000000..de20b07 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c @@ -0,0 +1,27 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerPairList.h" + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000..105cef5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.h @@ -0,0 +1,41 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerPairList_H_ +#define _ProtocolIE_ContainerPairList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPairList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c new file mode 100644 index 0000000..c57f24a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c @@ -0,0 +1,7214 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Field.h" + +static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 19; +static const long asn_VAL_4_ignore = 1; +static const long asn_VAL_4_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_9_id_RICaction_Admitted_Item = 14; +static const long asn_VAL_9_ignore = 1; +static const long asn_VAL_9_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 16; +static const long asn_VAL_10_ignore = 1; +static const long asn_VAL_10_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } +}; +static const long asn_VAL_64_id_RANfunction_Item = 8; +static const long asn_VAL_64_ignore = 1; +static const long asn_VAL_64_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_RANfunction_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } +}; +static const long asn_VAL_65_id_RANfunctionID_Item = 6; +static const long asn_VAL_65_ignore = 1; +static const long asn_VAL_65_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_RANfunctionID_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } +}; +static const long asn_VAL_68_id_RANfunctionIEcause_Item = 7; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_RANfunctionIEcause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } +}; +static const long asn_VAL_1_id_RICrequestID = 29; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_1_mandatory = 2; +static const long asn_VAL_2_id_RANfunctionID = 5; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_2_mandatory = 2; +static const long asn_VAL_3_id_RICsubscriptionDetails = 30; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_3_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscriptionDetails }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscriptionDetails }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { + { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } +}; +static const long asn_VAL_5_id_RICrequestID = 29; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_5_mandatory = 2; +static const long asn_VAL_6_id_RANfunctionID = 5; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_6_mandatory = 2; +static const long asn_VAL_7_id_RICactions_Admitted = 17; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_7_mandatory = 2; +static const long asn_VAL_8_id_RICactions_NotAdmitted = 18; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_8_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } +}; +static const long asn_VAL_11_id_RICrequestID = 29; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_11_mandatory = 2; +static const long asn_VAL_12_id_RANfunctionID = 5; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_12_mandatory = 2; +static const long asn_VAL_13_id_RICactions_NotAdmitted = 18; +static const long asn_VAL_13_reject = 0; +static const long asn_VAL_13_mandatory = 2; +static const long asn_VAL_14_id_CriticalityDiagnostics = 2; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_14_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } +}; +static const long asn_VAL_15_id_RICrequestID = 29; +static const long asn_VAL_15_reject = 0; +static const long asn_VAL_15_mandatory = 2; +static const long asn_VAL_16_id_RANfunctionID = 5; +static const long asn_VAL_16_reject = 0; +static const long asn_VAL_16_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } +}; +static const long asn_VAL_17_id_RICrequestID = 29; +static const long asn_VAL_17_reject = 0; +static const long asn_VAL_17_mandatory = 2; +static const long asn_VAL_18_id_RANfunctionID = 5; +static const long asn_VAL_18_reject = 0; +static const long asn_VAL_18_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } +}; +static const long asn_VAL_19_id_RICrequestID = 29; +static const long asn_VAL_19_reject = 0; +static const long asn_VAL_19_mandatory = 2; +static const long asn_VAL_20_id_RANfunctionID = 5; +static const long asn_VAL_20_reject = 0; +static const long asn_VAL_20_mandatory = 2; +static const long asn_VAL_21_id_Cause = 1; +static const long asn_VAL_21_ignore = 1; +static const long asn_VAL_21_mandatory = 2; +static const long asn_VAL_22_id_CriticalityDiagnostics = 2; +static const long asn_VAL_22_ignore = 1; +static const long asn_VAL_22_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } +}; +static const long asn_VAL_23_id_RICrequestID = 29; +static const long asn_VAL_23_reject = 0; +static const long asn_VAL_23_mandatory = 2; +static const long asn_VAL_24_id_RANfunctionID = 5; +static const long asn_VAL_24_reject = 0; +static const long asn_VAL_24_mandatory = 2; +static const long asn_VAL_25_id_RICactionID = 15; +static const long asn_VAL_25_reject = 0; +static const long asn_VAL_25_mandatory = 2; +static const long asn_VAL_26_id_RICindicationSN = 27; +static const long asn_VAL_26_reject = 0; +static const long asn_VAL_26_optional = 0; +static const long asn_VAL_27_id_RICindicationType = 28; +static const long asn_VAL_27_reject = 0; +static const long asn_VAL_27_mandatory = 2; +static const long asn_VAL_28_id_RICindicationHeader = 25; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_RICindicationMessage = 26; +static const long asn_VAL_29_reject = 0; +static const long asn_VAL_29_mandatory = 2; +static const long asn_VAL_30_id_RICcallProcessID = 20; +static const long asn_VAL_30_reject = 0; +static const long asn_VAL_30_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, + { "&Value", aioc__type, &asn_DEF_RICactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RICindicationSN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationSN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICindicationType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } +}; +static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { + { 8, 4, asn_IOS_RICindication_IEs_1_rows } +}; +static const long asn_VAL_31_id_RICrequestID = 29; +static const long asn_VAL_31_reject = 0; +static const long asn_VAL_31_mandatory = 2; +static const long asn_VAL_32_id_RANfunctionID = 5; +static const long asn_VAL_32_reject = 0; +static const long asn_VAL_32_mandatory = 2; +static const long asn_VAL_33_id_RICcallProcessID = 20; +static const long asn_VAL_33_reject = 0; +static const long asn_VAL_33_optional = 0; +static const long asn_VAL_34_id_RICcontrolHeader = 22; +static const long asn_VAL_34_reject = 0; +static const long asn_VAL_34_mandatory = 2; +static const long asn_VAL_35_id_RICcontrolMessage = 23; +static const long asn_VAL_35_reject = 0; +static const long asn_VAL_35_mandatory = 2; +static const long asn_VAL_36_id_RICcontrolAckRequest = 21; +static const long asn_VAL_36_reject = 0; +static const long asn_VAL_36_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RICcontrolHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcontrolMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolAckRequest }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { + { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } +}; +static const long asn_VAL_37_id_RICrequestID = 29; +static const long asn_VAL_37_reject = 0; +static const long asn_VAL_37_mandatory = 2; +static const long asn_VAL_38_id_RANfunctionID = 5; +static const long asn_VAL_38_reject = 0; +static const long asn_VAL_38_mandatory = 2; +static const long asn_VAL_39_id_RICcallProcessID = 20; +static const long asn_VAL_39_reject = 0; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_RICcontrolStatus = 24; +static const long asn_VAL_40_reject = 0; +static const long asn_VAL_40_mandatory = 2; +static const long asn_VAL_41_id_RICcontrolOutcome = 32; +static const long asn_VAL_41_reject = 0; +static const long asn_VAL_41_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RICcontrolStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICcontrolOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { + { 5, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_42_id_RICrequestID = 29; +static const long asn_VAL_42_reject = 0; +static const long asn_VAL_42_mandatory = 2; +static const long asn_VAL_43_id_RANfunctionID = 5; +static const long asn_VAL_43_reject = 0; +static const long asn_VAL_43_mandatory = 2; +static const long asn_VAL_44_id_RICcallProcessID = 20; +static const long asn_VAL_44_reject = 0; +static const long asn_VAL_44_optional = 0; +static const long asn_VAL_45_id_Cause = 1; +static const long asn_VAL_45_ignore = 1; +static const long asn_VAL_45_mandatory = 2; +static const long asn_VAL_46_id_RICcontrolOutcome = 32; +static const long asn_VAL_46_reject = 0; +static const long asn_VAL_46_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_RICcontrolOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { + { 5, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } +}; +static const long asn_VAL_47_id_RICrequestID = 29; +static const long asn_VAL_47_reject = 0; +static const long asn_VAL_47_optional = 0; +static const long asn_VAL_48_id_RANfunctionID = 5; +static const long asn_VAL_48_reject = 0; +static const long asn_VAL_48_optional = 0; +static const long asn_VAL_49_id_Cause = 1; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_optional = 0; +static const long asn_VAL_50_id_CriticalityDiagnostics = 2; +static const long asn_VAL_50_ignore = 1; +static const long asn_VAL_50_optional = 0; +static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional } +}; +static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { + { 4, 4, asn_IOS_ErrorIndication_IEs_1_rows } +}; +static const long asn_VAL_51_id_GlobalE2node_ID = 3; +static const long asn_VAL_51_reject = 0; +static const long asn_VAL_51_mandatory = 2; +static const long asn_VAL_52_id_RANfunctionsAdded = 10; +static const long asn_VAL_52_reject = 0; +static const long asn_VAL_52_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_GlobalE2node_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupRequestIEs_1[] = { + { 2, 4, asn_IOS_E2setupRequestIEs_1_rows } +}; +static const long asn_VAL_53_id_GlobalRIC_ID = 4; +static const long asn_VAL_53_reject = 0; +static const long asn_VAL_53_mandatory = 2; +static const long asn_VAL_54_id_RANfunctionsAccepted = 9; +static const long asn_VAL_54_reject = 0; +static const long asn_VAL_54_optional = 0; +static const long asn_VAL_55_id_RANfunctionsRejected = 13; +static const long asn_VAL_55_reject = 0; +static const long asn_VAL_55_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_GlobalRIC_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalRIC_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupResponseIEs_1[] = { + { 3, 4, asn_IOS_E2setupResponseIEs_1_rows } +}; +static const long asn_VAL_56_id_Cause = 1; +static const long asn_VAL_56_ignore = 1; +static const long asn_VAL_56_mandatory = 2; +static const long asn_VAL_57_id_TimeToWait = 31; +static const long asn_VAL_57_ignore = 1; +static const long asn_VAL_57_optional = 0; +static const long asn_VAL_58_id_CriticalityDiagnostics = 2; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupFailureIEs_1[] = { + { 3, 4, asn_IOS_E2setupFailureIEs_1_rows } +}; +static const long asn_VAL_59_id_Cause = 1; +static const long asn_VAL_59_ignore = 1; +static const long asn_VAL_59_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResetRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResetRequestIEs_1[] = { + { 1, 4, asn_IOS_ResetRequestIEs_1_rows } +}; +static const long asn_VAL_60_id_CriticalityDiagnostics = 2; +static const long asn_VAL_60_ignore = 1; +static const long asn_VAL_60_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResetResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional } +}; +static const asn_ioc_set_t asn_IOS_ResetResponseIEs_1[] = { + { 1, 4, asn_IOS_ResetResponseIEs_1_rows } +}; +static const long asn_VAL_61_id_RANfunctionsAdded = 10; +static const long asn_VAL_61_reject = 0; +static const long asn_VAL_61_optional = 0; +static const long asn_VAL_62_id_RANfunctionsModified = 12; +static const long asn_VAL_62_reject = 0; +static const long asn_VAL_62_optional = 0; +static const long asn_VAL_63_id_RANfunctionsDeleted = 11; +static const long asn_VAL_63_reject = 0; +static const long asn_VAL_63_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_RANfunctionsModified }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_RANfunctionsDeleted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } +}; +static const long asn_VAL_66_id_RANfunctionsAccepted = 9; +static const long asn_VAL_66_reject = 0; +static const long asn_VAL_66_optional = 0; +static const long asn_VAL_67_id_RANfunctionsRejected = 13; +static const long asn_VAL_67_reject = 0; +static const long asn_VAL_67_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { + { 2, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_69_id_RANfunctionsRejected = 13; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_optional = 0; +static const long asn_VAL_70_id_TimeToWait = 31; +static const long asn_VAL_70_ignore = 1; +static const long asn_VAL_70_optional = 0; +static const long asn_VAL_71_id_CriticalityDiagnostics = 2; +static const long asn_VAL_71_ignore = 1; +static const long asn_VAL_71_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_72_id_RANfunctionsAccepted = 9; +static const long asn_VAL_72_reject = 0; +static const long asn_VAL_72_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { + { 1, 4, asn_IOS_RICserviceQuery_IEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + static const int indexToPresent[] = { RICserviceUpdate_IEs__value_PR_NOTHING, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeSetup_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs__value), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_4, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 1, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_ToBeSetup_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_RICaction_ToBeSetup_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs), + offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { + "RICaction-ToBeSetup-ItemIEs", + "RICaction-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { + sizeof(struct RICaction_Admitted_ItemIEs__value), + offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_Admitted_ItemIEs__value, present), + sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_8 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_8, + 1, /* Elements count */ + &asn_SPC_value_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_Admitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_8, + select_RICaction_Admitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { + sizeof(struct RICaction_Admitted_ItemIEs), + offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { + "RICaction-Admitted-ItemIEs", + "RICaction-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs__value), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), + sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_12, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_12 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_12, + 1, /* Elements count */ + &asn_SPC_value_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_NotAdmitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_12, + select_RICaction_NotAdmitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs), + offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { + "RICaction-NotAdmitted-ItemIEs", + "RICaction-NotAdmitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunction_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunction-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { + sizeof(struct RANfunction_ItemIEs__value), + offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunction_ItemIEs__value, present), + sizeof(((struct RANfunction_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_16, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_16 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_16, + 1, /* Elements count */ + &asn_SPC_value_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunction_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_16, + select_RANfunction_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13 = { + sizeof(struct RANfunction_ItemIEs), + offsetof(struct RANfunction_ItemIEs, _asn_ctx), + asn_MAP_RANfunction_ItemIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { + "RANfunction-ItemIEs", + "RANfunction-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_ItemIEs_tags_13, + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + asn_DEF_RANfunction_ItemIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionID_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { + sizeof(struct RANfunctionID_ItemIEs__value), + offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionID_ItemIEs__value, present), + sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_20 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_20, + 1, /* Elements count */ + &asn_SPC_value_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionID_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_20, + select_RANfunctionID_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17 = { + sizeof(struct RANfunctionID_ItemIEs), + offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionID_ItemIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { + "RANfunctionID-ItemIEs", + "RANfunctionID-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_ItemIEs_tags_17, + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + asn_DEF_RANfunctionID_ItemIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionIDcause_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionIDcause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { + sizeof(struct RANfunctionIDcause_ItemIEs__value), + offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionIDcause_ItemIEs__value, present), + sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_24, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_24 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_24, + 1, /* Elements count */ + &asn_SPC_value_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionIDcause_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_24, + select_RANfunctionIDcause_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 = { + sizeof(struct RANfunctionIDcause_ItemIEs), + offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { + "RANfunctionIDcause-ItemIEs", + "RANfunctionIDcause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionDetails), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDetails, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDetails" + }, +}; +static const unsigned asn_MAP_value_to_canonical_28[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_28[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscriptionDetails */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { + sizeof(struct RICsubscriptionRequest_IEs__value), + offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionRequest_IEs__value, present), + sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_28, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_28, + asn_MAP_value_from_canonical_28, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_28 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_28, + 3, /* Elements count */ + &asn_SPC_value_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_28, + select_RICsubscriptionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_25 = { + sizeof(struct RICsubscriptionRequest_IEs), + offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionRequest_IEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { + "RICsubscriptionRequest-IEs", + "RICsubscriptionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_IEs_tags_25, + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_IEs_tags_25, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_IEs_25, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_IEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_32[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_32[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { + sizeof(struct RICsubscriptionResponse_IEs__value), + offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionResponse_IEs__value, present), + sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_32, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_32, + asn_MAP_value_from_canonical_32, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_32 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_32, + 4, /* Elements count */ + &asn_SPC_value_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_32, + select_RICsubscriptionResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_29 = { + sizeof(struct RICsubscriptionResponse_IEs), + offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionResponse_IEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { + "RICsubscriptionResponse-IEs", + "RICsubscriptionResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_IEs_tags_29, + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_IEs_tags_29, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_IEs_29, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_IEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_36[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_36[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-NotAdmitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { + sizeof(struct RICsubscriptionFailure_IEs__value), + offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionFailure_IEs__value, present), + sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_36, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_36, + asn_MAP_value_from_canonical_36, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_36 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_36, + 4, /* Elements count */ + &asn_SPC_value_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_36, + select_RICsubscriptionFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_33 = { + sizeof(struct RICsubscriptionFailure_IEs), + offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionFailure_IEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { + "RICsubscriptionFailure-IEs", + "RICsubscriptionFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_IEs_tags_33, + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_IEs_tags_33, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_IEs_33, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_IEs_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_40[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_40[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs__value), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_40, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_40, + asn_MAP_value_from_canonical_40, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_40 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_40, + 2, /* Elements count */ + &asn_SPC_value_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_40, + select_RICsubscriptionDeleteRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs), + offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { + "RICsubscriptionDeleteRequest-IEs", + "RICsubscriptionDeleteRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_IEs_37, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_44[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_44[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_44[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs__value), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_44, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_44, + asn_MAP_value_from_canonical_44, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_44 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_44, + 2, /* Elements count */ + &asn_SPC_value_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_44, + select_RICsubscriptionDeleteResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs), + offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { + "RICsubscriptionDeleteResponse-IEs", + "RICsubscriptionDeleteResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_IEs_41, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_48[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_48[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs__value), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_48, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_48, + asn_MAP_value_from_canonical_48, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_48 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_48, + 4, /* Elements count */ + &asn_SPC_value_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_48, + select_RICsubscriptionDeleteFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs), + offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { + "RICsubscriptionDeleteFailure-IEs", + "RICsubscriptionDeleteFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_IEs_45, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICindicationSN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationSN" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICindicationType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_52[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; +static const unsigned asn_MAP_value_from_canonical_52[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { + sizeof(struct RICindication_IEs__value), + offsetof(struct RICindication_IEs__value, _asn_ctx), + offsetof(struct RICindication_IEs__value, present), + sizeof(((struct RICindication_IEs__value *)0)->present), + asn_MAP_value_tag2el_52, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_52, + asn_MAP_value_from_canonical_52, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_52 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_52, + 8, /* Elements count */ + &asn_SPC_value_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICindication_IEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICindication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_52, + select_RICindication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_49 = { + sizeof(struct RICindication_IEs), + offsetof(struct RICindication_IEs, _asn_ctx), + asn_MAP_RICindication_IEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { + "RICindication-IEs", + "RICindication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_IEs_tags_49, + sizeof(asn_DEF_RICindication_IEs_tags_49) + /sizeof(asn_DEF_RICindication_IEs_tags_49[0]), /* 1 */ + asn_DEF_RICindication_IEs_tags_49, /* Same as above */ + sizeof(asn_DEF_RICindication_IEs_tags_49) + /sizeof(asn_DEF_RICindication_IEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_IEs_49, + 3, /* Elements count */ + &asn_SPC_RICindication_IEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolAckRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAckRequest" + }, +}; +static const unsigned asn_MAP_value_to_canonical_56[] = { 1, 2, 3, 4, 5, 0 }; +static const unsigned asn_MAP_value_from_canonical_56[] = { 5, 0, 1, 2, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { + sizeof(struct RICcontrolRequest_IEs__value), + offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), + offsetof(struct RICcontrolRequest_IEs__value, present), + sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_56, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_56, + asn_MAP_value_from_canonical_56, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_56 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_56, + 6, /* Elements count */ + &asn_SPC_value_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_56, + select_RICcontrolRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_53 = { + sizeof(struct RICcontrolRequest_IEs), + offsetof(struct RICcontrolRequest_IEs, _asn_ctx), + asn_MAP_RICcontrolRequest_IEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { + "RICcontrolRequest-IEs", + "RICcontrolRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_IEs_tags_53, + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53[0]), /* 1 */ + asn_DEF_RICcontrolRequest_IEs_tags_53, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_IEs_53, + 3, /* Elements count */ + &asn_SPC_RICcontrolRequest_IEs_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolOutcome" + }, +}; +static const unsigned asn_MAP_value_to_canonical_60[] = { 1, 2, 4, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_60[] = { 4, 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* RICcontrolStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { + sizeof(struct RICcontrolAcknowledge_IEs__value), + offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICcontrolAcknowledge_IEs__value, present), + sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_60, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_60, + asn_MAP_value_from_canonical_60, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_60 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_60, + 5, /* Elements count */ + &asn_SPC_value_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_60, + select_RICcontrolAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_57 = { + sizeof(struct RICcontrolAcknowledge_IEs), + offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_IEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { + "RICcontrolAcknowledge-IEs", + "RICcontrolAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_IEs_tags_57, + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_IEs_tags_57, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_IEs_57, + 3, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_IEs_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcontrolOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolOutcome" + }, +}; +static const unsigned asn_MAP_value_to_canonical_64[] = { 1, 2, 4, 0, 3 }; +static const unsigned asn_MAP_value_from_canonical_64[] = { 3, 0, 1, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { + sizeof(struct RICcontrolFailure_IEs__value), + offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), + offsetof(struct RICcontrolFailure_IEs__value, present), + sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_64, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_64, + asn_MAP_value_from_canonical_64, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_64 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_64, + 5, /* Elements count */ + &asn_SPC_value_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_64, + select_RICcontrolFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_61 = { + sizeof(struct RICcontrolFailure_IEs), + offsetof(struct RICcontrolFailure_IEs, _asn_ctx), + asn_MAP_RICcontrolFailure_IEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { + "RICcontrolFailure-IEs", + "RICcontrolFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_IEs_tags_61, + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61[0]), /* 1 */ + asn_DEF_RICcontrolFailure_IEs_tags_61, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_IEs_61, + 3, /* Elements count */ + &asn_SPC_RICcontrolFailure_IEs_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_68[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_68[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_68[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { + sizeof(struct ErrorIndication_IEs__value), + offsetof(struct ErrorIndication_IEs__value, _asn_ctx), + offsetof(struct ErrorIndication_IEs__value, present), + sizeof(((struct ErrorIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_68, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_68, + asn_MAP_value_from_canonical_68, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_68 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_68, + 4, /* Elements count */ + &asn_SPC_value_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ErrorIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_68, + select_ErrorIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_65 = { + sizeof(struct ErrorIndication_IEs), + offsetof(struct ErrorIndication_IEs, _asn_ctx), + asn_MAP_ErrorIndication_IEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { + "ErrorIndication-IEs", + "ErrorIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_IEs_tags_65, + sizeof(asn_DEF_ErrorIndication_IEs_tags_65) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_65[0]), /* 1 */ + asn_DEF_ErrorIndication_IEs_tags_65, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_IEs_tags_65) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_IEs_65, + 3, /* Elements count */ + &asn_SPC_ErrorIndication_IEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.GlobalE2node_ID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_GlobalE2node_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalE2node-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_72[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_72[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* eNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { + sizeof(struct E2setupRequestIEs__value), + offsetof(struct E2setupRequestIEs__value, _asn_ctx), + offsetof(struct E2setupRequestIEs__value, present), + sizeof(((struct E2setupRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_72, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_72, + asn_MAP_value_from_canonical_72, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_72 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_72, + 2, /* Elements count */ + &asn_SPC_value_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupRequestIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E2setupRequestIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_72, + select_E2setupRequestIEs_value_type, + { 0, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupRequestIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupRequestIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_69 = { + sizeof(struct E2setupRequestIEs), + offsetof(struct E2setupRequestIEs, _asn_ctx), + asn_MAP_E2setupRequestIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs = { + "E2setupRequestIEs", + "E2setupRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupRequestIEs_tags_69, + sizeof(asn_DEF_E2setupRequestIEs_tags_69) + /sizeof(asn_DEF_E2setupRequestIEs_tags_69[0]), /* 1 */ + asn_DEF_E2setupRequestIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_E2setupRequestIEs_tags_69) + /sizeof(asn_DEF_E2setupRequestIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupRequestIEs_69, + 3, /* Elements count */ + &asn_SPC_E2setupRequestIEs_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.GlobalRIC_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalRIC_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalRIC-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* GlobalRIC-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { + sizeof(struct E2setupResponseIEs__value), + offsetof(struct E2setupResponseIEs__value, _asn_ctx), + offsetof(struct E2setupResponseIEs__value, present), + sizeof(((struct E2setupResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_76, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_76 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_76, + 3, /* Elements count */ + &asn_SPC_value_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupResponseIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E2setupResponseIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_76, + select_E2setupResponseIEs_value_type, + { 0, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupResponseIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupResponseIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_73 = { + sizeof(struct E2setupResponseIEs), + offsetof(struct E2setupResponseIEs, _asn_ctx), + asn_MAP_E2setupResponseIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs = { + "E2setupResponseIEs", + "E2setupResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupResponseIEs_tags_73, + sizeof(asn_DEF_E2setupResponseIEs_tags_73) + /sizeof(asn_DEF_E2setupResponseIEs_tags_73[0]), /* 1 */ + asn_DEF_E2setupResponseIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_E2setupResponseIEs_tags_73) + /sizeof(asn_DEF_E2setupResponseIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupResponseIEs_73, + 3, /* Elements count */ + &asn_SPC_E2setupResponseIEs_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_80[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_80[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_80[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { + sizeof(struct E2setupFailureIEs__value), + offsetof(struct E2setupFailureIEs__value, _asn_ctx), + offsetof(struct E2setupFailureIEs__value, present), + sizeof(((struct E2setupFailureIEs__value *)0)->present), + asn_MAP_value_tag2el_80, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_80, + asn_MAP_value_from_canonical_80, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_80 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_80, + 3, /* Elements count */ + &asn_SPC_value_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupFailureIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E2setupFailureIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_80, + select_E2setupFailureIEs_value_type, + { 0, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupFailureIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupFailureIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_77 = { + sizeof(struct E2setupFailureIEs), + offsetof(struct E2setupFailureIEs, _asn_ctx), + asn_MAP_E2setupFailureIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs = { + "E2setupFailureIEs", + "E2setupFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupFailureIEs_tags_77, + sizeof(asn_DEF_E2setupFailureIEs_tags_77) + /sizeof(asn_DEF_E2setupFailureIEs_tags_77[0]), /* 1 */ + asn_DEF_E2setupFailureIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E2setupFailureIEs_tags_77) + /sizeof(asn_DEF_E2setupFailureIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupFailureIEs_77, + 3, /* Elements count */ + &asn_SPC_E2setupFailureIEs_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_84[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { + sizeof(struct ResetRequestIEs__value), + offsetof(struct ResetRequestIEs__value, _asn_ctx), + offsetof(struct ResetRequestIEs__value, present), + sizeof(((struct ResetRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_84, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_84 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_84, + 1, /* Elements count */ + &asn_SPC_value_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetRequestIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetRequestIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_84, + select_ResetRequestIEs_value_type, + { 0, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequestIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequestIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_81 = { + sizeof(struct ResetRequestIEs), + offsetof(struct ResetRequestIEs, _asn_ctx), + asn_MAP_ResetRequestIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs = { + "ResetRequestIEs", + "ResetRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequestIEs_tags_81, + sizeof(asn_DEF_ResetRequestIEs_tags_81) + /sizeof(asn_DEF_ResetRequestIEs_tags_81[0]), /* 1 */ + asn_DEF_ResetRequestIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_ResetRequestIEs_tags_81) + /sizeof(asn_DEF_ResetRequestIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequestIEs_81, + 3, /* Elements count */ + &asn_SPC_ResetRequestIEs_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { + sizeof(struct ResetResponseIEs__value), + offsetof(struct ResetResponseIEs__value, _asn_ctx), + offsetof(struct ResetResponseIEs__value, present), + sizeof(((struct ResetResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_88, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_88 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_88, + 1, /* Elements count */ + &asn_SPC_value_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetResponseIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetResponseIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_88, + select_ResetResponseIEs_value_type, + { 0, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponseIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponseIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_85 = { + sizeof(struct ResetResponseIEs), + offsetof(struct ResetResponseIEs, _asn_ctx), + asn_MAP_ResetResponseIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs = { + "ResetResponseIEs", + "ResetResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponseIEs_tags_85, + sizeof(asn_DEF_ResetResponseIEs_tags_85) + /sizeof(asn_DEF_ResetResponseIEs_tags_85[0]), /* 1 */ + asn_DEF_ResetResponseIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_ResetResponseIEs_tags_85) + /sizeof(asn_DEF_ResetResponseIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponseIEs_85, + 3, /* Elements count */ + &asn_SPC_ResetResponseIEs_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_92[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { + sizeof(struct RICserviceUpdate_IEs__value), + offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdate_IEs__value, present), + sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_92, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_92 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_92, + 2, /* Elements count */ + &asn_SPC_value_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_92, + select_RICserviceUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89 = { + sizeof(struct RICserviceUpdate_IEs), + offsetof(struct RICserviceUpdate_IEs, _asn_ctx), + asn_MAP_RICserviceUpdate_IEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { + "RICserviceUpdate-IEs", + "RICserviceUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_IEs_tags_89, + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89[0]), /* 1 */ + asn_DEF_RICserviceUpdate_IEs_tags_89, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_IEs_89, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdate_IEs_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_96[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs__value), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), + sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_96, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_96 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_96, + 2, /* Elements count */ + &asn_SPC_value_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_96, + select_RICserviceUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs), + offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { + "RICserviceUpdateAcknowledge-IEs", + "RICserviceUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_IEs_93, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_100[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_100[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsIDcause-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { + sizeof(struct RICserviceUpdateFailure_IEs__value), + offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateFailure_IEs__value, present), + sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_100, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_100, + asn_MAP_value_from_canonical_100, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_100 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_100, + 3, /* Elements count */ + &asn_SPC_value_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_100, + select_RICserviceUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97 = { + sizeof(struct RICserviceUpdateFailure_IEs), + offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_IEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { + "RICserviceUpdateFailure-IEs", + "RICserviceUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_IEs_tags_97, + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_IEs_tags_97, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_IEs_97, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_IEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { + sizeof(struct RICserviceQuery_IEs__value), + offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), + offsetof(struct RICserviceQuery_IEs__value, present), + sizeof(((struct RICserviceQuery_IEs__value *)0)->present), + asn_MAP_value_tag2el_104, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_104 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_104, + 1, /* Elements count */ + &asn_SPC_value_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceQuery_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_104, + select_RICserviceQuery_IEs_value_type, + { 0, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101 = { + sizeof(struct RICserviceQuery_IEs), + offsetof(struct RICserviceQuery_IEs, _asn_ctx), + asn_MAP_RICserviceQuery_IEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { + "RICserviceQuery-IEs", + "RICserviceQuery-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_IEs_tags_101, + sizeof(asn_DEF_RICserviceQuery_IEs_tags_101) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_101[0]), /* 1 */ + asn_DEF_RICserviceQuery_IEs_tags_101, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_IEs_tags_101) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_IEs_101, + 3, /* Elements count */ + &asn_SPC_RICserviceQuery_IEs_specs_101 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.h new file mode 100644 index 0000000..45476c8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.h @@ -0,0 +1,775 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Field_H_ +#define _ProtocolIE_Field_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICaction-ToBeSetup-Item.h" +#include "Presence.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "RICaction-Admitted-Item.h" +#include "RICaction-NotAdmitted-Item.h" +#include "RANfunction-Item.h" +#include "RANfunctionID-Item.h" +#include "RANfunctionIDcause-Item.h" +#include "RICrequestID.h" +#include "RANfunctionID.h" +#include "RICsubscriptionDetails.h" +#include "RICaction-Admitted-List.h" +#include "RICaction-NotAdmitted-List.h" +#include "CriticalityDiagnostics.h" +#include "Cause.h" +#include "RICactionID.h" +#include "RICindicationSN.h" +#include "RICindicationType.h" +#include "RICindicationHeader.h" +#include "RICindicationMessage.h" +#include "RICcallProcessID.h" +#include "RICcontrolHeader.h" +#include "RICcontrolMessage.h" +#include "RICcontrolAckRequest.h" +#include "RICcontrolStatus.h" +#include "RICcontrolOutcome.h" +#include "GlobalE2node-ID.h" +#include "RANfunctions-List.h" +#include "GlobalRIC-ID.h" +#include "RANfunctionsID-List.h" +#include "RANfunctionsIDcause-List.h" +#include "TimeToWait.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { + RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item +} RICaction_ToBeSetup_ItemIEs__value_PR; +typedef enum RICaction_Admitted_ItemIEs__value_PR { + RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item +} RICaction_Admitted_ItemIEs__value_PR; +typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { + RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item +} RICaction_NotAdmitted_ItemIEs__value_PR; +typedef enum RANfunction_ItemIEs__value_PR { + RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunction_ItemIEs__value_PR_RANfunction_Item +} RANfunction_ItemIEs__value_PR; +typedef enum RANfunctionID_ItemIEs__value_PR { + RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item +} RANfunctionID_ItemIEs__value_PR; +typedef enum RANfunctionIDcause_ItemIEs__value_PR { + RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item +} RANfunctionIDcause_ItemIEs__value_PR; +typedef enum RICsubscriptionRequest_IEs__value_PR { + RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionRequest_IEs__value_PR_RICrequestID, + RICsubscriptionRequest_IEs__value_PR_RANfunctionID, + RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails +} RICsubscriptionRequest_IEs__value_PR; +typedef enum RICsubscriptionResponse_IEs__value_PR { + RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionResponse_IEs__value_PR_RICrequestID, + RICsubscriptionResponse_IEs__value_PR_RANfunctionID, + RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, + RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List +} RICsubscriptionResponse_IEs__value_PR; +typedef enum RICsubscriptionFailure_IEs__value_PR { + RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionFailure_IEs__value_PR_RICrequestID, + RICsubscriptionFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List, + RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionFailure_IEs__value_PR; +typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { + RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteRequest_IEs__value_PR; +typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { + RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteResponse_IEs__value_PR; +typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { + RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionDeleteFailure_IEs__value_PR_Cause, + RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionDeleteFailure_IEs__value_PR; +typedef enum RICindication_IEs__value_PR { + RICindication_IEs__value_PR_NOTHING, /* No components present */ + RICindication_IEs__value_PR_RICrequestID, + RICindication_IEs__value_PR_RANfunctionID, + RICindication_IEs__value_PR_RICactionID, + RICindication_IEs__value_PR_RICindicationSN, + RICindication_IEs__value_PR_RICindicationType, + RICindication_IEs__value_PR_RICindicationHeader, + RICindication_IEs__value_PR_RICindicationMessage, + RICindication_IEs__value_PR_RICcallProcessID +} RICindication_IEs__value_PR; +typedef enum RICcontrolRequest_IEs__value_PR { + RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolRequest_IEs__value_PR_RICrequestID, + RICcontrolRequest_IEs__value_PR_RANfunctionID, + RICcontrolRequest_IEs__value_PR_RICcallProcessID, + RICcontrolRequest_IEs__value_PR_RICcontrolHeader, + RICcontrolRequest_IEs__value_PR_RICcontrolMessage, + RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest +} RICcontrolRequest_IEs__value_PR; +typedef enum RICcontrolAcknowledge_IEs__value_PR { + RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolAcknowledge_IEs__value_PR_RICrequestID, + RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, + RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolOutcome +} RICcontrolAcknowledge_IEs__value_PR; +typedef enum RICcontrolFailure_IEs__value_PR { + RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolFailure_IEs__value_PR_RICrequestID, + RICcontrolFailure_IEs__value_PR_RANfunctionID, + RICcontrolFailure_IEs__value_PR_RICcallProcessID, + RICcontrolFailure_IEs__value_PR_Cause, + RICcontrolFailure_IEs__value_PR_RICcontrolOutcome +} RICcontrolFailure_IEs__value_PR; +typedef enum ErrorIndication_IEs__value_PR { + ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ + ErrorIndication_IEs__value_PR_RICrequestID, + ErrorIndication_IEs__value_PR_RANfunctionID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics +} ErrorIndication_IEs__value_PR; +typedef enum E2setupRequestIEs__value_PR { + E2setupRequestIEs__value_PR_NOTHING, /* No components present */ + E2setupRequestIEs__value_PR_GlobalE2node_ID, + E2setupRequestIEs__value_PR_RANfunctions_List +} E2setupRequestIEs__value_PR; +typedef enum E2setupResponseIEs__value_PR { + E2setupResponseIEs__value_PR_NOTHING, /* No components present */ + E2setupResponseIEs__value_PR_GlobalRIC_ID, + E2setupResponseIEs__value_PR_RANfunctionsID_List, + E2setupResponseIEs__value_PR_RANfunctionsIDcause_List +} E2setupResponseIEs__value_PR; +typedef enum E2setupFailureIEs__value_PR { + E2setupFailureIEs__value_PR_NOTHING, /* No components present */ + E2setupFailureIEs__value_PR_Cause, + E2setupFailureIEs__value_PR_TimeToWait, + E2setupFailureIEs__value_PR_CriticalityDiagnostics +} E2setupFailureIEs__value_PR; +typedef enum ResetRequestIEs__value_PR { + ResetRequestIEs__value_PR_NOTHING, /* No components present */ + ResetRequestIEs__value_PR_Cause +} ResetRequestIEs__value_PR; +typedef enum ResetResponseIEs__value_PR { + ResetResponseIEs__value_PR_NOTHING, /* No components present */ + ResetResponseIEs__value_PR_CriticalityDiagnostics +} ResetResponseIEs__value_PR; +typedef enum RICserviceUpdate_IEs__value_PR { + RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List +} RICserviceUpdate_IEs__value_PR; +typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { + RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List +} RICserviceUpdateAcknowledge_IEs__value_PR; +typedef enum RICserviceUpdateFailure_IEs__value_PR { + RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateFailure_IEs__value_PR_RANfunctionsIDcause_List, + RICserviceUpdateFailure_IEs__value_PR_TimeToWait, + RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} RICserviceUpdateFailure_IEs__value_PR; +typedef enum RICserviceQuery_IEs__value_PR { + RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ + RICserviceQuery_IEs__value_PR_RANfunctionsID_List +} RICserviceQuery_IEs__value_PR; + +/* ProtocolIE-Field */ +typedef struct RICaction_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeSetup_ItemIEs__value { + RICaction_ToBeSetup_ItemIEs__value_PR present; + union RICaction_ToBeSetup_ItemIEs__value_u { + RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_ItemIEs_t; +typedef struct RICaction_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_Admitted_ItemIEs__value { + RICaction_Admitted_ItemIEs__value_PR present; + union RICaction_Admitted_ItemIEs__value_u { + RICaction_Admitted_Item_t RICaction_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_ItemIEs_t; +typedef struct RICaction_NotAdmitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_NotAdmitted_ItemIEs__value { + RICaction_NotAdmitted_ItemIEs__value_PR present; + union RICaction_NotAdmitted_ItemIEs__value_u { + RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_ItemIEs_t; +typedef struct RANfunction_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunction_ItemIEs__value { + RANfunction_ItemIEs__value_PR present; + union RANfunction_ItemIEs__value_u { + RANfunction_Item_t RANfunction_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_ItemIEs_t; +typedef struct RANfunctionID_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionID_ItemIEs__value { + RANfunctionID_ItemIEs__value_PR present; + union RANfunctionID_ItemIEs__value_u { + RANfunctionID_Item_t RANfunctionID_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_ItemIEs_t; +typedef struct RANfunctionIDcause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionIDcause_ItemIEs__value { + RANfunctionIDcause_ItemIEs__value_PR present; + union RANfunctionIDcause_ItemIEs__value_u { + RANfunctionIDcause_Item_t RANfunctionIDcause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_ItemIEs_t; +typedef struct RICsubscriptionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionRequest_IEs__value { + RICsubscriptionRequest_IEs__value_PR present; + union RICsubscriptionRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICsubscriptionDetails_t RICsubscriptionDetails; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_IEs_t; +typedef struct RICsubscriptionResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionResponse_IEs__value { + RICsubscriptionResponse_IEs__value_PR present; + union RICsubscriptionResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_Admitted_List_t RICaction_Admitted_List; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_IEs_t; +typedef struct RICsubscriptionFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionFailure_IEs__value { + RICsubscriptionFailure_IEs__value_PR present; + union RICsubscriptionFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_IEs_t; +typedef struct RICsubscriptionDeleteRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteRequest_IEs__value { + RICsubscriptionDeleteRequest_IEs__value_PR present; + union RICsubscriptionDeleteRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_IEs_t; +typedef struct RICsubscriptionDeleteResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteResponse_IEs__value { + RICsubscriptionDeleteResponse_IEs__value_PR present; + union RICsubscriptionDeleteResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_IEs_t; +typedef struct RICsubscriptionDeleteFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteFailure_IEs__value { + RICsubscriptionDeleteFailure_IEs__value_PR present; + union RICsubscriptionDeleteFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_IEs_t; +typedef struct RICindication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICindication_IEs__value { + RICindication_IEs__value_PR present; + union RICindication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactionID_t RICactionID; + RICindicationSN_t RICindicationSN; + RICindicationType_t RICindicationType; + RICindicationHeader_t RICindicationHeader; + RICindicationMessage_t RICindicationMessage; + RICcallProcessID_t RICcallProcessID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_IEs_t; +typedef struct RICcontrolRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolRequest_IEs__value { + RICcontrolRequest_IEs__value_PR present; + union RICcontrolRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolHeader_t RICcontrolHeader; + RICcontrolMessage_t RICcontrolMessage; + RICcontrolAckRequest_t RICcontrolAckRequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_IEs_t; +typedef struct RICcontrolAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolAcknowledge_IEs__value { + RICcontrolAcknowledge_IEs__value_PR present; + union RICcontrolAcknowledge_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolStatus_t RICcontrolStatus; + RICcontrolOutcome_t RICcontrolOutcome; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_IEs_t; +typedef struct RICcontrolFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolFailure_IEs__value { + RICcontrolFailure_IEs__value_PR present; + union RICcontrolFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + Cause_t Cause; + RICcontrolOutcome_t RICcontrolOutcome; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_IEs_t; +typedef struct ErrorIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ErrorIndication_IEs__value { + ErrorIndication_IEs__value_PR present; + union ErrorIndication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_IEs_t; +typedef struct E2setupRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupRequestIEs__value { + E2setupRequestIEs__value_PR present; + union E2setupRequestIEs__value_u { + GlobalE2node_ID_t GlobalE2node_ID; + RANfunctions_List_t RANfunctions_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupRequestIEs_t; +typedef struct E2setupResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupResponseIEs__value { + E2setupResponseIEs__value_PR present; + union E2setupResponseIEs__value_u { + GlobalRIC_ID_t GlobalRIC_ID; + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupResponseIEs_t; +typedef struct E2setupFailureIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupFailureIEs__value { + E2setupFailureIEs__value_PR present; + union E2setupFailureIEs__value_u { + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupFailureIEs_t; +typedef struct ResetRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetRequestIEs__value { + ResetRequestIEs__value_PR present; + union ResetRequestIEs__value_u { + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequestIEs_t; +typedef struct ResetResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetResponseIEs__value { + ResetResponseIEs__value_PR present; + union ResetResponseIEs__value_u { + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponseIEs_t; +typedef struct RICserviceUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdate_IEs__value { + RICserviceUpdate_IEs__value_PR present; + union RICserviceUpdate_IEs__value_u { + RANfunctions_List_t RANfunctions_List; + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_IEs_t; +typedef struct RICserviceUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateAcknowledge_IEs__value { + RICserviceUpdateAcknowledge_IEs__value_PR present; + union RICserviceUpdateAcknowledge_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_IEs_t; +typedef struct RICserviceUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateFailure_IEs__value { + RICserviceUpdateFailure_IEs__value_PR present; + union RICserviceUpdateFailure_IEs__value_u { + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_IEs_t; +typedef struct RICserviceQuery_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceQuery_IEs__value { + RICserviceQuery_IEs__value_PR present; + union RICserviceQuery_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_IEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_25; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_29; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_33; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_49; +extern asn_TYPE_member_t asn_MBR_RICindication_IEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_53; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_57; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_61; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_65; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_E2setupRequestIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_E2setupResponseIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E2setupFailureIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_ResetRequestIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_ResetResponseIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Field_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c new file mode 100644 index 0000000..c8f485b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c @@ -0,0 +1,27 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-FieldPair.h" + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.h new file mode 100644 index 0000000..2c2d474 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.h @@ -0,0 +1,41 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_FieldPair_H_ +#define _ProtocolIE_FieldPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_FieldPair_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c new file mode 100644 index 0000000..99766e6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ID.h" + +int +ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.h new file mode 100644 index 0000000..60073cb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.h @@ -0,0 +1,94 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ID_H_ +#define _ProtocolIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-ID */ +typedef long ProtocolIE_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; +asn_struct_free_f ProtocolIE_ID_free; +asn_struct_print_f ProtocolIE_ID_print; +asn_constr_check_f ProtocolIE_ID_constraint; +ber_type_decoder_f ProtocolIE_ID_decode_ber; +der_type_encoder_f ProtocolIE_ID_encode_der; +xer_type_decoder_f ProtocolIE_ID_decode_xer; +xer_type_encoder_f ProtocolIE_ID_encode_xer; +per_type_decoder_f ProtocolIE_ID_decode_uper; +per_type_encoder_f ProtocolIE_ID_encode_uper; +per_type_decoder_f ProtocolIE_ID_decode_aper; +per_type_encoder_f ProtocolIE_ID_encode_aper; +#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)1) +#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)2) +#define ProtocolIE_ID_id_GlobalE2node_ID ((ProtocolIE_ID_t)3) +#define ProtocolIE_ID_id_GlobalRIC_ID ((ProtocolIE_ID_t)4) +#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)5) +#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)6) +#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)7) +#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)8) +#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)9) +#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)10) +#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)11) +#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)12) +#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)13) +#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)14) +#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)15) +#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)16) +#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)17) +#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)18) +#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)19) +#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)20) +#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)21) +#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)22) +#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)23) +#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)24) +#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)25) +#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)26) +#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)27) +#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)28) +#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)29) +#define ProtocolIE_ID_id_RICsubscriptionDetails ((ProtocolIE_ID_t)30) +#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)31) +#define ProtocolIE_ID_id_RICcontrolOutcome ((ProtocolIE_ID_t)32) + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c new file mode 100644 index 0000000..f923a64 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c @@ -0,0 +1,165 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-SingleContainer.h" + +/* + * This type is implemented using RICaction_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_NotAdmitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunction_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionID_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionIDcause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P0 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P0_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P1 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P1_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P2 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P2_tags_3[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P3 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P3_tags_4[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P4 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P4_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P5 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1547P5_tags_6[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.h new file mode 100644 index 0000000..b4ec9ba --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.h @@ -0,0 +1,126 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_SingleContainer_H_ +#define _ProtocolIE_SingleContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-SingleContainer */ +typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_SingleContainer_1547P0_t; +typedef RICaction_Admitted_ItemIEs_t ProtocolIE_SingleContainer_1547P1_t; +typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_SingleContainer_1547P2_t; +typedef RANfunction_ItemIEs_t ProtocolIE_SingleContainer_1547P3_t; +typedef RANfunctionID_ItemIEs_t ProtocolIE_SingleContainer_1547P4_t; +typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_SingleContainer_1547P5_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P0; +asn_struct_free_f ProtocolIE_SingleContainer_1547P0_free; +asn_struct_print_f ProtocolIE_SingleContainer_1547P0_print; +asn_constr_check_f ProtocolIE_SingleContainer_1547P0_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1547P0_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1547P0_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1547P0_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1547P0_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1547P0_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P0_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1547P0_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P1; +asn_struct_free_f ProtocolIE_SingleContainer_1547P1_free; +asn_struct_print_f ProtocolIE_SingleContainer_1547P1_print; +asn_constr_check_f ProtocolIE_SingleContainer_1547P1_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1547P1_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1547P1_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1547P1_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1547P1_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1547P1_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P1_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1547P1_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P2; +asn_struct_free_f ProtocolIE_SingleContainer_1547P2_free; +asn_struct_print_f ProtocolIE_SingleContainer_1547P2_print; +asn_constr_check_f ProtocolIE_SingleContainer_1547P2_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1547P2_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1547P2_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1547P2_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1547P2_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1547P2_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P2_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1547P2_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P3; +asn_struct_free_f ProtocolIE_SingleContainer_1547P3_free; +asn_struct_print_f ProtocolIE_SingleContainer_1547P3_print; +asn_constr_check_f ProtocolIE_SingleContainer_1547P3_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1547P3_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1547P3_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1547P3_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1547P3_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1547P3_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P3_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1547P3_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P4; +asn_struct_free_f ProtocolIE_SingleContainer_1547P4_free; +asn_struct_print_f ProtocolIE_SingleContainer_1547P4_print; +asn_constr_check_f ProtocolIE_SingleContainer_1547P4_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1547P4_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1547P4_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1547P4_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1547P4_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1547P4_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P4_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1547P4_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1547P5; +asn_struct_free_f ProtocolIE_SingleContainer_1547P5_free; +asn_struct_print_f ProtocolIE_SingleContainer_1547P5_print; +asn_constr_check_f ProtocolIE_SingleContainer_1547P5_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1547P5_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1547P5_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1547P5_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1547P5_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1547P5_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P5_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1547P5_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1547P5_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_SingleContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c new file mode 100644 index 0000000..138cc65 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunction-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionRevision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionRevision, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionRevision" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranFunctionRevision */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { + sizeof(struct RANfunction_Item), + offsetof(struct RANfunction_Item, _asn_ctx), + asn_MAP_RANfunction_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { + "RANfunction-Item", + "RANfunction-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Item_tags_1, + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_Item_1, + 3, /* Elements count */ + &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.h new file mode 100644 index 0000000..c36aad1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunction_Item_H_ +#define _RANfunction_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionDefinition.h" +#include "RANfunctionRevision.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Item */ +typedef struct RANfunction_Item { + RANfunctionID_t ranFunctionID; + RANfunctionDefinition_t ranFunctionDefinition; + RANfunctionRevision_t ranFunctionRevision; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c new file mode 100644 index 0000000..8237cae --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { + "RANfunctionDefinition", + "RANfunctionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RANfunctionDefinition_tags_1, + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.h new file mode 100644 index 0000000..9afa684 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionDefinition_H_ +#define _RANfunctionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionDefinition */ +typedef OCTET_STRING_t RANfunctionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; +asn_struct_free_f RANfunctionDefinition_free; +asn_struct_print_f RANfunctionDefinition_print; +asn_constr_check_f RANfunctionDefinition_constraint; +ber_type_decoder_f RANfunctionDefinition_decode_ber; +der_type_encoder_f RANfunctionDefinition_encode_der; +xer_type_decoder_f RANfunctionDefinition_decode_xer; +xer_type_encoder_f RANfunctionDefinition_encode_xer; +per_type_decoder_f RANfunctionDefinition_decode_uper; +per_type_encoder_f RANfunctionDefinition_encode_uper; +per_type_decoder_f RANfunctionDefinition_decode_aper; +per_type_encoder_f RANfunctionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c new file mode 100644 index 0000000..09c95b4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionID-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionRevision), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionRevision, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionRevision" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionRevision */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { + sizeof(struct RANfunctionID_Item), + offsetof(struct RANfunctionID_Item, _asn_ctx), + asn_MAP_RANfunctionID_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { + "RANfunctionID-Item", + "RANfunctionID-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_Item_tags_1, + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.h new file mode 100644 index 0000000..267662f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionID_Item_H_ +#define _RANfunctionID_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionRevision.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID-Item */ +typedef struct RANfunctionID_Item { + RANfunctionID_t ranFunctionID; + RANfunctionRevision_t ranFunctionRevision; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c new file mode 100644 index 0000000..7951c18 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionID.h" + +int +RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { + "RANfunctionID", + "RANfunctionID", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionID_tags_1, + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.h new file mode 100644 index 0000000..718e86f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionID_H_ +#define _RANfunctionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID */ +typedef long RANfunctionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; +asn_struct_free_f RANfunctionID_free; +asn_struct_print_f RANfunctionID_print; +asn_constr_check_f RANfunctionID_constraint; +ber_type_decoder_f RANfunctionID_decode_ber; +der_type_encoder_f RANfunctionID_encode_der; +xer_type_decoder_f RANfunctionID_decode_xer; +xer_type_encoder_f RANfunctionID_encode_xer; +per_type_decoder_f RANfunctionID_decode_uper; +per_type_encoder_f RANfunctionID_encode_uper; +per_type_decoder_f RANfunctionID_decode_aper; +per_type_encoder_f RANfunctionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c new file mode 100644 index 0000000..3d11388 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionIDcause-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { + sizeof(struct RANfunctionIDcause_Item), + offsetof(struct RANfunctionIDcause_Item, _asn_ctx), + asn_MAP_RANfunctionIDcause_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { + "RANfunctionIDcause-Item", + "RANfunctionIDcause-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_Item_tags_1, + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.h new file mode 100644 index 0000000..61e0d6d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionIDcause_Item_H_ +#define _RANfunctionIDcause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionIDcause-Item */ +typedef struct RANfunctionIDcause_Item { + RANfunctionID_t ranFunctionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionIDcause_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c new file mode 100644 index 0000000..9bdb149 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionRevision.h" + +int +RANfunctionRevision_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionRevision_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision = { + "RANfunctionRevision", + "RANfunctionRevision", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionRevision_tags_1, + sizeof(asn_DEF_RANfunctionRevision_tags_1) + /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionRevision_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionRevision_tags_1) + /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionRevision_constr_1, RANfunctionRevision_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.h new file mode 100644 index 0000000..77b0484 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionRevision_H_ +#define _RANfunctionRevision_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionRevision */ +typedef long RANfunctionRevision_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision; +asn_struct_free_f RANfunctionRevision_free; +asn_struct_print_f RANfunctionRevision_print; +asn_constr_check_f RANfunctionRevision_constraint; +ber_type_decoder_f RANfunctionRevision_decode_ber; +der_type_encoder_f RANfunctionRevision_encode_der; +xer_type_decoder_f RANfunctionRevision_decode_xer; +xer_type_encoder_f RANfunctionRevision_encode_xer; +per_type_decoder_f RANfunctionRevision_decode_uper; +per_type_encoder_f RANfunctionRevision_encode_uper; +per_type_decoder_f RANfunctionRevision_decode_aper; +per_type_encoder_f RANfunctionRevision_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionRevision_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c new file mode 100644 index 0000000..820c4cb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctions-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1547P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { + sizeof(struct RANfunctions_List), + offsetof(struct RANfunctions_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { + "RANfunctions-List", + "RANfunctions-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctions_List_tags_1, + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctions_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctions_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.h new file mode 100644 index 0000000..6fe6f41 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.h @@ -0,0 +1,59 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctions_List_H_ +#define _RANfunctions_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctions-List */ +typedef struct RANfunctions_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctions_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctions_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c new file mode 100644 index 0000000..5234dd0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionsID-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1547P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { + sizeof(struct RANfunctionsID_List), + offsetof(struct RANfunctionsID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { + "RANfunctionsID-List", + "RANfunctionsID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsID_List_tags_1, + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsID_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.h new file mode 100644 index 0000000..065ba2b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.h @@ -0,0 +1,59 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionsID_List_H_ +#define _RANfunctionsID_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctionsID-List */ +typedef struct RANfunctionsID_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsID_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c new file mode 100644 index 0000000..48ccf8c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionsIDcause-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1547P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { + sizeof(struct RANfunctionsIDcause_List), + offsetof(struct RANfunctionsIDcause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { + "RANfunctionsIDcause-List", + "RANfunctionsIDcause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsIDcause_List_tags_1, + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsIDcause_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.h new file mode 100644 index 0000000..6e3fa92 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.h @@ -0,0 +1,59 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionsIDcause_List_H_ +#define _RANfunctionsIDcause_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctionsIDcause-List */ +typedef struct RANfunctionsIDcause_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsIDcause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsIDcause_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c new file mode 100644 index 0000000..b499807 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-Admitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { + sizeof(struct RICaction_Admitted_Item), + offsetof(struct RICaction_Admitted_Item, _asn_ctx), + asn_MAP_RICaction_Admitted_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { + "RICaction-Admitted-Item", + "RICaction-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_Item_tags_1, + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.h new file mode 100644 index 0000000..6905cbb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_Admitted_Item_H_ +#define _RICaction_Admitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-Admitted-Item */ +typedef struct RICaction_Admitted_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c new file mode 100644 index 0000000..803b2dc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-Admitted-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1547P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { + sizeof(struct RICaction_Admitted_List), + offsetof(struct RICaction_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { + "RICaction-Admitted-List", + "RICaction-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_Admitted_List_tags_1, + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.h new file mode 100644 index 0000000..18e7140 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.h @@ -0,0 +1,59 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_Admitted_List_H_ +#define _RICaction_Admitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICaction-Admitted-List */ +typedef struct RICaction_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c new file mode 100644 index 0000000..711b736 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-NotAdmitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { + sizeof(struct RICaction_NotAdmitted_Item), + offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { + "RICaction-NotAdmitted-Item", + "RICaction-NotAdmitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_Item_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.h new file mode 100644 index 0000000..01faa14 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_NotAdmitted_Item_H_ +#define _RICaction_NotAdmitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-NotAdmitted-Item */ +typedef struct RICaction_NotAdmitted_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c new file mode 100644 index 0000000..41f05e7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-NotAdmitted-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1547P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { + sizeof(struct RICaction_NotAdmitted_List), + offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { + "RICaction-NotAdmitted-List", + "RICaction-NotAdmitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_NotAdmitted_List_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_NotAdmitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.h new file mode 100644 index 0000000..d170c66 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.h @@ -0,0 +1,59 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_NotAdmitted_List_H_ +#define _RICaction_NotAdmitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICaction-NotAdmitted-List */ +typedef struct RICaction_NotAdmitted_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c new file mode 100644 index 0000000..271583b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c @@ -0,0 +1,101 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-ToBeSetup-Item.h" + +#include "RICsubsequentAction.h" +static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionType" + }, + { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, +}; +static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { + sizeof(struct RICaction_ToBeSetup_Item), + offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { + "RICaction-ToBeSetup-Item", + "RICaction-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_Item_1, + 4, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.h new file mode 100644 index 0000000..d520239 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_ToBeSetup_Item_H_ +#define _RICaction_ToBeSetup_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionType.h" +#include "RICactionDefinition.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeSetup-Item */ +typedef struct RICaction_ToBeSetup_Item { + RICactionID_t ricActionID; + RICactionType_t ricActionType; + RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeSetup_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c new file mode 100644 index 0000000..0797e0e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { + "RICactionDefinition", + "RICactionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICactionDefinition_tags_1, + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICactionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.h new file mode 100644 index 0000000..7fc3d54 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionDefinition_H_ +#define _RICactionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionDefinition */ +typedef OCTET_STRING_t RICactionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; +asn_struct_free_f RICactionDefinition_free; +asn_struct_print_f RICactionDefinition_print; +asn_constr_check_f RICactionDefinition_constraint; +ber_type_decoder_f RICactionDefinition_decode_ber; +der_type_encoder_f RICactionDefinition_encode_der; +xer_type_decoder_f RICactionDefinition_decode_xer; +xer_type_encoder_f RICactionDefinition_encode_xer; +per_type_decoder_f RICactionDefinition_decode_uper; +per_type_encoder_f RICactionDefinition_encode_uper; +per_type_decoder_f RICactionDefinition_decode_aper; +per_type_encoder_f RICactionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c new file mode 100644 index 0000000..d6d8b9b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionID.h" + +int +RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionID = { + "RICactionID", + "RICactionID", + &asn_OP_NativeInteger, + asn_DEF_RICactionID_tags_1, + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + asn_DEF_RICactionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.h new file mode 100644 index 0000000..b5a5aa1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionID_H_ +#define _RICactionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionID */ +typedef long RICactionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionID; +asn_struct_free_f RICactionID_free; +asn_struct_print_f RICactionID_print; +asn_constr_check_f RICactionID_constraint; +ber_type_decoder_f RICactionID_decode_ber; +der_type_encoder_f RICactionID_encode_der; +xer_type_decoder_f RICactionID_decode_xer; +xer_type_encoder_f RICactionID_encode_xer; +per_type_decoder_f RICactionID_decode_uper; +per_type_encoder_f RICactionID_encode_uper; +per_type_decoder_f RICactionID_decode_aper; +per_type_encoder_f RICactionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c new file mode 100644 index 0000000..34ba183 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c @@ -0,0 +1,75 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" }, + { 2, 6, "policy" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { + 1, /* insert(1) */ + 2, /* policy(2) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { + asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionType = { + "RICactionType", + "RICactionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICactionType_tags_1, + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + asn_DEF_RICactionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICactionType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.h new file mode 100644 index 0000000..cc26eaf --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionType_H_ +#define _RICactionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICactionType { + RICactionType_report = 0, + RICactionType_insert = 1, + RICactionType_policy = 2 + /* + * Enumeration is extensible + */ +} e_RICactionType; + +/* RICactionType */ +typedef long RICactionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; +asn_struct_free_f RICactionType_free; +asn_struct_print_f RICactionType_print; +asn_constr_check_f RICactionType_constraint; +ber_type_decoder_f RICactionType_decode_ber; +der_type_encoder_f RICactionType_encode_der; +xer_type_decoder_f RICactionType_decode_xer; +xer_type_encoder_f RICactionType_encode_xer; +per_type_decoder_f RICactionType_decode_uper; +per_type_encoder_f RICactionType_encode_uper; +per_type_decoder_f RICactionType_decode_aper; +per_type_encoder_f RICactionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c new file mode 100644 index 0000000..2a73dc2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactions-ToBeSetup-List.h" + +#include "ProtocolIE-SingleContainer.h" +asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1547P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { + sizeof(struct RICactions_ToBeSetup_List), + offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { + "RICactions-ToBeSetup-List", + "RICactions-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeSetup_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICactions_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.h new file mode 100644 index 0000000..caff0d2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactions_ToBeSetup_List_H_ +#define _RICactions_ToBeSetup_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ToBeSetup-List */ +typedef struct RICactions_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeSetup_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c new file mode 100644 index 0000000..b8d9256 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcallProcessID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { + "RICcallProcessID", + "RICcallProcessID", + &asn_OP_OCTET_STRING, + asn_DEF_RICcallProcessID_tags_1, + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + asn_DEF_RICcallProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.h new file mode 100644 index 0000000..5bd4b93 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcallProcessID_H_ +#define _RICcallProcessID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcallProcessID */ +typedef OCTET_STRING_t RICcallProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; +asn_struct_free_f RICcallProcessID_free; +asn_struct_print_f RICcallProcessID_print; +asn_constr_check_f RICcallProcessID_constraint; +ber_type_decoder_f RICcallProcessID_decode_ber; +der_type_encoder_f RICcallProcessID_encode_der; +xer_type_decoder_f RICcallProcessID_decode_xer; +xer_type_encoder_f RICcallProcessID_encode_xer; +per_type_decoder_f RICcallProcessID_decode_uper; +per_type_encoder_f RICcallProcessID_encode_uper; +per_type_decoder_f RICcallProcessID_decode_aper; +per_type_encoder_f RICcallProcessID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcallProcessID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c new file mode 100644 index 0000000..3b4d4c3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c @@ -0,0 +1,75 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolAckRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { + { 0, 5, "noAck" }, + { 1, 3, "ack" }, + { 2, 4, "nAck" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { + 1, /* ack(1) */ + 2, /* nAck(2) */ + 0 /* noAck(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { + asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { + "RICcontrolAckRequest", + "RICcontrolAckRequest", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolAckRequest_tags_1, + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.h new file mode 100644 index 0000000..887c444 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolAckRequest_H_ +#define _RICcontrolAckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolAckRequest { + RICcontrolAckRequest_noAck = 0, + RICcontrolAckRequest_ack = 1, + RICcontrolAckRequest_nAck = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolAckRequest; + +/* RICcontrolAckRequest */ +typedef long RICcontrolAckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; +asn_struct_free_f RICcontrolAckRequest_free; +asn_struct_print_f RICcontrolAckRequest_print; +asn_constr_check_f RICcontrolAckRequest_constraint; +ber_type_decoder_f RICcontrolAckRequest_decode_ber; +der_type_encoder_f RICcontrolAckRequest_encode_der; +xer_type_decoder_f RICcontrolAckRequest_decode_xer; +xer_type_encoder_f RICcontrolAckRequest_encode_xer; +per_type_decoder_f RICcontrolAckRequest_decode_uper; +per_type_encoder_f RICcontrolAckRequest_encode_uper; +per_type_decoder_f RICcontrolAckRequest_decode_aper; +per_type_encoder_f RICcontrolAckRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAckRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c new file mode 100644 index 0000000..656fe7a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { + sizeof(struct RICcontrolAcknowledge), + offsetof(struct RICcontrolAcknowledge, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { + "RICcontrolAcknowledge", + "RICcontrolAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_tags_1, + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.h new file mode 100644 index 0000000..13866d1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolAcknowledge_H_ +#define _RICcontrolAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolAcknowledge */ +typedef struct RICcontrolAcknowledge { + ProtocolIE_Container_1544P8_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c new file mode 100644 index 0000000..a7b916d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolFailure.h" + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { + sizeof(struct RICcontrolFailure), + offsetof(struct RICcontrolFailure, _asn_ctx), + asn_MAP_RICcontrolFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { + "RICcontrolFailure", + "RICcontrolFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_tags_1, + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.h new file mode 100644 index 0000000..b6a0346 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolFailure_H_ +#define _RICcontrolFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolFailure */ +typedef struct RICcontrolFailure { + ProtocolIE_Container_1544P9_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c new file mode 100644 index 0000000..890cbde --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { + "RICcontrolHeader", + "RICcontrolHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolHeader_tags_1, + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.h new file mode 100644 index 0000000..326321a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolHeader_H_ +#define _RICcontrolHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolHeader */ +typedef OCTET_STRING_t RICcontrolHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; +asn_struct_free_f RICcontrolHeader_free; +asn_struct_print_f RICcontrolHeader_print; +asn_constr_check_f RICcontrolHeader_constraint; +ber_type_decoder_f RICcontrolHeader_decode_ber; +der_type_encoder_f RICcontrolHeader_encode_der; +xer_type_decoder_f RICcontrolHeader_decode_xer; +xer_type_encoder_f RICcontrolHeader_encode_xer; +per_type_decoder_f RICcontrolHeader_decode_uper; +per_type_encoder_f RICcontrolHeader_encode_uper; +per_type_decoder_f RICcontrolHeader_decode_aper; +per_type_encoder_f RICcontrolHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c new file mode 100644 index 0000000..05c3409 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { + "RICcontrolMessage", + "RICcontrolMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolMessage_tags_1, + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.h new file mode 100644 index 0000000..007f0b9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolMessage_H_ +#define _RICcontrolMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolMessage */ +typedef OCTET_STRING_t RICcontrolMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; +asn_struct_free_f RICcontrolMessage_free; +asn_struct_print_f RICcontrolMessage_print; +asn_constr_check_f RICcontrolMessage_constraint; +ber_type_decoder_f RICcontrolMessage_decode_ber; +der_type_encoder_f RICcontrolMessage_encode_der; +xer_type_decoder_f RICcontrolMessage_decode_xer; +xer_type_encoder_f RICcontrolMessage_encode_xer; +per_type_decoder_f RICcontrolMessage_decode_uper; +per_type_encoder_f RICcontrolMessage_encode_uper; +per_type_decoder_f RICcontrolMessage_decode_aper; +per_type_encoder_f RICcontrolMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c new file mode 100644 index 0000000..cd1ca91 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolOutcome.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome = { + "RICcontrolOutcome", + "RICcontrolOutcome", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolOutcome_tags_1, + sizeof(asn_DEF_RICcontrolOutcome_tags_1) + /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolOutcome_tags_1) + /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.h new file mode 100644 index 0000000..bc7fe76 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolOutcome_H_ +#define _RICcontrolOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolOutcome */ +typedef OCTET_STRING_t RICcontrolOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome; +asn_struct_free_f RICcontrolOutcome_free; +asn_struct_print_f RICcontrolOutcome_print; +asn_constr_check_f RICcontrolOutcome_constraint; +ber_type_decoder_f RICcontrolOutcome_decode_ber; +der_type_encoder_f RICcontrolOutcome_encode_der; +xer_type_decoder_f RICcontrolOutcome_decode_xer; +xer_type_encoder_f RICcontrolOutcome_encode_xer; +per_type_decoder_f RICcontrolOutcome_decode_uper; +per_type_encoder_f RICcontrolOutcome_encode_uper; +per_type_decoder_f RICcontrolOutcome_decode_aper; +per_type_encoder_f RICcontrolOutcome_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolOutcome_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c new file mode 100644 index 0000000..5a8b6e8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolRequest.h" + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { + sizeof(struct RICcontrolRequest), + offsetof(struct RICcontrolRequest, _asn_ctx), + asn_MAP_RICcontrolRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { + "RICcontrolRequest", + "RICcontrolRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_tags_1, + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.h new file mode 100644 index 0000000..e809706 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolRequest_H_ +#define _RICcontrolRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolRequest */ +typedef struct RICcontrolRequest { + ProtocolIE_Container_1544P7_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c new file mode 100644 index 0000000..0d5c69d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c @@ -0,0 +1,75 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolStatus_value2enum_1[] = { + { 0, 7, "success" }, + { 1, 8, "rejected" }, + { 2, 6, "failed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolStatus_enum2value_1[] = { + 2, /* failed(2) */ + 1, /* rejected(1) */ + 0 /* success(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolStatus_specs_1 = { + asn_MAP_RICcontrolStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolStatus_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus = { + "RICcontrolStatus", + "RICcontrolStatus", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolStatus_tags_1, + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolStatus_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.h new file mode 100644 index 0000000..e9ac286 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolStatus_H_ +#define _RICcontrolStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolStatus { + RICcontrolStatus_success = 0, + RICcontrolStatus_rejected = 1, + RICcontrolStatus_failed = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolStatus; + +/* RICcontrolStatus */ +typedef long RICcontrolStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus; +asn_struct_free_f RICcontrolStatus_free; +asn_struct_print_f RICcontrolStatus_print; +asn_constr_check_f RICcontrolStatus_constraint; +ber_type_decoder_f RICcontrolStatus_decode_ber; +der_type_encoder_f RICcontrolStatus_encode_der; +xer_type_decoder_f RICcontrolStatus_decode_xer; +xer_type_encoder_f RICcontrolStatus_encode_xer; +per_type_decoder_f RICcontrolStatus_decode_uper; +per_type_encoder_f RICcontrolStatus_encode_uper; +per_type_decoder_f RICcontrolStatus_decode_aper; +per_type_encoder_f RICcontrolStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolStatus_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c new file mode 100644 index 0000000..a1cf0a2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICeventTriggerDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { + "RICeventTriggerDefinition", + "RICeventTriggerDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICeventTriggerDefinition_tags_1, + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.h new file mode 100644 index 0000000..bfece73 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICeventTriggerDefinition_H_ +#define _RICeventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICeventTriggerDefinition */ +typedef OCTET_STRING_t RICeventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; +asn_struct_free_f RICeventTriggerDefinition_free; +asn_struct_print_f RICeventTriggerDefinition_print; +asn_constr_check_f RICeventTriggerDefinition_constraint; +ber_type_decoder_f RICeventTriggerDefinition_decode_ber; +der_type_encoder_f RICeventTriggerDefinition_encode_der; +xer_type_decoder_f RICeventTriggerDefinition_decode_xer; +xer_type_encoder_f RICeventTriggerDefinition_encode_xer; +per_type_decoder_f RICeventTriggerDefinition_decode_uper; +per_type_encoder_f RICeventTriggerDefinition_encode_uper; +per_type_decoder_f RICeventTriggerDefinition_decode_aper; +per_type_encoder_f RICeventTriggerDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICeventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c new file mode 100644 index 0000000..99e8ca6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindication.h" + +asn_TYPE_member_t asn_MBR_RICindication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { + sizeof(struct RICindication), + offsetof(struct RICindication, _asn_ctx), + asn_MAP_RICindication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication = { + "RICindication", + "RICindication", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_tags_1, + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + asn_DEF_RICindication_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_1, + 1, /* Elements count */ + &asn_SPC_RICindication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.h new file mode 100644 index 0000000..bc9fb7e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindication_H_ +#define _RICindication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindication */ +typedef struct RICindication { + ProtocolIE_Container_1544P6_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindication; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; +extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c new file mode 100644 index 0000000..4e25d0c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { + "RICindicationHeader", + "RICindicationHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationHeader_tags_1, + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + asn_DEF_RICindicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.h new file mode 100644 index 0000000..eac1125 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationHeader_H_ +#define _RICindicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationHeader */ +typedef OCTET_STRING_t RICindicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; +asn_struct_free_f RICindicationHeader_free; +asn_struct_print_f RICindicationHeader_print; +asn_constr_check_f RICindicationHeader_constraint; +ber_type_decoder_f RICindicationHeader_decode_ber; +der_type_encoder_f RICindicationHeader_encode_der; +xer_type_decoder_f RICindicationHeader_decode_xer; +xer_type_encoder_f RICindicationHeader_encode_xer; +per_type_decoder_f RICindicationHeader_decode_uper; +per_type_encoder_f RICindicationHeader_encode_uper; +per_type_decoder_f RICindicationHeader_decode_aper; +per_type_encoder_f RICindicationHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c new file mode 100644 index 0000000..22f9a78 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { + "RICindicationMessage", + "RICindicationMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationMessage_tags_1, + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + asn_DEF_RICindicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.h new file mode 100644 index 0000000..c8fa342 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationMessage_H_ +#define _RICindicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationMessage */ +typedef OCTET_STRING_t RICindicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; +asn_struct_free_f RICindicationMessage_free; +asn_struct_print_f RICindicationMessage_print; +asn_constr_check_f RICindicationMessage_constraint; +ber_type_decoder_f RICindicationMessage_decode_ber; +der_type_encoder_f RICindicationMessage_encode_der; +xer_type_decoder_f RICindicationMessage_decode_xer; +xer_type_encoder_f RICindicationMessage_encode_xer; +per_type_decoder_f RICindicationMessage_decode_uper; +per_type_encoder_f RICindicationMessage_encode_uper; +per_type_decoder_f RICindicationMessage_decode_aper; +per_type_encoder_f RICindicationMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c new file mode 100644 index 0000000..4c290d5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationSN.h" + +int +RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { + "RICindicationSN", + "RICindicationSN", + &asn_OP_NativeInteger, + asn_DEF_RICindicationSN_tags_1, + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + asn_DEF_RICindicationSN_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.h new file mode 100644 index 0000000..0230b4d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationSN_H_ +#define _RICindicationSN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationSN */ +typedef long RICindicationSN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; +asn_struct_free_f RICindicationSN_free; +asn_struct_print_f RICindicationSN_print; +asn_constr_check_f RICindicationSN_constraint; +ber_type_decoder_f RICindicationSN_decode_ber; +der_type_encoder_f RICindicationSN_encode_der; +xer_type_decoder_f RICindicationSN_decode_xer; +xer_type_encoder_f RICindicationSN_encode_xer; +per_type_decoder_f RICindicationSN_decode_uper; +per_type_encoder_f RICindicationSN_encode_uper; +per_type_decoder_f RICindicationSN_decode_aper; +per_type_encoder_f RICindicationSN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationSN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c new file mode 100644 index 0000000..dd6dce8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { + 1, /* insert(1) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { + asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationType = { + "RICindicationType", + "RICindicationType", + &asn_OP_NativeEnumerated, + asn_DEF_RICindicationType_tags_1, + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + asn_DEF_RICindicationType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICindicationType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.h new file mode 100644 index 0000000..cab2f4f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationType_H_ +#define _RICindicationType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICindicationType { + RICindicationType_report = 0, + RICindicationType_insert = 1 + /* + * Enumeration is extensible + */ +} e_RICindicationType; + +/* RICindicationType */ +typedef long RICindicationType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; +asn_struct_free_f RICindicationType_free; +asn_struct_print_f RICindicationType_print; +asn_constr_check_f RICindicationType_constraint; +ber_type_decoder_f RICindicationType_decode_ber; +der_type_encoder_f RICindicationType_encode_der; +xer_type_decoder_f RICindicationType_decode_xer; +xer_type_encoder_f RICindicationType_encode_xer; +per_type_decoder_f RICindicationType_decode_uper; +per_type_encoder_f RICindicationType_encode_uper; +per_type_decoder_f RICindicationType_decode_aper; +per_type_encoder_f RICindicationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c new file mode 100644 index 0000000..90748b1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c @@ -0,0 +1,138 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICrequestID.h" + +static int +memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ricInstanceID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ricInstanceID_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricInstanceID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricInstanceID_constr_3, memb_ricInstanceID_constraint_1 }, + 0, 0, /* No default value */ + "ricInstanceID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricInstanceID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { + sizeof(struct RICrequestID), + offsetof(struct RICrequestID, _asn_ctx), + asn_MAP_RICrequestID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICrequestID = { + "RICrequestID", + "RICrequestID", + &asn_OP_SEQUENCE, + asn_DEF_RICrequestID_tags_1, + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + asn_DEF_RICrequestID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICrequestID_1, + 2, /* Elements count */ + &asn_SPC_RICrequestID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.h new file mode 100644 index 0000000..ddc9927 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICrequestID_H_ +#define _RICrequestID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICrequestID */ +typedef struct RICrequestID { + long ricRequestorID; + long ricInstanceID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICrequestID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; +extern asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1; +extern asn_TYPE_member_t asn_MBR_RICrequestID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICrequestID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c new file mode 100644 index 0000000..1050d8e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceQuery.h" + +asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { + sizeof(struct RICserviceQuery), + offsetof(struct RICserviceQuery, _asn_ctx), + asn_MAP_RICserviceQuery_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { + "RICserviceQuery", + "RICserviceQuery", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_tags_1, + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + asn_DEF_RICserviceQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_1, + 1, /* Elements count */ + &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.h new file mode 100644 index 0000000..a56290f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceQuery_H_ +#define _RICserviceQuery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceQuery */ +typedef struct RICserviceQuery { + ProtocolIE_Container_1544P19_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceQuery_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c new file mode 100644 index 0000000..4a315fb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdate.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { + sizeof(struct RICserviceUpdate), + offsetof(struct RICserviceUpdate, _asn_ctx), + asn_MAP_RICserviceUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { + "RICserviceUpdate", + "RICserviceUpdate", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_tags_1, + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.h new file mode 100644 index 0000000..7c055d2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdate_H_ +#define _RICserviceUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdate */ +typedef struct RICserviceUpdate { + ProtocolIE_Container_1544P16_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c new file mode 100644 index 0000000..515293a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { + sizeof(struct RICserviceUpdateAcknowledge), + offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { + "RICserviceUpdateAcknowledge", + "RICserviceUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_tags_1, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.h new file mode 100644 index 0000000..71e8baf --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdateAcknowledge_H_ +#define _RICserviceUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateAcknowledge */ +typedef struct RICserviceUpdateAcknowledge { + ProtocolIE_Container_1544P17_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c new file mode 100644 index 0000000..77aae31 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { + sizeof(struct RICserviceUpdateFailure), + offsetof(struct RICserviceUpdateFailure, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { + "RICserviceUpdateFailure", + "RICserviceUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_tags_1, + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.h new file mode 100644 index 0000000..0f162ca --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdateFailure_H_ +#define _RICserviceUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateFailure */ +typedef struct RICserviceUpdateFailure { + ProtocolIE_Container_1544P18_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c new file mode 100644 index 0000000..306061a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { + sizeof(struct RICsubscriptionDeleteFailure), + offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { + "RICsubscriptionDeleteFailure", + "RICsubscriptionDeleteFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.h new file mode 100644 index 0000000..6411cce --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteFailure_H_ +#define _RICsubscriptionDeleteFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteFailure */ +typedef struct RICsubscriptionDeleteFailure { + ProtocolIE_Container_1544P5_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c new file mode 100644 index 0000000..b8c4a4f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { + sizeof(struct RICsubscriptionDeleteRequest), + offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { + "RICsubscriptionDeleteRequest", + "RICsubscriptionDeleteRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.h new file mode 100644 index 0000000..fb12e5e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteRequest_H_ +#define _RICsubscriptionDeleteRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteRequest */ +typedef struct RICsubscriptionDeleteRequest { + ProtocolIE_Container_1544P3_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c new file mode 100644 index 0000000..105c9b4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { + sizeof(struct RICsubscriptionDeleteResponse), + offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { + "RICsubscriptionDeleteResponse", + "RICsubscriptionDeleteResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.h new file mode 100644 index 0000000..b3ae7fb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteResponse_H_ +#define _RICsubscriptionDeleteResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteResponse */ +typedef struct RICsubscriptionDeleteResponse { + ProtocolIE_Container_1544P4_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c new file mode 100644 index 0000000..f5a2ced --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDetails.h" + +static asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricEventTriggerDefinition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICeventTriggerDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricEventTriggerDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricAction_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactions_ToBeSetup_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricAction-ToBeSetup-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDetails_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDetails_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1 = { + sizeof(struct RICsubscriptionDetails), + offsetof(struct RICsubscriptionDetails, _asn_ctx), + asn_MAP_RICsubscriptionDetails_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails = { + "RICsubscriptionDetails", + "RICsubscriptionDetails", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDetails_tags_1, + sizeof(asn_DEF_RICsubscriptionDetails_tags_1) + /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDetails_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDetails_tags_1) + /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDetails_1, + 2, /* Elements count */ + &asn_SPC_RICsubscriptionDetails_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.h new file mode 100644 index 0000000..af98762 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDetails_H_ +#define _RICsubscriptionDetails_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICeventTriggerDefinition.h" +#include "RICactions-ToBeSetup-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDetails */ +typedef struct RICsubscriptionDetails { + RICeventTriggerDefinition_t ricEventTriggerDefinition; + RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDetails_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDetails_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c new file mode 100644 index 0000000..8cc67d6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { + sizeof(struct RICsubscriptionFailure), + offsetof(struct RICsubscriptionFailure, _asn_ctx), + asn_MAP_RICsubscriptionFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { + "RICsubscriptionFailure", + "RICsubscriptionFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.h new file mode 100644 index 0000000..a0b137f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionFailure_H_ +#define _RICsubscriptionFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionFailure */ +typedef struct RICsubscriptionFailure { + ProtocolIE_Container_1544P2_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c new file mode 100644 index 0000000..0e30521 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { + sizeof(struct RICsubscriptionRequest), + offsetof(struct RICsubscriptionRequest, _asn_ctx), + asn_MAP_RICsubscriptionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { + "RICsubscriptionRequest", + "RICsubscriptionRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.h new file mode 100644 index 0000000..4777a57 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionRequest_H_ +#define _RICsubscriptionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionRequest */ +typedef struct RICsubscriptionRequest { + ProtocolIE_Container_1544P0_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c new file mode 100644 index 0000000..49d520b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { + sizeof(struct RICsubscriptionResponse), + offsetof(struct RICsubscriptionResponse, _asn_ctx), + asn_MAP_RICsubscriptionResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { + "RICsubscriptionResponse", + "RICsubscriptionResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.h new file mode 100644 index 0000000..cd1dc97 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionResponse_H_ +#define _RICsubscriptionResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionResponse */ +typedef struct RICsubscriptionResponse { + ProtocolIE_Container_1544P1_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c new file mode 100644 index 0000000..b22ef03 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubsequentAction.h" + +asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentActionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentActionType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICtimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricTimeToWait" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { + sizeof(struct RICsubsequentAction), + offsetof(struct RICsubsequentAction, _asn_ctx), + asn_MAP_RICsubsequentAction_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { + "RICsubsequentAction", + "RICsubsequentAction", + &asn_OP_SEQUENCE, + asn_DEF_RICsubsequentAction_tags_1, + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubsequentAction_1, + 2, /* Elements count */ + &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.h new file mode 100644 index 0000000..fb87c74 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubsequentAction_H_ +#define _RICsubsequentAction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICsubsequentActionType.h" +#include "RICtimeToWait.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubsequentAction */ +typedef struct RICsubsequentAction { + RICsubsequentActionType_t ricSubsequentActionType; + RICtimeToWait_t ricTimeToWait; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubsequentAction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentAction_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c new file mode 100644 index 0000000..d93e25e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubsequentActionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { + { 0, 8, "continue" }, + { 1, 4, "wait" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { + 0, /* continue(0) */ + 1 /* wait(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { + asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { + "RICsubsequentActionType", + "RICsubsequentActionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICsubsequentActionType_tags_1, + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.h new file mode 100644 index 0000000..28eda9c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubsequentActionType_H_ +#define _RICsubsequentActionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICsubsequentActionType { + RICsubsequentActionType_continue = 0, + RICsubsequentActionType_wait = 1 + /* + * Enumeration is extensible + */ +} e_RICsubsequentActionType; + +/* RICsubsequentActionType */ +typedef long RICsubsequentActionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; +asn_struct_free_f RICsubsequentActionType_free; +asn_struct_print_f RICsubsequentActionType_print; +asn_constr_check_f RICsubsequentActionType_constraint; +ber_type_decoder_f RICsubsequentActionType_decode_ber; +der_type_encoder_f RICsubsequentActionType_encode_der; +xer_type_decoder_f RICsubsequentActionType_decode_xer; +xer_type_encoder_f RICsubsequentActionType_encode_xer; +per_type_decoder_f RICsubsequentActionType_decode_uper; +per_type_encoder_f RICsubsequentActionType_encode_uper; +per_type_decoder_f RICsubsequentActionType_decode_aper; +per_type_encoder_f RICsubsequentActionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentActionType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c new file mode 100644 index 0000000..3c98ba8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c @@ -0,0 +1,105 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICtimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 17 } /* (0..17,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { + { 0, 4, "zero" }, + { 1, 4, "w1ms" }, + { 2, 4, "w2ms" }, + { 3, 4, "w5ms" }, + { 4, 5, "w10ms" }, + { 5, 5, "w20ms" }, + { 6, 5, "w30ms" }, + { 7, 5, "w40ms" }, + { 8, 5, "w50ms" }, + { 9, 6, "w100ms" }, + { 10, 6, "w200ms" }, + { 11, 6, "w500ms" }, + { 12, 3, "w1s" }, + { 13, 3, "w2s" }, + { 14, 3, "w5s" }, + { 15, 4, "w10s" }, + { 16, 4, "w20s" }, + { 17, 4, "w60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { + 9, /* w100ms(9) */ + 4, /* w10ms(4) */ + 15, /* w10s(15) */ + 1, /* w1ms(1) */ + 12, /* w1s(12) */ + 10, /* w200ms(10) */ + 5, /* w20ms(5) */ + 16, /* w20s(16) */ + 2, /* w2ms(2) */ + 13, /* w2s(13) */ + 6, /* w30ms(6) */ + 7, /* w40ms(7) */ + 11, /* w500ms(11) */ + 8, /* w50ms(8) */ + 3, /* w5ms(3) */ + 14, /* w5s(14) */ + 17, /* w60s(17) */ + 0 /* zero(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { + asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 18, /* Number of elements in the maps */ + 19, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { + "RICtimeToWait", + "RICtimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_RICtimeToWait_tags_1, + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + asn_DEF_RICtimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.h new file mode 100644 index 0000000..aa22334 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.h @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICtimeToWait_H_ +#define _RICtimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICtimeToWait { + RICtimeToWait_zero = 0, + RICtimeToWait_w1ms = 1, + RICtimeToWait_w2ms = 2, + RICtimeToWait_w5ms = 3, + RICtimeToWait_w10ms = 4, + RICtimeToWait_w20ms = 5, + RICtimeToWait_w30ms = 6, + RICtimeToWait_w40ms = 7, + RICtimeToWait_w50ms = 8, + RICtimeToWait_w100ms = 9, + RICtimeToWait_w200ms = 10, + RICtimeToWait_w500ms = 11, + RICtimeToWait_w1s = 12, + RICtimeToWait_w2s = 13, + RICtimeToWait_w5s = 14, + RICtimeToWait_w10s = 15, + RICtimeToWait_w20s = 16, + RICtimeToWait_w60s = 17 + /* + * Enumeration is extensible + */ +} e_RICtimeToWait; + +/* RICtimeToWait */ +typedef long RICtimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; +asn_struct_free_f RICtimeToWait_free; +asn_struct_print_f RICtimeToWait_print; +asn_constr_check_f RICtimeToWait_constraint; +ber_type_decoder_f RICtimeToWait_decode_ber; +der_type_encoder_f RICtimeToWait_encode_der; +xer_type_decoder_f RICtimeToWait_decode_xer; +xer_type_encoder_f RICtimeToWait_encode_xer; +per_type_decoder_f RICtimeToWait_decode_uper; +per_type_encoder_f RICtimeToWait_encode_uper; +per_type_decoder_f RICtimeToWait_decode_aper; +per_type_encoder_f RICtimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICtimeToWait_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c new file mode 100644 index 0000000..7b24836 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResetRequest.h" + +asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { + sizeof(struct ResetRequest), + offsetof(struct ResetRequest, _asn_ctx), + asn_MAP_ResetRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest = { + "ResetRequest", + "ResetRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_tags_1, + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + asn_DEF_ResetRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequest_1, + 1, /* Elements count */ + &asn_SPC_ResetRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.h new file mode 100644 index 0000000..301e707 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResetRequest_H_ +#define _ResetRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetRequest */ +typedef struct ResetRequest { + ProtocolIE_Container_1544P14_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c new file mode 100644 index 0000000..8cb53b3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResetResponse.h" + +asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1544P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { + sizeof(struct ResetResponse), + offsetof(struct ResetResponse, _asn_ctx), + asn_MAP_ResetResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse = { + "ResetResponse", + "ResetResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_tags_1, + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + asn_DEF_ResetResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponse_1, + 1, /* Elements count */ + &asn_SPC_ResetResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.h new file mode 100644 index 0000000..ebd53e9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResetResponse_H_ +#define _ResetResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetResponse */ +typedef struct ResetResponse { + ProtocolIE_Container_1544P15_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c new file mode 100644 index 0000000..71c7178 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c @@ -0,0 +1,377 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SuccessfulOutcome.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICserviceUpdate = 7; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICcontrol = 4; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_E2setup = 1; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_Reset = 3; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICindication = 5; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_8_id_RICserviceQuery = 6; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_9_id_ErrorIndication = 2; +static const long asn_VAL_9_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 1; /* &SuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2setupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E2setupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetResponse" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 5 }, /* RICsubscriptionResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 4 }, /* RICsubscriptionDeleteResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 3 }, /* RICserviceUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 2 }, /* RICcontrolAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 1 }, /* E2setupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 0 } /* ResetResponse */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct SuccessfulOutcome__value), + offsetof(struct SuccessfulOutcome__value, _asn_ctx), + offsetof(struct SuccessfulOutcome__value, present), + sizeof(((struct SuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 6, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_SuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { + sizeof(struct SuccessfulOutcome), + offsetof(struct SuccessfulOutcome, _asn_ctx), + asn_MAP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.h new file mode 100644 index 0000000..0d45838 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.h @@ -0,0 +1,109 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SuccessfulOutcome_H_ +#define _SuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SuccessfulOutcome__value_PR { + SuccessfulOutcome__value_PR_NOTHING, /* No components present */ + SuccessfulOutcome__value_PR_RICsubscriptionResponse, + SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, + SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, + SuccessfulOutcome__value_PR_RICcontrolAcknowledge, + SuccessfulOutcome__value_PR_E2setupResponse, + SuccessfulOutcome__value_PR_ResetResponse +} SuccessfulOutcome__value_PR; + +/* SuccessfulOutcome */ +typedef struct SuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct SuccessfulOutcome__value { + SuccessfulOutcome__value_PR present; + union SuccessfulOutcome__value_u { + RICsubscriptionResponse_t RICsubscriptionResponse; + RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; + RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; + RICcontrolAcknowledge_t RICcontrolAcknowledge; + E2setupResponse_t E2setupResponse; + ResetResponse_t ResetResponse; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c new file mode 100644 index 0000000..aa15a65 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { + { 0, 3, "v1s" }, + { 1, 3, "v2s" }, + { 2, 3, "v5s" }, + { 3, 4, "v10s" }, + { 4, 4, "v20s" }, + { 5, 4, "v60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { + 3, /* v10s(3) */ + 0, /* v1s(0) */ + 4, /* v20s(4) */ + 1, /* v2s(1) */ + 2, /* v5s(2) */ + 5 /* v60s(5) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { + asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeToWait = { + "TimeToWait", + "TimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_TimeToWait_tags_1, + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + asn_DEF_TimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.h new file mode 100644 index 0000000..ce45fc0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.h @@ -0,0 +1,74 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TimeToWait_H_ +#define _TimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TimeToWait { + TimeToWait_v1s = 0, + TimeToWait_v2s = 1, + TimeToWait_v5s = 2, + TimeToWait_v10s = 3, + TimeToWait_v20s = 4, + TimeToWait_v60s = 5 + /* + * Enumeration is extensible + */ +} e_TimeToWait; + +/* TimeToWait */ +typedef long TimeToWait_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; +asn_struct_free_f TimeToWait_free; +asn_struct_print_f TimeToWait_print; +asn_constr_check_f TimeToWait_constraint; +ber_type_decoder_f TimeToWait_decode_ber; +der_type_encoder_f TimeToWait_encode_der; +xer_type_decoder_f TimeToWait_decode_xer; +xer_type_encoder_f TimeToWait_encode_xer; +per_type_decoder_f TimeToWait_decode_uper; +per_type_encoder_f TimeToWait_encode_uper; +per_type_decoder_f TimeToWait_decode_aper; +per_type_encoder_f TimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeToWait_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c new file mode 100644 index 0000000..d29e544 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TriggeringMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 21, "unsuccessfull-outcome" } +}; +static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessfull-outcome(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { + asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TriggeringMessage_tags_1, + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.h new file mode 100644 index 0000000..247aaa0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.h @@ -0,0 +1,70 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TriggeringMessage_H_ +#define _TriggeringMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TriggeringMessage { + TriggeringMessage_initiating_message = 0, + TriggeringMessage_successful_outcome = 1, + TriggeringMessage_unsuccessfull_outcome = 2 +} e_TriggeringMessage; + +/* TriggeringMessage */ +typedef long TriggeringMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TriggeringMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c new file mode 100644 index 0000000..1f49fbc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TypeOfError.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { + asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfError = { + "TypeOfError", + "TypeOfError", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfError_tags_1, + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.h new file mode 100644 index 0000000..cf925d8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TypeOfError_H_ +#define _TypeOfError_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfError { + TypeOfError_not_understood = 0, + TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_TypeOfError; + +/* TypeOfError */ +typedef long TypeOfError_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfError_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c new file mode 100644 index 0000000..47da61d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c @@ -0,0 +1,367 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UnsuccessfulOutcome.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICserviceUpdate = 7; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICcontrol = 4; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_E2setup = 1; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_Reset = 3; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICindication = 5; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_8_id_RICserviceQuery = 6; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_9_id_ErrorIndication = 2; +static const long asn_VAL_9_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 2; /* &UnsuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2setupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E2setupFailure" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* RICsubscriptionFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* RICsubscriptionDeleteFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* RICserviceUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 1 }, /* RICcontrolFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 0 } /* E2setupFailure */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct UnsuccessfulOutcome__value), + offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), + offsetof(struct UnsuccessfulOutcome__value, present), + sizeof(((struct UnsuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 5, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UnsuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_UnsuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { + sizeof(struct UnsuccessfulOutcome), + offsetof(struct UnsuccessfulOutcome, _asn_ctx), + asn_MAP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.h new file mode 100644 index 0000000..0773ce5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.h @@ -0,0 +1,107 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../asnTextFiles/e2ap-v01.00.00.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UnsuccessfulOutcome_H_ +#define _UnsuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnsuccessfulOutcome__value_PR { + UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ + UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, + UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, + UnsuccessfulOutcome__value_PR_RICcontrolFailure, + UnsuccessfulOutcome__value_PR_E2setupFailure +} UnsuccessfulOutcome__value_PR; + +/* UnsuccessfulOutcome */ +typedef struct UnsuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct UnsuccessfulOutcome__value { + UnsuccessfulOutcome__value_PR present; + union UnsuccessfulOutcome__value_u { + RICsubscriptionFailure_t RICsubscriptionFailure; + RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; + RICserviceUpdateFailure_t RICserviceUpdateFailure; + RICcontrolFailure_t RICcontrolFailure; + E2setupFailure_t E2setupFailure; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c new file mode 100644 index 0000000..ec952fc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.h new file mode 100644 index 0000000..e35bc44 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c new file mode 100644 index 0000000..944f2cb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.h new file mode 100644 index 0000000..882e1a4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.h @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c new file mode 100644 index 0000000..80ecf7f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c @@ -0,0 +1,480 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; + +#ifdef ASN_DISABLE_OER_SUPPORT + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_OER_SUPPORT */ + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifdef ASN_DISABLE_PER_SUPPORT + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_PER_SUPPORT */ + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_PER_SUPPORT */ + + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; + + case ATS_DER: + case ATS_BER: + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#ifdef ASN_DISABLE_OER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.h new file mode 100644 index 0000000..034f646 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.h @@ -0,0 +1,171 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c new file mode 100644 index 0000000..fe4b89b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.h new file mode 100644 index 0000000..59de7af --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs.h new file mode 100644 index 0000000..e75c270 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c new file mode 100644 index 0000000..fc24247 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c @@ -0,0 +1,317 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (const char *)chunk_buf + lead_wsp_size; + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.h new file mode 100644 index 0000000..fbc5576 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; + +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_constant.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_constant.h new file mode 100644 index 0000000..ab955f6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_constant.h @@ -0,0 +1,40 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define maxProtocolIEs (65535) +#define maxnoofErrors (256) +#define maxofRANfunctionID (256) +#define maxofRICactionID (16) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c new file mode 100644 index 0000000..1aff95f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c @@ -0,0 +1,48 @@ +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + va_end(args); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.h new file mode 100644 index 0000000..c4105ad --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.h @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#define __EXTENSIONS__ /* for Sun */ + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if !defined(BELL_LABS) /* Bell Labs */ + //#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#if defined(BELL_LABS) /* Bell Labs version */ +extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); +#define ASN_DEBUG(fmt, args...) do { \ + (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ + } while(0) +#else +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#endif /* BELL_LABS */ +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_ioc.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_ioc.h new file mode 100644 index 0000000..7de210e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_ioc.h @@ -0,0 +1,51 @@ +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c new file mode 100644 index 0000000..819cf70 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; + value = (value << 24) | (random() % 0xffffff); + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.h new file mode 100644 index 0000000..47f9b8a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_system.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_system.h new file mode 100644 index 0000000..fa8cf11 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/asn_system.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef _WIN32 + +#include +#define snprintf _snprintf +#define vsnprintf _vsnprintf + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c new file mode 100644 index 0000000..75d6016 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.h new file mode 100644 index 0000000..1ac2a5e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c new file mode 100644 index 0000000..0a0deec --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.h new file mode 100644 index 0000000..d1e4d48 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c new file mode 100644 index 0000000..4a7d732 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c @@ -0,0 +1,144 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.h new file mode 100644 index 0000000..ce227ad --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c new file mode 100644 index 0000000..86dcbb0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c @@ -0,0 +1,1533 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * See the definitions. + */ +static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, + unsigned size); +static void _set_present_idx(void *sptr, unsigned offset, unsigned size, + unsigned pres); +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Substracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb?"Encoding":"Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + const asn_per_constraint_t *ext_ct = NULL; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) { + ext_ct = ct; + ct = 0; /* Not restricted */ + } + } + + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = aper_get_nsnnwn(pd, ext_ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct = NULL; + const asn_per_constraint_t *ext_ct = NULL; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = NULL; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && (ct->range_bits >= 0)) { + // Value is not within the range of the primary values ? + if(present < ct->lower_bound || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + // X691/23.5 Extension marker = 1 + if(per_put_few_bits(po, 1, 1)) { + ASN__ENCODE_FAILED; + } + } else { + ASN__ENCODE_FAILED; + } + // no more need of constraint. + ext_ct = ct; + ct = NULL; + } + } + + if(ct && (ct->flags & APC_EXTENSIBLE)) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present, ct->lower_bound, ct->upper_bound); + // X691.23.5 Extension marker = 0 + if(per_put_few_bits(po, 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && (ct->range_bits >= 0)) { + // By construction (ct != 0), the alternative value is a non extended one. + // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + // X691/23.8 normally encoded as a small non negative whole number + + if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +static unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +static void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} + + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} + + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, + CHOICE_print, + CHOICE_compare, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + CHOICE_decode_oer, + CHOICE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + CHOICE_random_fill, + CHOICE_outmost_tag +}; diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.h new file mode 100644 index 0000000..a1999ed --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; +asn_struct_print_f CHOICE_print; +asn_struct_compare_f CHOICE_compare; +asn_constr_check_f CHOICE_constraint; +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +asn_outmost_tag_f CHOICE_outmost_tag; +asn_random_fill_f CHOICE_random_fill; +extern asn_TYPE_operation_t asn_OP_CHOICE; + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c new file mode 100644 index 0000000..43dcac7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c @@ -0,0 +1,2059 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional + ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 + && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} + + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%ld is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%ld) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %ld not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_compare, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.h new file mode 100644 index 0000000..a22ed3a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; +asn_struct_print_f SEQUENCE_print; +asn_struct_compare_f SEQUENCE_compare; +asn_constr_check_f SEQUENCE_constraint; +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +asn_random_fill_f SEQUENCE_random_fill; +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c new file mode 100644 index 0000000..10f18cf --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c @@ -0,0 +1,358 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", + ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, list->count - seq); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_compare, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.h new file mode 100644 index 0000000..6857f0f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.h @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +asn_struct_compare_f SEQUENCE_OF_compare; +der_type_encoder_f SEQUENCE_OF_encode_der; +xer_type_encoder_f SEQUENCE_OF_encode_xer; +per_type_encoder_f SEQUENCE_OF_encode_uper; +per_type_encoder_f SEQUENCE_OF_encode_aper; +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#define SEQUENCE_OF_free SET_OF_free +#define SEQUENCE_OF_print SET_OF_print +#define SEQUENCE_OF_constraint SET_OF_constraint +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +#define SEQUENCE_OF_random_fill SET_OF_random_fill + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c new file mode 100644 index 0000000..bf1dc27 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c @@ -0,0 +1,1441 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +static void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ +}; + +static struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + + + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, + ct ? ct->effective_bits : -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, + SET_OF_print, + SET_OF_compare, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SET_OF_decode_oer, + SET_OF_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SET_OF_decode_uper, + SET_OF_encode_uper, + SET_OF_decode_aper, + 0, /* SET_OF_encode_aper */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + SET_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.h new file mode 100644 index 0000000..7681062 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; +asn_struct_print_f SET_OF_print; +asn_struct_compare_f SET_OF_compare; +asn_constr_check_f SET_OF_constraint; +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +asn_random_fill_f SET_OF_random_fill; +extern asn_TYPE_operation_t asn_OP_SET_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c new file mode 100644 index 0000000..aefaefd --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.h new file mode 100644 index 0000000..d80dea5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.h @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#include /* Subtype constraints support */ +#include /* Random structures support */ + +#ifdef ASN_DISABLE_OER_SUPPORT +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +typedef void asn_oer_constraints_t; +#else +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#endif + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { + const struct asn_oer_constraints_s *oer_constraints; + const struct asn_per_constraints_s *per_constraints; + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurence of the el_tag, relative */ + int toff_last; /* Last occurence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c new file mode 100644 index 0000000..df3c6c1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c @@ -0,0 +1,93 @@ +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.h new file mode 100644 index 0000000..0bd86a9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/converter-example.mk b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/converter-example.mk new file mode 100644 index 0000000..3045977 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/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 -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../asnTextFiles/e2ap-v01.00.00.asn + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c new file mode 100644 index 0000000..2c6a6f7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.h new file mode 100644 index 0000000..e93944e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c new file mode 100644 index 0000000..c9ebebf --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c @@ -0,0 +1,33 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +extern struct asn_TYPE_descriptor_s asn_DEF_E2AP_PDU; + + +struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { + /* From module E2AP-PDU-Descriptions in ../asnTextFiles/e2ap-v01.00.00.asn */ + &asn_DEF_E2AP_PDU, + 0 +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c new file mode 100644 index 0000000..5243825 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c @@ -0,0 +1,185 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.h new file mode 100644 index 0000000..eea474a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.h @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c new file mode 100644 index 0000000..a35e1f0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c @@ -0,0 +1,265 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +static int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +static int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.h new file mode 100644 index 0000000..b615ef0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.h @@ -0,0 +1,93 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c new file mode 100644 index 0000000..28f3cb6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c @@ -0,0 +1,533 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); +static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = aper_put_length(po, -1, toGo); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.h new file mode 100644 index 0000000..1493b2d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c new file mode 100644 index 0000000..2285677 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c @@ -0,0 +1,489 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { + unsigned long lhalf; /* Lower half of the number*/ + long half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__long_range(long lb, long ub, unsigned long *range_r) { + unsigned long bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { + unsigned long range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { + unsigned long range; + + if(per__long_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= LONG_MAX) { + *outp = (long)inp + lb; + } else { + *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); + } + + return 0; +} + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + if (range <= 65536 && range >= 0) + return aper_get_nsnnwn(pd, range); + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #10.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #10.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #10.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%ld", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + return -1; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, int range, size_t length) { + + ASN_DEBUG("APER put length %zu with range %d", length, range); + + /* 10.9 X.691 Note 2 */ + if (range <= 65536 && range >= 0) + return aper_put_nsnnwn(po, range, length); + + if (aper_put_align(po) < 0) + return -1; + + if(length <= 127) /* #10.9.3.6 */{ + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } + else if(length < 16384) /* #10.9.3.7 */ + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + + length >>= 14; + if(length > 4) length = 4; + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + bytes = 1; + } else if(range <= 65536) { + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.h new file mode 100644 index 0000000..23079c9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + long lower_bound; /* "lb" value */ + long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +ssize_t aper_get_length(asn_per_data_t *pd, int range, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); + + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c new file mode 100644 index 0000000..5b87703 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.h new file mode 100644 index 0000000..b951c41 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c new file mode 100644 index 0000000..4177ede --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.h new file mode 100644 index 0000000..9d75922 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c new file mode 100644 index 0000000..36b4bfb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.h new file mode 100644 index 0000000..c3a36e7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaninful data is found. + * This function returns number of bytes consumed from the bufer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c new file mode 100644 index 0000000..e8d7354 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c @@ -0,0 +1,656 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BIT_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +static const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.h new file mode 100644 index 0000000..c1bdbbc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_struct_compare_f BIT_STRING_compare; +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +asn_random_fill_f BIT_STRING_random_fill; + +#define BIT_STRING_free OCTET_STRING_free +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c new file mode 100644 index 0000000..ec64c00 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c @@ -0,0 +1,510 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, + BOOLEAN_print, + BOOLEAN_compare, + BOOLEAN_decode_ber, + BOOLEAN_encode_der, + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BOOLEAN_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} + + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") + != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +#ifndef ASN_DISABLE_OER_SUPPORT + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} + + + +#endif + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.h new file mode 100644 index 0000000..d06ed83 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.h @@ -0,0 +1,63 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef int BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; +asn_struct_print_f BOOLEAN_print; +asn_struct_compare_f BOOLEAN_compare; +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +asn_random_fill_f BOOLEAN_random_fill; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c new file mode 100644 index 0000000..d3c0129 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c @@ -0,0 +1,144 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-ActionDefinition-Format1.h" + +#include "RANparameter-Item.h" +static int +memb_ranParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ranParameter_List_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ranParameter_List_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ranParameter_List_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANparameter_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ranParameter_List_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ranParameter_List_specs_2 = { + sizeof(struct E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List), + offsetof(struct E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ranParameter_List_2 = { + "ranParameter-List", + "ranParameter-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ranParameter_List_tags_2, + sizeof(asn_DEF_ranParameter_List_tags_2) + /sizeof(asn_DEF_ranParameter_List_tags_2[0]) - 1, /* 1 */ + asn_DEF_ranParameter_List_tags_2, /* Same as above */ + sizeof(asn_DEF_ranParameter_List_tags_2) + /sizeof(asn_DEF_ranParameter_List_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_ranParameter_List_constr_2, SEQUENCE_OF_constraint }, + asn_MBR_ranParameter_List_2, + 1, /* Single element */ + &asn_SPC_ranParameter_List_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ActionDefinition_Format1_1[] = { + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_NRT_ActionDefinition_Format1, ranParameter_List), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_ranParameter_List_2, + 0, + { 0, &asn_PER_memb_ranParameter_List_constr_2, memb_ranParameter_List_constraint_1 }, + 0, 0, /* No default value */ + "ranParameter-List" + }, +}; +static const int asn_MAP_E2SM_gNB_NRT_ActionDefinition_Format1_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_ActionDefinition_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-List */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_ActionDefinition_Format1_specs_1 = { + sizeof(struct E2SM_gNB_NRT_ActionDefinition_Format1), + offsetof(struct E2SM_gNB_NRT_ActionDefinition_Format1, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_ActionDefinition_Format1_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_NRT_ActionDefinition_Format1_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1 = { + "E2SM-gNB-NRT-ActionDefinition-Format1", + "E2SM-gNB-NRT-ActionDefinition-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_ActionDefinition_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_ActionDefinition_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.h new file mode 100644 index 0000000..72ba72f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_ActionDefinition_Format1_H_ +#define _E2SM_gNB_NRT_ActionDefinition_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RANparameter_Item; + +/* E2SM-gNB-NRT-ActionDefinition-Format1 */ +typedef struct E2SM_gNB_NRT_ActionDefinition_Format1 { + struct E2SM_gNB_NRT_ActionDefinition_Format1__ranParameter_List { + A_SEQUENCE_OF(struct RANparameter_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ranParameter_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_ActionDefinition_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_ActionDefinition_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ActionDefinition_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_ActionDefinition_Format1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c new file mode 100644 index 0000000..e58b023 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-ActionDefinition.h" + +#include "E2SM-gNB-NRT-ActionDefinition-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_gNB_NRT_ActionDefinition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ActionDefinition_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_gNB_NRT_ActionDefinition, choice.actionDefinition_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_gNB_NRT_ActionDefinition_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "actionDefinition-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_ActionDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* actionDefinition-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_gNB_NRT_ActionDefinition_specs_1 = { + sizeof(struct E2SM_gNB_NRT_ActionDefinition), + offsetof(struct E2SM_gNB_NRT_ActionDefinition, _asn_ctx), + offsetof(struct E2SM_gNB_NRT_ActionDefinition, present), + sizeof(((struct E2SM_gNB_NRT_ActionDefinition *)0)->present), + asn_MAP_E2SM_gNB_NRT_ActionDefinition_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ActionDefinition = { + "E2SM-gNB-NRT-ActionDefinition", + "E2SM-gNB-NRT-ActionDefinition", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_gNB_NRT_ActionDefinition_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_gNB_NRT_ActionDefinition_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_ActionDefinition_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.h new file mode 100644 index 0000000..f2183df --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_ActionDefinition_H_ +#define _E2SM_gNB_NRT_ActionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_gNB_NRT_ActionDefinition_PR { + E2SM_gNB_NRT_ActionDefinition_PR_NOTHING, /* No components present */ + E2SM_gNB_NRT_ActionDefinition_PR_actionDefinition_Format1 + /* Extensions may appear below */ + +} E2SM_gNB_NRT_ActionDefinition_PR; + +/* Forward declarations */ +struct E2SM_gNB_NRT_ActionDefinition_Format1; + +/* E2SM-gNB-NRT-ActionDefinition */ +typedef struct E2SM_gNB_NRT_ActionDefinition { + E2SM_gNB_NRT_ActionDefinition_PR present; + union E2SM_gNB_NRT_ActionDefinition_u { + struct E2SM_gNB_NRT_ActionDefinition_Format1 *actionDefinition_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_ActionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ActionDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_ActionDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c new file mode 100644 index 0000000..f9a2306 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-ControlHeader-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ControlHeader_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_ControlHeader_Format1, command), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRT_ControlCommand, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "command" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_ControlHeader_Format1, servedCellID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NRT_Cell_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_ControlHeader_Format1, neighbourCellID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NRT_Cell_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "neighbourCellID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_ControlHeader_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* command */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedCellID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* neighbourCellID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_ControlHeader_Format1_specs_1 = { + sizeof(struct E2SM_gNB_NRT_ControlHeader_Format1), + offsetof(struct E2SM_gNB_NRT_ControlHeader_Format1, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_ControlHeader_Format1_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1 = { + "E2SM-gNB-NRT-ControlHeader-Format1", + "E2SM-gNB-NRT-ControlHeader-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_ControlHeader_Format1_1, + 3, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_ControlHeader_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.h new file mode 100644 index 0000000..068e313 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.h @@ -0,0 +1,65 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_ControlHeader_Format1_H_ +#define _E2SM_gNB_NRT_ControlHeader_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRT-ControlCommand.h" +#include "NRT-Cell-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-NRT-ControlHeader-Format1 */ +typedef struct E2SM_gNB_NRT_ControlHeader_Format1 { + NRT_ControlCommand_t command; + NRT_Cell_ID_t servedCellID; + NRT_Cell_ID_t neighbourCellID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_ControlHeader_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_ControlHeader_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ControlHeader_Format1_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_ControlHeader_Format1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c new file mode 100644 index 0000000..8bf79df --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-ControlHeader.h" + +#include "E2SM-gNB-NRT-ControlHeader-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_gNB_NRT_ControlHeader_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ControlHeader_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_gNB_NRT_ControlHeader, choice.controlHeader_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_gNB_NRT_ControlHeader_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "controlHeader-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_ControlHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlHeader-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_gNB_NRT_ControlHeader_specs_1 = { + sizeof(struct E2SM_gNB_NRT_ControlHeader), + offsetof(struct E2SM_gNB_NRT_ControlHeader, _asn_ctx), + offsetof(struct E2SM_gNB_NRT_ControlHeader, present), + sizeof(((struct E2SM_gNB_NRT_ControlHeader *)0)->present), + asn_MAP_E2SM_gNB_NRT_ControlHeader_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlHeader = { + "E2SM-gNB-NRT-ControlHeader", + "E2SM-gNB-NRT-ControlHeader", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_gNB_NRT_ControlHeader_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_gNB_NRT_ControlHeader_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_ControlHeader_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.h new file mode 100644 index 0000000..fc2d50b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_ControlHeader_H_ +#define _E2SM_gNB_NRT_ControlHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_gNB_NRT_ControlHeader_PR { + E2SM_gNB_NRT_ControlHeader_PR_NOTHING, /* No components present */ + E2SM_gNB_NRT_ControlHeader_PR_controlHeader_Format1 + /* Extensions may appear below */ + +} E2SM_gNB_NRT_ControlHeader_PR; + +/* Forward declarations */ +struct E2SM_gNB_NRT_ControlHeader_Format1; + +/* E2SM-gNB-NRT-ControlHeader */ +typedef struct E2SM_gNB_NRT_ControlHeader { + E2SM_gNB_NRT_ControlHeader_PR present; + union E2SM_gNB_NRT_ControlHeader_u { + struct E2SM_gNB_NRT_ControlHeader_Format1 *controlHeader_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_ControlHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_ControlHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c new file mode 100644 index 0000000..1f7959c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-ControlMessage-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ControlMessage_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_ControlMessage_Format1, tablerecord), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRT_TableRecord, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tablerecord" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_ControlMessage_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* tablerecord */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_ControlMessage_Format1_specs_1 = { + sizeof(struct E2SM_gNB_NRT_ControlMessage_Format1), + offsetof(struct E2SM_gNB_NRT_ControlMessage_Format1, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_ControlMessage_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1 = { + "E2SM-gNB-NRT-ControlMessage-Format1", + "E2SM-gNB-NRT-ControlMessage-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_ControlMessage_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_ControlMessage_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.h new file mode 100644 index 0000000..18086a0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_ControlMessage_Format1_H_ +#define _E2SM_gNB_NRT_ControlMessage_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRT-TableRecord.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-NRT-ControlMessage-Format1 */ +typedef struct E2SM_gNB_NRT_ControlMessage_Format1 { + NRT_TableRecord_t tablerecord; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_ControlMessage_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_ControlMessage_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ControlMessage_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_ControlMessage_Format1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c new file mode 100644 index 0000000..f3a3cb3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-ControlMessage.h" + +#include "E2SM-gNB-NRT-ControlMessage-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_gNB_NRT_ControlMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_ControlMessage_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_gNB_NRT_ControlMessage, choice.controlMessage_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_gNB_NRT_ControlMessage_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "controlMessage-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_ControlMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlMessage-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_gNB_NRT_ControlMessage_specs_1 = { + sizeof(struct E2SM_gNB_NRT_ControlMessage), + offsetof(struct E2SM_gNB_NRT_ControlMessage, _asn_ctx), + offsetof(struct E2SM_gNB_NRT_ControlMessage, present), + sizeof(((struct E2SM_gNB_NRT_ControlMessage *)0)->present), + asn_MAP_E2SM_gNB_NRT_ControlMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlMessage = { + "E2SM-gNB-NRT-ControlMessage", + "E2SM-gNB-NRT-ControlMessage", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_gNB_NRT_ControlMessage_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_gNB_NRT_ControlMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_ControlMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.h new file mode 100644 index 0000000..2e730a2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_ControlMessage_H_ +#define _E2SM_gNB_NRT_ControlMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_gNB_NRT_ControlMessage_PR { + E2SM_gNB_NRT_ControlMessage_PR_NOTHING, /* No components present */ + E2SM_gNB_NRT_ControlMessage_PR_controlMessage_Format1 + /* Extensions may appear below */ + +} E2SM_gNB_NRT_ControlMessage_PR; + +/* Forward declarations */ +struct E2SM_gNB_NRT_ControlMessage_Format1; + +/* E2SM-gNB-NRT-ControlMessage */ +typedef struct E2SM_gNB_NRT_ControlMessage { + E2SM_gNB_NRT_ControlMessage_PR present; + union E2SM_gNB_NRT_ControlMessage_u { + struct E2SM_gNB_NRT_ControlMessage_Format1 *controlMessage_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_ControlMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_ControlMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_ControlMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c new file mode 100644 index 0000000..955fa84 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-EventTriggerDefinition-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_EventTriggerDefinition_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_EventTriggerDefinition_Format1, triggerNature), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRT_TriggerNature, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggerNature" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* triggerNature */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_EventTriggerDefinition_Format1_specs_1 = { + sizeof(struct E2SM_gNB_NRT_EventTriggerDefinition_Format1), + offsetof(struct E2SM_gNB_NRT_EventTriggerDefinition_Format1, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1 = { + "E2SM-gNB-NRT-EventTriggerDefinition-Format1", + "E2SM-gNB-NRT-EventTriggerDefinition-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_EventTriggerDefinition_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_EventTriggerDefinition_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.h new file mode 100644 index 0000000..76a8da8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_EventTriggerDefinition_Format1_H_ +#define _E2SM_gNB_NRT_EventTriggerDefinition_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRT-TriggerNature.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-NRT-EventTriggerDefinition-Format1 */ +typedef struct E2SM_gNB_NRT_EventTriggerDefinition_Format1 { + NRT_TriggerNature_t triggerNature; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_EventTriggerDefinition_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_EventTriggerDefinition_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_EventTriggerDefinition_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_EventTriggerDefinition_Format1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c new file mode 100644 index 0000000..3e6d744 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-EventTriggerDefinition.h" + +#include "E2SM-gNB-NRT-EventTriggerDefinition-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_gNB_NRT_EventTriggerDefinition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_EventTriggerDefinition_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_gNB_NRT_EventTriggerDefinition, choice.eventDefinition_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eventDefinition-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_EventTriggerDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_gNB_NRT_EventTriggerDefinition_specs_1 = { + sizeof(struct E2SM_gNB_NRT_EventTriggerDefinition), + offsetof(struct E2SM_gNB_NRT_EventTriggerDefinition, _asn_ctx), + offsetof(struct E2SM_gNB_NRT_EventTriggerDefinition, present), + sizeof(((struct E2SM_gNB_NRT_EventTriggerDefinition *)0)->present), + asn_MAP_E2SM_gNB_NRT_EventTriggerDefinition_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition = { + "E2SM-gNB-NRT-EventTriggerDefinition", + "E2SM-gNB-NRT-EventTriggerDefinition", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_gNB_NRT_EventTriggerDefinition_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_gNB_NRT_EventTriggerDefinition_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_EventTriggerDefinition_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.h new file mode 100644 index 0000000..2fa513f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_EventTriggerDefinition_H_ +#define _E2SM_gNB_NRT_EventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_gNB_NRT_EventTriggerDefinition_PR { + E2SM_gNB_NRT_EventTriggerDefinition_PR_NOTHING, /* No components present */ + E2SM_gNB_NRT_EventTriggerDefinition_PR_eventDefinition_Format1 + /* Extensions may appear below */ + +} E2SM_gNB_NRT_EventTriggerDefinition_PR; + +/* Forward declarations */ +struct E2SM_gNB_NRT_EventTriggerDefinition_Format1; + +/* E2SM-gNB-NRT-EventTriggerDefinition */ +typedef struct E2SM_gNB_NRT_EventTriggerDefinition { + E2SM_gNB_NRT_EventTriggerDefinition_PR present; + union E2SM_gNB_NRT_EventTriggerDefinition_u { + struct E2SM_gNB_NRT_EventTriggerDefinition_Format1 *eventDefinition_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_EventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_EventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c new file mode 100644 index 0000000..ab079ff --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c @@ -0,0 +1,70 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-IndicationHeader-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_IndicationHeader_Format1_1[] = { + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_NRT_IndicationHeader_Format1, timestamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRT_TimeStamp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "timestamp" + }, +}; +static const int asn_MAP_E2SM_gNB_NRT_IndicationHeader_Format1_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_IndicationHeader_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* timestamp */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_IndicationHeader_Format1_specs_1 = { + sizeof(struct E2SM_gNB_NRT_IndicationHeader_Format1), + offsetof(struct E2SM_gNB_NRT_IndicationHeader_Format1, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_IndicationHeader_Format1_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_NRT_IndicationHeader_Format1_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1 = { + "E2SM-gNB-NRT-IndicationHeader-Format1", + "E2SM-gNB-NRT-IndicationHeader-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_IndicationHeader_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_IndicationHeader_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.h new file mode 100644 index 0000000..2af5757 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_IndicationHeader_Format1_H_ +#define _E2SM_gNB_NRT_IndicationHeader_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRT-TimeStamp.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-NRT-IndicationHeader-Format1 */ +typedef struct E2SM_gNB_NRT_IndicationHeader_Format1 { + NRT_TimeStamp_t *timestamp; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_IndicationHeader_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_IndicationHeader_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_IndicationHeader_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_IndicationHeader_Format1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c new file mode 100644 index 0000000..5d93b41 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-IndicationHeader.h" + +#include "E2SM-gNB-NRT-IndicationHeader-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_gNB_NRT_IndicationHeader_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_IndicationHeader_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_gNB_NRT_IndicationHeader, choice.indicationHeader_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_gNB_NRT_IndicationHeader_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indicationHeader-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_IndicationHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_gNB_NRT_IndicationHeader_specs_1 = { + sizeof(struct E2SM_gNB_NRT_IndicationHeader), + offsetof(struct E2SM_gNB_NRT_IndicationHeader, _asn_ctx), + offsetof(struct E2SM_gNB_NRT_IndicationHeader, present), + sizeof(((struct E2SM_gNB_NRT_IndicationHeader *)0)->present), + asn_MAP_E2SM_gNB_NRT_IndicationHeader_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationHeader = { + "E2SM-gNB-NRT-IndicationHeader", + "E2SM-gNB-NRT-IndicationHeader", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_gNB_NRT_IndicationHeader_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_gNB_NRT_IndicationHeader_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_IndicationHeader_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.h new file mode 100644 index 0000000..1b2b2f4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_IndicationHeader_H_ +#define _E2SM_gNB_NRT_IndicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_gNB_NRT_IndicationHeader_PR { + E2SM_gNB_NRT_IndicationHeader_PR_NOTHING, /* No components present */ + E2SM_gNB_NRT_IndicationHeader_PR_indicationHeader_Format1 + /* Extensions may appear below */ + +} E2SM_gNB_NRT_IndicationHeader_PR; + +/* Forward declarations */ +struct E2SM_gNB_NRT_IndicationHeader_Format1; + +/* E2SM-gNB-NRT-IndicationHeader */ +typedef struct E2SM_gNB_NRT_IndicationHeader { + E2SM_gNB_NRT_IndicationHeader_PR present; + union E2SM_gNB_NRT_IndicationHeader_u { + struct E2SM_gNB_NRT_IndicationHeader_Format1 *indicationHeader_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_IndicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_IndicationHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c new file mode 100644 index 0000000..b5b7495 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c @@ -0,0 +1,142 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-IndicationMessage-Format1.h" + +#include "NRT-Record-List-item.h" +static int +memb_nrt_Record_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 16384)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_nrt_Record_List_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_nrt_Record_List_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nrt_Record_List_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRT_Record_List_item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_nrt_Record_List_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_nrt_Record_List_specs_2 = { + sizeof(struct E2SM_gNB_NRT_IndicationMessage_Format1__nrt_Record_List), + offsetof(struct E2SM_gNB_NRT_IndicationMessage_Format1__nrt_Record_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nrt_Record_List_2 = { + "nrt-Record-List", + "nrt-Record-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_nrt_Record_List_tags_2, + sizeof(asn_DEF_nrt_Record_List_tags_2) + /sizeof(asn_DEF_nrt_Record_List_tags_2[0]) - 1, /* 1 */ + asn_DEF_nrt_Record_List_tags_2, /* Same as above */ + sizeof(asn_DEF_nrt_Record_List_tags_2) + /sizeof(asn_DEF_nrt_Record_List_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_nrt_Record_List_constr_2, SEQUENCE_OF_constraint }, + asn_MBR_nrt_Record_List_2, + 1, /* Single element */ + &asn_SPC_nrt_Record_List_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_IndicationMessage_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_IndicationMessage_Format1, nrt_Record_List), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_nrt_Record_List_2, + 0, + { 0, &asn_PER_memb_nrt_Record_List_constr_2, memb_nrt_Record_List_constraint_1 }, + 0, 0, /* No default value */ + "nrt-Record-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_IndicationMessage_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nrt-Record-List */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_IndicationMessage_Format1_specs_1 = { + sizeof(struct E2SM_gNB_NRT_IndicationMessage_Format1), + offsetof(struct E2SM_gNB_NRT_IndicationMessage_Format1, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_IndicationMessage_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1 = { + "E2SM-gNB-NRT-IndicationMessage-Format1", + "E2SM-gNB-NRT-IndicationMessage-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_IndicationMessage_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_IndicationMessage_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.h new file mode 100644 index 0000000..b201159 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.h @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_IndicationMessage_Format1_H_ +#define _E2SM_gNB_NRT_IndicationMessage_Format1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRT_Record_List_item; + +/* E2SM-gNB-NRT-IndicationMessage-Format1 */ +typedef struct E2SM_gNB_NRT_IndicationMessage_Format1 { + struct E2SM_gNB_NRT_IndicationMessage_Format1__nrt_Record_List { + A_SEQUENCE_OF(struct NRT_Record_List_item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nrt_Record_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_IndicationMessage_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_IndicationMessage_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_IndicationMessage_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_IndicationMessage_Format1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c new file mode 100644 index 0000000..92c5ad2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c @@ -0,0 +1,71 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-IndicationMessage.h" + +#include "E2SM-gNB-NRT-IndicationMessage-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_gNB_NRT_IndicationMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_IndicationMessage_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_gNB_NRT_IndicationMessage, choice.indicationMessage_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_gNB_NRT_IndicationMessage_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indicationMessage-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_IndicationMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_gNB_NRT_IndicationMessage_specs_1 = { + sizeof(struct E2SM_gNB_NRT_IndicationMessage), + offsetof(struct E2SM_gNB_NRT_IndicationMessage, _asn_ctx), + offsetof(struct E2SM_gNB_NRT_IndicationMessage, present), + sizeof(((struct E2SM_gNB_NRT_IndicationMessage *)0)->present), + asn_MAP_E2SM_gNB_NRT_IndicationMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationMessage = { + "E2SM-gNB-NRT-IndicationMessage", + "E2SM-gNB-NRT-IndicationMessage", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_gNB_NRT_IndicationMessage_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_gNB_NRT_IndicationMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_IndicationMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.h new file mode 100644 index 0000000..3f0d997 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_IndicationMessage_H_ +#define _E2SM_gNB_NRT_IndicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_gNB_NRT_IndicationMessage_PR { + E2SM_gNB_NRT_IndicationMessage_PR_NOTHING, /* No components present */ + E2SM_gNB_NRT_IndicationMessage_PR_indicationMessage_Format1 + /* Extensions may appear below */ + +} E2SM_gNB_NRT_IndicationMessage_PR; + +/* Forward declarations */ +struct E2SM_gNB_NRT_IndicationMessage_Format1; + +/* E2SM-gNB-NRT-IndicationMessage */ +typedef struct E2SM_gNB_NRT_IndicationMessage { + E2SM_gNB_NRT_IndicationMessage_PR present; + union E2SM_gNB_NRT_IndicationMessage_u { + struct E2SM_gNB_NRT_IndicationMessage_Format1 *indicationMessage_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_IndicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_IndicationMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_IndicationMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c new file mode 100644 index 0000000..38fd4a2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c @@ -0,0 +1,490 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-NRT-RANfunction-Definition.h" + +#include "RIC-EventTriggerStyle-List.h" +#include "RIC-ReportStyle-List.h" +#include "RIC-InsertStyle-List.h" +#include "RIC-ControlStyle-List.h" +#include "RIC-PolicyStyle-List.h" +static int +memb_ric_EventTriggerStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ric_ReportStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ric_InsertStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ric_ControlStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ric_PolicyStyle_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 63)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ric_ReportStyle_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ric_InsertStyle_List_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ric_ControlStyle_List_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_ric_PolicyStyle_List_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_EventTriggerStyle_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_ReportStyle_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_InsertStyle_List_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_ControlStyle_List_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_PolicyStyle_List_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 1, 63 } /* (SIZE(1..63)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ric_EventTriggerStyle_List_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_EventTriggerStyle_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_EventTriggerStyle_List_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_EventTriggerStyle_List_specs_3 = { + sizeof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_EventTriggerStyle_List), + offsetof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_EventTriggerStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_EventTriggerStyle_List_3 = { + "ric-EventTriggerStyle-List", + "ric-EventTriggerStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_EventTriggerStyle_List_tags_3, + sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3) + /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]) - 1, /* 1 */ + asn_DEF_ric_EventTriggerStyle_List_tags_3, /* Same as above */ + sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3) + /sizeof(asn_DEF_ric_EventTriggerStyle_List_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_ric_EventTriggerStyle_List_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ric_EventTriggerStyle_List_3, + 1, /* Single element */ + &asn_SPC_ric_EventTriggerStyle_List_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ric_ReportStyle_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_ReportStyle_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_ReportStyle_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_ReportStyle_List_specs_5 = { + sizeof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_ReportStyle_List), + offsetof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_ReportStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_ReportStyle_List_5 = { + "ric-ReportStyle-List", + "ric-ReportStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_ReportStyle_List_tags_5, + sizeof(asn_DEF_ric_ReportStyle_List_tags_5) + /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_ric_ReportStyle_List_tags_5, /* Same as above */ + sizeof(asn_DEF_ric_ReportStyle_List_tags_5) + /sizeof(asn_DEF_ric_ReportStyle_List_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_ric_ReportStyle_List_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ric_ReportStyle_List_5, + 1, /* Single element */ + &asn_SPC_ric_ReportStyle_List_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ric_InsertStyle_List_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_InsertStyle_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_InsertStyle_List_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_InsertStyle_List_specs_7 = { + sizeof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_InsertStyle_List), + offsetof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_InsertStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_InsertStyle_List_7 = { + "ric-InsertStyle-List", + "ric-InsertStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_InsertStyle_List_tags_7, + sizeof(asn_DEF_ric_InsertStyle_List_tags_7) + /sizeof(asn_DEF_ric_InsertStyle_List_tags_7[0]) - 1, /* 1 */ + asn_DEF_ric_InsertStyle_List_tags_7, /* Same as above */ + sizeof(asn_DEF_ric_InsertStyle_List_tags_7) + /sizeof(asn_DEF_ric_InsertStyle_List_tags_7[0]), /* 2 */ + { 0, &asn_PER_type_ric_InsertStyle_List_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ric_InsertStyle_List_7, + 1, /* Single element */ + &asn_SPC_ric_InsertStyle_List_specs_7 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ric_ControlStyle_List_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_ControlStyle_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_ControlStyle_List_tags_9[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_ControlStyle_List_specs_9 = { + sizeof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_ControlStyle_List), + offsetof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_ControlStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_ControlStyle_List_9 = { + "ric-ControlStyle-List", + "ric-ControlStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_ControlStyle_List_tags_9, + sizeof(asn_DEF_ric_ControlStyle_List_tags_9) + /sizeof(asn_DEF_ric_ControlStyle_List_tags_9[0]) - 1, /* 1 */ + asn_DEF_ric_ControlStyle_List_tags_9, /* Same as above */ + sizeof(asn_DEF_ric_ControlStyle_List_tags_9) + /sizeof(asn_DEF_ric_ControlStyle_List_tags_9[0]), /* 2 */ + { 0, &asn_PER_type_ric_ControlStyle_List_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ric_ControlStyle_List_9, + 1, /* Single element */ + &asn_SPC_ric_ControlStyle_List_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ric_PolicyStyle_List_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RIC_PolicyStyle_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_PolicyStyle_List_tags_11[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_PolicyStyle_List_specs_11 = { + sizeof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_PolicyStyle_List), + offsetof(struct E2SM_gNB_NRT_RANfunction_Definition__ric_PolicyStyle_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_PolicyStyle_List_11 = { + "ric-PolicyStyle-List", + "ric-PolicyStyle-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_PolicyStyle_List_tags_11, + sizeof(asn_DEF_ric_PolicyStyle_List_tags_11) + /sizeof(asn_DEF_ric_PolicyStyle_List_tags_11[0]) - 1, /* 1 */ + asn_DEF_ric_PolicyStyle_List_tags_11, /* Same as above */ + sizeof(asn_DEF_ric_PolicyStyle_List_tags_11) + /sizeof(asn_DEF_ric_PolicyStyle_List_tags_11[0]), /* 2 */ + { 0, &asn_PER_type_ric_PolicyStyle_List_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ric_PolicyStyle_List_11, + 1, /* Single element */ + &asn_SPC_ric_PolicyStyle_List_specs_11 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_NRT_RANfunction_Definition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, ranFunction_Name), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunction_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunction-Name" + }, + { ATF_POINTER, 5, offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, ric_EventTriggerStyle_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_ric_EventTriggerStyle_List_3, + 0, + { 0, &asn_PER_memb_ric_EventTriggerStyle_List_constr_3, memb_ric_EventTriggerStyle_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-EventTriggerStyle-List" + }, + { ATF_POINTER, 4, offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, ric_ReportStyle_List), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_ric_ReportStyle_List_5, + 0, + { 0, &asn_PER_memb_ric_ReportStyle_List_constr_5, memb_ric_ReportStyle_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-ReportStyle-List" + }, + { ATF_POINTER, 3, offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, ric_InsertStyle_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_ric_InsertStyle_List_7, + 0, + { 0, &asn_PER_memb_ric_InsertStyle_List_constr_7, memb_ric_InsertStyle_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-InsertStyle-List" + }, + { ATF_POINTER, 2, offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, ric_ControlStyle_List), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + 0, + &asn_DEF_ric_ControlStyle_List_9, + 0, + { 0, &asn_PER_memb_ric_ControlStyle_List_constr_9, memb_ric_ControlStyle_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-ControlStyle-List" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, ric_PolicyStyle_List), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + 0, + &asn_DEF_ric_PolicyStyle_List_11, + 0, + { 0, &asn_PER_memb_ric_PolicyStyle_List_constr_11, memb_ric_PolicyStyle_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-PolicyStyle-List" + }, +}; +static const int asn_MAP_E2SM_gNB_NRT_RANfunction_Definition_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_NRT_RANfunction_Definition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-Name */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportStyle-List */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-InsertStyle-List */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-ControlStyle-List */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-PolicyStyle-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_NRT_RANfunction_Definition_specs_1 = { + sizeof(struct E2SM_gNB_NRT_RANfunction_Definition), + offsetof(struct E2SM_gNB_NRT_RANfunction_Definition, _asn_ctx), + asn_MAP_E2SM_gNB_NRT_RANfunction_Definition_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_NRT_RANfunction_Definition_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_RANfunction_Definition = { + "E2SM-gNB-NRT-RANfunction-Definition", + "E2SM-gNB-NRT-RANfunction-Definition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1, + sizeof(asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_NRT_RANfunction_Definition_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_NRT_RANfunction_Definition_1, + 6, /* Elements count */ + &asn_SPC_E2SM_gNB_NRT_RANfunction_Definition_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h new file mode 100644 index 0000000..3af9d01 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h @@ -0,0 +1,99 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_NRT_RANfunction_Definition_H_ +#define _E2SM_gNB_NRT_RANfunction_Definition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunction-Name.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RIC_EventTriggerStyle_List; +struct RIC_ReportStyle_List; +struct RIC_InsertStyle_List; +struct RIC_ControlStyle_List; +struct RIC_PolicyStyle_List; + +/* E2SM-gNB-NRT-RANfunction-Definition */ +typedef struct E2SM_gNB_NRT_RANfunction_Definition { + RANfunction_Name_t ranFunction_Name; + struct E2SM_gNB_NRT_RANfunction_Definition__ric_EventTriggerStyle_List { + A_SEQUENCE_OF(struct RIC_EventTriggerStyle_List) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_EventTriggerStyle_List; + struct E2SM_gNB_NRT_RANfunction_Definition__ric_ReportStyle_List { + A_SEQUENCE_OF(struct RIC_ReportStyle_List) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_ReportStyle_List; + struct E2SM_gNB_NRT_RANfunction_Definition__ric_InsertStyle_List { + A_SEQUENCE_OF(struct RIC_InsertStyle_List) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_InsertStyle_List; + struct E2SM_gNB_NRT_RANfunction_Definition__ric_ControlStyle_List { + A_SEQUENCE_OF(struct RIC_ControlStyle_List) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_ControlStyle_List; + struct E2SM_gNB_NRT_RANfunction_Definition__ric_PolicyStyle_List { + A_SEQUENCE_OF(struct RIC_PolicyStyle_List) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ric_PolicyStyle_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_NRT_RANfunction_Definition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_NRT_RANfunction_Definition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_NRT_RANfunction_Definition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c new file mode 100644 index 0000000..1719582 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ECGI.h" + +asn_TYPE_member_t asn_MBR_ECGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ECGI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ECGI, eUTRANcellIdentifier), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRANCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRANcellIdentifier" + }, +}; +static const ber_tlv_tag_t asn_DEF_ECGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ECGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eUTRANcellIdentifier */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ECGI_specs_1 = { + sizeof(struct ECGI), + offsetof(struct ECGI, _asn_ctx), + asn_MAP_ECGI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ECGI = { + "ECGI", + "ECGI", + &asn_OP_SEQUENCE, + asn_DEF_ECGI_tags_1, + sizeof(asn_DEF_ECGI_tags_1) + /sizeof(asn_DEF_ECGI_tags_1[0]), /* 1 */ + asn_DEF_ECGI_tags_1, /* Same as above */ + sizeof(asn_DEF_ECGI_tags_1) + /sizeof(asn_DEF_ECGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ECGI_1, + 2, /* Elements count */ + &asn_SPC_ECGI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.h new file mode 100644 index 0000000..78415e5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ECGI_H_ +#define _ECGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "EUTRANCellIdentifier.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ECGI */ +typedef struct ECGI { + PLMN_Identity_t pLMN_Identity; + EUTRANCellIdentifier_t eUTRANcellIdentifier; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ECGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ECGI; +extern asn_SEQUENCE_specifics_t asn_SPC_ECGI_specs_1; +extern asn_TYPE_member_t asn_MBR_ECGI_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ECGI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c new file mode 100644 index 0000000..4ba4c00 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c @@ -0,0 +1,85 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANCellIdentifier.h" + +int +EUTRANCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EUTRANCellIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EUTRANCellIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANCellIdentifier = { + "EUTRANCellIdentifier", + "EUTRANCellIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_EUTRANCellIdentifier_tags_1, + sizeof(asn_DEF_EUTRANCellIdentifier_tags_1) + /sizeof(asn_DEF_EUTRANCellIdentifier_tags_1[0]), /* 1 */ + asn_DEF_EUTRANCellIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANCellIdentifier_tags_1) + /sizeof(asn_DEF_EUTRANCellIdentifier_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EUTRANCellIdentifier_constr_1, EUTRANCellIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.h new file mode 100644 index 0000000..43ae85f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANCellIdentifier_H_ +#define _EUTRANCellIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANCellIdentifier */ +typedef BIT_STRING_t EUTRANCellIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EUTRANCellIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANCellIdentifier; +asn_struct_free_f EUTRANCellIdentifier_free; +asn_struct_print_f EUTRANCellIdentifier_print; +asn_constr_check_f EUTRANCellIdentifier_constraint; +ber_type_decoder_f EUTRANCellIdentifier_decode_ber; +der_type_encoder_f EUTRANCellIdentifier_encode_der; +xer_type_decoder_f EUTRANCellIdentifier_decode_xer; +xer_type_encoder_f EUTRANCellIdentifier_encode_xer; +per_type_decoder_f EUTRANCellIdentifier_decode_uper; +per_type_encoder_f EUTRANCellIdentifier_encode_uper; +per_type_decoder_f EUTRANCellIdentifier_decode_aper; +per_type_encoder_f EUTRANCellIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANCellIdentifier_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c new file mode 100644 index 0000000..2a2f4d7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c @@ -0,0 +1,1735 @@ +/*- + * Copyright (c) 2003-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* Encoder and decoder of a primitive type */ +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, + INTEGER_print, + INTEGER_compare, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + INTEGER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( + const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop); + +/* + * INTEGER specific human-readable output. + */ +static ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long uvalue = 0; + long svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_long_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_long2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + if(specs && specs->field_unsigned) { + if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) + || ((unsigned long)value < (unsigned long)ct->lower_bound)) + || ((unsigned long)value > (unsigned long)ct->upper_bound) + ) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = (unsigned long)value - (unsigned long)ct->lower_bound; + } else { + if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + if (ct->range_bits < 8) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, + 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = aper_put_length(po, -1, end - buf); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + +#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) + const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; + intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; +#undef ASN1_INTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + +#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) + const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; + uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; +#undef ASN1_UINTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.h new file mode 100644 index 0000000..f776c07 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.h @@ -0,0 +1,108 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free +#define INTEGER_decode_ber ber_decode_primitive +#define INTEGER_constraint asn_generic_no_constraint +asn_struct_print_f INTEGER_print; +asn_struct_compare_f INTEGER_compare; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +asn_random_fill_f INTEGER_random_fill; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/Makefile.am.asn1convert b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/Makefile.am.asn1convert new file mode 100644 index 0000000..1a5053c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/Makefile.am.asn1convert @@ -0,0 +1,14 @@ +include ./Makefile.am.libasncodec + +bin_PROGRAMS += asn1convert +asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION +asn1convert_CPPFLAGS = -I$(top_srcdir)/./ +asn1convert_LDADD = libasncodec.la +asn1convert_SOURCES = \ + ./converter-example.c\ + ./pdu_collection.c +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../asnTextFiles/e2sm-gNB-NRT-v401.asn + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/Makefile.am.libasncodec b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/Makefile.am.libasncodec new file mode 100644 index 0000000..f1cd298 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/Makefile.am.libasncodec @@ -0,0 +1,161 @@ +ASN_MODULE_SRCS= \ + ./ECGI.c \ + ./EUTRANCellIdentifier.c \ + ./NRCellIdentifier.c \ + ./NRCGI.c \ + ./PLMN-Identity.c \ + ./E2SM-gNB-NRT-EventTriggerDefinition.c \ + ./E2SM-gNB-NRT-EventTriggerDefinition-Format1.c \ + ./E2SM-gNB-NRT-ActionDefinition.c \ + ./E2SM-gNB-NRT-ActionDefinition-Format1.c \ + ./E2SM-gNB-NRT-IndicationHeader.c \ + ./E2SM-gNB-NRT-IndicationHeader-Format1.c \ + ./E2SM-gNB-NRT-IndicationMessage.c \ + ./NRT-Record-row-item.c \ + ./NRT-Record-List-item.c \ + ./E2SM-gNB-NRT-IndicationMessage-Format1.c \ + ./E2SM-gNB-NRT-ControlHeader.c \ + ./E2SM-gNB-NRT-ControlHeader-Format1.c \ + ./E2SM-gNB-NRT-ControlMessage.c \ + ./E2SM-gNB-NRT-ControlMessage-Format1.c \ + ./E2SM-gNB-NRT-RANfunction-Definition.c \ + ./NRT-Cell-ID.c \ + ./NRT-ControlCommand.c \ + ./NRT-TableRecord.c \ + ./NRT-TimeStamp.c \ + ./NRT-TriggerNature.c \ + ./RANfunction-Name.c \ + ./RANparameter-Item.c \ + ./RANparameterDef-Item.c \ + ./RANparameter-ID.c \ + ./RANparameter-Name.c \ + ./RANparameter-Test.c \ + ./RANparameter-Type.c \ + ./RANparameter-Value.c \ + ./RIC-ControlStyle-List.c \ + ./RIC-EventTriggerStyle-List.c \ + ./RIC-InsertStyle-List.c \ + ./RIC-PolicyStyle-List.c \ + ./RIC-ReportStyle-List.c \ + ./RIC-Format-Type.c \ + ./RIC-Style-Type.c \ + ./RIC-Style-Name.c + +ASN_MODULE_HDRS= \ + ./ECGI.h \ + ./EUTRANCellIdentifier.h \ + ./NRCellIdentifier.h \ + ./NRCGI.h \ + ./PLMN-Identity.h \ + ./E2SM-gNB-NRT-EventTriggerDefinition.h \ + ./E2SM-gNB-NRT-EventTriggerDefinition-Format1.h \ + ./E2SM-gNB-NRT-ActionDefinition.h \ + ./E2SM-gNB-NRT-ActionDefinition-Format1.h \ + ./E2SM-gNB-NRT-IndicationHeader.h \ + ./E2SM-gNB-NRT-IndicationHeader-Format1.h \ + ./E2SM-gNB-NRT-IndicationMessage.h \ + ./NRT-Record-row-item.h \ + ./NRT-Record-List-item.h \ + ./E2SM-gNB-NRT-IndicationMessage-Format1.h \ + ./E2SM-gNB-NRT-ControlHeader.h \ + ./E2SM-gNB-NRT-ControlHeader-Format1.h \ + ./E2SM-gNB-NRT-ControlMessage.h \ + ./E2SM-gNB-NRT-ControlMessage-Format1.h \ + ./E2SM-gNB-NRT-RANfunction-Definition.h \ + ./NRT-Cell-ID.h \ + ./NRT-ControlCommand.h \ + ./NRT-TableRecord.h \ + ./NRT-TimeStamp.h \ + ./NRT-TriggerNature.h \ + ./RANfunction-Name.h \ + ./RANparameter-Item.h \ + ./RANparameterDef-Item.h \ + ./RANparameter-ID.h \ + ./RANparameter-Name.h \ + ./RANparameter-Test.h \ + ./RANparameter-Type.h \ + ./RANparameter-Value.h \ + ./RIC-ControlStyle-List.h \ + ./RIC-EventTriggerStyle-List.h \ + ./RIC-InsertStyle-List.h \ + ./RIC-PolicyStyle-List.h \ + ./RIC-ReportStyle-List.h \ + ./RIC-Format-Type.h \ + ./RIC-Style-Type.h \ + ./RIC-Style-Name.h + +ASN_MODULE_HDRS+=./OPEN_TYPE.h +ASN_MODULE_SRCS+=./OPEN_TYPE.c +ASN_MODULE_HDRS+=./constr_CHOICE.h +ASN_MODULE_HDRS+=./BOOLEAN.h +ASN_MODULE_SRCS+=./BOOLEAN.c +ASN_MODULE_HDRS+=./INTEGER.h +ASN_MODULE_SRCS+=./INTEGER.c +ASN_MODULE_HDRS+=./NativeEnumerated.h +ASN_MODULE_SRCS+=./NativeEnumerated.c +ASN_MODULE_HDRS+=./NativeInteger.h +ASN_MODULE_SRCS+=./NativeInteger.c +ASN_MODULE_HDRS+=./PrintableString.h +ASN_MODULE_SRCS+=./PrintableString.c +ASN_MODULE_HDRS+=./OCTET_STRING.h +ASN_MODULE_HDRS+=./asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./asn_SET_OF.h +ASN_MODULE_SRCS+=./asn_SET_OF.c +ASN_MODULE_SRCS+=./constr_CHOICE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE.h +ASN_MODULE_SRCS+=./constr_SEQUENCE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./constr_SET_OF.h +ASN_MODULE_SRCS+=./constr_SET_OF.c +ASN_MODULE_HDRS+=./asn_application.h +ASN_MODULE_SRCS+=./asn_application.c +ASN_MODULE_HDRS+=./asn_ioc.h +ASN_MODULE_HDRS+=./asn_system.h +ASN_MODULE_HDRS+=./asn_codecs.h +ASN_MODULE_HDRS+=./asn_internal.h +ASN_MODULE_SRCS+=./asn_internal.c +ASN_MODULE_HDRS+=./asn_random_fill.h +ASN_MODULE_SRCS+=./asn_random_fill.c +ASN_MODULE_HDRS+=./asn_bit_data.h +ASN_MODULE_SRCS+=./asn_bit_data.c +ASN_MODULE_SRCS+=./OCTET_STRING.c +ASN_MODULE_HDRS+=./BIT_STRING.h +ASN_MODULE_SRCS+=./BIT_STRING.c +ASN_MODULE_SRCS+=./asn_codecs_prim.c +ASN_MODULE_HDRS+=./asn_codecs_prim.h +ASN_MODULE_HDRS+=./ber_tlv_length.h +ASN_MODULE_SRCS+=./ber_tlv_length.c +ASN_MODULE_HDRS+=./ber_tlv_tag.h +ASN_MODULE_SRCS+=./ber_tlv_tag.c +ASN_MODULE_HDRS+=./ber_decoder.h +ASN_MODULE_SRCS+=./ber_decoder.c +ASN_MODULE_HDRS+=./der_encoder.h +ASN_MODULE_SRCS+=./der_encoder.c +ASN_MODULE_HDRS+=./constr_TYPE.h +ASN_MODULE_SRCS+=./constr_TYPE.c +ASN_MODULE_HDRS+=./constraints.h +ASN_MODULE_SRCS+=./constraints.c +ASN_MODULE_HDRS+=./xer_support.h +ASN_MODULE_SRCS+=./xer_support.c +ASN_MODULE_HDRS+=./xer_decoder.h +ASN_MODULE_SRCS+=./xer_decoder.c +ASN_MODULE_HDRS+=./xer_encoder.h +ASN_MODULE_SRCS+=./xer_encoder.c +ASN_MODULE_HDRS+=./per_support.h +ASN_MODULE_SRCS+=./per_support.c +ASN_MODULE_HDRS+=./per_decoder.h +ASN_MODULE_SRCS+=./per_decoder.c +ASN_MODULE_HDRS+=./per_encoder.h +ASN_MODULE_SRCS+=./per_encoder.c +ASN_MODULE_HDRS+=./per_opentype.h +ASN_MODULE_SRCS+=./per_opentype.c + +ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT + +lib_LTLIBRARIES+=libasncodec.la +libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) +libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./ +libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) +libasncodec_la_LDFLAGS=-lm diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c new file mode 100644 index 0000000..845ea0e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRCGI.h" + +asn_TYPE_member_t asn_MBR_NRCGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRCGI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRCGI, nRcellIdentifier), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRcellIdentifier" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRCGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRCGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nRcellIdentifier */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1 = { + sizeof(struct NRCGI), + offsetof(struct NRCGI, _asn_ctx), + asn_MAP_NRCGI_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRCGI = { + "NRCGI", + "NRCGI", + &asn_OP_SEQUENCE, + asn_DEF_NRCGI_tags_1, + sizeof(asn_DEF_NRCGI_tags_1) + /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ + asn_DEF_NRCGI_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCGI_tags_1) + /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRCGI_1, + 2, /* Elements count */ + &asn_SPC_NRCGI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.h new file mode 100644 index 0000000..0b2dabf --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRCGI_H_ +#define _NRCGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "NRCellIdentifier.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRCGI */ +typedef struct NRCGI { + PLMN_Identity_t pLMN_Identity; + NRCellIdentifier_t nRcellIdentifier; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRCGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRCGI; +extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1; +extern asn_TYPE_member_t asn_MBR_NRCGI_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCGI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c new file mode 100644 index 0000000..6209463 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c @@ -0,0 +1,85 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRCellIdentifier.h" + +int +NRCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 36)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRCellIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRCellIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRCellIdentifier = { + "NRCellIdentifier", + "NRCellIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_NRCellIdentifier_tags_1, + sizeof(asn_DEF_NRCellIdentifier_tags_1) + /sizeof(asn_DEF_NRCellIdentifier_tags_1[0]), /* 1 */ + asn_DEF_NRCellIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCellIdentifier_tags_1) + /sizeof(asn_DEF_NRCellIdentifier_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRCellIdentifier_constr_1, NRCellIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.h new file mode 100644 index 0000000..1e4925e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRCellIdentifier_H_ +#define _NRCellIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRCellIdentifier */ +typedef BIT_STRING_t NRCellIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRCellIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentifier; +asn_struct_free_f NRCellIdentifier_free; +asn_struct_print_f NRCellIdentifier_print; +asn_constr_check_f NRCellIdentifier_constraint; +ber_type_decoder_f NRCellIdentifier_decode_ber; +der_type_encoder_f NRCellIdentifier_encode_der; +xer_type_decoder_f NRCellIdentifier_decode_xer; +xer_type_encoder_f NRCellIdentifier_encode_xer; +per_type_decoder_f NRCellIdentifier_decode_uper; +per_type_encoder_f NRCellIdentifier_encode_uper; +per_type_decoder_f NRCellIdentifier_decode_aper; +per_type_encoder_f NRCellIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCellIdentifier_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c new file mode 100644 index 0000000..d3a95f2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c @@ -0,0 +1,82 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-Cell-ID.h" + +#include "ECGI.h" +#include "NRCGI.h" +asn_per_constraints_t asn_PER_type_NRT_Cell_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_NRT_Cell_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct NRT_Cell_ID, choice.ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecgi" + }, + { ATF_POINTER, 0, offsetof(struct NRT_Cell_ID, choice.nrcgi), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrcgi" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_NRT_Cell_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrcgi */ +}; +asn_CHOICE_specifics_t asn_SPC_NRT_Cell_ID_specs_1 = { + sizeof(struct NRT_Cell_ID), + offsetof(struct NRT_Cell_ID, _asn_ctx), + offsetof(struct NRT_Cell_ID, present), + sizeof(((struct NRT_Cell_ID *)0)->present), + asn_MAP_NRT_Cell_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_NRT_Cell_ID = { + "NRT-Cell-ID", + "NRT-Cell-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_NRT_Cell_ID_constr_1, CHOICE_constraint }, + asn_MBR_NRT_Cell_ID_1, + 2, /* Elements count */ + &asn_SPC_NRT_Cell_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.h new file mode 100644 index 0000000..124a3e2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_Cell_ID_H_ +#define _NRT_Cell_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRT_Cell_ID_PR { + NRT_Cell_ID_PR_NOTHING, /* No components present */ + NRT_Cell_ID_PR_ecgi, + NRT_Cell_ID_PR_nrcgi + /* Extensions may appear below */ + +} NRT_Cell_ID_PR; + +/* Forward declarations */ +struct ECGI; +struct NRCGI; + +/* NRT-Cell-ID */ +typedef struct NRT_Cell_ID { + NRT_Cell_ID_PR present; + union NRT_Cell_ID_u { + struct ECGI *ecgi; + struct NRCGI *nrcgi; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRT_Cell_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRT_Cell_ID; +extern asn_CHOICE_specifics_t asn_SPC_NRT_Cell_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_NRT_Cell_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_NRT_Cell_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_Cell_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c new file mode 100644 index 0000000..13912ad --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-ControlCommand.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRT_ControlCommand_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRT_ControlCommand_value2enum_1[] = { + { 0, 8, "addition" }, + { 1, 8, "deletion" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRT_ControlCommand_enum2value_1[] = { + 0, /* addition(0) */ + 1 /* deletion(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRT_ControlCommand_specs_1 = { + asn_MAP_NRT_ControlCommand_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRT_ControlCommand_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRT_ControlCommand_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRT_ControlCommand = { + "NRT-ControlCommand", + "NRT-ControlCommand", + &asn_OP_NativeEnumerated, + asn_DEF_NRT_ControlCommand_tags_1, + sizeof(asn_DEF_NRT_ControlCommand_tags_1) + /sizeof(asn_DEF_NRT_ControlCommand_tags_1[0]), /* 1 */ + asn_DEF_NRT_ControlCommand_tags_1, /* Same as above */ + sizeof(asn_DEF_NRT_ControlCommand_tags_1) + /sizeof(asn_DEF_NRT_ControlCommand_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRT_ControlCommand_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRT_ControlCommand_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.h new file mode 100644 index 0000000..237f1dd --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_ControlCommand_H_ +#define _NRT_ControlCommand_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRT_ControlCommand { + NRT_ControlCommand_addition = 0, + NRT_ControlCommand_deletion = 1 + /* + * Enumeration is extensible + */ +} e_NRT_ControlCommand; + +/* NRT-ControlCommand */ +typedef long NRT_ControlCommand_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRT_ControlCommand_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRT_ControlCommand; +extern const asn_INTEGER_specifics_t asn_SPC_NRT_ControlCommand_specs_1; +asn_struct_free_f NRT_ControlCommand_free; +asn_struct_print_f NRT_ControlCommand_print; +asn_constr_check_f NRT_ControlCommand_constraint; +ber_type_decoder_f NRT_ControlCommand_decode_ber; +der_type_encoder_f NRT_ControlCommand_encode_der; +xer_type_decoder_f NRT_ControlCommand_decode_xer; +xer_type_encoder_f NRT_ControlCommand_encode_xer; +per_type_decoder_f NRT_ControlCommand_decode_uper; +per_type_encoder_f NRT_ControlCommand_encode_uper; +per_type_decoder_f NRT_ControlCommand_decode_aper; +per_type_encoder_f NRT_ControlCommand_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_ControlCommand_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c new file mode 100644 index 0000000..c48582d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c @@ -0,0 +1,152 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-Record-List-item.h" + +#include "NRT-Record-row-item.h" +static int +memb_nrt_Record_row_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 1024)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_nrt_Record_row_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_nrt_Record_row_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nrt_Record_row_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRT_Record_row_item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_nrt_Record_row_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_nrt_Record_row_specs_3 = { + sizeof(struct NRT_Record_List_item__nrt_Record_row), + offsetof(struct NRT_Record_List_item__nrt_Record_row, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nrt_Record_row_3 = { + "nrt-Record-row", + "nrt-Record-row", + &asn_OP_SEQUENCE_OF, + asn_DEF_nrt_Record_row_tags_3, + sizeof(asn_DEF_nrt_Record_row_tags_3) + /sizeof(asn_DEF_nrt_Record_row_tags_3[0]) - 1, /* 1 */ + asn_DEF_nrt_Record_row_tags_3, /* Same as above */ + sizeof(asn_DEF_nrt_Record_row_tags_3) + /sizeof(asn_DEF_nrt_Record_row_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_nrt_Record_row_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_nrt_Record_row_3, + 1, /* Single element */ + &asn_SPC_nrt_Record_row_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRT_Record_List_item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRT_Record_List_item, servedCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NRT_Cell_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRT_Record_List_item, nrt_Record_row), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_nrt_Record_row_3, + 0, + { 0, &asn_PER_memb_nrt_Record_row_constr_3, memb_nrt_Record_row_constraint_1 }, + 0, 0, /* No default value */ + "nrt-Record-row" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRT_Record_List_item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRT_Record_List_item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrt-Record-row */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRT_Record_List_item_specs_1 = { + sizeof(struct NRT_Record_List_item), + offsetof(struct NRT_Record_List_item, _asn_ctx), + asn_MAP_NRT_Record_List_item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRT_Record_List_item = { + "NRT-Record-List-item", + "NRT-Record-List-item", + &asn_OP_SEQUENCE, + asn_DEF_NRT_Record_List_item_tags_1, + sizeof(asn_DEF_NRT_Record_List_item_tags_1) + /sizeof(asn_DEF_NRT_Record_List_item_tags_1[0]), /* 1 */ + asn_DEF_NRT_Record_List_item_tags_1, /* Same as above */ + sizeof(asn_DEF_NRT_Record_List_item_tags_1) + /sizeof(asn_DEF_NRT_Record_List_item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRT_Record_List_item_1, + 2, /* Elements count */ + &asn_SPC_NRT_Record_List_item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.h new file mode 100644 index 0000000..2de98ff --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.h @@ -0,0 +1,69 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_Record_List_item_H_ +#define _NRT_Record_List_item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRT-Cell-ID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRT_Record_row_item; + +/* NRT-Record-List-item */ +typedef struct NRT_Record_List_item { + NRT_Cell_ID_t servedCellID; + struct NRT_Record_List_item__nrt_Record_row { + A_SEQUENCE_OF(struct NRT_Record_row_item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nrt_Record_row; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRT_Record_List_item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRT_Record_List_item; +extern asn_SEQUENCE_specifics_t asn_SPC_NRT_Record_List_item_specs_1; +extern asn_TYPE_member_t asn_MBR_NRT_Record_List_item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_Record_List_item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c new file mode 100644 index 0000000..719e2e4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-Record-row-item.h" + +asn_TYPE_member_t asn_MBR_NRT_Record_row_item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRT_Record_row_item, neighbourCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_NRT_Cell_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "neighbourCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRT_Record_row_item, nrt_Record), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRT_TableRecord, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrt-Record" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRT_Record_row_item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRT_Record_row_item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* neighbourCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrt-Record */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRT_Record_row_item_specs_1 = { + sizeof(struct NRT_Record_row_item), + offsetof(struct NRT_Record_row_item, _asn_ctx), + asn_MAP_NRT_Record_row_item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRT_Record_row_item = { + "NRT-Record-row-item", + "NRT-Record-row-item", + &asn_OP_SEQUENCE, + asn_DEF_NRT_Record_row_item_tags_1, + sizeof(asn_DEF_NRT_Record_row_item_tags_1) + /sizeof(asn_DEF_NRT_Record_row_item_tags_1[0]), /* 1 */ + asn_DEF_NRT_Record_row_item_tags_1, /* Same as above */ + sizeof(asn_DEF_NRT_Record_row_item_tags_1) + /sizeof(asn_DEF_NRT_Record_row_item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRT_Record_row_item_1, + 2, /* Elements count */ + &asn_SPC_NRT_Record_row_item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.h new file mode 100644 index 0000000..9fe4d8d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.h @@ -0,0 +1,60 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_Record_row_item_H_ +#define _NRT_Record_row_item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRT-Cell-ID.h" +#include "NRT-TableRecord.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRT-Record-row-item */ +typedef struct NRT_Record_row_item { + NRT_Cell_ID_t neighbourCellID; + NRT_TableRecord_t nrt_Record; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRT_Record_row_item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRT_Record_row_item; +extern asn_SEQUENCE_specifics_t asn_SPC_NRT_Record_row_item_specs_1; +extern asn_TYPE_member_t asn_MBR_NRT_Record_row_item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_Record_row_item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c new file mode 100644 index 0000000..781cd4f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-TableRecord.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_NRT_TableRecord_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRT_TableRecord = { + "NRT-TableRecord", + "NRT-TableRecord", + &asn_OP_OCTET_STRING, + asn_DEF_NRT_TableRecord_tags_1, + sizeof(asn_DEF_NRT_TableRecord_tags_1) + /sizeof(asn_DEF_NRT_TableRecord_tags_1[0]), /* 1 */ + asn_DEF_NRT_TableRecord_tags_1, /* Same as above */ + sizeof(asn_DEF_NRT_TableRecord_tags_1) + /sizeof(asn_DEF_NRT_TableRecord_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.h new file mode 100644 index 0000000..636292e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_TableRecord_H_ +#define _NRT_TableRecord_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRT-TableRecord */ +typedef OCTET_STRING_t NRT_TableRecord_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRT_TableRecord; +asn_struct_free_f NRT_TableRecord_free; +asn_struct_print_f NRT_TableRecord_print; +asn_constr_check_f NRT_TableRecord_constraint; +ber_type_decoder_f NRT_TableRecord_decode_ber; +der_type_encoder_f NRT_TableRecord_encode_der; +xer_type_decoder_f NRT_TableRecord_decode_xer; +xer_type_encoder_f NRT_TableRecord_encode_xer; +per_type_decoder_f NRT_TableRecord_decode_uper; +per_type_encoder_f NRT_TableRecord_encode_uper; +per_type_decoder_f NRT_TableRecord_decode_aper; +per_type_encoder_f NRT_TableRecord_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_TableRecord_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c new file mode 100644 index 0000000..0b74f0a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-TimeStamp.h" + +int +NRT_TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRT_TimeStamp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRT_TimeStamp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRT_TimeStamp = { + "NRT-TimeStamp", + "NRT-TimeStamp", + &asn_OP_OCTET_STRING, + asn_DEF_NRT_TimeStamp_tags_1, + sizeof(asn_DEF_NRT_TimeStamp_tags_1) + /sizeof(asn_DEF_NRT_TimeStamp_tags_1[0]), /* 1 */ + asn_DEF_NRT_TimeStamp_tags_1, /* Same as above */ + sizeof(asn_DEF_NRT_TimeStamp_tags_1) + /sizeof(asn_DEF_NRT_TimeStamp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRT_TimeStamp_constr_1, NRT_TimeStamp_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.h new file mode 100644 index 0000000..0ba4c4f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_TimeStamp_H_ +#define _NRT_TimeStamp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRT-TimeStamp */ +typedef OCTET_STRING_t NRT_TimeStamp_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRT_TimeStamp_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRT_TimeStamp; +asn_struct_free_f NRT_TimeStamp_free; +asn_struct_print_f NRT_TimeStamp_print; +asn_constr_check_f NRT_TimeStamp_constraint; +ber_type_decoder_f NRT_TimeStamp_decode_ber; +der_type_encoder_f NRT_TimeStamp_encode_der; +xer_type_decoder_f NRT_TimeStamp_decode_xer; +xer_type_encoder_f NRT_TimeStamp_encode_xer; +per_type_decoder_f NRT_TimeStamp_decode_uper; +per_type_encoder_f NRT_TimeStamp_encode_uper; +per_type_decoder_f NRT_TimeStamp_decode_aper; +per_type_encoder_f NRT_TimeStamp_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_TimeStamp_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c new file mode 100644 index 0000000..8f6d30e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRT-TriggerNature.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRT_TriggerNature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRT_TriggerNature_value2enum_1[] = { + { 0, 3, "now" }, + { 1, 8, "onchange" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRT_TriggerNature_enum2value_1[] = { + 0, /* now(0) */ + 1 /* onchange(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRT_TriggerNature_specs_1 = { + asn_MAP_NRT_TriggerNature_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRT_TriggerNature_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRT_TriggerNature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRT_TriggerNature = { + "NRT-TriggerNature", + "NRT-TriggerNature", + &asn_OP_NativeEnumerated, + asn_DEF_NRT_TriggerNature_tags_1, + sizeof(asn_DEF_NRT_TriggerNature_tags_1) + /sizeof(asn_DEF_NRT_TriggerNature_tags_1[0]), /* 1 */ + asn_DEF_NRT_TriggerNature_tags_1, /* Same as above */ + sizeof(asn_DEF_NRT_TriggerNature_tags_1) + /sizeof(asn_DEF_NRT_TriggerNature_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRT_TriggerNature_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRT_TriggerNature_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.h new file mode 100644 index 0000000..666113b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.h @@ -0,0 +1,72 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRT_TriggerNature_H_ +#define _NRT_TriggerNature_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRT_TriggerNature { + NRT_TriggerNature_now = 0, + NRT_TriggerNature_onchange = 1 + /* + * Enumeration is extensible + */ +} e_NRT_TriggerNature; + +/* NRT-TriggerNature */ +typedef long NRT_TriggerNature_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRT_TriggerNature_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRT_TriggerNature; +extern const asn_INTEGER_specifics_t asn_SPC_NRT_TriggerNature_specs_1; +asn_struct_free_f NRT_TriggerNature_free; +asn_struct_print_f NRT_TriggerNature_print; +asn_constr_check_f NRT_TriggerNature_constraint; +ber_type_decoder_f NRT_TriggerNature_decode_ber; +der_type_encoder_f NRT_TriggerNature_encode_der; +xer_type_decoder_f NRT_TriggerNature_decode_xer; +xer_type_encoder_f NRT_TriggerNature_encode_xer; +per_type_decoder_f NRT_TriggerNature_decode_uper; +per_type_encoder_f NRT_TriggerNature_encode_uper; +per_type_decoder_f NRT_TriggerNature_decode_aper; +per_type_encoder_f NRT_TriggerNature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRT_TriggerNature_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c new file mode 100644 index 0000000..800da97 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c @@ -0,0 +1,367 @@ +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeEnumerated_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +static int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.h new file mode 100644 index 0000000..459f0e6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +xer_type_encoder_f NativeEnumerated_encode_xer; +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; + +#define NativeEnumerated_free NativeInteger_free +#define NativeEnumerated_print NativeInteger_print +#define NativeEnumerated_compare NativeInteger_compare +#define NativeEnumerated_random_fill NativeInteger_random_fill +#define NativeEnumerated_constraint asn_generic_no_constraint +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#define NativeEnumerated_decode_xer NativeInteger_decode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c new file mode 100644 index 0000000..316e872 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c @@ -0,0 +1,550 @@ +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeInteger_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occured, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.h new file mode 100644 index 0000000..c74406a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.h @@ -0,0 +1,46 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +asn_struct_compare_f NativeInteger_compare; +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +asn_random_fill_f NativeInteger_random_fill; + +#define NativeInteger_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c new file mode 100644 index 0000000..432ce5a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c @@ -0,0 +1,2409 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; + +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +#undef _CH_PHASE +#undef NEXT_PHASE +#undef PREV_PHASE +#define _CH_PHASE(ctx, inc) do { \ + if(ctx->phase == 0) \ + ctx->context = 0; \ + ctx->phase += inc; \ + } while(0) +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do { \ + size_t _bs = (bufsize); /* Append size */ \ + size_t _ns = ctx->context; /* Allocated now */ \ + size_t _es = st->size + _bs; /* Expected size */ \ + /* int is really a typeof(st->size): */ \ + if((int)_es < 0) RETURN(RC_FAIL); \ + if(_ns <= _es) { \ + void *ptr; \ + /* Be nice and round to the memory allocator */ \ + do { _ns = _ns ? _ns << 1 : 16; } \ + while(_ns <= _es); \ + /* int is really a typeof(st->size): */ \ + if((int)_ns < 0) RETURN(RC_FAIL); \ + ptr = REALLOC(st->buf, _ns); \ + if(ptr) { \ + st->buf = (uint8_t *)ptr; \ + ctx->context = _ns; \ + } else { \ + RETURN(RC_FAIL); \ + } \ + ASN_DEBUG("Reallocating into %ld", (long)_ns); \ + } \ + memcpy(st->buf + st->size, bufptr, _bs); \ + /* Convenient nul-termination */ \ + st->buf[_es] = '\0'; \ + st->size = _es; \ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that aquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; + +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + /sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, + app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +static int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +static int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); + repeat = 0; + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + if (raw_len > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], raw_len, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + /* case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; + */ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, sizeinunits, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); + if(ret) ASN__ENCODE_FAILED; + } + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %lu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = aper_put_length(po, -1, sizeinunits); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, + maySave, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + + /* + * Remove decode-time stack. + */ + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + + return rnd_len; +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.h new file mode 100644 index 0000000..c2f8bae --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +asn_struct_compare_f OCTET_STRING_compare; +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +asn_random_fill_f OCTET_STRING_random_fill; + +#define OCTET_STRING_constraint asn_generic_no_constraint +#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c new file mode 100644 index 0000000..a54e99c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c @@ -0,0 +1,509 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, + OPEN_TYPE_print, + OPEN_TYPE_compare, + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, 0, /* No OER support, use "-gen-OER" to enable */ +#else + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#endif + 0, /* Random fill is not supported for open type */ + 0 /* Use generic outmost tag fetcher */ +}; + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} + + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.h new file mode 100644 index 0000000..b0d023c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.h @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPEN_TYPE_free CHOICE_free +#define OPEN_TYPE_print CHOICE_print +#define OPEN_TYPE_compare CHOICE_compare +#define OPEN_TYPE_constraint CHOICE_constraint +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#define OPEN_TYPE_decode_uper NULL +#define OPEN_TYPE_decode_aper NULL + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ +asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); + +asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c new file mode 100644 index 0000000..d2126e0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c @@ -0,0 +1,80 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMN-Identity.h" + +int +PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { + "PLMN-Identity", + "PLMN-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMN_Identity_tags_1, + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + asn_DEF_PLMN_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.h new file mode 100644 index 0000000..045956d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMN_Identity_H_ +#define _PLMN_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMN-Identity */ +typedef OCTET_STRING_t PLMN_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; +asn_struct_free_f PLMN_Identity_free; +asn_struct_print_f PLMN_Identity_print; +asn_constr_check_f PLMN_Identity_constraint; +ber_type_decoder_f PLMN_Identity_decode_ber; +der_type_encoder_f PLMN_Identity_encode_der; +xer_type_decoder_f PLMN_Identity_decode_xer; +xer_type_encoder_f PLMN_Identity_encode_xer; +per_type_decoder_f PLMN_Identity_decode_uper; +per_type_encoder_f PLMN_Identity_encode_uper; +per_type_decoder_f PLMN_Identity_decode_aper; +per_type_encoder_f PLMN_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMN_Identity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c new file mode 100644 index 0000000..c1e31d9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c @@ -0,0 +1,148 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ASN.1:1984 (X.409) + */ +static const int _PrintableString_alphabet[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int _PrintableString_code2value[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122}; + +/* + * PrintableString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +static int asn_DEF_PrintableString_v2c(unsigned int value) { + return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; +} +static int asn_DEF_PrintableString_c2v(unsigned int code) { + if(code < 74) + return _PrintableString_code2value[code]; + return -1; +} +static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { + { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + asn_DEF_PrintableString_v2c, + asn_DEF_PrintableString_c2v +}; +asn_TYPE_operation_t asn_OP_PrintableString = { + OCTET_STRING_free, + OCTET_STRING_print_utf8, /* ASCII subset */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_PrintableString = { + "PrintableString", + "PrintableString", + &asn_OP_PrintableString, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]) - 1, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]), + { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + + /* + * Check the alphabet of the PrintableString. + * ASN.1:1984 (X.409) + */ + for(; buf < end; buf++) { + if(!_PrintableString_alphabet[*buf]) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld (%d) " + "not in PrintableString alphabet " + "(%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.h new file mode 100644 index 0000000..7bcdceb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.h @@ -0,0 +1,55 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PrintableString_H_ +#define _PrintableString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_PrintableString; +extern asn_TYPE_operation_t asn_OP_PrintableString; + +asn_constr_check_f PrintableString_constraint; + +#define PrintableString_free OCTET_STRING_free +#define PrintableString_print OCTET_STRING_print_utf8 +#define PrintableString_compare OCTET_STRING_compare +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper +#define PrintableString_decode_aper OCTET_STRING_decode_aper +#define PrintableString_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c new file mode 100644 index 0000000..cee8749 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c @@ -0,0 +1,325 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunction-Name.h" + +static const int permitted_alphabet_table_2[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_2[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_2(const void *sptr) { + const int *table = permitted_alphabet_table_2; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_3[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_3[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_3(const void *sptr) { + const int *table = permitted_alphabet_table_3; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static const int permitted_alphabet_table_4[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_4[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_4(const void *sptr) { + const int *table = permitted_alphabet_table_4; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +static int +memb_ranFunction_ShortName_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 150) + && !check_permitted_alphabet_2(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_ranFunction_ShortName_2_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_2)/sizeof(permitted_alphabet_table_2[0])) + return -1; + return permitted_alphabet_table_2[value] - 1; +} +static int asn_PER_MAP_ranFunction_ShortName_2_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_2)/sizeof(permitted_alphabet_code2value_2[0])) + return -1; + return permitted_alphabet_code2value_2[code]; +} +static int +memb_ranFunction_E2SM_OID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 1000) + && !check_permitted_alphabet_3(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_ranFunction_E2SM_OID_3_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_3)/sizeof(permitted_alphabet_table_3[0])) + return -1; + return permitted_alphabet_table_3[value] - 1; +} +static int asn_PER_MAP_ranFunction_E2SM_OID_3_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_3)/sizeof(permitted_alphabet_code2value_3[0])) + return -1; + return permitted_alphabet_code2value_3[code]; +} +static int +memb_ranFunction_Description_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 150) + && !check_permitted_alphabet_4(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_ranFunction_Description_4_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_4)/sizeof(permitted_alphabet_table_4[0])) + return -1; + return permitted_alphabet_table_4[value] - 1; +} +static int asn_PER_MAP_ranFunction_Description_4_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_4)/sizeof(permitted_alphabet_code2value_4[0])) + return -1; + return permitted_alphabet_code2value_4[code]; +} +static asn_per_constraints_t asn_PER_memb_ranFunction_ShortName_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_ranFunction_ShortName_2_v2c, /* Value to PER code map */ + asn_PER_MAP_ranFunction_ShortName_2_c2v /* PER code to value map */ +}; +static asn_per_constraints_t asn_PER_memb_ranFunction_E2SM_OID_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1000 } /* (SIZE(1..1000,...)) */, + asn_PER_MAP_ranFunction_E2SM_OID_3_v2c, /* Value to PER code map */ + asn_PER_MAP_ranFunction_E2SM_OID_3_c2v /* PER code to value map */ +}; +static asn_per_constraints_t asn_PER_memb_ranFunction_Description_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_ranFunction_Description_4_v2c, /* Value to PER code map */ + asn_PER_MAP_ranFunction_Description_4_c2v /* PER code to value map */ +}; +asn_TYPE_member_t asn_MBR_RANfunction_Name_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_ShortName), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { 0, &asn_PER_memb_ranFunction_ShortName_constr_2, memb_ranFunction_ShortName_constraint_1 }, + 0, 0, /* No default value */ + "ranFunction-ShortName" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_E2SM_OID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { 0, &asn_PER_memb_ranFunction_E2SM_OID_constr_3, memb_ranFunction_E2SM_OID_constraint_1 }, + 0, 0, /* No default value */ + "ranFunction-E2SM-OID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Name, ranFunction_Description), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { 0, &asn_PER_memb_ranFunction_Description_constr_4, memb_ranFunction_Description_constraint_1 }, + 0, 0, /* No default value */ + "ranFunction-Description" + }, + { ATF_POINTER, 1, offsetof(struct RANfunction_Name, ranFunction_Instance), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunction-Instance" + }, +}; +static const int asn_MAP_RANfunction_Name_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_RANfunction_Name_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Name_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunction-ShortName */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunction-E2SM-OID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranFunction-Description */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranFunction-Instance */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1 = { + sizeof(struct RANfunction_Name), + offsetof(struct RANfunction_Name, _asn_ctx), + asn_MAP_RANfunction_Name_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RANfunction_Name_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Name = { + "RANfunction-Name", + "RANfunction-Name", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Name_tags_1, + sizeof(asn_DEF_RANfunction_Name_tags_1) + /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Name_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Name_tags_1) + /sizeof(asn_DEF_RANfunction_Name_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_Name_1, + 4, /* Elements count */ + &asn_SPC_RANfunction_Name_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.h new file mode 100644 index 0000000..b668130 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.h @@ -0,0 +1,66 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunction_Name_H_ +#define _RANfunction_Name_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Name */ +typedef struct RANfunction_Name { + PrintableString_t ranFunction_ShortName; + PrintableString_t ranFunction_E2SM_OID; + PrintableString_t ranFunction_Description; + long *ranFunction_Instance; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Name_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Name; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Name_specs_1; +extern asn_TYPE_member_t asn_MBR_RANfunction_Name_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Name_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c new file mode 100644 index 0000000..ca0fe2d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameter-ID.h" + +int +RANparameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANparameter_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_ID = { + "RANparameter-ID", + "RANparameter-ID", + &asn_OP_NativeInteger, + asn_DEF_RANparameter_ID_tags_1, + sizeof(asn_DEF_RANparameter_ID_tags_1) + /sizeof(asn_DEF_RANparameter_ID_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_ID_tags_1) + /sizeof(asn_DEF_RANparameter_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANparameter_ID_constr_1, RANparameter_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.h new file mode 100644 index 0000000..4bc58f0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameter_ID_H_ +#define _RANparameter_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-ID */ +typedef long RANparameter_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANparameter_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_ID; +asn_struct_free_f RANparameter_ID_free; +asn_struct_print_f RANparameter_ID_print; +asn_constr_check_f RANparameter_ID_constraint; +ber_type_decoder_f RANparameter_ID_decode_ber; +der_type_encoder_f RANparameter_ID_encode_der; +xer_type_decoder_f RANparameter_ID_decode_xer; +xer_type_encoder_f RANparameter_ID_encode_xer; +per_type_decoder_f RANparameter_ID_decode_uper; +per_type_encoder_f RANparameter_ID_encode_uper; +per_type_decoder_f RANparameter_ID_decode_aper; +per_type_encoder_f RANparameter_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c new file mode 100644 index 0000000..66bc062 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c @@ -0,0 +1,78 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameter-Item.h" + +asn_TYPE_member_t asn_MBR_RANparameter_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Item, ranParameter_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Item, ranParameter_Value), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_RANparameter_Value, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANparameter_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranParameter-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANparameter_Item_specs_1 = { + sizeof(struct RANparameter_Item), + offsetof(struct RANparameter_Item, _asn_ctx), + asn_MAP_RANparameter_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Item = { + "RANparameter-Item", + "RANparameter-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANparameter_Item_tags_1, + sizeof(asn_DEF_RANparameter_Item_tags_1) + /sizeof(asn_DEF_RANparameter_Item_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Item_tags_1) + /sizeof(asn_DEF_RANparameter_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANparameter_Item_1, + 2, /* Elements count */ + &asn_SPC_RANparameter_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.h new file mode 100644 index 0000000..0e1656c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.h @@ -0,0 +1,64 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameter_Item_H_ +#define _RANparameter_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANparameter-ID.h" +#include "RANparameter-Value.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-Item */ +typedef struct RANparameter_Item { + RANparameter_ID_t ranParameter_ID; + RANparameter_Value_t ranParameter_Value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANparameter_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RANparameter_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RANparameter_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c new file mode 100644 index 0000000..34ae226 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c @@ -0,0 +1,124 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameter-Name.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +RANparameter_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 150) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_RANparameter_Name_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_RANparameter_Name_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANparameter_Name_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_RANparameter_Name_1_v2c, /* Value to PER code map */ + asn_PER_MAP_RANparameter_Name_1_c2v /* PER code to value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_Name_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Name = { + "RANparameter-Name", + "RANparameter-Name", + &asn_OP_PrintableString, + asn_DEF_RANparameter_Name_tags_1, + sizeof(asn_DEF_RANparameter_Name_tags_1) + /sizeof(asn_DEF_RANparameter_Name_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Name_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Name_tags_1) + /sizeof(asn_DEF_RANparameter_Name_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANparameter_Name_constr_1, RANparameter_Name_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.h new file mode 100644 index 0000000..3b55a57 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameter_Name_H_ +#define _RANparameter_Name_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-Name */ +typedef PrintableString_t RANparameter_Name_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANparameter_Name_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Name; +asn_struct_free_f RANparameter_Name_free; +asn_struct_print_f RANparameter_Name_print; +asn_constr_check_f RANparameter_Name_constraint; +ber_type_decoder_f RANparameter_Name_decode_ber; +der_type_encoder_f RANparameter_Name_encode_der; +xer_type_decoder_f RANparameter_Name_decode_xer; +xer_type_encoder_f RANparameter_Name_encode_xer; +per_type_decoder_f RANparameter_Name_decode_uper; +per_type_encoder_f RANparameter_Name_encode_uper; +per_type_decoder_f RANparameter_Name_decode_aper; +per_type_encoder_f RANparameter_Name_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Name_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c new file mode 100644 index 0000000..5bc9920 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameter-Test.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RANparameter_Test_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RANparameter_Test_value2enum_1[] = { + { 0, 5, "equal" }, + { 1, 11, "greaterthan" }, + { 2, 8, "lessthan" }, + { 3, 8, "contains" }, + { 4, 7, "present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RANparameter_Test_enum2value_1[] = { + 3, /* contains(3) */ + 0, /* equal(0) */ + 1, /* greaterthan(1) */ + 2, /* lessthan(2) */ + 4 /* present(4) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RANparameter_Test_specs_1 = { + asn_MAP_RANparameter_Test_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RANparameter_Test_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_Test_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Test = { + "RANparameter-Test", + "RANparameter-Test", + &asn_OP_NativeEnumerated, + asn_DEF_RANparameter_Test_tags_1, + sizeof(asn_DEF_RANparameter_Test_tags_1) + /sizeof(asn_DEF_RANparameter_Test_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Test_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Test_tags_1) + /sizeof(asn_DEF_RANparameter_Test_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANparameter_Test_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RANparameter_Test_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.h new file mode 100644 index 0000000..35971a8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.h @@ -0,0 +1,73 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameter_Test_H_ +#define _RANparameter_Test_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RANparameter_Test { + RANparameter_Test_equal = 0, + RANparameter_Test_greaterthan = 1, + RANparameter_Test_lessthan = 2, + RANparameter_Test_contains = 3, + RANparameter_Test_present = 4 + /* + * Enumeration is extensible + */ +} e_RANparameter_Test; + +/* RANparameter-Test */ +typedef long RANparameter_Test_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Test; +asn_struct_free_f RANparameter_Test_free; +asn_struct_print_f RANparameter_Test_print; +asn_constr_check_f RANparameter_Test_constraint; +ber_type_decoder_f RANparameter_Test_decode_ber; +der_type_encoder_f RANparameter_Test_encode_der; +xer_type_decoder_f RANparameter_Test_decode_xer; +xer_type_encoder_f RANparameter_Test_encode_xer; +per_type_decoder_f RANparameter_Test_decode_uper; +per_type_encoder_f RANparameter_Test_encode_uper; +per_type_decoder_f RANparameter_Test_decode_aper; +per_type_encoder_f RANparameter_Test_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Test_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c new file mode 100644 index 0000000..64069e5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c @@ -0,0 +1,81 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameter-Type.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANparameter_Type_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RANparameter_Type_value2enum_1[] = { + { 0, 7, "integer" }, + { 1, 10, "enumerated" }, + { 2, 7, "boolean" }, + { 3, 10, "bit-string" }, + { 4, 12, "octet-string" }, + { 5, 16, "printable-string" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RANparameter_Type_enum2value_1[] = { + 3, /* bit-string(3) */ + 2, /* boolean(2) */ + 1, /* enumerated(1) */ + 0, /* integer(0) */ + 4, /* octet-string(4) */ + 5 /* printable-string(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RANparameter_Type_specs_1 = { + asn_MAP_RANparameter_Type_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RANparameter_Type_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Type = { + "RANparameter-Type", + "RANparameter-Type", + &asn_OP_NativeEnumerated, + asn_DEF_RANparameter_Type_tags_1, + sizeof(asn_DEF_RANparameter_Type_tags_1) + /sizeof(asn_DEF_RANparameter_Type_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Type_tags_1) + /sizeof(asn_DEF_RANparameter_Type_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANparameter_Type_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RANparameter_Type_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.h new file mode 100644 index 0000000..c195898 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.h @@ -0,0 +1,76 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameter_Type_H_ +#define _RANparameter_Type_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RANparameter_Type { + RANparameter_Type_integer = 0, + RANparameter_Type_enumerated = 1, + RANparameter_Type_boolean = 2, + RANparameter_Type_bit_string = 3, + RANparameter_Type_octet_string = 4, + RANparameter_Type_printable_string = 5 + /* + * Enumeration is extensible + */ +} e_RANparameter_Type; + +/* RANparameter-Type */ +typedef long RANparameter_Type_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANparameter_Type_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Type; +extern const asn_INTEGER_specifics_t asn_SPC_RANparameter_Type_specs_1; +asn_struct_free_f RANparameter_Type_free; +asn_struct_print_f RANparameter_Type_print; +asn_constr_check_f RANparameter_Type_constraint; +ber_type_decoder_f RANparameter_Type_decode_ber; +der_type_encoder_f RANparameter_Type_encode_der; +xer_type_decoder_f RANparameter_Type_decode_xer; +xer_type_encoder_f RANparameter_Type_encode_xer; +per_type_decoder_f RANparameter_Type_decode_uper; +per_type_encoder_f RANparameter_Type_encode_uper; +per_type_decoder_f RANparameter_Type_decode_aper; +per_type_encoder_f RANparameter_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Type_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c new file mode 100644 index 0000000..3603d29 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c @@ -0,0 +1,120 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameter-Value.h" + +asn_per_constraints_t asn_PER_type_RANparameter_Value_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RANparameter_Value_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Value, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Value, choice.valueEnum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueEnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Value, choice.valueBool), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBool" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Value, choice.valueBitS), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBitS" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Value, choice.valueOctS), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueOctS" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Value, choice.valuePrtS), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valuePrtS" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RANparameter_Value_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrtS */ +}; +asn_CHOICE_specifics_t asn_SPC_RANparameter_Value_specs_1 = { + sizeof(struct RANparameter_Value), + offsetof(struct RANparameter_Value, _asn_ctx), + offsetof(struct RANparameter_Value, present), + sizeof(((struct RANparameter_Value *)0)->present), + asn_MAP_RANparameter_Value_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Value = { + "RANparameter-Value", + "RANparameter-Value", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RANparameter_Value_constr_1, CHOICE_constraint }, + asn_MBR_RANparameter_Value_1, + 6, /* Elements count */ + &asn_SPC_RANparameter_Value_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.h new file mode 100644 index 0000000..90fcf84 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.h @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameter_Value_H_ +#define _RANparameter_Value_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "BIT_STRING.h" +#include "OCTET_STRING.h" +#include "PrintableString.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RANparameter_Value_PR { + RANparameter_Value_PR_NOTHING, /* No components present */ + RANparameter_Value_PR_valueInt, + RANparameter_Value_PR_valueEnum, + RANparameter_Value_PR_valueBool, + RANparameter_Value_PR_valueBitS, + RANparameter_Value_PR_valueOctS, + RANparameter_Value_PR_valuePrtS + /* Extensions may appear below */ + +} RANparameter_Value_PR; + +/* RANparameter-Value */ +typedef struct RANparameter_Value { + RANparameter_Value_PR present; + union RANparameter_Value_u { + long valueInt; + long valueEnum; + BOOLEAN_t valueBool; + BIT_STRING_t valueBitS; + OCTET_STRING_t valueOctS; + PrintableString_t valuePrtS; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANparameter_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Value; +extern asn_CHOICE_specifics_t asn_SPC_RANparameter_Value_specs_1; +extern asn_TYPE_member_t asn_MBR_RANparameter_Value_1[6]; +extern asn_per_constraints_t asn_PER_type_RANparameter_Value_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Value_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c new file mode 100644 index 0000000..e682326 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANparameterDef-Item.h" + +asn_TYPE_member_t asn_MBR_RANparameterDef_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANparameterDef_Item, ranParameter_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameterDef_Item, ranParameter_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameterDef_Item, ranParameter_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANparameterDef_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANparameterDef_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranParameter-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANparameterDef_Item_specs_1 = { + sizeof(struct RANparameterDef_Item), + offsetof(struct RANparameterDef_Item, _asn_ctx), + asn_MAP_RANparameterDef_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANparameterDef_Item = { + "RANparameterDef-Item", + "RANparameterDef-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANparameterDef_Item_tags_1, + sizeof(asn_DEF_RANparameterDef_Item_tags_1) + /sizeof(asn_DEF_RANparameterDef_Item_tags_1[0]), /* 1 */ + asn_DEF_RANparameterDef_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameterDef_Item_tags_1) + /sizeof(asn_DEF_RANparameterDef_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANparameterDef_Item_1, + 3, /* Elements count */ + &asn_SPC_RANparameterDef_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.h new file mode 100644 index 0000000..e0649f6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.h @@ -0,0 +1,66 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANparameterDef_Item_H_ +#define _RANparameterDef_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANparameter-ID.h" +#include "RANparameter-Name.h" +#include "RANparameter-Type.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameterDef-Item */ +typedef struct RANparameterDef_Item { + RANparameter_ID_t ranParameter_ID; + RANparameter_Name_t ranParameter_Name; + RANparameter_Type_t ranParameter_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANparameterDef_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameterDef_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RANparameterDef_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RANparameterDef_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameterDef_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c new file mode 100644 index 0000000..452dc98 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c @@ -0,0 +1,108 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-ControlStyle-List.h" + +asn_TYPE_member_t asn_MBR_RIC_ControlStyle_List_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_List, ric_ControlStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ControlStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_List, ric_ControlStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ControlStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_List, ric_ControlHeaderFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ControlHeaderFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_List, ric_ControlMessageFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ControlMessageFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ControlStyle_List, ric_CallProcessIDFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-CallProcessIDFormat-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_ControlStyle_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_ControlStyle_List_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ControlStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ControlStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ControlHeaderFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ControlMessageFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ric-CallProcessIDFormat-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_ControlStyle_List_specs_1 = { + sizeof(struct RIC_ControlStyle_List), + offsetof(struct RIC_ControlStyle_List, _asn_ctx), + asn_MAP_RIC_ControlStyle_List_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_ControlStyle_List = { + "RIC-ControlStyle-List", + "RIC-ControlStyle-List", + &asn_OP_SEQUENCE, + asn_DEF_RIC_ControlStyle_List_tags_1, + sizeof(asn_DEF_RIC_ControlStyle_List_tags_1) + /sizeof(asn_DEF_RIC_ControlStyle_List_tags_1[0]), /* 1 */ + asn_DEF_RIC_ControlStyle_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_ControlStyle_List_tags_1) + /sizeof(asn_DEF_RIC_ControlStyle_List_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RIC_ControlStyle_List_1, + 5, /* Elements count */ + &asn_SPC_RIC_ControlStyle_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.h new file mode 100644 index 0000000..6f86770 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.h @@ -0,0 +1,68 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_ControlStyle_List_H_ +#define _RIC_ControlStyle_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-ControlStyle-List */ +typedef struct RIC_ControlStyle_List { + RIC_Style_Type_t ric_ControlStyle_Type; + RIC_Style_Name_t ric_ControlStyle_Name; + RIC_Format_Type_t ric_ControlHeaderFormat_Type; + RIC_Format_Type_t ric_ControlMessageFormat_Type; + RIC_Format_Type_t ric_CallProcessIDFormat_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_ControlStyle_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_ControlStyle_List; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ControlStyle_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_ControlStyle_List_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_ControlStyle_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c new file mode 100644 index 0000000..3ebbb14 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c @@ -0,0 +1,88 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-EventTriggerStyle-List.h" + +asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_List_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-EventTriggerStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-EventTriggerStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_EventTriggerStyle_List, ric_EventTriggerFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-EventTriggerFormat-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_EventTriggerStyle_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_EventTriggerStyle_List_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-EventTriggerStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-EventTriggerStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ric-EventTriggerFormat-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_List_specs_1 = { + sizeof(struct RIC_EventTriggerStyle_List), + offsetof(struct RIC_EventTriggerStyle_List, _asn_ctx), + asn_MAP_RIC_EventTriggerStyle_List_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_List = { + "RIC-EventTriggerStyle-List", + "RIC-EventTriggerStyle-List", + &asn_OP_SEQUENCE, + asn_DEF_RIC_EventTriggerStyle_List_tags_1, + sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1) + /sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ + asn_DEF_RIC_EventTriggerStyle_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1) + /sizeof(asn_DEF_RIC_EventTriggerStyle_List_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RIC_EventTriggerStyle_List_1, + 3, /* Elements count */ + &asn_SPC_RIC_EventTriggerStyle_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.h new file mode 100644 index 0000000..1e0a331 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.h @@ -0,0 +1,66 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_EventTriggerStyle_List_H_ +#define _RIC_EventTriggerStyle_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-EventTriggerStyle-List */ +typedef struct RIC_EventTriggerStyle_List { + RIC_Style_Type_t ric_EventTriggerStyle_Type; + RIC_Style_Name_t ric_EventTriggerStyle_Name; + RIC_Format_Type_t ric_EventTriggerFormat_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_EventTriggerStyle_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_EventTriggerStyle_List; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_EventTriggerStyle_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_EventTriggerStyle_List_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_EventTriggerStyle_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c new file mode 100644 index 0000000..a139751 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-Format-Type.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RIC_Format_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type = { + "RIC-Format-Type", + "RIC-Format-Type", + &asn_OP_NativeInteger, + asn_DEF_RIC_Format_Type_tags_1, + sizeof(asn_DEF_RIC_Format_Type_tags_1) + /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ + asn_DEF_RIC_Format_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_Format_Type_tags_1) + /sizeof(asn_DEF_RIC_Format_Type_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.h new file mode 100644 index 0000000..a9149b0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_Format_Type_H_ +#define _RIC_Format_Type_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-Format-Type */ +typedef long RIC_Format_Type_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_Format_Type; +asn_struct_free_f RIC_Format_Type_free; +asn_struct_print_f RIC_Format_Type_print; +asn_constr_check_f RIC_Format_Type_constraint; +ber_type_decoder_f RIC_Format_Type_decode_ber; +der_type_encoder_f RIC_Format_Type_encode_der; +xer_type_decoder_f RIC_Format_Type_decode_xer; +xer_type_encoder_f RIC_Format_Type_encode_xer; +per_type_decoder_f RIC_Format_Type_decode_uper; +per_type_encoder_f RIC_Format_Type_encode_uper; +per_type_decoder_f RIC_Format_Type_decode_aper; +per_type_encoder_f RIC_Format_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_Format_Type_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c new file mode 100644 index 0000000..2662da4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c @@ -0,0 +1,202 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-InsertStyle-List.h" + +#include "RANparameterDef-Item.h" +static int +memb_ric_InsertRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ric_InsertRanParameterDef_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_InsertRanParameterDef_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ric_InsertRanParameterDef_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANparameterDef_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_InsertRanParameterDef_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_InsertRanParameterDef_List_specs_5 = { + sizeof(struct RIC_InsertStyle_List__ric_InsertRanParameterDef_List), + offsetof(struct RIC_InsertStyle_List__ric_InsertRanParameterDef_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_InsertRanParameterDef_List_5 = { + "ric-InsertRanParameterDef-List", + "ric-InsertRanParameterDef-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_InsertRanParameterDef_List_tags_5, + sizeof(asn_DEF_ric_InsertRanParameterDef_List_tags_5) + /sizeof(asn_DEF_ric_InsertRanParameterDef_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_ric_InsertRanParameterDef_List_tags_5, /* Same as above */ + sizeof(asn_DEF_ric_InsertRanParameterDef_List_tags_5) + /sizeof(asn_DEF_ric_InsertRanParameterDef_List_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_ric_InsertRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ric_InsertRanParameterDef_List_5, + 1, /* Single element */ + &asn_SPC_ric_InsertRanParameterDef_List_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RIC_InsertStyle_List_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_InsertStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-InsertStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_InsertStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-InsertStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_InsertActionFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-InsertActionFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_InsertRanParameterDef_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_ric_InsertRanParameterDef_List_5, + 0, + { 0, &asn_PER_memb_ric_InsertRanParameterDef_List_constr_5, memb_ric_InsertRanParameterDef_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-InsertRanParameterDef-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_IndicationHeaderFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-IndicationHeaderFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_IndicationMessageFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-IndicationMessageFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_InsertStyle_List, ric_CallProcessIDFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-CallProcessIDFormat-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_InsertStyle_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_InsertStyle_List_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-InsertStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-InsertStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-InsertActionFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-InsertRanParameterDef-List */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ric-IndicationMessageFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ric-CallProcessIDFormat-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_InsertStyle_List_specs_1 = { + sizeof(struct RIC_InsertStyle_List), + offsetof(struct RIC_InsertStyle_List, _asn_ctx), + asn_MAP_RIC_InsertStyle_List_tag2el_1, + 7, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_InsertStyle_List = { + "RIC-InsertStyle-List", + "RIC-InsertStyle-List", + &asn_OP_SEQUENCE, + asn_DEF_RIC_InsertStyle_List_tags_1, + sizeof(asn_DEF_RIC_InsertStyle_List_tags_1) + /sizeof(asn_DEF_RIC_InsertStyle_List_tags_1[0]), /* 1 */ + asn_DEF_RIC_InsertStyle_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_InsertStyle_List_tags_1) + /sizeof(asn_DEF_RIC_InsertStyle_List_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RIC_InsertStyle_List_1, + 7, /* Elements count */ + &asn_SPC_RIC_InsertStyle_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.h new file mode 100644 index 0000000..0182570 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.h @@ -0,0 +1,80 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_InsertStyle_List_H_ +#define _RIC_InsertStyle_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RANparameterDef_Item; + +/* RIC-InsertStyle-List */ +typedef struct RIC_InsertStyle_List { + RIC_Style_Type_t ric_InsertStyle_Type; + RIC_Style_Name_t ric_InsertStyle_Name; + RIC_Format_Type_t ric_InsertActionFormat_Type; + struct RIC_InsertStyle_List__ric_InsertRanParameterDef_List { + A_SEQUENCE_OF(struct RANparameterDef_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ric_InsertRanParameterDef_List; + RIC_Format_Type_t ric_IndicationHeaderFormat_Type; + RIC_Format_Type_t ric_IndicationMessageFormat_Type; + RIC_Format_Type_t ric_CallProcessIDFormat_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_InsertStyle_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_InsertStyle_List; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_InsertStyle_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_InsertStyle_List_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_InsertStyle_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c new file mode 100644 index 0000000..8215dda --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c @@ -0,0 +1,172 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-PolicyStyle-List.h" + +#include "RANparameterDef-Item.h" +static int +memb_ric_PolicyRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ric_PolicyRanParameterDef_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_PolicyRanParameterDef_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ric_PolicyRanParameterDef_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANparameterDef_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_PolicyRanParameterDef_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_PolicyRanParameterDef_List_specs_5 = { + sizeof(struct RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List), + offsetof(struct RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_PolicyRanParameterDef_List_5 = { + "ric-PolicyRanParameterDef-List", + "ric-PolicyRanParameterDef-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_PolicyRanParameterDef_List_tags_5, + sizeof(asn_DEF_ric_PolicyRanParameterDef_List_tags_5) + /sizeof(asn_DEF_ric_PolicyRanParameterDef_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_ric_PolicyRanParameterDef_List_tags_5, /* Same as above */ + sizeof(asn_DEF_ric_PolicyRanParameterDef_List_tags_5) + /sizeof(asn_DEF_ric_PolicyRanParameterDef_List_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_ric_PolicyRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ric_PolicyRanParameterDef_List_5, + 1, /* Single element */ + &asn_SPC_ric_PolicyRanParameterDef_List_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RIC_PolicyStyle_List_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyStyle_List, ric_PolicyStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-PolicyStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyStyle_List, ric_PolicyStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-PolicyStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyStyle_List, ric_PolicyActionFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-PolicyActionFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_PolicyStyle_List, ric_PolicyRanParameterDef_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_ric_PolicyRanParameterDef_List_5, + 0, + { 0, &asn_PER_memb_ric_PolicyRanParameterDef_List_constr_5, memb_ric_PolicyRanParameterDef_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-PolicyRanParameterDef-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_PolicyStyle_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_PolicyStyle_List_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-PolicyStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-PolicyStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-PolicyActionFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ric-PolicyRanParameterDef-List */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_PolicyStyle_List_specs_1 = { + sizeof(struct RIC_PolicyStyle_List), + offsetof(struct RIC_PolicyStyle_List, _asn_ctx), + asn_MAP_RIC_PolicyStyle_List_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_PolicyStyle_List = { + "RIC-PolicyStyle-List", + "RIC-PolicyStyle-List", + &asn_OP_SEQUENCE, + asn_DEF_RIC_PolicyStyle_List_tags_1, + sizeof(asn_DEF_RIC_PolicyStyle_List_tags_1) + /sizeof(asn_DEF_RIC_PolicyStyle_List_tags_1[0]), /* 1 */ + asn_DEF_RIC_PolicyStyle_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_PolicyStyle_List_tags_1) + /sizeof(asn_DEF_RIC_PolicyStyle_List_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RIC_PolicyStyle_List_1, + 4, /* Elements count */ + &asn_SPC_RIC_PolicyStyle_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.h new file mode 100644 index 0000000..6c065ff --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.h @@ -0,0 +1,77 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_PolicyStyle_List_H_ +#define _RIC_PolicyStyle_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RANparameterDef_Item; + +/* RIC-PolicyStyle-List */ +typedef struct RIC_PolicyStyle_List { + RIC_Style_Type_t ric_PolicyStyle_Type; + RIC_Style_Name_t ric_PolicyStyle_Name; + RIC_Format_Type_t ric_PolicyActionFormat_Type; + struct RIC_PolicyStyle_List__ric_PolicyRanParameterDef_List { + A_SEQUENCE_OF(struct RANparameterDef_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ric_PolicyRanParameterDef_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_PolicyStyle_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_PolicyStyle_List; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_PolicyStyle_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_PolicyStyle_List_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_PolicyStyle_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c new file mode 100644 index 0000000..53d5f31 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c @@ -0,0 +1,192 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-ReportStyle-List.h" + +#include "RANparameterDef-Item.h" +static int +memb_ric_ReportRanParameterDef_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ric_ReportRanParameterDef_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ric_ReportRanParameterDef_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ric_ReportRanParameterDef_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANparameterDef_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ric_ReportRanParameterDef_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ric_ReportRanParameterDef_List_specs_5 = { + sizeof(struct RIC_ReportStyle_List__ric_ReportRanParameterDef_List), + offsetof(struct RIC_ReportStyle_List__ric_ReportRanParameterDef_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ric_ReportRanParameterDef_List_5 = { + "ric-ReportRanParameterDef-List", + "ric-ReportRanParameterDef-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ric_ReportRanParameterDef_List_tags_5, + sizeof(asn_DEF_ric_ReportRanParameterDef_List_tags_5) + /sizeof(asn_DEF_ric_ReportRanParameterDef_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_ric_ReportRanParameterDef_List_tags_5, /* Same as above */ + sizeof(asn_DEF_ric_ReportRanParameterDef_List_tags_5) + /sizeof(asn_DEF_ric_ReportRanParameterDef_List_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_ric_ReportRanParameterDef_List_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ric_ReportRanParameterDef_List_5, + 1, /* Single element */ + &asn_SPC_ric_ReportRanParameterDef_List_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RIC_ReportStyle_List_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportStyle_Type), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ReportStyle-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportStyle_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Style_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ReportStyle-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportActionFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-ReportActionFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_ReportRanParameterDef_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_ric_ReportRanParameterDef_List_5, + 0, + { 0, &asn_PER_memb_ric_ReportRanParameterDef_List_constr_5, memb_ric_ReportRanParameterDef_List_constraint_1 }, + 0, 0, /* No default value */ + "ric-ReportRanParameterDef-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_IndicationHeaderFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-IndicationHeaderFormat-Type" + }, + { ATF_NOFLAGS, 0, offsetof(struct RIC_ReportStyle_List, ric_IndicationMessageFormat_Type), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RIC_Format_Type, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric-IndicationMessageFormat-Type" + }, +}; +static const ber_tlv_tag_t asn_DEF_RIC_ReportStyle_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RIC_ReportStyle_List_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ric-ReportStyle-Type */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ric-ReportStyle-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ric-ReportActionFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ric-ReportRanParameterDef-List */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ric-IndicationHeaderFormat-Type */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ric-IndicationMessageFormat-Type */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_List_specs_1 = { + sizeof(struct RIC_ReportStyle_List), + offsetof(struct RIC_ReportStyle_List, _asn_ctx), + asn_MAP_RIC_ReportStyle_List_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_List = { + "RIC-ReportStyle-List", + "RIC-ReportStyle-List", + &asn_OP_SEQUENCE, + asn_DEF_RIC_ReportStyle_List_tags_1, + sizeof(asn_DEF_RIC_ReportStyle_List_tags_1) + /sizeof(asn_DEF_RIC_ReportStyle_List_tags_1[0]), /* 1 */ + asn_DEF_RIC_ReportStyle_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_ReportStyle_List_tags_1) + /sizeof(asn_DEF_RIC_ReportStyle_List_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RIC_ReportStyle_List_1, + 6, /* Elements count */ + &asn_SPC_RIC_ReportStyle_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.h new file mode 100644 index 0000000..722d49b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.h @@ -0,0 +1,79 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_ReportStyle_List_H_ +#define _RIC_ReportStyle_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RIC-Style-Type.h" +#include "RIC-Style-Name.h" +#include "RIC-Format-Type.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RANparameterDef_Item; + +/* RIC-ReportStyle-List */ +typedef struct RIC_ReportStyle_List { + RIC_Style_Type_t ric_ReportStyle_Type; + RIC_Style_Name_t ric_ReportStyle_Name; + RIC_Format_Type_t ric_ReportActionFormat_Type; + struct RIC_ReportStyle_List__ric_ReportRanParameterDef_List { + A_SEQUENCE_OF(struct RANparameterDef_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } ric_ReportRanParameterDef_List; + RIC_Format_Type_t ric_IndicationHeaderFormat_Type; + RIC_Format_Type_t ric_IndicationMessageFormat_Type; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RIC_ReportStyle_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_ReportStyle_List; +extern asn_SEQUENCE_specifics_t asn_SPC_RIC_ReportStyle_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RIC_ReportStyle_List_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_ReportStyle_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c new file mode 100644 index 0000000..760c52d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c @@ -0,0 +1,124 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-Style-Name.h" + +static const int permitted_alphabet_table_1[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int permitted_alphabet_code2value_1[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122,}; + + +static int check_permitted_alphabet_1(const void *sptr) { + const int *table = permitted_alphabet_table_1; + /* The underlying type is PrintableString */ + const PrintableString_t *st = (const PrintableString_t *)sptr; + const uint8_t *ch = st->buf; + const uint8_t *end = ch + st->size; + + for(; ch < end; ch++) { + uint8_t cv = *ch; + if(!table[cv]) return -1; + } + return 0; +} + +int +RIC_Style_Name_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 150) + && !check_permitted_alphabet_1(st)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int asn_PER_MAP_RIC_Style_Name_1_v2c(unsigned int value) { + if(value >= sizeof(permitted_alphabet_table_1)/sizeof(permitted_alphabet_table_1[0])) + return -1; + return permitted_alphabet_table_1[value] - 1; +} +static int asn_PER_MAP_RIC_Style_Name_1_c2v(unsigned int code) { + if(code >= sizeof(permitted_alphabet_code2value_1)/sizeof(permitted_alphabet_code2value_1[0])) + return -1; + return permitted_alphabet_code2value_1[code]; +} +/* + * This type is implemented using PrintableString, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 32, 122 } /* (32..122) */, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 150 } /* (SIZE(1..150,...)) */, + asn_PER_MAP_RIC_Style_Name_1_v2c, /* Value to PER code map */ + asn_PER_MAP_RIC_Style_Name_1_c2v /* PER code to value map */ +}; +static const ber_tlv_tag_t asn_DEF_RIC_Style_Name_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name = { + "RIC-Style-Name", + "RIC-Style-Name", + &asn_OP_PrintableString, + asn_DEF_RIC_Style_Name_tags_1, + sizeof(asn_DEF_RIC_Style_Name_tags_1) + /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ + asn_DEF_RIC_Style_Name_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_Style_Name_tags_1) + /sizeof(asn_DEF_RIC_Style_Name_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RIC_Style_Name_constr_1, RIC_Style_Name_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.h new file mode 100644 index 0000000..415b71d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.h @@ -0,0 +1,62 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_Style_Name_H_ +#define _RIC_Style_Name_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrintableString.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-Style-Name */ +typedef PrintableString_t RIC_Style_Name_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RIC_Style_Name_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Name; +asn_struct_free_f RIC_Style_Name_free; +asn_struct_print_f RIC_Style_Name_print; +asn_constr_check_f RIC_Style_Name_constraint; +ber_type_decoder_f RIC_Style_Name_decode_ber; +der_type_encoder_f RIC_Style_Name_encode_der; +xer_type_decoder_f RIC_Style_Name_decode_xer; +xer_type_encoder_f RIC_Style_Name_encode_xer; +per_type_decoder_f RIC_Style_Name_decode_uper; +per_type_encoder_f RIC_Style_Name_encode_uper; +per_type_decoder_f RIC_Style_Name_decode_aper; +per_type_encoder_f RIC_Style_Name_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_Style_Name_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c new file mode 100644 index 0000000..53c6e3c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c @@ -0,0 +1,49 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RIC-Style-Type.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RIC_Style_Type_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type = { + "RIC-Style-Type", + "RIC-Style-Type", + &asn_OP_NativeInteger, + asn_DEF_RIC_Style_Type_tags_1, + sizeof(asn_DEF_RIC_Style_Type_tags_1) + /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ + asn_DEF_RIC_Style_Type_tags_1, /* Same as above */ + sizeof(asn_DEF_RIC_Style_Type_tags_1) + /sizeof(asn_DEF_RIC_Style_Type_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.h new file mode 100644 index 0000000..fbb17a9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.h @@ -0,0 +1,61 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-NRT-IEs" + * found in "../asnTextFiles/e2sm-gNB-NRT-v401.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RIC_Style_Type_H_ +#define _RIC_Style_Type_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RIC-Style-Type */ +typedef long RIC_Style_Type_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RIC_Style_Type; +asn_struct_free_f RIC_Style_Type_free; +asn_struct_print_f RIC_Style_Type_print; +asn_constr_check_f RIC_Style_Type_constraint; +ber_type_decoder_f RIC_Style_Type_decode_ber; +der_type_encoder_f RIC_Style_Type_encode_der; +xer_type_decoder_f RIC_Style_Type_decode_xer; +xer_type_encoder_f RIC_Style_Type_encode_xer; +per_type_decoder_f RIC_Style_Type_decode_uper; +per_type_encoder_f RIC_Style_Type_encode_uper; +per_type_decoder_f RIC_Style_Type_decode_aper; +per_type_encoder_f RIC_Style_Type_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RIC_Style_Type_H_ */ +#include "asn_internal.h" diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c new file mode 100644 index 0000000..ec952fc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.h new file mode 100644 index 0000000..e35bc44 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c new file mode 100644 index 0000000..944f2cb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.h new file mode 100644 index 0000000..882e1a4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.h @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c new file mode 100644 index 0000000..2bff460 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c @@ -0,0 +1,481 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; + +#ifdef ASN_DISABLE_OER_SUPPORT + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_OER_SUPPORT */ + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifdef ASN_DISABLE_PER_SUPPORT + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_PER_SUPPORT */ + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_PER_SUPPORT */ + + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; + + case ATS_DER: + case ATS_BER: + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#ifdef ASN_DISABLE_OER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); + } +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.h new file mode 100644 index 0000000..034f646 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.h @@ -0,0 +1,171 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c new file mode 100644 index 0000000..fe4b89b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.h new file mode 100644 index 0000000..59de7af --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs.h new file mode 100644 index 0000000..e75c270 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c new file mode 100644 index 0000000..fc24247 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c @@ -0,0 +1,317 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (const char *)chunk_buf + lead_wsp_size; + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.h new file mode 100644 index 0000000..fbc5576 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; + +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_constant.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_constant.h new file mode 100644 index 0000000..e79a758 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_constant.h @@ -0,0 +1,40 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define maxofCellinRAN (16384) +#define maxNoOfNeighbours (1024) +#define maxofRANParameters (255) +#define maxofRICstyles (63) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c new file mode 100644 index 0000000..1aff95f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c @@ -0,0 +1,48 @@ +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + va_end(args); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.h new file mode 100644 index 0000000..c4105ad --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.h @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#define __EXTENSIONS__ /* for Sun */ + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if !defined(BELL_LABS) /* Bell Labs */ + //#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#if defined(BELL_LABS) /* Bell Labs version */ +extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); +#define ASN_DEBUG(fmt, args...) do { \ + (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ + } while(0) +#else +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#endif /* BELL_LABS */ +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_ioc.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_ioc.h new file mode 100644 index 0000000..7de210e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_ioc.h @@ -0,0 +1,51 @@ +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c new file mode 100644 index 0000000..819cf70 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; + value = (value << 24) | (random() % 0xffffff); + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.h new file mode 100644 index 0000000..47f9b8a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_system.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_system.h new file mode 100644 index 0000000..fa8cf11 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_system.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef _WIN32 + +#include +#define snprintf _snprintf +#define vsnprintf _vsnprintf + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c new file mode 100644 index 0000000..75d6016 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.h new file mode 100644 index 0000000..1ac2a5e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c new file mode 100644 index 0000000..0a0deec --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.h new file mode 100644 index 0000000..d1e4d48 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c new file mode 100644 index 0000000..4a7d732 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c @@ -0,0 +1,144 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.h new file mode 100644 index 0000000..ce227ad --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c new file mode 100644 index 0000000..86dcbb0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c @@ -0,0 +1,1533 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * See the definitions. + */ +static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, + unsigned size); +static void _set_present_idx(void *sptr, unsigned offset, unsigned size, + unsigned pres); +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Substracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb?"Encoding":"Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + const asn_per_constraint_t *ext_ct = NULL; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) { + ext_ct = ct; + ct = 0; /* Not restricted */ + } + } + + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = aper_get_nsnnwn(pd, ext_ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct = NULL; + const asn_per_constraint_t *ext_ct = NULL; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = NULL; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && (ct->range_bits >= 0)) { + // Value is not within the range of the primary values ? + if(present < ct->lower_bound || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + // X691/23.5 Extension marker = 1 + if(per_put_few_bits(po, 1, 1)) { + ASN__ENCODE_FAILED; + } + } else { + ASN__ENCODE_FAILED; + } + // no more need of constraint. + ext_ct = ct; + ct = NULL; + } + } + + if(ct && (ct->flags & APC_EXTENSIBLE)) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present, ct->lower_bound, ct->upper_bound); + // X691.23.5 Extension marker = 0 + if(per_put_few_bits(po, 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && (ct->range_bits >= 0)) { + // By construction (ct != 0), the alternative value is a non extended one. + // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + // X691/23.8 normally encoded as a small non negative whole number + + if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +static unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +static void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} + + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} + + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, + CHOICE_print, + CHOICE_compare, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + CHOICE_decode_oer, + CHOICE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + CHOICE_random_fill, + CHOICE_outmost_tag +}; diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.h new file mode 100644 index 0000000..a1999ed --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; +asn_struct_print_f CHOICE_print; +asn_struct_compare_f CHOICE_compare; +asn_constr_check_f CHOICE_constraint; +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +asn_outmost_tag_f CHOICE_outmost_tag; +asn_random_fill_f CHOICE_random_fill; +extern asn_TYPE_operation_t asn_OP_CHOICE; + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c new file mode 100644 index 0000000..43dcac7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c @@ -0,0 +1,2059 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional + ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 + && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} + + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%ld is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%ld) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %ld not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_compare, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.h new file mode 100644 index 0000000..a22ed3a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; +asn_struct_print_f SEQUENCE_print; +asn_struct_compare_f SEQUENCE_compare; +asn_constr_check_f SEQUENCE_constraint; +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +asn_random_fill_f SEQUENCE_random_fill; +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c new file mode 100644 index 0000000..10f18cf --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c @@ -0,0 +1,358 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", + ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, list->count - seq); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_compare, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.h new file mode 100644 index 0000000..6857f0f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.h @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +asn_struct_compare_f SEQUENCE_OF_compare; +der_type_encoder_f SEQUENCE_OF_encode_der; +xer_type_encoder_f SEQUENCE_OF_encode_xer; +per_type_encoder_f SEQUENCE_OF_encode_uper; +per_type_encoder_f SEQUENCE_OF_encode_aper; +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#define SEQUENCE_OF_free SET_OF_free +#define SEQUENCE_OF_print SET_OF_print +#define SEQUENCE_OF_constraint SET_OF_constraint +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +#define SEQUENCE_OF_random_fill SET_OF_random_fill + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c new file mode 100644 index 0000000..bf1dc27 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c @@ -0,0 +1,1441 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +static void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ +}; + +static struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + + + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, + ct ? ct->effective_bits : -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, + SET_OF_print, + SET_OF_compare, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SET_OF_decode_oer, + SET_OF_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SET_OF_decode_uper, + SET_OF_encode_uper, + SET_OF_decode_aper, + 0, /* SET_OF_encode_aper */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + SET_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.h new file mode 100644 index 0000000..7681062 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; +asn_struct_print_f SET_OF_print; +asn_struct_compare_f SET_OF_compare; +asn_constr_check_f SET_OF_constraint; +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +asn_random_fill_f SET_OF_random_fill; +extern asn_TYPE_operation_t asn_OP_SET_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c new file mode 100644 index 0000000..aefaefd --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.h new file mode 100644 index 0000000..d80dea5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.h @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#include /* Subtype constraints support */ +#include /* Random structures support */ + +#ifdef ASN_DISABLE_OER_SUPPORT +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +typedef void asn_oer_constraints_t; +#else +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#endif + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { + const struct asn_oer_constraints_s *oer_constraints; + const struct asn_per_constraints_s *per_constraints; + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurence of the el_tag, relative */ + int toff_last; /* Last occurence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c new file mode 100644 index 0000000..df3c6c1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c @@ -0,0 +1,93 @@ +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.h new file mode 100644 index 0000000..0bd86a9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/converter-example.mk b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/converter-example.mk new file mode 100644 index 0000000..d30a56b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/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 -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../asnTextFiles/e2sm-gNB-NRT-v401.asn + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c new file mode 100644 index 0000000..2c6a6f7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.h new file mode 100644 index 0000000..e93944e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c new file mode 100644 index 0000000..eb46b91 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c @@ -0,0 +1,47 @@ +/* + * + * Copyright 2020 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_ActionDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_IndicationHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_IndicationMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_ControlHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_ControlMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_NRT_RANfunction_Definition; +extern struct asn_TYPE_descriptor_s asn_DEF_RANparameter_Test; + + +struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { + /* From module E2SM-gNB-NRT-IEs in ../asnTextFiles/e2sm-gNB-NRT-v401.asn */ + &asn_DEF_E2SM_gNB_NRT_EventTriggerDefinition, + &asn_DEF_E2SM_gNB_NRT_ActionDefinition, + &asn_DEF_E2SM_gNB_NRT_IndicationHeader, + &asn_DEF_E2SM_gNB_NRT_IndicationMessage, + &asn_DEF_E2SM_gNB_NRT_ControlHeader, + &asn_DEF_E2SM_gNB_NRT_ControlMessage, + &asn_DEF_E2SM_gNB_NRT_RANfunction_Definition, + &asn_DEF_RANparameter_Test, + 0 +}; + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c new file mode 100644 index 0000000..8a3e39d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c @@ -0,0 +1,185 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.h new file mode 100644 index 0000000..eea474a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.h @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c new file mode 100644 index 0000000..a35e1f0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c @@ -0,0 +1,265 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +static int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +static int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.h new file mode 100644 index 0000000..b615ef0 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.h @@ -0,0 +1,93 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c new file mode 100644 index 0000000..28f3cb6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c @@ -0,0 +1,533 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); +static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = aper_put_length(po, -1, toGo); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.h new file mode 100644 index 0000000..1493b2d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c new file mode 100644 index 0000000..2285677 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c @@ -0,0 +1,489 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { + unsigned long lhalf; /* Lower half of the number*/ + long half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__long_range(long lb, long ub, unsigned long *range_r) { + unsigned long bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { + unsigned long range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { + unsigned long range; + + if(per__long_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= LONG_MAX) { + *outp = (long)inp + lb; + } else { + *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); + } + + return 0; +} + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + if (range <= 65536 && range >= 0) + return aper_get_nsnnwn(pd, range); + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #10.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #10.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #10.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%ld", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + return -1; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, int range, size_t length) { + + ASN_DEBUG("APER put length %zu with range %d", length, range); + + /* 10.9 X.691 Note 2 */ + if (range <= 65536 && range >= 0) + return aper_put_nsnnwn(po, range, length); + + if (aper_put_align(po) < 0) + return -1; + + if(length <= 127) /* #10.9.3.6 */{ + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } + else if(length < 16384) /* #10.9.3.7 */ + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + + length >>= 14; + if(length > 4) length = 4; + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + bytes = 1; + } else if(range <= 65536) { + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.h new file mode 100644 index 0000000..23079c9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + long lower_bound; /* "lb" value */ + long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +ssize_t aper_get_length(asn_per_data_t *pd, int range, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); + + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c new file mode 100644 index 0000000..5b87703 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.h new file mode 100644 index 0000000..b951c41 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c new file mode 100644 index 0000000..4177ede --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.h new file mode 100644 index 0000000..9d75922 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c new file mode 100644 index 0000000..36b4bfb --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} + diff --git a/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.h b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.h new file mode 100644 index 0000000..c3a36e7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaninful data is found. + * This function returns number of bytes consumed from the bufer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/setup/e2/RIC-E2-TERMINATION/BuildRunName.h b/setup/e2/RIC-E2-TERMINATION/BuildRunName.h new file mode 100644 index 0000000..801f365 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/BuildRunName.h @@ -0,0 +1,170 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#ifndef E2_BUILDRUNNAME_H +#define E2_BUILDRUNNAME_H + +#include <3rdparty/oranE2/ProtocolIE-Field.h> +#include "oranE2/ProtocolIE-Container.h" +#include "oranE2/ProtocolIE-Field.h" +#include "oranE2/GlobalE2node-gNB-ID.h" +#include "oranE2/GlobalE2node-en-gNB-ID.h" +#include "oranE2/GlobalE2node-ng-eNB-ID.h" +#include "oranE2/GlobalE2node-eNB-ID.h" + +/** 02 F8 29 + * return the size of the string // + */ +static int translatePlmnId(char * plmnId, const unsigned char *data, const char* type) { + auto mcc1 = (unsigned char)((unsigned char)data[0] & (unsigned char)0x0F); + auto mcc2 = (unsigned char)(((unsigned char)((unsigned char)data[0] & (unsigned char)0xF0)) >> (unsigned char)4); + ///auto mcc3 = (unsigned char)((data[1] & (unsigned char)0xF0) >> (unsigned char)4); + auto mcc3 = (unsigned char)((unsigned char)(data[1] & (unsigned char)0x0F)); + + auto mnc1 = (unsigned char)(data[2] & (unsigned char)0x0F); + auto mnc2 = (unsigned char)(((unsigned char)(data[2] & (unsigned char)0xF0) >> (unsigned char)4)); + //auto mnc3 = (unsigned char)(((unsigned char)(data[1] & (unsigned char)0x0F) >> (unsigned char)4) ); + auto mnc3 = (unsigned char)((data[1] & (unsigned char)0xF0) >> (unsigned char)4); + + int j = 0; + if (mnc3 != 15) { + j = snprintf(plmnId, 20, "%s%1d%1d%1d-%1d%1d%1d", type, mcc1, mcc2, mcc3, mnc1, mnc2, mnc3); + } + else { + j = snprintf(plmnId, 20, "%s%1d%1d%1d-0%1d%1d", type, mcc1, mcc2, mcc3, mnc1, mnc2); + } + + return j; +} + +static int translateBitStringToChar(char *ranName, BIT_STRING_t &data) { + // dont care of last unused bits + char buffer[256] {}; + auto j = snprintf(buffer, 256, "%s-", ranName); + memcpy(ranName, buffer, j); + + unsigned b1 = 0; + unsigned b2 = 0; + for (auto i = 0; i < (int)data.size; i++) { + b1 = data.buf[i] & (unsigned)0xF0; + b1 = b1 >> (unsigned)4; + j = snprintf(buffer, 256, "%s%1x", ranName, b1); + memcpy(ranName, buffer, j); + b2 = data.buf[i] & (unsigned)0x0F; + j = snprintf(buffer, 256, "%s%1x", ranName, b2); + memcpy(ranName, buffer, j); + } + return j; +} + + +int buildRanName(char *ranName, E2setupRequestIEs_t *ie) { + switch (ie->value.choice.GlobalE2node_ID.present) { + case GlobalE2node_ID_PR_gNB: { + auto *gnb = ie->value.choice.GlobalE2node_ID.choice.gNB; + translatePlmnId(ranName, (const unsigned char *)gnb->global_gNB_ID.plmn_id.buf, (const char *)"gnb:"); + if (gnb->global_gNB_ID.gnb_id.present == GNB_ID_Choice_PR_gnb_ID) { + translateBitStringToChar(ranName, gnb->global_gNB_ID.gnb_id.choice.gnb_ID); + } + break; + } + case GlobalE2node_ID_PR_en_gNB: { + auto *enGnb = ie->value.choice.GlobalE2node_ID.choice.en_gNB; + translatePlmnId(ranName, + (const unsigned char *)enGnb->global_gNB_ID.pLMN_Identity.buf, + (const char *)"en-gnb:"); + if (enGnb->global_gNB_ID.gNB_ID.present == ENGNB_ID_PR_gNB_ID) { + translateBitStringToChar(ranName, enGnb->global_gNB_ID.gNB_ID.choice.gNB_ID); + } + break; + } + case GlobalE2node_ID_PR_ng_eNB: { + auto *ngEnb = ie->value.choice.GlobalE2node_ID.choice.ng_eNB; + char *buf = (char *)ngEnb->global_ng_eNB_ID.plmn_id.buf; + char str[20] = {}; + BIT_STRING_t *data = nullptr; + switch (ngEnb->global_ng_eNB_ID.enb_id.present) { + case ENB_ID_Choice_PR_enb_ID_macro: { + strncpy(str, (const char *)"ng-enB-macro:", 13); + data = &ngEnb->global_ng_eNB_ID.enb_id.choice.enb_ID_macro; + break; + } + case ENB_ID_Choice_PR_enb_ID_shortmacro: { + strncpy(str, (const char *)"ng-enB-shortmacro:", 18); + data = &ngEnb->global_ng_eNB_ID.enb_id.choice.enb_ID_shortmacro; + break; + } + case ENB_ID_Choice_PR_enb_ID_longmacro: { + strncpy(str, (const char *)"ng-enB-longmacro:", 17); + data = &ngEnb->global_ng_eNB_ID.enb_id.choice.enb_ID_longmacro; + } + case ENB_ID_Choice_PR_NOTHING: { + break; + } + default: + break; + } + translatePlmnId(ranName, (const unsigned char *)buf, (const char *)str); + translateBitStringToChar(ranName, *data); + break; + } + case GlobalE2node_ID_PR_eNB: { + auto *enb = ie->value.choice.GlobalE2node_ID.choice.eNB; + char *buf = (char *)enb->global_eNB_ID.pLMN_Identity.buf; + char str[20] = {}; + BIT_STRING_t *data = nullptr; + + switch (enb->global_eNB_ID.eNB_ID.present) { + case ENB_ID_PR_macro_eNB_ID: { + strncpy(str, (const char *)"enB-macro:", 10); + data = &enb->global_eNB_ID.eNB_ID.choice.macro_eNB_ID; + break; + } + case ENB_ID_PR_home_eNB_ID: { + strncpy(str, (const char *)"enB-home:", 9); + data = &enb->global_eNB_ID.eNB_ID.choice.home_eNB_ID; + break; + } + case ENB_ID_PR_short_Macro_eNB_ID: { + strncpy(str, (const char *)"enB-shortmacro:", 15); + data = &enb->global_eNB_ID.eNB_ID.choice.short_Macro_eNB_ID; + break; + } + case ENB_ID_PR_long_Macro_eNB_ID: { + strncpy(str, (const char *)"enB-longmacro:", 14); + data = &enb->global_eNB_ID.eNB_ID.choice.long_Macro_eNB_ID; + break; + } + case ENB_ID_PR_NOTHING: + default: { + break; + } + } + translatePlmnId(ranName, (const unsigned char *)buf, (const char *)str); + translateBitStringToChar(ranName, *data); + break; + } + case GlobalE2node_ID_PR_NOTHING: + default: + return -1; + } + return 0; +} + + +#endif //E2_BUILDRUNNAME_H diff --git a/setup/e2/RIC-E2-TERMINATION/BuildXml.h b/setup/e2/RIC-E2-TERMINATION/BuildXml.h new file mode 100644 index 0000000..beca88b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/BuildXml.h @@ -0,0 +1,134 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 4/5/20. +// + +#ifndef E2_BUILDXML_H +#define E2_BUILDXML_H +#include +#include +#include +#include "pugixml/src/pugixml.hpp" +#include +#include +#include +#include + +using namespace std; + +/* + * Copied from pugixml samples + */ +struct xml_string_writer : pugi::xml_writer { + std::string result; + + void write(const void *data, size_t size) override { + result.append(static_cast(data), size); + } +}; +// end::code[] + +//struct xml_memory_writer : pugi::xml_writer { +// char *buffer; +// size_t capacity; +// size_t result; +// +// xml_memory_writer() : buffer(nullptr), capacity(0), result(0) { +// } +// +// xml_memory_writer(char *buffer, size_t capacity) : buffer(buffer), capacity(capacity), result(0) { +// } +// +// [[nodiscard]] size_t written_size() const { +// return result < capacity ? result : capacity; +// } +// +// void write(const void *data, size_t size) override { +// if (result < capacity) { +// size_t chunk = (capacity - result < size) ? capacity - result : size; +// +// memcpy(buffer + result, data, chunk); +// } +// result += size; +// } +//}; + +std::string node_to_string(pugi::xml_node node) { + xml_string_writer writer; + node.print(writer); + + return writer.result; +} + + +int buildXmlData(const string &messageName, const string &ieName, vector &RANfunctionsAdded, unsigned char *buffer, size_t size) { + pugi::xml_document doc; + + doc.reset(); + pugi::xml_parse_result result = doc.load_buffer((const char *)buffer, size); + if (result) { + unsigned int index = 0; + for (auto tool : doc.child("E2AP-PDU") + .child("initiatingMessage") + .child("value") + .child(messageName.c_str()) + .child("protocolIEs") + .children(ieName.c_str())) { + // there can be many ieName entries in the messageName so we need only the ones that containes E2SM continers + auto node = tool.child("id"); // get the id to identify the type of the contained message + if (node.empty()) { + mdclog_write(MDCLOG_ERR, "Failed to find ID node in the XML. File %s, line %d", + __FILE__, __LINE__); + continue; + } + if (strcmp(node.name(), "id") == 0 && strcmp(node.child_value(), "10") == 0) { + auto nodea = tool.child("value"). + child("RANfunctions-List"). + children("ProtocolIE-SingleContainer"); + + for (auto n1 : nodea) { + auto n2 = n1.child("value").child("RANfunction-Item").child("ranFunctionDefinition"); + n2.remove_children(); + string val = RANfunctionsAdded.at(index++); + // here we get vector with counter + n2.append_child(pugi::node_pcdata).set_value(val.c_str()); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "entry %s Replaced with : %s", n2.name(), n2.child_value()); + } + } + } else { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Entry %s = value %s skipped", node.name(), node.child_value()); + } + continue; + } + } + + auto res = node_to_string(doc); + memcpy(buffer, res.c_str(), res.length()); + doc.reset(); + } else { + mdclog_write(MDCLOG_ERR, "Error loading xml string"); + return -1; + } + return 0; + +} + +#endif //E2_BUILDXML_H diff --git a/setup/e2/RIC-E2-TERMINATION/CMakeLists.txt b/setup/e2/RIC-E2-TERMINATION/CMakeLists.txt new file mode 100644 index 0000000..5a820a7 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/CMakeLists.txt @@ -0,0 +1,191 @@ +# Copyright 2019 AT&T Intellectual Property +# Copyright 2019 Nokia +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). + +cmake_minimum_required(VERSION 3.13) +project(e2) + +set(CMAKE_VERBOSE_MAKEFILE off) + +set(CMAKE_CXX_STANDARD 17) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DDEV_PKG=1") +set(PROJECT_NAME "e2") +set(PROJECT_TEST_NAME "e2") + +if (NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -LRIC-E2-TERMINATION/tracelibcpp/build -ggdb3 -Wall -W -Wpedantic") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -g -ggdb3 -O3 -L/usr/lib -L/usr/local/lib -Wall -Wpedantic") + #only c code with -O3 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -O3 -L/usr/lib -L/usr/local/lib -Wall -W -Wpedantic") +else () + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -ggdb3 --coverage -L/usr/lib -L/usr/local/lib -Wall -Wpedantic") + #only c code with -O3 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -L. -ggdb3 -L/usr/lib -L/usr/local/lib -Wall -W -Wpedantic") + +endif () + +include_directories(RIC-E2-TERMINATION + RIC-E2-TERMINATION/3rdparty/oranE2 + RIC-E2-TERMINATION/3rdparty/oranE2SM + RIC-E2-TERMINATION/3rdparty/cxxopts/include + RIC-E2-TERMINATION/3rdparty + cmake-modules) + +#E2AP library +file(GLOB E2AP_ASN_MODULE_SRCS "RIC-E2-TERMINATION/3rdparty/oranE2/*.c") +file(GLOB E2AP_ASN_MODULE_HDRS "RIC-E2-TERMINATION/3rdparty/oranE2/*.h") + +add_library(asn1codec ${E2AP_ASN_MODULE_SRCS} ${E2AP_ASN_MODULE_HDRS}) +install(TARGETS asn1codec DESTINATION /usr/lib) +install(FILES ${E2AP_E2AP_ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c) + + +#E2SM library +file(GLOB E2SM_ASN_MODULE_SRCS "RIC-E2-TERMINATION/3rdparty/oranE2SM/*.c") +file(GLOB E2SM_ASN_MODULE_HDRS "RIC-E2-TERMINATION/3rdparty/oranE2SM/*.h") + +add_library(asn1ce2smcodec ${E2SM_ASN_MODULE_SRCS} ${E2SM_ASN_MODULE_HDRS}) +#add_custom_command( +# TARGET asn1ce2smcodec +# POST_BUILD +# COMMAND objcopy +# ARGS --prefix-symbols=e2sm_ libasn1ce2smcodec.a +#) + +install(TARGETS asn1ce2smcodec DESTINATION /usr/lib) +install(FILES ${E2SM_ASN_MODULE_HDRS} DESTINATION /usr/include/asn1c) + +include_directories(RIC-E2-TERMINATION/TEST) +include_directories(RIC-E2-TERMINATION/TEST/e2smTest) +include_directories(RIC-E2-TERMINATION/TEST/T1) +include_directories(RIC-E2-TERMINATION/TEST/T2) + + +add_definitions(-DBOOST_LOG_DYN_LINK) + +link_libraries(nsl + sctp + gcov + c + m + dl + mdclog + rmr_si + asn1codec + asn1ce2smcodec + boost_system + boost_log_setup + boost_log + boost_date_time + boost_thread + boost_system + rt + tbb + boost_filesystem + cgreen + pthread) + +add_executable(e2 RIC-E2-TERMINATION/sctpThread.cpp + RIC-E2-TERMINATION/sctpThread.h + RIC-E2-TERMINATION/openTracing.h + RIC-E2-TERMINATION/mapWrapper.h + RIC-E2-TERMINATION/base64.h + RIC-E2-TERMINATION/base64.cpp + RIC-E2-TERMINATION/ReadConfigFile.h + RIC-E2-TERMINATION/BuildRunName.h + RIC-E2-TERMINATION/statCollector.h + RIC-E2-TERMINATION/3rdparty/pugixml/src/pugiconfig.hpp + RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp + RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.hpp + RIC-E2-TERMINATION/BuildXml.h) +target_link_libraries(e2 libasn1ce2smcodec.a) +target_link_libraries(e2 librmr_si.a) +target_link_libraries(e2 libicui18n.a) +target_link_libraries(e2 libicuuc.a) +target_link_libraries(e2 libicudata.a) + +#target_link_libraries(e2 libnng.a) + +add_executable(testConfigFile + RIC-E2-TERMINATION/ReadConfigFile.h + RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp) + +add_executable(b64Test + RIC-E2-TERMINATION/base64.cpp + RIC-E2-TERMINATION/base64.h + RIC-E2-TERMINATION/TEST/base64/testBase64.cpp) + + +add_executable(sctpClient + RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp + RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.h + RIC-E2-TERMINATION/TEST/testAsn/rmrClient/rmrClient.h + RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp + RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.h + RIC-E2-TERMINATION/base64.h + RIC-E2-TERMINATION/base64.cpp + RIC-E2-TERMINATION/TEST/T1/E2Builder.h + + #RIC-E2-TERMINATION/TEST/T1/Test1.cpp + #RIC-E2-TERMINATION/TEST/T1/ + ) +target_link_libraries(sctpClient libpistache.a) +target_link_libraries(sctpClient librmr_si.a) +#target_link_libraries(sctpClient libnng.a) + +add_executable(setUpMessages + RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp + RIC-E2-TERMINATION/BuildRunName.h + ) + +#find_package(RapidJSON) + +add_executable(teste2 + RIC-E2-TERMINATION/TEST/e2test.h + RIC-E2-TERMINATION/TEST/e2test.cpp + ) + +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules") + set(CMAKE_BUILD_TYPE "Debug") + include(cmake-modules/CodeCoverage.cmake) + target_link_libraries(${PROJECT_TEST_NAME} gcov) + + set(LDFLAGS "--coverage -fprofile-arcs") + + # setup_target_for_coverage_lcov(${PROJECT_NAME}_coverage ${PROJECT_TEST_NAME} coverage) + set(COVERAGE_LCOV_EXCLUDES ${PROJECT_SOURCE_DIR}/config' + ${PROJECT_SOURCE_DIR}/log' + '${PROJECT_SOURCE_DIR}/docs' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config') + + set(COVERAGE_EXCLUDES '${PROJECT_SOURCE_DIR}/config' + ${PROJECT_SOURCE_DIR}/log' + '${PROJECT_SOURCE_DIR}/docs' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/3rdparty' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/oranE2' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/TEST' + '${PROJECT_SOURCE_DIR}/RIC-E2-TERMINATION/config') + append_coverage_compiler_flags() + SETUP_TARGET_FOR_COVERAGE_LCOV(NAME e2_coverage + EXECUTABLE e2 + DEPENDENCIES e2) +endif () diff --git a/setup/e2/RIC-E2-TERMINATION/Dockerfile b/setup/e2/RIC-E2-TERMINATION/Dockerfile new file mode 100644 index 0000000..082e9cc --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/Dockerfile @@ -0,0 +1,148 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# +FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:9-u18.04 as ubuntu + +WORKDIR /opt/e2/ + +ARG BUILD_TYPE="Release" + +RUN mkdir -p /opt/e2/RIC-E2-TERMINATION/ \ +# && mkdir -p /opt/e2/RIC-E2-TERMINATION/TEST/T1 \ + && mkdir -p /opt/e2/RIC-E2-TERMINATION/TEST/T2 \ + && mkdir -p /opt/e2/RIC-E2-TERMINATION/3rdparty + +COPY . /opt/e2/RIC-E2-TERMINATION/ + +RUN apt-get update && apt-get install -y libcurl4-gnutls-dev gawk libtbb-dev libtbb-doc libtbb2 libtbb2-dbg rapidjson-dev && rm -rf /var/lib/apt/lists/* \ + && mv /opt/e2/RIC-E2-TERMINATION/CMakeLists.txt /opt/e2/ && mv /opt/e2/RIC-E2-TERMINATION/Makefile /opt/e2/ && cat /opt/e2/RIC-E2-TERMINATION/config/config.conf \ + && wget --content-disposition https://github.com/cgreen-devs/cgreen/releases/download/1.2.0/cgreen_1.2.0_amd64.deb \ + && dpkg -i cgreen_1.2.0_amd64.deb \ + && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_4.0.2_amd64.deb/download.deb \ + && dpkg -i rmr_4.0.2_amd64.deb \ + && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_4.0.2_amd64.deb/download.deb \ + && dpkg -i rmr-dev_4.0.2_amd64.deb \ + && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog_0.0.4-1_amd64.deb/download.deb \ + && dpkg -i mdclog_0.0.4-1_amd64.deb \ + && wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog-dev_0.0.4-1_amd64.deb/download.deb \ + && dpkg -i mdclog-dev_0.0.4-1_amd64.deb \ + && cd /opt/e2/RIC-E2-TERMINATION/3rdparty && git clone https://github.com/oktal/pistache.git && cd pistache && git checkout 270bbefeb25a402153a55053f845e9c7674ab713 \ + && git submodule update --init && mkdir build && cd build \ + && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DPISTACHE_BUILD_DOCS=false \ + -DPISTACHE_USE_SSL=false -DPISTACHE_BUILD_TESTS=false -DCMAKE_INSTALL_PREFIX=/usr/local ../ \ + && make -j ${nproc} && make install && ldconfig \ +# && git clone http://gerrit.o-ran-sc.org/r/com/log \ +# && cd log && ./autogen.sh && ./configure && make && make install && ldconfig \ + && cd /opt/e2/RIC-E2-TERMINATION/3rdparty && git clone https://github.com/jarro2783/cxxopts.git \ + && cd /opt/e2/RIC-E2-TERMINATION/3rdparty && git clone https://github.com/Tencent/rapidjson.git \ + && cd /opt/e2/RIC-E2-TERMINATION/3rdparty && git clone https://github.com/zeux/pugixml.git \ + && cd /opt/e2/ && git clone https://github.com/bilke/cmake-modules.git \ + && cd /opt/e2/ && /usr/local/bin/cmake -D CMAKE_BUILD_TYPE=$BUILD_TYPE . && make -j ${nproc} \ + && echo "3" > /opt/e2/rmr.verbose + + + +RUN if [$BUILD_TYPE == "Debug"] ; then make e2_coverage ; fi + +# && git clone http://gerrit.o-ran-sc.org/r/ric-plt/tracelibcpp \ +# && cd tracelibcpp && mkdir build && cd build \ +# && sed -i '19iset\(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3"\)' ../CMakeLists.txt \ +# && sed -i '19iset\(CMAKE_CXX_STANDARD 17\)' ../CMakeLists.txt\ +# && /usr/local/bin/cmake .. && make && cd .. && cp include/tracelibcpp/tracelibcpp.hpp . && cd .. \ +# && mkdir nlohmann && cd nlohmann && find / -type f -name "json.hpp" -exec cp {} json.hpp \; && cd .. \ +# && find / -type d -name "opentracing" -exec cp -r {} . \; \ +# && cd /usr/local/lib/ && find / -type f -name "libyaml-cpp.a" -exec cp {} libyaml-cpp.a \; \ +# && find / -type f -name "libopentracing.a" -exec cp {} libopentracing.a \; && cd /opt/e2/RIC-E2-TERMINATION && ls nlohmann \ + +FROM ubuntu:18.04 +RUN apt-get update && apt-get install -y net-tools iputils-ping curl tcpdump libsctp-dev vim build-essential && mkdir -p /opt/e2/config + +# COPY --from=ubuntu /opt/e2/e2 /opt/e2/e2 +COPY --from=ubuntu /opt/e2/ /opt/e2/ +COPY --from=ubuntu /opt/e2/rmr.verbose /tmp/rmr.verbose +COPY --from=ubuntu /opt/e2/RIC-E2-TERMINATION/dockerRouter.txt /opt/e2/RIC-E2-TERMINATION/startup.sh /opt/e2/ +COPY --from=ubuntu /opt/e2/RIC-E2-TERMINATION/config/config.conf /opt/e2/config/config.conf +#COPY --from=ubuntu /opt/e2/RIC-E2-TERMINATION/tracelibcpp/build/libtracelibcpp.so /usr/local/lib/libtracelibcpp.so +#COPY --from=ubuntu /opt/e2/RIC-E2-TERMINATION/tracelibcpp/build/libtracelibcpp.so.0 /usr/local/lib/libtracelibcpp.so.0 +#COPY --from=ubuntu /opt/e2/RIC-E2-TERMINATION/tracelibcpp/build/libtracelibcpp.so.0.0.2 /usr/local/lib/libtracelibcpp.so.0.0.2 + +COPY --from=ubuntu /usr/local/lib/librmr_si.so.4.0.2 \ + /usr/local/lib/librmr_si.so.4 \ + /usr/local/lib/librmr_si.so \ + /usr/lib/x86_64-linux-gnu/libmdclog.so \ + /usr/lib/x86_64-linux-gnu/libmdclog.so.0 \ + /usr/lib/x86_64-linux-gnu/libmdclog.so.0.0.4 \ + /usr/local/lib/ + +COPY --from=ubuntu /usr/lib/x86_64-linux-gnu/libcgreen.so \ + /usr/lib/x86_64-linux-gnu/libcgreen.so.1 \ + /usr/lib/x86_64-linux-gnu/libcgreen.so.1.2.0 \ + /usr/lib/x86_64-linux-gnu/libtbb.so \ + /usr/lib/x86_64-linux-gnu/libtbb.so.2 \ + /usr/lib/x86_64-linux-gnu/libtbbmalloc.so \ + /usr/lib/x86_64-linux-gnu/libtbbmalloc.so.2 \ + /usr/lib/x86_64-linux-gnu/libtbbmalloc_proxy.so \ + /usr/lib/x86_64-linux-gnu/libtbbmalloc_proxy.so.2 \ + /usr/local/ + +COPY --from=ubuntu /usr/lib/libboost_log_setup.so \ + /usr/lib/libboost_log_setup.so.1.69.0 \ + /usr/lib/libboost_log.so \ + /usr/lib/libboost_log.so.1.69.0 \ + /usr/lib/libboost_thread.so \ + /usr/lib/libboost_thread.so.1.69.0 \ + /usr/lib/libboost_filesystem.so \ + /usr/lib/libboost_filesystem.so.1.69.0 \ + /usr/lib/libboost_regex.so \ + /usr/lib/libboost_regex.so.1.69.0 \ + /usr/lib/x86_64-linux-gnu/libicui18n.so \ + /usr/lib/x86_64-linux-gnu/libicui18n.so.60.2 \ + /usr/lib/x86_64-linux-gnu/libicui18n.so.60 \ + /usr/lib/x86_64-linux-gnu/libicuuc.so \ + /usr/lib/x86_64-linux-gnu/libicuuc.so.60.2 \ + /usr/lib/x86_64-linux-gnu/libicuuc.so.60 \ + /usr/lib/x86_64-linux-gnu/libicudata.so \ + /usr/lib/x86_64-linux-gnu/libicudata.so.60.2 \ + /usr/lib/x86_64-linux-gnu/libicudata.so.60 \ + /usr/lib/x86_64-linux-gnu/libstdc++.so.6 \ + /usr/lib/x86_64-linux-gnu/libsctp.so \ + /usr/lib/x86_64-linux-gnu/libsctp.so.1 \ + /usr/lib/x86_64-linux-gnu/libsctp.so.1.0.17 \ + /usr/lib/ + +COPY --from=ubuntu /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=ubuntu /usr/local/share/cmake-3.14 /usr/local/share/cmake-3.14 + +# the following are needed to compile e2term inside the Docker container +RUN apt-get install -y libboost-all-dev libtbb-dev rapidjson-dev && rm -rf /var/lib/apt/lists/* +RUN cd /opt/e2/RIC-E2-TERMINATION/3rdparty/pistache/build && make install +RUN dpkg -i /opt/e2/cgreen_1.2.0_amd64.deb && dpkg -i /opt/e2/rmr_4.0.2_amd64.deb && \ + dpkg -i /opt/e2/rmr-dev_4.0.2_amd64.deb && dpkg -i /opt/e2/mdclog_0.0.4-1_amd64.deb && \ + dpkg -i /opt/e2/mdclog-dev_0.0.4-1_amd64.deb + +WORKDIR /opt/e2/ +ENV LD_LIBRARY_PATH=/usr/local/lib +ENV RMR_SEED_RT=dockerRouter.txt +ENV E2TERM_POD_NAME=e2term +RUN chmod +x /opt/e2/startup.sh +EXPOSE 38000 +CMD ["sh", "-c", "./startup.sh"] diff --git a/setup/e2/RIC-E2-TERMINATION/Makefile b/setup/e2/RIC-E2-TERMINATION/Makefile new file mode 100644 index 0000000..6efdae6 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/Makefile @@ -0,0 +1,6692 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.14 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/bin/cmake + +# The command to remove a file. +RM = /usr/local/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /opt/e2 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /opt/e2 + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + /usr/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/local/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + /usr/local/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/local/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + /usr/local/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + /usr/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components + +.PHONY : list_install_components/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /opt/e2/CMakeFiles /opt/e2/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /opt/e2/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named teste2 + +# Build rule for target. +teste2: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 teste2 +.PHONY : teste2 + +# fast build rule for target. +teste2/fast: + $(MAKE) -f CMakeFiles/teste2.dir/build.make CMakeFiles/teste2.dir/build +.PHONY : teste2/fast + +#============================================================================= +# Target rules for targets named asn1ce2smcodec + +# Build rule for target. +asn1ce2smcodec: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 asn1ce2smcodec +.PHONY : asn1ce2smcodec + +# fast build rule for target. +asn1ce2smcodec/fast: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/build +.PHONY : asn1ce2smcodec/fast + +#============================================================================= +# Target rules for targets named asn1codec + +# Build rule for target. +asn1codec: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 asn1codec +.PHONY : asn1codec + +# fast build rule for target. +asn1codec/fast: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/build +.PHONY : asn1codec/fast + +#============================================================================= +# Target rules for targets named e2 + +# Build rule for target. +e2: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 e2 +.PHONY : e2 + +# fast build rule for target. +e2/fast: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/build +.PHONY : e2/fast + +#============================================================================= +# Target rules for targets named b64Test + +# Build rule for target. +b64Test: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 b64Test +.PHONY : b64Test + +# fast build rule for target. +b64Test/fast: + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/build +.PHONY : b64Test/fast + +#============================================================================= +# Target rules for targets named setUpMessages + +# Build rule for target. +setUpMessages: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 setUpMessages +.PHONY : setUpMessages + +# fast build rule for target. +setUpMessages/fast: + $(MAKE) -f CMakeFiles/setUpMessages.dir/build.make CMakeFiles/setUpMessages.dir/build +.PHONY : setUpMessages/fast + +#============================================================================= +# Target rules for targets named testConfigFile + +# Build rule for target. +testConfigFile: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 testConfigFile +.PHONY : testConfigFile + +# fast build rule for target. +testConfigFile/fast: + $(MAKE) -f CMakeFiles/testConfigFile.dir/build.make CMakeFiles/testConfigFile.dir/build +.PHONY : testConfigFile/fast + +#============================================================================= +# Target rules for targets named sctpClient + +# Build rule for target. +sctpClient: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 sctpClient +.PHONY : sctpClient + +# fast build rule for target. +sctpClient/fast: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/build +.PHONY : sctpClient/fast + +RIC-E2-TERMINATION/3rdparty/oranE2/ANY.o: RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ANY.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ANY.i: RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ANY.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ANY.s: RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ANY.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ANY.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.o: RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.i: RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.s: RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/Cause.o: RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Cause.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/Cause.i: RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Cause.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/Cause.s: RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Cause.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Cause.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.o: RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.i: RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.s: RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.o: RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.i: RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.s: RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.o: RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.i: RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.s: RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.o: RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.i: RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.s: RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.o: RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.i: RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.s: RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.o: RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.i: RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.s: RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.o: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.i: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.s: RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.o: RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.i: RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.s: RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.o: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.i: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.s: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.o: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.i: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.s: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.o: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.i: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.s: RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.o: RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.i: RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.s: RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.o: RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.i: RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.s: RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.o: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.i: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.s: RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.o: RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.i: RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.s: RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.o: RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.i: RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.s: RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.o: RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.i: RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.s: RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.o: RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.i: RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.s: RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.o: RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.i: RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.s: RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.o: RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.i: RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.s: RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.o: RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.i: RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.s: RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/Presence.o: RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Presence.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/Presence.i: RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Presence.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/Presence.s: RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Presence.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/Presence.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.o: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.i: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.s: RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.o: RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.i: RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.s: RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.o: RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.i: RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.s: RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.o: RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.i: RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.s: RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.o: RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.i: RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.s: RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.o: RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.i: RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.s: RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.o: RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.i: RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.s: RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.o: RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.i: RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.s: RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.o: RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.i: RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.s: RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.o: RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.i: RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.s: RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.o: RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.i: RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.s: RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.o: RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.i: RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.s: RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.o: RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.i: RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.s: RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.o: RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.i: RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.s: RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.o: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.i: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.s: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.o: RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.i: RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.s: RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/constraints.o: RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constraints.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/constraints.i: RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constraints.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/constraints.s: RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constraints.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/constraints.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.o: RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.i: RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.s: RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.o: RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.i: RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.s: RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.o: RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.i: RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.s: RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.o: RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.i: RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.s: RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.o: RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.i: RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.s: RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/per_support.o: RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_support.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/per_support.i: RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_support.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/per_support.s: RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_support.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/per_support.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.o: RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.i: RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.s: RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.o: RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.i: RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.s: RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.o: RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.o: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.i: RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.i: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.s: RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.s: + $(MAKE) -f CMakeFiles/asn1codec.dir/build.make CMakeFiles/asn1codec.dir/RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.c.s + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.o: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.o: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.o +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.o + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.i: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.i: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.i +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.i + +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.s: RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.s: + $(MAKE) -f CMakeFiles/asn1ce2smcodec.dir/build.make CMakeFiles/asn1ce2smcodec.dir/RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.s +.PHONY : RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.c.s + +RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.o: RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.o + +.PHONY : RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.o + +# target to build an object file +RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.o: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.o +.PHONY : RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.o + +RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.i: RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.i + +.PHONY : RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.i + +# target to preprocess a source file +RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.i: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.i +.PHONY : RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.i + +RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.s: RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.s + +.PHONY : RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.s: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.s +.PHONY : RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.cpp.s + +RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.o: RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.o + +.PHONY : RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.o + +# target to build an object file +RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.o: + $(MAKE) -f CMakeFiles/testConfigFile.dir/build.make CMakeFiles/testConfigFile.dir/RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.o +.PHONY : RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.o + +RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.i: RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.i + +.PHONY : RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.i + +# target to preprocess a source file +RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.i: + $(MAKE) -f CMakeFiles/testConfigFile.dir/build.make CMakeFiles/testConfigFile.dir/RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.i +.PHONY : RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.i + +RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.s: RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.s + +.PHONY : RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.s: + $(MAKE) -f CMakeFiles/testConfigFile.dir/build.make CMakeFiles/testConfigFile.dir/RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.s +.PHONY : RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp.s + +RIC-E2-TERMINATION/TEST/base64/testBase64.o: RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.o + +.PHONY : RIC-E2-TERMINATION/TEST/base64/testBase64.o + +# target to build an object file +RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.o: + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.o +.PHONY : RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.o + +RIC-E2-TERMINATION/TEST/base64/testBase64.i: RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.i + +.PHONY : RIC-E2-TERMINATION/TEST/base64/testBase64.i + +# target to preprocess a source file +RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.i: + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.i +.PHONY : RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.i + +RIC-E2-TERMINATION/TEST/base64/testBase64.s: RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.s + +.PHONY : RIC-E2-TERMINATION/TEST/base64/testBase64.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.s: + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.s +.PHONY : RIC-E2-TERMINATION/TEST/base64/testBase64.cpp.s + +RIC-E2-TERMINATION/TEST/e2test.o: RIC-E2-TERMINATION/TEST/e2test.cpp.o + +.PHONY : RIC-E2-TERMINATION/TEST/e2test.o + +# target to build an object file +RIC-E2-TERMINATION/TEST/e2test.cpp.o: + $(MAKE) -f CMakeFiles/teste2.dir/build.make CMakeFiles/teste2.dir/RIC-E2-TERMINATION/TEST/e2test.cpp.o +.PHONY : RIC-E2-TERMINATION/TEST/e2test.cpp.o + +RIC-E2-TERMINATION/TEST/e2test.i: RIC-E2-TERMINATION/TEST/e2test.cpp.i + +.PHONY : RIC-E2-TERMINATION/TEST/e2test.i + +# target to preprocess a source file +RIC-E2-TERMINATION/TEST/e2test.cpp.i: + $(MAKE) -f CMakeFiles/teste2.dir/build.make CMakeFiles/teste2.dir/RIC-E2-TERMINATION/TEST/e2test.cpp.i +.PHONY : RIC-E2-TERMINATION/TEST/e2test.cpp.i + +RIC-E2-TERMINATION/TEST/e2test.s: RIC-E2-TERMINATION/TEST/e2test.cpp.s + +.PHONY : RIC-E2-TERMINATION/TEST/e2test.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/TEST/e2test.cpp.s: + $(MAKE) -f CMakeFiles/teste2.dir/build.make CMakeFiles/teste2.dir/RIC-E2-TERMINATION/TEST/e2test.cpp.s +.PHONY : RIC-E2-TERMINATION/TEST/e2test.cpp.s + +RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.o: RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.o + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.o + +# target to build an object file +RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.o: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.o +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.o + +RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.i: RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.i + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.i + +# target to preprocess a source file +RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.i: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.i +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.i + +RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.s: RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.s + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.s: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.s +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp.s + +RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.o: RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.o + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.o + +# target to build an object file +RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.o: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.o +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.o + +RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.i: RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.i + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.i + +# target to preprocess a source file +RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.i: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.i +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.i + +RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.s: RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.s + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.s: + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.s +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp.s + +RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.o: RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.o + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.o + +# target to build an object file +RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.o: + $(MAKE) -f CMakeFiles/setUpMessages.dir/build.make CMakeFiles/setUpMessages.dir/RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.o +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.o + +RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.i: RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.i + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.i + +# target to preprocess a source file +RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.i: + $(MAKE) -f CMakeFiles/setUpMessages.dir/build.make CMakeFiles/setUpMessages.dir/RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.i +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.i + +RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.s: RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.s + +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.s: + $(MAKE) -f CMakeFiles/setUpMessages.dir/build.make CMakeFiles/setUpMessages.dir/RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.s +.PHONY : RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp.s + +RIC-E2-TERMINATION/base64.o: RIC-E2-TERMINATION/base64.cpp.o + +.PHONY : RIC-E2-TERMINATION/base64.o + +# target to build an object file +RIC-E2-TERMINATION/base64.cpp.o: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/base64.cpp.o + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/RIC-E2-TERMINATION/base64.cpp.o + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/base64.cpp.o +.PHONY : RIC-E2-TERMINATION/base64.cpp.o + +RIC-E2-TERMINATION/base64.i: RIC-E2-TERMINATION/base64.cpp.i + +.PHONY : RIC-E2-TERMINATION/base64.i + +# target to preprocess a source file +RIC-E2-TERMINATION/base64.cpp.i: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/base64.cpp.i + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/RIC-E2-TERMINATION/base64.cpp.i + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/base64.cpp.i +.PHONY : RIC-E2-TERMINATION/base64.cpp.i + +RIC-E2-TERMINATION/base64.s: RIC-E2-TERMINATION/base64.cpp.s + +.PHONY : RIC-E2-TERMINATION/base64.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/base64.cpp.s: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/base64.cpp.s + $(MAKE) -f CMakeFiles/b64Test.dir/build.make CMakeFiles/b64Test.dir/RIC-E2-TERMINATION/base64.cpp.s + $(MAKE) -f CMakeFiles/sctpClient.dir/build.make CMakeFiles/sctpClient.dir/RIC-E2-TERMINATION/base64.cpp.s +.PHONY : RIC-E2-TERMINATION/base64.cpp.s + +RIC-E2-TERMINATION/sctpThread.o: RIC-E2-TERMINATION/sctpThread.cpp.o + +.PHONY : RIC-E2-TERMINATION/sctpThread.o + +# target to build an object file +RIC-E2-TERMINATION/sctpThread.cpp.o: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/sctpThread.cpp.o +.PHONY : RIC-E2-TERMINATION/sctpThread.cpp.o + +RIC-E2-TERMINATION/sctpThread.i: RIC-E2-TERMINATION/sctpThread.cpp.i + +.PHONY : RIC-E2-TERMINATION/sctpThread.i + +# target to preprocess a source file +RIC-E2-TERMINATION/sctpThread.cpp.i: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/sctpThread.cpp.i +.PHONY : RIC-E2-TERMINATION/sctpThread.cpp.i + +RIC-E2-TERMINATION/sctpThread.s: RIC-E2-TERMINATION/sctpThread.cpp.s + +.PHONY : RIC-E2-TERMINATION/sctpThread.s + +# target to generate assembly for a file +RIC-E2-TERMINATION/sctpThread.cpp.s: + $(MAKE) -f CMakeFiles/e2.dir/build.make CMakeFiles/e2.dir/RIC-E2-TERMINATION/sctpThread.cpp.s +.PHONY : RIC-E2-TERMINATION/sctpThread.cpp.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... install/local" + @echo "... rebuild_cache" + @echo "... edit_cache" + @echo "... install" + @echo "... teste2" + @echo "... asn1ce2smcodec" + @echo "... install/strip" + @echo "... asn1codec" + @echo "... e2" + @echo "... list_install_components" + @echo "... b64Test" + @echo "... setUpMessages" + @echo "... testConfigFile" + @echo "... sctpClient" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ANY.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ANY.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ANY.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/BIT_STRING.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Cause.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Cause.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Cause.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseMisc.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseProtocol.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseRIC.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseRICservice.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CauseTransport.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Criticality.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics-IE-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/CriticalityDiagnostics.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2AP-PDU.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupFailure.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupRequest.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/E2setupResponse.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID-Choice.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ENGNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ErrorIndication.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-CU-UP-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-DU-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GNB-ID-Choice.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-eNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-en-gNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-gNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalE2node-ng-eNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalENB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalRIC-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalenGNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalgNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/GlobalngeNB-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/INTEGER.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/InitiatingMessage.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/NativeEnumerated.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/NativeInteger.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/OCTET_STRING.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/OPEN_TYPE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/PLMN-Identity.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Presence.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Presence.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/Presence.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProcedureCode.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Container.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerList.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPair.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ContainerPairList.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-Field.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-FieldPair.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ProtocolIE-SingleContainer.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunction-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionDefinition.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionIDcause-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionRevision.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctions-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsID-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RANfunctionsIDcause-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-Admitted-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-NotAdmitted-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICaction-ToBeSetup-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionDefinition.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactionType.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICactions-ToBeSetup-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcallProcessID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAckRequest.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolAcknowledge.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolFailure.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolHeader.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolMessage.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolOutcome.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolRequest.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICcontrolStatus.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICeventTriggerDefinition.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindication.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationHeader.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationMessage.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationSN.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICindicationType.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICrequestID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceQuery.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdate.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateAcknowledge.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICserviceUpdateFailure.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteFailure.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteRequest.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDeleteResponse.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionDetails.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionFailure.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionRequest.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubscriptionResponse.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentAction.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICsubsequentActionType.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/RICtimeToWait.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ResetRequest.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ResetResponse.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/SuccessfulOutcome.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TimeToWait.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TriggeringMessage.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/TypeOfError.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/UnsuccessfulOutcome.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_SEQUENCE_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_SET_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_application.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_bit_data.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_codecs_prim.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_internal.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/asn_random_fill.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_decoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_length.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/ber_tlv_tag.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_CHOICE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SEQUENCE_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_SET_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constr_TYPE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constraints.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constraints.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/constraints.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/der_encoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/pdu_collection.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_decoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_encoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_opentype.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_support.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_support.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/per_support.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_decoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_encoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2/xer_support.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/BIT_STRING.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/BOOLEAN.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition-Format1.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ActionDefinition.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader-Format1.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlHeader.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage-Format1.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-ControlMessage.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition-Format1.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-EventTriggerDefinition.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader-Format1.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationHeader.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage-Format1.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-IndicationMessage.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ECGI.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/EUTRANCellIdentifier.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/INTEGER.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCGI.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRCellIdentifier.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Cell-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-ControlCommand.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-List-item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-Record-row-item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TableRecord.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TimeStamp.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NRT-TriggerNature.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeEnumerated.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/NativeInteger.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/OCTET_STRING.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/OPEN_TYPE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/PLMN-Identity.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/PrintableString.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANfunction-Name.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-ID.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Name.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Test.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Type.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameter-Value.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RANparameterDef-Item.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ControlStyle-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-EventTriggerStyle-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Format-Type.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-InsertStyle-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-PolicyStyle-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-ReportStyle-List.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Name.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/RIC-Style-Type.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SEQUENCE_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_SET_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_application.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_bit_data.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_codecs_prim.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_internal.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/asn_random_fill.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_decoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_length.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/ber_tlv_tag.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_CHOICE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SEQUENCE_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_SET_OF.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constr_TYPE.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/constraints.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/der_encoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/pdu_collection.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_decoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_encoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_opentype.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/per_support.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_decoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_encoder.s" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.o" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.i" + @echo "... RIC-E2-TERMINATION/3rdparty/oranE2SM/xer_support.s" + @echo "... RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.o" + @echo "... RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.i" + @echo "... RIC-E2-TERMINATION/3rdparty/pugixml/src/pugixml.s" + @echo "... RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.o" + @echo "... RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.i" + @echo "... RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.s" + @echo "... RIC-E2-TERMINATION/TEST/base64/testBase64.o" + @echo "... RIC-E2-TERMINATION/TEST/base64/testBase64.i" + @echo "... RIC-E2-TERMINATION/TEST/base64/testBase64.s" + @echo "... RIC-E2-TERMINATION/TEST/e2test.o" + @echo "... RIC-E2-TERMINATION/TEST/e2test.i" + @echo "... RIC-E2-TERMINATION/TEST/e2test.s" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.o" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.i" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.s" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.o" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.i" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.s" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.o" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.i" + @echo "... RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.s" + @echo "... RIC-E2-TERMINATION/base64.o" + @echo "... RIC-E2-TERMINATION/base64.i" + @echo "... RIC-E2-TERMINATION/base64.s" + @echo "... RIC-E2-TERMINATION/sctpThread.o" + @echo "... RIC-E2-TERMINATION/sctpThread.i" + @echo "... RIC-E2-TERMINATION/sctpThread.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/setup/e2/RIC-E2-TERMINATION/ReadConfigFile.h b/setup/e2/RIC-E2-TERMINATION/ReadConfigFile.h new file mode 100644 index 0000000..6f6f094 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/ReadConfigFile.h @@ -0,0 +1,157 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/19/19. +// + +#ifndef E2_READCONFIGFILE_H +#define E2_READCONFIGFILE_H + +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace std; + +class ReadConfigFile { +public: + + explicit ReadConfigFile() = default; + + int openConfigFile(std::string const& configFile) { + std::ifstream file(configFile.c_str()); + if (!file) { // file not found + mdclog_write(MDCLOG_ERR, "File: %s, failed to open", configFile.c_str()); + return -1; + } + std::string line; + std::string section; + + while (std::getline(file,line, '\n')) { + if (!line.length() || line[0] == '#' || line[0] == ';' || line[0] == '{') { + line.clear(); + continue; + } + if (line[0] =='[') { //section + auto sectionEnd = line.find(']'); + if (sectionEnd == std::string::npos) { + mdclog_write(MDCLOG_ERR, "Error section definition: %s ", line.c_str()); + section.clear(); + return -1; + } + section = line.substr(1, sectionEnd - 1) + "."; + section = trim(section); + line.clear(); + continue; + } + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "line = %s ", line.c_str()); + } + + auto leftHand = line.find('='); + if (leftHand == std::string::npos) { + mdclog_write(MDCLOG_ERR, "problematic entry: %s no equal sign", line.c_str()); + line.clear(); + continue; + } + auto name = section + trim(line.substr(0, leftHand)); + + auto value = line.substr(leftHand + 1); + if (value.length() == 0) { + mdclog_write(MDCLOG_ERR, "problematic entry: %s no value ", line.c_str()); + line.clear(); + continue; + } + line.clear(); + + value = trim(value); + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "entry = %s value = %s", name.c_str(), value.c_str()); + } + //cout << "entry = " << name << " value = " << value << endl; + entries[name] = value; + } + return 0; + } + + /** + * @param key the key we are looking + * @return string value of the entry and "" if not exists + */ + string getStringValue(std::string const& key) const { + auto entry = entries.find(key); + if (entry == entries.end()) { + return ""; + } + return entry->second; + } + + /** + * @param key the key we are looking + * @return int value of the entry and -1 if not exists + */ + int getIntValue(std::string const& key) const { + auto entry = entries.find(key); + if (entry == entries.end()) { + return -1; + } + char *dummy; + int ret = (int)std::strtol(entry->second.c_str(), &dummy, 10); + //cout << "entry = " << key << " value = " << entry->second << " int value = " << ret << endl; + return ret; + } + + /** + * @param key the key we are looking + * @return double value of the entry and -1.0 if not exists + */ + double getDoubleValue(std::string const& key) const { + auto entry = entries.find(key); + if (entry == entries.end()) { + return -1.0; + } + char *dummy; + return std::strtod(entry->second.c_str(), &dummy); + } + +private: + std::unordered_map entries; + + inline static std::string& ltrim(std::string& str, const std::string& chars = "\t\n\v\f\r ") { + str.erase(0, str.find_first_not_of(chars)); + return str; + } + + inline static std::string& rtrim(std::string& str, const std::string& chars = "\t\n\v\f\r ") { + str.erase(str.find_last_not_of(chars) + 1); + return str; + } + + inline static std::string& trim(basic_string str, const std::string& chars = "\t\n\v\f\r ") { + return ltrim(rtrim(str, chars), chars); + } +}; + + +#endif //E2_READCONFIGFILE_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/ASN_LOG/LogTest.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/ASN_LOG/LogTest.cpp new file mode 100644 index 0000000..89bc48a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/ASN_LOG/LogTest.cpp @@ -0,0 +1,44 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/26/19. +// + +#include "LogTest.h" + +string LogTest::getLine() { + std::string line; + + if (std::getline(file, line)) { + return line; + } + return ""; +} + +void LogTest::getJsonDoc(string json) { + if (json.length() != 0) { + document.Parse(json.c_str()); + } +} + +string LogTest::getBase64(Document &document) { + if (document.HasMember("asnBase64")) { + return document["asnBase64"].GetString(); + } + return ""; +} diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/ASN_LOG/LogTest.h b/setup/e2/RIC-E2-TERMINATION/TEST/ASN_LOG/LogTest.h new file mode 100644 index 0000000..d264fef --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/ASN_LOG/LogTest.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/26/19. +// + +#ifndef E2_LOGTEST_H +#define E2_LOGTEST_H +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rapidjson/document.h" +#include "rapidjson/writer.h" +#include "rapidjson/stringbuffer.h" + +using namespace std; +using namespace rapidjson; + +class LogTest { +public: + LogTest() = default; + + int openFile(string const& configFile) { + file.open(configFile.c_str()); + if (!file) { + return -1; + } + return 0; + } + + string getLine(); + void getJsonDoc(string json); + + string getBase64(Document &document); + +private: + std::ifstream file; + Document document; +}; + + +#endif //E2_LOGTEST_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp new file mode 100644 index 0000000..33deb2b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/ConfigurationFileTest/testConfigFile.cpp @@ -0,0 +1,112 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/19/19. +// + +#include "ReadConfigFile.h" +#include +#include + +Describe(Cgreen); +BeforeEach(Cgreen) {} +AfterEach(Cgreen) {} + +using namespace cgreen; + +void init_log() { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "TestConfiguration"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +Ensure(Cgreen, fileNotExist) { + ReadConfigFile conf {}; + assert_that( conf.openConfigFile("kuku") == -1); +} + +Ensure(Cgreen, fileExists) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); +} + +Ensure(Cgreen, goodparams) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); + assert_that(conf.getIntValue("nano") == 38000); + assert_that(conf.getStringValue("loglevel") == "info"); + assert_that(conf.getStringValue("volume") == "log"); + +} + +Ensure(Cgreen, badParams) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); + assert_that(conf.getIntValue("nano") != 38002); + assert_that(conf.getStringValue("loglevel") != ""); + assert_that(conf.getStringValue("volume") != "bob"); + assert_that(conf.getStringValue("volum") != "bob"); +} + +Ensure(Cgreen, wrongType) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); + assert_that(conf.getStringValue("nano") != "debug"); + assert_that(conf.getIntValue("loglevel") != 3); + assert_that(conf.getDoubleValue("loglevel") != 3.0); +} + +Ensure(Cgreen, badValues) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.bad") == 0); +} + +Ensure(Cgreen, sectionTest) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.sec") == 0); + assert_that(conf.getIntValue("config.nano") == 38000); +} + +Ensure(Cgreen, sectionBadTest) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.secbad") == -1); + //assert_that(conf.getIntValue("config.nano") == 38000); +} + +int main(const int argc, char **argv) { + mdclog_severity_t loglevel = MDCLOG_INFO; + init_log(); + mdclog_level_set(loglevel); + + //TestSuite *suite = create_test_suite(); + TestSuite *suite = create_named_test_suite_(__FUNCTION__, __FILE__, __LINE__); + + add_test_with_context(suite, Cgreen, fileNotExist); + add_test_with_context(suite, Cgreen, fileExists); + add_test_with_context(suite, Cgreen, goodparams); + add_test_with_context(suite, Cgreen, badParams); + add_test_with_context(suite, Cgreen, wrongType); + add_test_with_context(suite, Cgreen, badValues); + add_test_with_context(suite, Cgreen, sectionTest); + add_test_with_context(suite, Cgreen, sectionBadTest); + + return cgreen::run_test_suite(suite, create_text_reporter()); + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/T1/Dockerfile b/setup/e2/RIC-E2-TERMINATION/TEST/T1/Dockerfile new file mode 100644 index 0000000..b7aa2c5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/T1/Dockerfile @@ -0,0 +1,60 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +FROM snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2_base:1.0.0 as ubuntu + +WORKDIR /opt/e2/ +RUN mkdir -p /opt/e2/RIC-E2-TERMINATION/ \ + && mkdir -p /opt/e2/RIC-E2-TERMINATION/TEST/T1 \ + && mkdir -p /opt/e2/RIC-E2-TERMINATION/TEST/T2 +COPY . /opt/e2/RIC-E2-TERMINATION/ +RUN mv /opt/e2/RIC-E2-TERMINATION/CMakeLists.txt /opt/e2/ + +RUN echo "137.135.91.204 gerrit.ranco-dev-tools.eastus.cloudapp.azure.com" >> /etc/hosts \ + && apt-get install -y autoconf gawk libtool automake pkg-config autoconf-archive \ + && git clone http://gerrit.ranco-dev-tools.eastus.cloudapp.azure.com/com/log \ + && cd log \ + && ./autogen.sh && ./configure && make && make install && ldconfig + +RUN git clone https://gerrit.o-ran-sc.org/r/ric-plt/lib/rmr \ + && cd rmr/; mkdir build; cd build; /opt/bin/cmake -DDEV_PKG=1 ..; make install \ + && cd /opt/e2/ && /opt/bin/cmake . && make + +FROM ubuntu:16.04 +COPY --from=ubuntu /opt/e2/setUpTest /opt/e2/setUpTest +COPY --from=ubuntu /opt/e2/RIC-E2-TERMINATION/TEST/T1/dockerRouter.txt /opt/e2/dockerRouter.txt +COPY --from=ubuntu /usr/local/lib/librmr_nng.so.1 /usr/local/lib/librmr_nng.so.1 +COPY --from=ubuntu /usr/local/lib/libnng.so.1 /usr/local/lib/libnng.so.1 +COPY --from=ubuntu /usr/local/lib/libmdclog.so.0 /usr/local/lib/libmdclog.so.0 + +WORKDIR /opt/e2/ +ENV LD_LIBRARY_PATH=/usr/local/lib +#ENV RMR_RTG_SVC=127.0.0.1 +ENV RMR_SEED_RT=dockerRouter.txt +ENV host=127.0.0.1 +ENV port=5566 +ENV ran=ranname +ENV rmr=38012 +ENV loglevel=info +EXPOSE 5566 +EXPOSE 38012 +CMD ["sh", "-c", "./setUpTest host $host port $port ran $ran rmr $rmr loglevel $loglevel" ] diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/T1/E2Builder.h b/setup/e2/RIC-E2-TERMINATION/TEST/T1/E2Builder.h new file mode 100644 index 0000000..a82d246 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/T1/E2Builder.h @@ -0,0 +1,787 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 12/10/19. +// + +#ifndef E2_E2BUILDER_H +#define E2_E2BUILDER_H + +#include +#include +#include +#include +#include +#include +#include +#include <3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h> +#include <3rdparty/oranE2SM/RIC-InsertStyle-List.h> +#include <3rdparty/oranE2SM/RANparameterDef-Item.h> +#include <3rdparty/oranE2/GlobalE2node-en-gNB-ID.h> + + +//#include + + +#include "oranE2/E2AP-PDU.h" +#include "oranE2/InitiatingMessage.h" +#include "oranE2/SuccessfulOutcome.h" +#include "oranE2/UnsuccessfulOutcome.h" + +#include "oranE2/ProtocolIE-Field.h" +#include "oranE2/ENB-ID.h" +#include "oranE2/GlobalENB-ID.h" +#include "oranE2/GlobalE2node-gNB-ID.h" +#include "oranE2/constr_TYPE.h" +#include "oranE2/asn_constant.h" + +using namespace std; + +#define printEntry(type, function); fprintf(stdout, "start Test %s , %s", type, function); + + +static void checkAndPrint(asn_TYPE_descriptor_t *typeDescriptor, void *data, char *dataType, const char *function) { + char errbuf[128]; /* Buffer for error message */ + size_t errlen = sizeof(errbuf); /* Size of the buffer */ + if (asn_check_constraints(typeDescriptor, data, errbuf, &errlen) != 0) { + fprintf(stderr, "%s Constraint validation failed: %s", dataType, errbuf); + } + fprintf(stdout, "%s successes function %s", dataType, function); +} + +void createPLMN_IDByMCCandMNC(PLMN_Identity_t *plmnId, int mcc, int mnc) { + + //printEntry("PLMN_Identity_t", __func__) + + ASN_STRUCT_RESET(asn_DEF_PLMN_Identity, plmnId); + plmnId->size = 3; + plmnId->buf = (uint8_t *) calloc(1, 3); + volatile auto mcc1 = (unsigned int) (mcc / 100); + volatile auto mcc2 = (unsigned int) (mcc / 10 % 10); + volatile auto mcc3 = (unsigned int) (mcc % 10); + plmnId->buf[0] = mcc2 << 4 | mcc1; + + volatile auto mnc1 = (unsigned int)0; + volatile auto mnc2 = (unsigned int)0; + volatile auto mnc3 = (unsigned int)0; + + if (mnc >= 100) { + mnc1 = (unsigned int) (mnc / 100); + mnc2 = (unsigned int) (mnc / 10 % 10); + mnc3 = (unsigned int) (mnc % 10); + } else { + mnc1 = (unsigned int) (mnc / 10); + mnc2 = (unsigned int) (mnc % 10); + mnc3 = 15; + } + plmnId->buf[1] = mcc3 << 4 | mnc3 ; + plmnId->buf[2] = mnc2 << 4 | mnc1 ; + + //checkAndPrint(&asn_DEF_PLMN_Identity, plmnId, (char *) "PLMN_Identity_t", __func__); + +} + + +PLMN_Identity_t *createPLMN_ID(const unsigned char *data) { + printEntry("PLMN_Identity_t", __func__) + auto *plmnId = (PLMN_Identity_t *) calloc(1, sizeof(PLMN_Identity_t)); + ASN_STRUCT_RESET(asn_DEF_PLMN_Identity, plmnId); + plmnId->size = 3; + plmnId->buf = (uint8_t *) calloc(1, 3); + memcpy(plmnId->buf, data, 3); + + checkAndPrint(&asn_DEF_PLMN_Identity, plmnId, (char *) "PLMN_Identity_t", __func__); + + return plmnId; +} + +BIT_STRING_t *createBIT_STRING(int size, int unusedBits, uint8_t *data) { + printEntry("BIT_STRING_t", __func__) + auto *bitString = (BIT_STRING_t *) calloc(1, sizeof(BIT_STRING_t)); + ASN_STRUCT_RESET(asn_DEF_BIT_STRING, bitString); + bitString->size = size; + bitString->bits_unused = unusedBits; + bitString->buf = (uint8_t *) calloc(1, size); + // set bits to zero + data[bitString->size - 1] = ((unsigned) (data[bitString->size - 1] >> + (unsigned) bitString->bits_unused) + << (unsigned) bitString->bits_unused); + memcpy(bitString->buf, data, size); + + checkAndPrint(&asn_DEF_BIT_STRING, bitString, (char *) "BIT_STRING_t", __func__); + + return bitString; +} + + +OCTET_STRING_t *createOCTET_STRING(const unsigned char *data, int size) { + printEntry("OCTET_STRING_t", __func__) + auto *octs = (PLMN_Identity_t *) calloc(1, sizeof(PLMN_Identity_t)); + ASN_STRUCT_RESET(asn_DEF_OCTET_STRING, octs); + octs->size = size; + octs->buf = (uint8_t *) calloc(1, size); + memcpy(octs->buf, data, size); + + checkAndPrint(&asn_DEF_OCTET_STRING, octs, (char *) "OCTET_STRING_t", __func__); + return octs; +} + + +ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data) { + printEntry("ENB_ID_t", __func__) + auto *enb = (ENB_ID_t *) calloc(1, sizeof(ENB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_ENB_ID, enb); + + enb->present = enbType; + + switch (enbType) { + case ENB_ID_PR_macro_eNB_ID: { // 20 bit 3 bytes + enb->choice.macro_eNB_ID.size = 3; + enb->choice.macro_eNB_ID.bits_unused = 4; + + enb->present = ENB_ID_PR_macro_eNB_ID; + + enb->choice.macro_eNB_ID.buf = (uint8_t *) calloc(1, enb->choice.macro_eNB_ID.size); + data[enb->choice.macro_eNB_ID.size - 1] = ((unsigned) (data[enb->choice.macro_eNB_ID.size - 1] >> + (unsigned) enb->choice.macro_eNB_ID.bits_unused) + << (unsigned) enb->choice.macro_eNB_ID.bits_unused); + memcpy(enb->choice.macro_eNB_ID.buf, data, enb->choice.macro_eNB_ID.size); + + break; + } + case ENB_ID_PR_home_eNB_ID: { // 28 bit 4 bytes + enb->choice.home_eNB_ID.size = 4; + enb->choice.home_eNB_ID.bits_unused = 4; + enb->present = ENB_ID_PR_home_eNB_ID; + + enb->choice.home_eNB_ID.buf = (uint8_t *) calloc(1, enb->choice.home_eNB_ID.size); + data[enb->choice.home_eNB_ID.size - 1] = ((unsigned) (data[enb->choice.home_eNB_ID.size - 1] >> + (unsigned) enb->choice.home_eNB_ID.bits_unused) + << (unsigned) enb->choice.home_eNB_ID.bits_unused); + memcpy(enb->choice.home_eNB_ID.buf, data, enb->choice.home_eNB_ID.size); + break; + } + case ENB_ID_PR_short_Macro_eNB_ID: { // 18 bit - 3 bytes + enb->choice.short_Macro_eNB_ID.size = 3; + enb->choice.short_Macro_eNB_ID.bits_unused = 6; + enb->present = ENB_ID_PR_short_Macro_eNB_ID; + + enb->choice.short_Macro_eNB_ID.buf = (uint8_t *) calloc(1, enb->choice.short_Macro_eNB_ID.size); + data[enb->choice.short_Macro_eNB_ID.size - 1] = ( + (unsigned) (data[enb->choice.short_Macro_eNB_ID.size - 1] >> + (unsigned) enb->choice.short_Macro_eNB_ID.bits_unused) + << (unsigned) enb->choice.short_Macro_eNB_ID.bits_unused); + memcpy(enb->choice.short_Macro_eNB_ID.buf, data, enb->choice.short_Macro_eNB_ID.size); + break; + } + case ENB_ID_PR_long_Macro_eNB_ID: { // 21 + enb->choice.long_Macro_eNB_ID.size = 3; + enb->choice.long_Macro_eNB_ID.bits_unused = 3; + enb->present = ENB_ID_PR_long_Macro_eNB_ID; + + enb->choice.long_Macro_eNB_ID.buf = (uint8_t *) calloc(1, enb->choice.long_Macro_eNB_ID.size); + data[enb->choice.long_Macro_eNB_ID.size - 1] = + ((unsigned) (data[enb->choice.long_Macro_eNB_ID.size - 1] >> (unsigned) enb->choice.long_Macro_eNB_ID.bits_unused) + << (unsigned) enb->choice.long_Macro_eNB_ID.bits_unused); + memcpy(enb->choice.long_Macro_eNB_ID.buf, data, enb->choice.long_Macro_eNB_ID.size); + break; + } + default: + free(enb); + return nullptr; + } + + checkAndPrint(&asn_DEF_ENB_ID, enb, (char *) "ENB_ID_t", __func__); + return enb; +} + +GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId) { + printEntry("GlobalENB_ID_t", __func__) + auto *genbId = (GlobalENB_ID_t *) calloc(1, sizeof(GlobalENB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GlobalENB_ID, genbId); + memcpy(&genbId->pLMN_Identity, plmnIdentity, sizeof(PLMN_Identity_t)); + memcpy(&genbId->eNB_ID, enbId, sizeof(ENB_ID_t)); + + checkAndPrint(&asn_DEF_GlobalENB_ID, genbId, (char *) "GlobalENB_ID_t", __func__); + return genbId; +} + + +//static void buildInitiatingMessagePDU(E2AP_PDU_t &pdu, InitiatingMessage_t *initMsg) { +// pdu.present = E2AP_PDU_PR_initiatingMessage; +// pdu.choice.initiatingMessage = initMsg; +//} + +template +static void buildInitMsg(InitiatingMessage_t &initMsg, + InitiatingMessage__value_PR present, + ProcedureCode_t procedureCode, + Criticality_t criticality, + T *value) { + initMsg.value.present = present; + initMsg.procedureCode = procedureCode; + initMsg.criticality = criticality; + + switch (present) { + case InitiatingMessage__value_PR_RICsubscriptionRequest: { + memcpy(&initMsg.value.choice.RICsubscriptionRequest, value, sizeof(*value)); + break; + } + case InitiatingMessage__value_PR_RICsubscriptionDeleteRequest: { + memcpy(&initMsg.value.choice.RICsubscriptionDeleteRequest, value, sizeof(*value)); + break; + } + case InitiatingMessage__value_PR_RICserviceUpdate: { + memcpy(&initMsg.value.choice.RICserviceUpdate, value, sizeof(*value)); + break; + } + case InitiatingMessage__value_PR_RICcontrolRequest: { + memcpy(&initMsg.value.choice.RICcontrolRequest, value, sizeof(*value)); + break; + } + case InitiatingMessage__value_PR_RICindication: { + memcpy(&initMsg.value.choice.RICindication, value, sizeof(*value)); + break; + } + case InitiatingMessage__value_PR_RICserviceQuery: { + memcpy(&initMsg.value.choice.RICserviceQuery, value, sizeof(*value)); + break; + } + case InitiatingMessage__value_PR_NOTHING: + default : { + break; + } + } +} + +//static void buildSuccsesfulMessagePDU(E2AP_PDU_t &pdu, SuccessfulOutcome_t *succMsg) { +// pdu.present = E2AP_PDU_PR_successfulOutcome; +// pdu.choice.successfulOutcome = succMsg; +//} + +template +static void buildSuccMsg(SuccessfulOutcome_t &succMsg, + SuccessfulOutcome__value_PR present, + ProcedureCode_t procedureCode, + Criticality_t criticality, + T *value) { + succMsg.value.present = present; + succMsg.procedureCode = procedureCode; + succMsg.criticality = criticality; + + switch (present) { + case SuccessfulOutcome__value_PR_RICsubscriptionResponse: { + memcpy(&succMsg.value.choice.RICsubscriptionResponse, value, sizeof(*value)); + break; + } + case SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse: { + memcpy(&succMsg.value.choice.RICsubscriptionDeleteResponse, value, sizeof(*value)); + break; + } + case SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge: { + memcpy(&succMsg.value.choice.RICserviceUpdateAcknowledge, value, sizeof(*value)); + break; + } + case SuccessfulOutcome__value_PR_RICcontrolAcknowledge: { + memcpy(&succMsg.value.choice.RICcontrolAcknowledge, value, sizeof(*value)); + break; + } + case SuccessfulOutcome__value_PR_ResetResponse: { + memcpy(&succMsg.value.choice.ResetResponse, value, sizeof(*value)); + break; + } + case SuccessfulOutcome__value_PR_NOTHING: + default: + break; + } +} + + +//static void buildUnSucssesfullMessagePDU(E2AP_PDU_t &pdu, UnsuccessfulOutcome_t *unSuccMsg) { +// pdu.present = E2AP_PDU_PR_unsuccessfulOutcome; +// pdu.choice.unsuccessfulOutcome = unSuccMsg; +//} + +template +static void buildUnSuccMsg(UnsuccessfulOutcome_t &unSuccMsg, + UnsuccessfulOutcome__value_PR present, + ProcedureCode_t procedureCode, + Criticality_t criticality, + T *value) { + unSuccMsg.value.present = present; + unSuccMsg.procedureCode = procedureCode; + unSuccMsg.criticality = criticality; + + switch (present) { + case UnsuccessfulOutcome__value_PR_RICsubscriptionFailure: { + memcpy(&unSuccMsg.value.choice.RICsubscriptionFailure, value, sizeof(*value)); + break; + } + case UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure: { + memcpy(&unSuccMsg.value.choice.RICsubscriptionDeleteFailure, value, sizeof(*value)); + break; + } + case UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure: { + memcpy(&unSuccMsg.value.choice.RICserviceUpdateFailure, value, sizeof(*value)); + break; + } + case UnsuccessfulOutcome__value_PR_RICcontrolFailure: { + memcpy(&unSuccMsg.value.choice.RICcontrolFailure, value, sizeof(*value)); + break; + + } + case UnsuccessfulOutcome__value_PR_NOTHING: + default: + break; + } +} + + +//static void createPLMN_ID(PLMN_Identity_t &plmnId, const unsigned char *data) { +// //printEntry("PLMN_Identity_t", __func__) +// //PLMN_Identity_t *plmnId = calloc(1, sizeof(PLMN_Identity_t)); +// ASN_STRUCT_RESET(asn_DEF_PLMN_Identity, &plmnId); +// plmnId.size = 3;// uint64_t st = 0; +//// uint32_t aux1 = 0; +//// st = rdtscp(aux1); +// +// plmnId.buf = (uint8_t *) calloc(1, 3); +// memcpy(plmnId.buf, data, 3); +// +// checkAndPrint(&asn_DEF_PLMN_Identity, &plmnId, (char *) "PLMN_Identity_t", __func__); +// +//} + +static void createENB_ID(ENB_ID_t &enb, ENB_ID_PR enbType, unsigned char *data) { + //printEntry("ENB_ID_t", __func__) + ASN_STRUCT_RESET(asn_DEF_ENB_ID, &enb); + enb.present = enbType; + switch (enbType) { + case ENB_ID_PR_macro_eNB_ID: { // 20 bit 3 bytes + enb.choice.macro_eNB_ID.size = 3; + enb.choice.macro_eNB_ID.bits_unused = 4; + + enb.present = ENB_ID_PR_macro_eNB_ID; + + enb.choice.macro_eNB_ID.buf = (uint8_t *) calloc(1, enb.choice.macro_eNB_ID.size); + data[enb.choice.macro_eNB_ID.size - 1] = ((unsigned) (data[enb.choice.macro_eNB_ID.size - 1] + >> (unsigned) enb.choice.macro_eNB_ID.bits_unused) + << (unsigned) enb.choice.macro_eNB_ID.bits_unused); + memcpy(enb.choice.macro_eNB_ID.buf, data, enb.choice.macro_eNB_ID.size); + + break; + } + case ENB_ID_PR_home_eNB_ID: { // 28 bit 4 bytes + enb.choice.home_eNB_ID.size = 4; + enb.choice.home_eNB_ID.bits_unused = 4; + enb.present = ENB_ID_PR_home_eNB_ID; + + enb.choice.home_eNB_ID.buf = (uint8_t *) calloc(1, enb.choice.home_eNB_ID.size); + data[enb.choice.home_eNB_ID.size - 1] = ((unsigned) (data[enb.choice.home_eNB_ID.size - 1] + >> (unsigned) enb.choice.home_eNB_ID.bits_unused) + << (unsigned) enb.choice.home_eNB_ID.bits_unused); + memcpy(enb.choice.home_eNB_ID.buf, data, enb.choice.home_eNB_ID.size); + break; + } + case ENB_ID_PR_short_Macro_eNB_ID: { // 18 bit - 3 bytes + enb.choice.short_Macro_eNB_ID.size = 3; + enb.choice.short_Macro_eNB_ID.bits_unused = 6; + enb.present = ENB_ID_PR_short_Macro_eNB_ID; + + enb.choice.short_Macro_eNB_ID.buf = (uint8_t *) calloc(1, enb.choice.short_Macro_eNB_ID.size); + data[enb.choice.short_Macro_eNB_ID.size - 1] = ((unsigned) (data[enb.choice.short_Macro_eNB_ID.size - 1] + >> (unsigned) enb.choice.short_Macro_eNB_ID.bits_unused) + << (unsigned) enb.choice.short_Macro_eNB_ID.bits_unused); + memcpy(enb.choice.short_Macro_eNB_ID.buf, data, enb.choice.short_Macro_eNB_ID.size); + break; + } + case ENB_ID_PR_long_Macro_eNB_ID: { // 21 + enb.choice.long_Macro_eNB_ID.size = 3; + enb.choice.long_Macro_eNB_ID.bits_unused = 3; + enb.present = ENB_ID_PR_long_Macro_eNB_ID; + + enb.choice.long_Macro_eNB_ID.buf = (uint8_t *) calloc(1, enb.choice.long_Macro_eNB_ID.size); + data[enb.choice.long_Macro_eNB_ID.size - 1] = ((unsigned) (data[enb.choice.long_Macro_eNB_ID.size - 1] + >> (unsigned) enb.choice.long_Macro_eNB_ID.bits_unused) + << (unsigned) enb.choice.long_Macro_eNB_ID.bits_unused); + memcpy(enb.choice.long_Macro_eNB_ID.buf, data, enb.choice.long_Macro_eNB_ID.size); + break; + } + default: + break; + } + + checkAndPrint(&asn_DEF_ENB_ID, &enb, (char *) "ENB_ID_t", __func__); +} + + +static void buildGlobalENB_ID(GlobalENB_ID_t *gnbId, + const unsigned char *gnbData, + ENB_ID_PR enbType, + unsigned char *enbData) { + auto *plmnID = createPLMN_ID(gnbData); + memcpy(&gnbId->pLMN_Identity, plmnID, sizeof(PLMN_Identity_t)); + createENB_ID(gnbId->eNB_ID, enbType, enbData); + checkAndPrint(&asn_DEF_GlobalENB_ID, gnbId, (char *) "GlobalENB_ID_t", __func__); +} + + +void buildSetupRequest(E2AP_PDU_t *pdu, int mcc, int mnc) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + + pdu->choice.initiatingMessage = (InitiatingMessage_t *)calloc(1, sizeof(InitiatingMessage_t)); + auto *initiatingMessage = pdu->choice.initiatingMessage; + ASN_STRUCT_RESET(asn_DEF_InitiatingMessage, initiatingMessage); + initiatingMessage->procedureCode = ProcedureCode_id_E2setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_E2setupRequest; + + auto *e2SetupRequestIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, e2SetupRequestIEs); + + e2SetupRequestIEs->value.choice.GlobalE2node_ID.present = GlobalE2node_ID_PR_gNB; + e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.gNB = (GlobalE2node_gNB_ID_t *)calloc(1, sizeof(GlobalE2node_gNB_ID_t)); + auto *globalE2NodeGNbId = e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.gNB; + ASN_STRUCT_RESET(asn_DEF_GlobalE2node_gNB_ID, globalE2NodeGNbId); + + createPLMN_IDByMCCandMNC(&globalE2NodeGNbId->global_gNB_ID.plmn_id, mcc, mnc); + globalE2NodeGNbId->global_gNB_ID.gnb_id.present = GNB_ID_Choice_PR_gnb_ID; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.size = 4; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf = + (uint8_t *) calloc(1, globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.size); //22..32 bits + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.bits_unused = 0; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[0] = 0xB5; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[1] = 0xC6; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[2] = 0x77; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[3] = 0x88; + + e2SetupRequestIEs->criticality = Criticality_reject; + e2SetupRequestIEs->id = ProtocolIE_ID_id_GlobalE2node_ID; + e2SetupRequestIEs->value.present = E2setupRequestIEs__value_PR_GlobalE2node_ID; + + + auto *e2SetupRequest = &initiatingMessage->value.choice.E2setupRequest; + + ASN_STRUCT_RESET(asn_DEF_E2setupRequest, e2SetupRequest); + ASN_SEQUENCE_ADD(&e2SetupRequest->protocolIEs.list, e2SetupRequestIEs); + + pdu->present = E2AP_PDU_PR_initiatingMessage; +} + +void buildSetupRequesteenGNB(E2AP_PDU_t *pdu, int mcc, int mnc) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + + pdu->choice.initiatingMessage = (InitiatingMessage_t *)calloc(1, sizeof(InitiatingMessage_t)); + auto *initiatingMessage = pdu->choice.initiatingMessage; + ASN_STRUCT_RESET(asn_DEF_InitiatingMessage, initiatingMessage); + initiatingMessage->procedureCode = ProcedureCode_id_E2setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_E2setupRequest; + + auto *e2SetupRequestIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, e2SetupRequestIEs); + + e2SetupRequestIEs->value.choice.GlobalE2node_ID.present = GlobalE2node_ID_PR_en_gNB; + e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.en_gNB = (GlobalE2node_en_gNB_ID_t *)calloc(1, sizeof(GlobalE2node_en_gNB_ID_t)); + auto *globalE2NodeEN_GNb = e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.en_gNB; + ASN_STRUCT_RESET(asn_DEF_GlobalE2node_en_gNB_ID, globalE2NodeEN_GNb); + + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.present = ENGNB_ID_PR_gNB_ID; + createPLMN_IDByMCCandMNC(&globalE2NodeEN_GNb->global_gNB_ID.pLMN_Identity, mcc, mnc); + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.size = 4; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf = + (uint8_t *) calloc(1, globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.size); //22..32 bits + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[0] = 0xC5; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[1] = 0xC6; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[2] = 0xC7; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.buf[3] = 0xF8; + globalE2NodeEN_GNb->global_gNB_ID.gNB_ID.choice.gNB_ID.bits_unused = 0; + e2SetupRequestIEs->criticality = Criticality_reject; + e2SetupRequestIEs->id = ProtocolIE_ID_id_GlobalE2node_ID; + e2SetupRequestIEs->value.present = E2setupRequestIEs__value_PR_GlobalE2node_ID; + + + auto *e2SetupRequest = &initiatingMessage->value.choice.E2setupRequest; + + ASN_STRUCT_RESET(asn_DEF_E2setupRequest, e2SetupRequest); + ASN_SEQUENCE_ADD(&e2SetupRequest->protocolIEs.list, e2SetupRequestIEs); + + pdu->present = E2AP_PDU_PR_initiatingMessage; +} + + + +void buildSetupRequestWithFunc(E2AP_PDU_t *pdu, int mcc, int mnc) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + + pdu->choice.initiatingMessage = (InitiatingMessage_t *)calloc(1, sizeof(InitiatingMessage_t)); + auto *initiatingMessage = pdu->choice.initiatingMessage; + ASN_STRUCT_RESET(asn_DEF_InitiatingMessage, initiatingMessage); + initiatingMessage->procedureCode = ProcedureCode_id_E2setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_E2setupRequest; + + auto *e2SetupRequestIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, e2SetupRequestIEs); + + e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.gNB = (GlobalE2node_gNB_ID_t *)calloc(1, sizeof(GlobalE2node_gNB_ID_t)); + auto *globalE2NodeGNbId = e2SetupRequestIEs->value.choice.GlobalE2node_ID.choice.gNB; + ASN_STRUCT_RESET(asn_DEF_GlobalE2node_gNB_ID, globalE2NodeGNbId); + + createPLMN_IDByMCCandMNC(&globalE2NodeGNbId->global_gNB_ID.plmn_id, mcc, mnc); + globalE2NodeGNbId->global_gNB_ID.gnb_id.present = GNB_ID_Choice_PR_gnb_ID; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.size = 4; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf = + (uint8_t *) calloc(1, globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.size); //22..32 bits + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.bits_unused = 0; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[0] = 0xB5; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[1] = 0xC6; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[2] = 0x77; + globalE2NodeGNbId->global_gNB_ID.gnb_id.choice.gnb_ID.buf[3] = 0x88; + + e2SetupRequestIEs->criticality = Criticality_reject; + e2SetupRequestIEs->id = ProtocolIE_ID_id_GlobalE2node_ID; + e2SetupRequestIEs->value.present = E2setupRequestIEs__value_PR_GlobalE2node_ID; + e2SetupRequestIEs->value.choice.GlobalE2node_ID.present = GlobalE2node_ID_PR_gNB; + + + auto *e2SetupRequest = &initiatingMessage->value.choice.E2setupRequest; + + ASN_STRUCT_RESET(asn_DEF_E2setupRequest, e2SetupRequest); + ASN_SEQUENCE_ADD(&e2SetupRequest->protocolIEs.list, e2SetupRequestIEs); + + auto *ranFlistIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, ranFlistIEs); + ranFlistIEs->criticality = Criticality_reject; + ranFlistIEs->id = ProtocolIE_ID_id_RANfunctionsAdded; + ranFlistIEs->value.present = E2setupRequestIEs__value_PR_RANfunctions_List; + + auto *itemIes = (RANfunction_ItemIEs_t *)calloc(1, sizeof(RANfunction_ItemIEs_t)); + ASN_STRUCT_RESET(asn_DEF_RANfunction_ItemIEs, itemIes); + + + E2SM_gNB_NRT_RANfunction_Definition_t ranFunDef; + uint8_t funcDes[] = "asdfghjklpoiuytrewq\0"; + ranFunDef.ranFunction_Name.ranFunction_Description.buf = (uint8_t *)calloc(1, strlen((char *)funcDes)); + ranFunDef.ranFunction_Name.ranFunction_Description.size = strlen((char *)funcDes); + memcpy(ranFunDef.ranFunction_Name.ranFunction_Description.buf, funcDes, strlen((char *)funcDes)); + + uint8_t funcOID[] = "ABCDEFGHIJ1234567890\0"; + ranFunDef.ranFunction_Name.ranFunction_E2SM_OID.buf = (uint8_t *)calloc(1, strlen((char *)funcOID)); + ranFunDef.ranFunction_Name.ranFunction_E2SM_OID.size = strlen((char *)funcOID); + memcpy(ranFunDef.ranFunction_Name.ranFunction_E2SM_OID.buf, funcOID, strlen((char *)funcOID)); + + uint8_t shortName[] = "Nothing to declare\0"; + ranFunDef.ranFunction_Name.ranFunction_ShortName.buf = (uint8_t *)calloc(1, strlen((char *)shortName)); + ranFunDef.ranFunction_Name.ranFunction_ShortName.size = strlen((char *)shortName); + memcpy(ranFunDef.ranFunction_Name.ranFunction_ShortName.buf, shortName, strlen((char *)shortName)); + + + RIC_InsertStyle_List_t insertStyleList; + insertStyleList.ric_CallProcessIDFormat_Type = 28l; + insertStyleList.ric_IndicationHeaderFormat_Type = 29; + insertStyleList.ric_IndicationMessageFormat_Type = 30; + insertStyleList.ric_InsertActionFormat_Type = 31l; + + uint8_t styleName[] = "What a style\0"; + + insertStyleList.ric_InsertStyle_Name.buf = (uint8_t *)calloc(1, strlen((char *)styleName)); + insertStyleList.ric_InsertStyle_Name.size = strlen((char *)styleName); + memcpy(insertStyleList.ric_InsertStyle_Name.buf, styleName, strlen((char *)styleName)); + + + insertStyleList.ric_InsertStyle_Type = 23; + + RANparameterDef_Item_t raNparameterDefItem; + raNparameterDefItem.ranParameter_ID = 8; + raNparameterDefItem.ranParameter_Type = 12; + + uint8_t ItemName[] = "What a style\0"; + raNparameterDefItem.ranParameter_Name.buf = (uint8_t *)calloc(1, strlen((char *)ItemName)); + raNparameterDefItem.ranParameter_Name.size = strlen((char *)ItemName); + memcpy(raNparameterDefItem.ranParameter_Name.buf, ItemName, strlen((char *)ItemName)); + + ASN_SEQUENCE_ADD(&insertStyleList.ric_InsertRanParameterDef_List.list, &raNparameterDefItem); + + ASN_SEQUENCE_ADD(&ranFunDef.ric_InsertStyle_List->list, &insertStyleList); + //ranFunDef.ric_InsertStyle_List. + + uint8_t buffer[8192]; + size_t buffer_size = 8192; + auto *ranDef = &itemIes->value.choice.RANfunction_Item.ranFunctionDefinition; + + auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_NRT_RANfunction_Definition, &ranFunDef, buffer, buffer_size); + if (er.encoded == -1) { + cerr << "encoding of " << asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name << " failed, " << strerror(errno) << endl; + exit(-1); + } else if (er.encoded > (ssize_t) buffer_size) { + cerr << "Buffer of size " << buffer_size << " is to small for " << asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name << endl; + exit(-1); + } else { + ranDef->buf = (uint8_t *)calloc(1, er.encoded); + ranDef->size = er.encoded; + memcpy(ranDef->buf, buffer, ranDef->size); + } + + + + itemIes->id = ProtocolIE_ID_id_RANfunction_Item; + itemIes->criticality = Criticality_reject; + itemIes->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item; + itemIes->value.choice.RANfunction_Item.ranFunctionID = 1; +// auto *ranDef = &itemIes->value.choice.RANfunction_Item.ranFunctionDefinition; +// ranDef->size = 3; +// ranDef->buf = (uint8_t *)calloc(1, ranDef->size); +// memcpy(ranDef->buf, buf, ranDef->size); + + ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes); + + auto *itemIes1 = (RANfunction_ItemIEs_t *)calloc(1, sizeof(RANfunction_ItemIEs_t)); + ASN_STRUCT_RESET(asn_DEF_RANfunction_ItemIEs, itemIes1); + itemIes1->id = ProtocolIE_ID_id_RANfunction_Item; + itemIes1->criticality = Criticality_reject; + itemIes1->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item; + itemIes1->value.choice.RANfunction_Item.ranFunctionID = 7; + ranDef = &itemIes1->value.choice.RANfunction_Item.ranFunctionDefinition; + + ranDef->buf = (uint8_t *)calloc(1, er.encoded); + ranDef->size = er.encoded; + memcpy(ranDef->buf, buffer, ranDef->size); + + ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes1); + + + ASN_SEQUENCE_ADD(&e2SetupRequest->protocolIEs.list, ranFlistIEs); + + pdu->present = E2AP_PDU_PR_initiatingMessage; +} + + + + + +void buildSetupSuccsessfulResponse(E2AP_PDU_t *pdu, int mcc, int mnc, uint8_t *data) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + + pdu->choice.successfulOutcome = (SuccessfulOutcome_t *)calloc(1, sizeof(SuccessfulOutcome_t)); + SuccessfulOutcome_t *successfulOutcome = pdu->choice.successfulOutcome; + ASN_STRUCT_RESET(asn_DEF_E2setupResponse, &successfulOutcome->value.choice.E2setupResponse); + successfulOutcome->procedureCode = ProcedureCode_id_E2setup; + successfulOutcome->criticality = Criticality_reject; + successfulOutcome->value.present = SuccessfulOutcome__value_PR_E2setupResponse; + + + auto *globalRicidIE = (E2setupResponseIEs_t *)calloc(1, sizeof(E2setupResponseIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupResponseIEs, globalRicidIE); + + globalRicidIE->criticality = Criticality_reject; + globalRicidIE->id = ProtocolIE_ID_id_GlobalRIC_ID; + globalRicidIE->value.present = E2setupResponseIEs__value_PR_GlobalRIC_ID; + createPLMN_IDByMCCandMNC(&globalRicidIE->value.choice.GlobalRIC_ID.pLMN_Identity, mcc, mnc); + + globalRicidIE->value.choice.GlobalRIC_ID.ric_ID = {nullptr, 3, 4}; + globalRicidIE->value.choice.GlobalRIC_ID.ric_ID.buf = (uint8_t *)calloc(1, globalRicidIE->value.choice.GlobalRIC_ID.ric_ID.size); + memcpy(globalRicidIE->value.choice.GlobalRIC_ID.ric_ID.buf, data, globalRicidIE->value.choice.GlobalRIC_ID.ric_ID.size); + globalRicidIE->value.choice.GlobalRIC_ID.ric_ID.buf[2] &= (unsigned)0xF0; + + + ASN_STRUCT_RESET(asn_DEF_E2setupResponse, &successfulOutcome->value.choice.E2setupResponse); + ASN_SEQUENCE_ADD(&successfulOutcome->value.choice.E2setupResponse.protocolIEs.list, globalRicidIE); + + auto *ranFunctionAdd = (E2setupResponseIEs_t *)calloc(1, sizeof(E2setupResponseIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupResponseIEs, ranFunctionAdd); + ranFunctionAdd->criticality = Criticality_reject; + ranFunctionAdd->id = ProtocolIE_ID_id_RANfunctionsAccepted; + ranFunctionAdd->value.present = E2setupResponseIEs__value_PR_RANfunctionsID_List; + + auto *ranFuncIdItemIEs = (RANfunctionID_ItemIEs_t *)calloc(1, sizeof(RANfunctionID_ItemIEs_t)); + + ranFuncIdItemIEs->criticality = Criticality_ignore; + ranFuncIdItemIEs->id = ProtocolIE_ID_id_RANfunctionID_Item; + ranFuncIdItemIEs->value.present = RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item; + ranFuncIdItemIEs->value.choice.RANfunctionID_Item.ranFunctionID = 10; + ranFuncIdItemIEs->value.choice.RANfunctionID_Item.ranFunctionRevision = 1; + + ASN_SEQUENCE_ADD(&ranFunctionAdd->value.choice.RANfunctionsID_List.list, ranFuncIdItemIEs); + ASN_SEQUENCE_ADD(&successfulOutcome->value.choice.E2setupResponse.protocolIEs.list, ranFunctionAdd); + + + + + + pdu->present = E2AP_PDU_PR_successfulOutcome; +} + + +void buildSetupUnSuccsessfulResponse(E2AP_PDU_t *pdu) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + + pdu->choice.unsuccessfulOutcome = (UnsuccessfulOutcome_t *)calloc(1, sizeof(UnsuccessfulOutcome_t)); + UnsuccessfulOutcome_t *uns = pdu->choice.unsuccessfulOutcome; + uns->procedureCode = ProcedureCode_id_E2setup; + uns->criticality = Criticality_reject; + uns->value.present = UnsuccessfulOutcome__value_PR_E2setupFailure; + + ASN_STRUCT_RESET(asn_DEF_E2setupFailure, &uns->value.choice.E2setupFailure); + + + { + auto *e2SetupFIE = (E2setupFailureIEs_t *) calloc(1, sizeof(E2setupFailureIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + + e2SetupFIE->criticality = Criticality_ignore; + e2SetupFIE->id = ProtocolIE_ID_id_Cause; + e2SetupFIE->value.present = E2setupFailureIEs__value_PR_Cause; + e2SetupFIE->value.choice.Cause.present = Cause_PR_transport; + e2SetupFIE->value.choice.Cause.choice.transport = CauseTransport_transport_resource_unavailable; + + + ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + } + + { + auto *e2SetupFIE = (E2setupFailureIEs_t *) calloc(1, sizeof(E2setupFailureIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + + e2SetupFIE->criticality = Criticality_ignore; + e2SetupFIE->id = ProtocolIE_ID_id_TimeToWait; + e2SetupFIE->value.present = E2setupFailureIEs__value_PR_TimeToWait; + e2SetupFIE->value.choice.TimeToWait = TimeToWait_v60s; + + ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + } + { + auto *e2SetupFIE = (E2setupFailureIEs_t *) calloc(1, sizeof(E2setupFailureIEs_t)); + ASN_STRUCT_RESET(asn_DEF_E2setupFailureIEs, e2SetupFIE); + + e2SetupFIE->criticality = Criticality_ignore; + e2SetupFIE->id = ProtocolIE_ID_id_CriticalityDiagnostics; + e2SetupFIE->value.present = E2setupFailureIEs__value_PR_CriticalityDiagnostics; + e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCode = (ProcedureCode_t *)calloc(1,sizeof(ProcedureCode_t)); + *e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCode = ProcedureCode_id_E2setup; + e2SetupFIE->value.choice.CriticalityDiagnostics.triggeringMessage = (TriggeringMessage_t *)calloc(1,sizeof(TriggeringMessage_t)); + *e2SetupFIE->value.choice.CriticalityDiagnostics.triggeringMessage = TriggeringMessage_initiating_message; + e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCriticality = (Criticality_t *)calloc(1, sizeof(Criticality_t)); + *e2SetupFIE->value.choice.CriticalityDiagnostics.procedureCriticality = Criticality_reject; + ASN_SEQUENCE_ADD(&uns->value.choice.E2setupFailure.protocolIEs.list, e2SetupFIE); + } + + pdu->present = E2AP_PDU_PR_unsuccessfulOutcome; +} + +#endif //E2_E2BUILDER_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/T1/E2Setup.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/T1/E2Setup.cpp new file mode 100644 index 0000000..efc3bd3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/T1/E2Setup.cpp @@ -0,0 +1,112 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 12/10/19. +// + +#include "E2Builder.h" + +#include "asn1cFiles/ProtocolIE-Field.h" + +template +X2SetupRequest_IEs_t *buildX2SetupIE(ProtocolIE_ID_t id, + Criticality_t criticality, + X2SetupRequest_IEs__value_PR present, + T *value) { + auto *x2SetupIE = (X2SetupRequest_IEs_t *)calloc(1, sizeof(X2SetupRequest_IEs_t)); + x2SetupIE->id = id; + x2SetupIE->criticality = criticality; + x2SetupIE->value.present = present; + + switch (present) { + case X2SetupRequest_IEs__value_PR_GlobalENB_ID: { + memcpy(&x2SetupIE->value.choice.GlobalENB_ID, value, sizeof(GlobalENB_ID_t)); + break; + } + case X2SetupRequest_IEs__value_PR_ServedCells: { + memcpy(&x2SetupIE->value.choice.ServedCells, value, sizeof(ServedCells_t)); + break; + } + case X2SetupRequest_IEs__value_PR_GUGroupIDList: { + memcpy(&x2SetupIE->value.choice.GUGroupIDList, value, sizeof(GUGroupIDList_t)); + break; + } + case X2SetupRequest_IEs__value_PR_LHN_ID: { + memcpy(&x2SetupIE->value.choice.LHN_ID, value, sizeof(LHN_ID_t)); + break; + } + case X2SetupRequest_IEs__value_PR_NOTHING: + default: + free(x2SetupIE); + x2SetupIE = nullptr; + break; + } + return x2SetupIE; +} + +/** + * + * @param x2Setup + * @param member + */ +void buildE2SetupRequest(X2SetupRequest_t *x2Setup, vector &member) { + for (auto v : member) { + ASN_SEQUENCE_ADD(&x2Setup->protocolIEs.list, &v); + } +} + +void init_log() { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "setup Request"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +int main(const int argc, char **argv) { + init_log(); + //mdclog_level_set(MDCLOG_WARN); + //mdclog_level_set(MDCLOG_INFO); + mdclog_level_set(MDCLOG_DEBUG); + +// x2Setup X2AP-ELEMENTARY-PROCEDURE ::= { +// INITIATING MESSAGE X2SetupRequest +// SUCCESSFUL OUTCOME X2SetupResponse +// UNSUCCESSFUL OUTCOME X2SetupFailure +// PROCEDURE CODE id-x2Setup +// CRITICALITY reject +// } +// +// + +// X2SetupRequest ::= SEQUENCE { +// protocolIEs ProtocolIE-Container {{X2SetupRequest-IEs}}, +// ... +// } +// +// X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= { +// { ID id-GlobalENB-ID CRITICALITY reject TYPE GlobalENB-ID PRESENCE mandatory}| +// { ID id-ServedCells CRITICALITY reject TYPE ServedCells PRESENCE mandatory}| +// { ID id-GUGroupIDList CRITICALITY reject TYPE GUGroupIDList PRESENCE optional}| +// { ID id-LHN-ID CRITICALITY ignore TYPE LHN-ID PRESENCE optional}, +// ... +// } + + + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/T1/Test1.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/T1/Test1.cpp new file mode 100644 index 0000000..fa20111 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/T1/Test1.cpp @@ -0,0 +1,320 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi on 6/11/19. +// + +#include + +#include "asn1cFiles/E2AP-PDU.h" +#include "asn1cFiles/InitiatingMessage.h" + + + + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "logInit.h" + +// test X2SetUP request and response +using namespace std; + +#define MAXEVENTS 64 + +int main(const int argc, char **argv) { + mdclog_severity_t loglevel = MDCLOG_INFO; + + auto buff = new string("SETUP TEST"); + init_log((char *)buff->c_str()); + + mdclog_level_set(loglevel); + + if (argc < 9){ + mdclog_mdc_add("app", argv[0]); + mdclog_write(MDCLOG_ERR, "Usage host port ran rmr [logLevel = MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "We are after RMR INIT wait for RMR_Ready"); + } + + int rmrReady = 0; + int count = 0; + while (!rmrReady) { + if ((rmrReady = rmr_ready(rmrCtx)) == 0) { + sleep(1); + } + count++; + if (count % 60 == 0) { + mdclog_write(MDCLOG_INFO, "waiting to RMR ready state for %d seconds", count); + } + if (count > 180) { + mdclog_write(MDCLOG_ERR, "RMR not ready tried for 3 minutes "); + return(-2); + } + } + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "RMR running"); + } + + E2AP_PDU_t pdu {}; + auto &initiatingMsg = pdu.select_initiatingMessage(); + initiatingMsg.ref_procedureCode().select_id_x2Setup(); + initiatingMsg.ref_criticality().select_id_x2Setup(); + auto &x2setup = initiatingMsg.ref_value().select_id_x2Setup(); + + auto &ies = x2setup.ref_protocolIEs(); + + + X2SetupRequest::protocolIEs_t::value_type val {}; + val.ref_id().select_id_GlobalENB_ID(); + val.ref_criticality().select_id_GlobalENB_ID(); + uint8_t v1[] = {0x02, 0xf8, 0x29}; + val.ref_value().select_id_GlobalENB_ID().ref_pLMN_Identity().set(3, v1); + uint32_t eNBId = 5; + val.ref_value().select_id_GlobalENB_ID().ref_eNB_ID().select_macro_eNB_ID().set_buffer(20,reinterpret_cast(&eNBId)); + + ies.push_back(val); + + X2SetupRequest::protocolIEs_t::value_type sc {}; + ies.push_back(sc); + + sc.ref_id().select_id_ServedCells(); + sc.ref_criticality().select_id_ServedCells(); + + ServedCells::value_type sce; + sc.ref_value().select_id_ServedCells().push_back(sce); + + sce.ref_servedCellInfo().ref_pCI().set(0x1F7); + uint8_t v3[] = {0x1, 0x2}; + sce.ref_servedCellInfo().ref_tAC().set(2,v3); + sce.ref_servedCellInfo().ref_cellId().ref_pLMN_Identity().set(3, v1); + uint8_t v4[] = {0x00, 0x07, 0xab, ((unsigned)0x50) >> (unsigned)4}; + sce.ref_servedCellInfo().ref_cellId().ref_eUTRANcellIdentifier().set_buffer(28, v4); + + BroadcastPLMNs_Item::value_type bpe; + sce.ref_servedCellInfo().ref_broadcastPLMNs().push_back(bpe); + bpe.set(3, v1); + + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_uL_EARFCN().set(0x1); + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_dL_EARFCN().set(0x1); + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_uL_Transmission_Bandwidth().set(Transmission_Bandwidth::bw50); + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_dL_Transmission_Bandwidth().set(Transmission_Bandwidth::bw50); + + + unsigned char s_buffer[4096]; + asn::per::EncoderCtx ctx{s_buffer, sizeof(s_buffer)}; + std::cout << asn::get_printed(pdu) << std::endl; + + if (!asn::per::pack(pdu, ctx)) { + std::cout << ctx.refErrorCtx().toString() << std::endl; + return -3; + } + size_t packed_buf_size; + packed_buf_size = static_cast(ctx.refBuffer().getBytesUsed()); + + // build message + char data[4096] {}; + //auto delimiter = (const char) '|'; + sprintf(data, "%s|%s|%s|%d|%s/0", host, port, ranName, (int)packed_buf_size, ctx.refBuffer().getBytes(packed_buf_size)); + + rmr_mbuf_t *msg = rmr_alloc_msg(rmrCtx, int(strlen(data))); + rmr_bytes2meid(msg, (unsigned char const*)ranName, strlen(ranName)); + rmr_bytes2payload(msg, (unsigned char const*)data, strlen(data)); + rmr_bytes2xact(msg, (unsigned char const*)ranName, strlen(ranName)); + msg->mtype = RIC_X2_SETUP_REQ; + msg->state = 0; + + msg = rmr_send_msg(rmrCtx, msg); + if (msg->state != 0) { + mdclog_write(MDCLOG_ERR, "Message state %d while sending RIC_X2_SETUP to %s", msg->state, ranName); + rmr_free_msg(msg); + rmr_close(rmrCtx); + return -4; + } + rmr_free_msg(msg); + + + unsigned char allocBuffer[64*1024] {0}; + auto *events = (struct epoll_event *)calloc(MAXEVENTS, sizeof(event)); + + while (true) { + + auto numOfEvents = epoll_wait(epoll_fd, events, MAXEVENTS, -1); + if (numOfEvents < 0) { + mdclog_write(MDCLOG_ERR, "Epoll wait failed, errno = %s", strerror(errno)); + rmr_close(rmrCtx); + return -4; + } + for (auto i = 0; i < numOfEvents; i++) { + if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP) || (!(events[i].events & EPOLLIN))) { + mdclog_write(MDCLOG_ERR, "epoll error"); + } else if (rmrListenFd == events[i].data.fd) { + msg = rmr_alloc_msg(rmrCtx, 4096); + if (msg == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR Allocation message, %s", strerror(errno)); + rmr_close(rmrCtx); + return -5; + } + + msg = rmr_rcv_msg(rmrCtx, msg); + if (msg == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR Receving message, %s", strerror(errno)); + rmr_close(rmrCtx); + return -6; + } + memset(allocBuffer, 0, 64*1024); + switch (msg->mtype) { + case RIC_X2_SETUP_RESP: { + mdclog_write(MDCLOG_INFO, "successful, RMR receiveing RIC_X2_SETUP_RESP"); + asn::per::DecoderCtx dCtx{msg->payload, (size_t) msg->len, allocBuffer, sizeof(allocBuffer)}; + E2AP_PDU opdu; + if (!asn::per::unpack(opdu, dCtx)) { + mdclog_write(MDCLOG_ERR, "Failed to unpack ASN message, %s", dCtx.refErrorCtx().toString()); + rmr_free_msg(msg); + rmr_close(rmrCtx); + return -7; + } + break; + } + case RIC_X2_SETUP_FAILURE: { + mdclog_write(MDCLOG_INFO, "successful, RMR receiveing RIC_X2_SETUP_FAILURE"); + asn::per::DecoderCtx dCtx{msg->payload, (size_t) msg->len, allocBuffer, sizeof(allocBuffer)}; + E2AP_PDU opdu; + if (!asn::per::unpack(opdu, dCtx)) { + mdclog_write(MDCLOG_ERR, "Failed to unpack ASN message, %s", dCtx.refErrorCtx().toString()); + rmr_free_msg(msg); + rmr_close(rmrCtx); + return -7; + } + + break; + } + default: { + mdclog_write(MDCLOG_INFO, "RMR receiveing message type %d", msg->mtype); + asn::per::DecoderCtx dCtx{msg->payload, (size_t) msg->len, allocBuffer, sizeof(allocBuffer)}; + E2AP_PDU opdu; + if (!asn::per::unpack(opdu, dCtx)) { + mdclog_write(MDCLOG_ERR, "Failed to unpack ASN message, %s", dCtx.refErrorCtx().toString()); + rmr_close(rmrCtx); + return -7; + } + + switch (opdu.get_index()) { + case 1: { //initiating message + mdclog_write(MDCLOG_INFO, "ASN initiating message type %ld", + opdu.get_initiatingMessage()->ref_procedureCode().ref_value().get()); + break; + } + case 2: { //successful message + mdclog_write(MDCLOG_INFO, "ASN initiating message type %ld", + opdu.get_successfulOutcome()->ref_procedureCode().ref_value().get()); + break; + } + case 3: { //unsuccessesful message + mdclog_write(MDCLOG_INFO, "ASN initiating message type %ld", + opdu.get_unsuccessfulOutcome()->ref_procedureCode().ref_value().get()); + break; + } + + } + mdclog_write(MDCLOG_INFO, "RMR receiveing message from E2 terminator, %d", + msg->mtype); + break; + } + } + } + } + } +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/T1/dockerRouter.txt b/setup/e2/RIC-E2-TERMINATION/TEST/T1/dockerRouter.txt new file mode 100644 index 0000000..a1bc375 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/T1/dockerRouter.txt @@ -0,0 +1,7 @@ +newrt|start +rte|10061|10.0.2.15:38012 +rte|10062|10.0.2.15:38012 +rte|1080|10.0.2.15:38012 +rte|12011|10.0.2.15:38012 +rte|12012|10.0.2.15:38012 +newrt|end diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/base64/testBase64.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/base64/testBase64.cpp new file mode 100644 index 0000000..90769f5 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/base64/testBase64.cpp @@ -0,0 +1,100 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/27/19. +// + +#include "base64.h" +#include +#include +#include +#include +#include +#include + +using namespace std; + +Describe(base64); +BeforeEach(base64) {} +AfterEach(base64) {} + +using namespace cgreen; + +void init_log() { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "TestConfiguration"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +const char *data = "ABC123Test Lets Try this' input and see What \"happens\""; + +Ensure(base64, encDec) { + string str = "ABC123Test Lets Try this' input and see What \"happens\""; + auto *buf = (unsigned char *)malloc(str.length() * 2); + auto length = (long)(str.length() * 2); + base64::encode((unsigned char *)str.c_str(), str.length(), buf, length); + auto *backBackBuff = (unsigned char *)malloc(length); + auto length2 = length; + assert_that(base64::decode(buf, length, backBackBuff, length2) == 0); + std::string str1( backBackBuff, backBackBuff + sizeof backBackBuff / sizeof backBackBuff[0]); + + assert_that(str.compare((const char *)backBackBuff) == 0) + free(backBackBuff); + free(buf); +} + +Ensure(base64, errorsHandling) { + string str = "ABC123Test Lets Try this' input and see What \"happens\""; + auto *buf = (unsigned char *)malloc(str.length() * 2); + auto length = (long)(str.length()); + assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), buf, length) == -1); + length = (long)(str.length() * 2); + assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), buf, length) == 0); + auto *backBackBuff = (unsigned char *)malloc(length); + auto length2 = length >> 2; + assert_that(base64::decode(buf, length, backBackBuff, length2) == -1); + //std::string str1( backBackBuff, backBackBuff + sizeof backBackBuff / sizeof backBackBuff[0]); + auto length1 = 0l; + assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), nullptr , length) == -1); +// assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), nullptr , length) == -1); + assert_that(base64::encode(nullptr, str.length(), backBackBuff , length) == -1); + assert_that(base64::encode((unsigned char *)str.c_str(), length1, backBackBuff , length) == -1); + assert_that(base64::encode(nullptr, str.length(), backBackBuff , length1) == -1); + length1 = -1; + assert_that(base64::encode((unsigned char *)str.c_str(), length1, backBackBuff , length) == -1); + assert_that(base64::encode(nullptr, str.length(), backBackBuff , length1) == -1); + +} + + +int main(const int argc, char **argv) { + mdclog_severity_t loglevel = MDCLOG_INFO; + init_log(); + mdclog_level_set(loglevel); + + //TestSuite *suite = create_test_suite(); + TestSuite *suite = create_named_test_suite_(__FUNCTION__, __FILE__, __LINE__); + + add_test_with_context(suite, base64, encDec); + add_test_with_context(suite, base64, errorsHandling); + + return cgreen::run_test_suite(suite, create_text_reporter()); + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/e2sm.c b/setup/e2/RIC-E2-TERMINATION/TEST/e2sm.c new file mode 100644 index 0000000..12d6097 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/e2sm.c @@ -0,0 +1,833 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 6/19/19. +// + +#include "e2sm.h" + +#define printEntry(type, function) \ + if (mdclog_level_get() >= MDCLOG_DEBUG) { \ + mdclog_write(MDCLOG_DEBUG, "start Test %s , %s", type, function); \ + } + + +static void checkAndPrint(asn_TYPE_descriptor_t *typeDescriptor, void *data, char *dataType, const char *function) { + char errbuf[128]; /* Buffer for error message */ + size_t errlen = sizeof(errbuf); /* Size of the buffer */ + if (asn_check_constraints(typeDescriptor, data, errbuf, &errlen) != 0) { + mdclog_write(MDCLOG_ERR, "%s Constraint validation failed: %s", dataType, errbuf); + } else if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "%s successes function %s", dataType, function); + } +} + +static size_t encodebuff(int codingType, + asn_TYPE_descriptor_t *typeDescriptor, + void *objectData, + uint8_t *buffer, + size_t buffer_size) { + asn_enc_rval_t er; + struct timespec start = {0,0}; + struct timespec end = {0,0}; + clock_gettime(CLOCK_MONOTONIC, &start); + er = asn_encode_to_buffer(0, codingType, typeDescriptor, objectData, buffer, buffer_size); + clock_gettime(CLOCK_MONOTONIC, &end); + if (er.encoded == -1) { + mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, strerror(errno)); + } else if (er.encoded > (ssize_t)buffer_size) { + mdclog_write(MDCLOG_ERR, "Buffer of size %d is to small for %s", (int) buffer_size, + typeDescriptor->name); + } else if (mdclog_level_get() >= MDCLOG_DEBUG) { + if (codingType == ATS_BASIC_XER) { + mdclog_write(MDCLOG_DEBUG, "Buffer of size %d, data = %s", (int) er.encoded, buffer); + } + else { + if (mdclog_level_get() >= MDCLOG_INFO) { + char *printBuffer; + size_t size; + FILE *stream = open_memstream(&printBuffer, &size); + asn_fprint(stream, typeDescriptor, objectData); + mdclog_write(MDCLOG_DEBUG, "Encoding E2SM PDU past : %s", printBuffer); + } + + + mdclog_write(MDCLOG_DEBUG, "Buffer of size %d", (int) er.encoded); + } + } + mdclog_write(MDCLOG_INFO, "Encoding type %d, time is %ld seconds, %ld nanoseconds", codingType, end.tv_sec - start.tv_sec, end.tv_nsec - start.tv_nsec); + //mdclog_write(MDCLOG_INFO, "Encoding time is %3.9f seconds", ((double)end.tv_sec + 1.0e-9 * end.tv_nsec) - ((double)start.tv_sec + 1.0e-9 * start.tv_nsec)); + return er.encoded; +} + +PLMN_Identity_t *createPLMN_ID(const unsigned char *data) { + printEntry("PLMN_Identity_t", __func__) + PLMN_Identity_t *plmnId = calloc(1, sizeof(PLMN_Identity_t)); + ASN_STRUCT_RESET(asn_DEF_PLMN_Identity, plmnId); + plmnId->size = 3; + plmnId->buf = calloc(1, 3); + memcpy(plmnId->buf, data, 3); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_PLMN_Identity, plmnId, "PLMN_Identity_t", __func__); + } + + return plmnId; +} + +ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data) { + printEntry("ENB_ID_t", __func__) + ENB_ID_t *enb = calloc(1, sizeof(ENB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_ENB_ID, enb); + + enb->present = enbType; + + switch (enbType) { + case ENB_ID_PR_macro_eNB_ID: { // 20 bit 3 bytes + enb->choice.macro_eNB_ID.size = 3; + enb->choice.macro_eNB_ID.bits_unused = 4; + + enb->present = ENB_ID_PR_macro_eNB_ID; + + enb->choice.macro_eNB_ID.buf = calloc(1, enb->choice.macro_eNB_ID.size); + data[enb->choice.macro_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.macro_eNB_ID.size - 1] >> + (unsigned)enb->choice.macro_eNB_ID.bits_unused) << (unsigned)enb->choice.macro_eNB_ID.bits_unused); + memcpy(enb->choice.macro_eNB_ID.buf, data, enb->choice.macro_eNB_ID.size); + + break; + } + case ENB_ID_PR_home_eNB_ID: { // 28 bit 4 bytes + enb->choice.home_eNB_ID.size = 4; + enb->choice.home_eNB_ID.bits_unused = 4; + enb->present = ENB_ID_PR_home_eNB_ID; + + enb->choice.home_eNB_ID.buf = calloc(1, enb->choice.home_eNB_ID.size); + data[enb->choice.home_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.home_eNB_ID.size - 1] >> + (unsigned)enb->choice.home_eNB_ID.bits_unused) << (unsigned)enb->choice.home_eNB_ID.bits_unused); + memcpy(enb->choice.home_eNB_ID.buf, data, enb->choice.home_eNB_ID.size); + break; + } + case ENB_ID_PR_short_Macro_eNB_ID: { // 18 bit - 3 bytes + enb->choice.short_Macro_eNB_ID.size = 3; + enb->choice.short_Macro_eNB_ID.bits_unused = 6; + enb->present = ENB_ID_PR_short_Macro_eNB_ID; + + enb->choice.short_Macro_eNB_ID.buf = calloc(1, enb->choice.short_Macro_eNB_ID.size); + data[enb->choice.short_Macro_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.short_Macro_eNB_ID.size - 1] >> + (unsigned)enb->choice.short_Macro_eNB_ID.bits_unused) << (unsigned)enb->choice.short_Macro_eNB_ID.bits_unused); + memcpy(enb->choice.short_Macro_eNB_ID.buf, data, enb->choice.short_Macro_eNB_ID.size); + break; + } + case ENB_ID_PR_long_Macro_eNB_ID: { // 21 + enb->choice.long_Macro_eNB_ID.size = 3; + enb->choice.long_Macro_eNB_ID.bits_unused = 3; + enb->present = ENB_ID_PR_long_Macro_eNB_ID; + + enb->choice.long_Macro_eNB_ID.buf = calloc(1, enb->choice.long_Macro_eNB_ID.size); + data[enb->choice.long_Macro_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.long_Macro_eNB_ID.size - 1] >> + (unsigned)enb->choice.long_Macro_eNB_ID.bits_unused) << (unsigned)enb->choice.long_Macro_eNB_ID.bits_unused); + memcpy(enb->choice.long_Macro_eNB_ID.buf, data, enb->choice.long_Macro_eNB_ID.size); + break; + } + default: + free(enb); + return NULL; + + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ENB_ID, enb, "ENB_ID_t", __func__); + } + return enb; +} + +GNB_ID_t *createGnb_id(const unsigned char *data, int numOfBits) { + printEntry("GNB_ID_t", __func__) + if (numOfBits < 22 || numOfBits > 32) { + mdclog_write(MDCLOG_ERR, "GNB_ID_t number of bits = %d, needs to be 22 .. 32", numOfBits); + return NULL; + } + GNB_ID_t *gnb = calloc(1, sizeof(GNB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GNB_ID, gnb); + + gnb->present = GNB_ID_PR_gNB_ID; + gnb->choice.gNB_ID.size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + gnb->choice.gNB_ID.bits_unused = (int)gnb->choice.gNB_ID.size * 8 - numOfBits; + gnb->choice.gNB_ID.buf = calloc(1, gnb->choice.gNB_ID.size); + memcpy(gnb->choice.gNB_ID.buf, data, gnb->choice.gNB_ID.size); + gnb->choice.gNB_ID.buf[gnb->choice.gNB_ID.size - 1] = + ((unsigned)(gnb->choice.gNB_ID.buf[gnb->choice.gNB_ID.size - 1] >> (unsigned)gnb->choice.gNB_ID.bits_unused) + << (unsigned)gnb->choice.gNB_ID.bits_unused); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_GNB_ID, gnb, "GNB_ID_t", __func__); + } + + return gnb; + +} + +GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId) { + printEntry("GlobalENB_ID_t", __func__) + GlobalENB_ID_t *genbId = calloc(1, sizeof(GlobalENB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GlobalENB_ID, genbId); + memcpy(&genbId->pLMN_Identity, plmnIdentity, sizeof(PLMN_Identity_t)); + memcpy(&genbId->eNB_ID, enbId, sizeof(ENB_ID_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_GlobalENB_ID, genbId, "GlobalENB_ID_t", __func__); + } + return genbId; +} + +GlobalGNB_ID_t *createGlobalGNB_ID(PLMN_Identity_t *plmnIdentity, GNB_ID_t *gnb) { + printEntry("GlobalGNB_ID_t", __func__) + GlobalGNB_ID_t *ggnbId = calloc(1, sizeof(GlobalGNB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GlobalGNB_ID, ggnbId); + + memcpy(&ggnbId->pLMN_Identity, plmnIdentity, sizeof(PLMN_Identity_t)); + memcpy(&ggnbId->gNB_ID, gnb, sizeof(GNB_ID_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_GlobalGNB_ID, ggnbId, "GlobalGNB_ID_t", __func__); + } + + return ggnbId; +} + + +Interface_ID_t *createInterfaceIDForGnb(GlobalGNB_ID_t *gnb) { + printEntry("Interface_ID_t", __func__) + Interface_ID_t *interfaceId = calloc(1, sizeof(Interface_ID_t)); + ASN_STRUCT_RESET(asn_DEF_Interface_ID, interfaceId); + + interfaceId->present = Interface_ID_PR_global_gNB_ID; + //memcpy(&interfaceId->choice.global_gNB_ID, gnb, sizeof(GlobalGNB_ID_t)); + interfaceId->choice.global_gNB_ID = gnb; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_Interface_ID, interfaceId, "Interface_ID_t", __func__); + } + + return interfaceId; +} + +Interface_ID_t *createInterfaceIDForEnb(GlobalENB_ID_t *enb) { + printEntry("Interface_ID_t", __func__) + Interface_ID_t *interfaceId = calloc(1, sizeof(Interface_ID_t)); + ASN_STRUCT_RESET(asn_DEF_Interface_ID, interfaceId); + + interfaceId->present = Interface_ID_PR_global_eNB_ID; + //memcpy(&interfaceId->choice.global_eNB_ID, enb, sizeof(GlobalENB_ID_t)); + interfaceId->choice.global_eNB_ID = enb; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_Interface_ID, interfaceId, "Interface_ID_t", __func__); + } + + return interfaceId; +} + + + +InterfaceMessageType_t *createInterfaceMessageInitiating(long procedureCode) { + printEntry("InterfaceMessageType_t", __func__) + InterfaceMessageType_t *intMsgT = calloc(1, sizeof(InterfaceMessageType_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceMessageType, intMsgT); + + intMsgT->procedureCode = procedureCode; + intMsgT->typeOfMessage = TypeOfMessage_initiating_message; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceMessageType, intMsgT, "InterfaceMessageType_t", __func__); + } + + return intMsgT; +} + +InterfaceMessageType_t *createInterfaceMessageSuccsesful(long procedureCode) { + printEntry("InterfaceMessageType_t", __func__) + InterfaceMessageType_t *intMsgT = calloc(1, sizeof(InterfaceMessageType_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceMessageType, intMsgT); + + intMsgT->procedureCode = procedureCode; + intMsgT->typeOfMessage = TypeOfMessage_successful_outcome; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceMessageType, intMsgT, "InterfaceMessageType_t", __func__); + } + + return intMsgT; +} + +InterfaceMessageType_t *createInterfaceMessageUnsuccessful(long procedureCode) { + printEntry("InterfaceMessageType_t", __func__) + InterfaceMessageType_t *intMsgT = calloc(1, sizeof(InterfaceMessageType_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceMessageType, intMsgT); + + intMsgT->procedureCode = procedureCode; + intMsgT->typeOfMessage = TypeOfMessage_unsuccessful_outcome; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceMessageType, intMsgT, "InterfaceMessageType_t", __func__); + } + + return intMsgT; +} + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueInt(long number) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueInt; + value->choice.valueInt = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueEnum(long number) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueEnum; + value->choice.valueEnum = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBool(int val) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueBool; + value->choice.valueBool = val == 0 ? 0 : 1; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBitString(unsigned char *buf, int numOfBits) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + size_t size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + if (strlen((const char *)buf) < size) { + mdclog_write(MDCLOG_ERR, "size of buffer is small : %d needs to be %d in %s", (int)strlen((const char *)buf), (int)size, __func__); + } + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueBitS; + value->choice.valueBitS.size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + value->choice.valueBitS.buf = calloc(1, value->choice.valueBitS.size); + int bits_unused = (int)value->choice.valueBitS.size * 8 - numOfBits; + value->choice.valueBitS.bits_unused = bits_unused; + + memcpy(value->choice.valueBitS.buf, buf, value->choice.valueBitS.size); + value->choice.valueBitS.buf[size -1] = ((unsigned)(buf[size - 1]) >> (unsigned)bits_unused << (unsigned)bits_unused); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueOCTETS(uint8_t *buf) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + size_t size = strlen((const char *)buf); + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueOctS; + value->choice.valueOctS.size = size; + value->choice.valueOctS.buf = calloc(1, value->choice.valueOctS.size); + memcpy(value->choice.valueOctS.buf, buf, value->choice.valueOctS.size); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + + +InterfaceProtocolIE_Item_t *createInterfaceProtocolIE_Item(long id, long test, InterfaceProtocolIE_Value_t *value) { + printEntry("InterfaceProtocolIE_Item_t", __func__) + if (test < InterfaceProtocolIE_Test_equal || test > InterfaceProtocolIE_Test_present) { + mdclog_write(MDCLOG_ERR, "InterfaceProtocolIE_Item_t test value is %ld, out of scope %d .. %d ", + test, InterfaceProtocolIE_Test_equal, InterfaceProtocolIE_Test_present); + return NULL; + } + InterfaceProtocolIE_Item_t *intProtIt = calloc(1, sizeof(InterfaceProtocolIE_Item_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Item, intProtIt); + + + intProtIt->interfaceProtocolIE_ID = id; + + intProtIt->interfaceProtocolIE_Test = test; + + memcpy(&intProtIt->interfaceProtocolIE_Value, value, sizeof(InterfaceProtocolIE_Value_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Item, intProtIt, "InterfaceProtocolIE_Item_t", __func__); + } + + return intProtIt; + +} + + + +ActionParameter_Value_t *createActionParameterValue_Int(long number) { + printEntry("ActionParameter_Value_t", __func__) + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueInt; + value->choice.valueInt = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +ActionParameter_Value_t *createActionParameterValue_Enum(long number) { + printEntry("ActionParameter_Value_t", __func__) + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueEnum; + value->choice.valueEnum = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +ActionParameter_Value_t *createActionParameterValue_Bool(int val) { + printEntry("ActionParameter_Value_t", __func__) + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueBool; + value->choice.valueBool = val == 0 ? 0 : 1; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + + +ActionParameter_Value_t *createActionParameterValue_Bit_String(unsigned char *buf, int numOfBits) { + printEntry("ActionParameter_Value_t", __func__) + size_t size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + if (strlen((const char *)buf) < size) { + mdclog_write(MDCLOG_ERR, "size of buffer is small : %d needs to be %d in %s", (int)strlen((const char *)buf), (int)size, __func__); + } + int bits_unused = (int)size * 8 - numOfBits; + + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueBitS; + value->choice.valueBitS.size = size; + value->choice.valueBitS.buf = calloc(1, size); + value->choice.valueBitS.bits_unused = bits_unused; + + memcpy(value->choice.valueBitS.buf, buf, size); + value->choice.valueBitS.buf[size -1] = ((unsigned)(buf[size - 1]) >> (unsigned)bits_unused << (unsigned)bits_unused); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + + +ActionParameter_Value_t *createActionParameterValue_OCTETS(uint8_t *buf) { + printEntry("ActionParameter_Value_t", __func__) + size_t size = strlen((const char *)buf); + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueOctS; + value->choice.valueOctS.size = size; + value->choice.valueOctS.buf = calloc(1, value->choice.valueOctS.size); + memcpy(value->choice.valueOctS.buf, buf, value->choice.valueOctS.size); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +/** + * + * @param buf buffer that must be null terminated + * @return ActionParameter_Value_t * + */ +ActionParameter_Value_t *createActionParameterValue_PRINTS(char *buf) { + printEntry("ActionParameter_Value_t", __func__) + size_t size = strlen((const char *)buf); + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valuePrtS; + value->choice.valuePrtS.size = size; + value->choice.valuePrtS.buf = calloc(1, value->choice.valuePrtS.size); + memcpy(value->choice.valuePrtS.buf, buf, value->choice.valuePrtS.size); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +ActionParameter_Item_t *creatActionParameter_Item(long id, ActionParameter_Value_t *val) { + printEntry("ActionParameter_Item_t", __func__) + if (id < 0 || id > 255) { + mdclog_write(MDCLOG_ERR, "ActionParameter_Item_t id = %ld, values are 0 .. 255", id); + return NULL; + } + ActionParameter_Item_t *actionParameterItem = calloc(1, sizeof(ActionParameter_Item_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Item, actionParameterItem); + + actionParameterItem->actionParameter_ID = id; + memcpy(&actionParameterItem->actionParameter_Value, val, sizeof(ActionParameter_Value_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Item, actionParameterItem, "ActionParameter_Item_t", __func__); + } + + return actionParameterItem; +} + +/** + * + * @param interfaceId + * @param direction + * @param messageType + * @param interfaceProtocolItemList + * @param listSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createEventTrigger(Interface_ID_t *interfaceId, long direction, + InterfaceMessageType_t *messageType, + InterfaceProtocolIE_Item_t interfaceProtocolItemList[], + int listSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_eventTriggerDefinition_t", __func__) + if (direction < InterfaceDirection_incoming || direction > InterfaceDirection_outgoing) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_eventTriggerDefinition_t direction = %ld, values are %d .. %d", + direction, InterfaceDirection_incoming, InterfaceDirection_outgoing); + return -1; + } + + E2SM_gNB_X2_eventTriggerDefinition_t *eventTrigger = calloc(1, sizeof(E2SM_gNB_X2_eventTriggerDefinition_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, eventTrigger); + + memcpy(&eventTrigger->interface_ID , interfaceId, sizeof(Interface_ID_t)); + + eventTrigger->interfaceDirection = direction; + memcpy(&eventTrigger->interfaceMessageType, messageType, sizeof(InterfaceMessageType_t)); + + for (int i = 0; i < listSize; i++) { + ASN_SEQUENCE_ADD(eventTrigger->interfaceProtocolIE_List, &interfaceProtocolItemList[i]); + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, eventTrigger, "E2SM_gNB_X2_eventTriggerDefinition_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, + eventTrigger, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, + eventTrigger, + buf1, + 4096); + + } + + return len; +} + + +size_t createActionDefinition(long styleId, ActionParameter_Item_t actionParamList[], int listSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_actionDefinition_t", __func__) + E2SM_gNB_X2_actionDefinition_t *actDef = calloc(1, sizeof(E2SM_gNB_X2_actionDefinition_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_actionDefinition, actDef); + + actDef->style_ID = styleId; + for (int i = 0; i < listSize; i++) { + ASN_SEQUENCE_ADD(actDef->actionParameter_List, &actionParamList[i]); + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_actionDefinition, actDef, "E2SM_gNB_X2_actionDefinition_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_actionDefinition, + actDef, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_actionDefinition, + actDef, + buf1, + 4096); + + } + + return len; +} + +size_t createE2SM_gNB_X2_indicationHeader(long direction, + Interface_ID_t *interfaceId, + uint8_t *timestamp, //can put NULL if size == 0 + int size, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_indicationHeader_t", __func__) + if (direction < InterfaceDirection_incoming || direction > InterfaceDirection_outgoing) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_indicationHeader_t direction = %ld, values are %d .. %d", + direction, InterfaceDirection_incoming, InterfaceDirection_outgoing); + return -1; + } + + E2SM_gNB_X2_indicationHeader_t *indiHead = calloc(1, sizeof(E2SM_gNB_X2_indicationHeader_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_indicationHeader, indiHead); + + indiHead->interfaceDirection = direction; + memcpy(&indiHead->interface_ID, interfaceId, sizeof(Interface_ID_t)); + if (size > 0) { + indiHead->timestamp->size = size; + indiHead->timestamp->buf = calloc(1, sizeof(uint8_t) * size); + memcpy(indiHead->timestamp->buf, timestamp, size); + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_indicationHeader, indiHead, "E2SM_gNB_X2_indicationHeader_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_indicationHeader, + indiHead, + buffer, + buffer_size); + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_indicationHeader, + indiHead, + buf1, + 4096); + + } + + return len; +} + +size_t createE2SM_gNB_X2_indicationMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_indicationMessage_t", __func__) + if (msgSize <= 0) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_indicationMessage_t failed messsage size = %d", msgSize); + return -1; + } + + E2SM_gNB_X2_indicationMessage_t *indicationMessage = calloc(1, sizeof(E2SM_gNB_X2_indicationMessage_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_indicationMessage, indicationMessage); + + indicationMessage->interfaceMessage.size = msgSize; + indicationMessage->interfaceMessage.buf = calloc(1, sizeof(uint8_t) * msgSize); + memcpy(indicationMessage->interfaceMessage.buf, message, msgSize); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_indicationMessage, indicationMessage, "E2SM_gNB_X2_indicationMessage_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_indicationMessage, + indicationMessage, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_indicationMessage, + indicationMessage, + buf1, + 4096); + + } + + return len; +} + + +size_t createE2SM_gNB_X2_callProcessID(long callProcess_Id, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_callProcessID_t", __func__) + E2SM_gNB_X2_callProcessID_t *callProcessId = calloc(1, sizeof(E2SM_gNB_X2_callProcessID_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_callProcessID, callProcessId); + + callProcessId->callProcess_ID = callProcess_Id; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_callProcessID, callProcessId, "E2SM_gNB_X2_indicationMessage_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_callProcessID, + callProcessId, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_callProcessID, + callProcessId, + buf1, + 4096); + + } + + return len; +} + +size_t createE2SM_gNB_X2_controlHeader(Interface_ID_t *interfaceId, long direction, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_controlHeader_t", __func__) + if (direction < InterfaceDirection_incoming || direction > InterfaceDirection_outgoing) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_controlHeader_t direction = %ld, values are %d .. %d", + direction, InterfaceDirection_incoming, InterfaceDirection_outgoing); + return -1; + } + E2SM_gNB_X2_controlHeader_t *controlHeader = calloc(1, sizeof(E2SM_gNB_X2_controlHeader_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_controlHeader, controlHeader); + + memcpy(&controlHeader->interface_ID, interfaceId, sizeof(Interface_ID_t)); + controlHeader->interfaceDirection = direction; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_controlHeader, controlHeader, "E2SM_gNB_X2_controlHeader_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_controlHeader, + controlHeader, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_controlHeader, + controlHeader, + buf1, + 4096); + + } + + return len; +} + + +size_t createE2SM_gNB_X2_controlMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_controlMessage_t", __func__) + E2SM_gNB_X2_controlMessage_t *controlMsg = calloc(1, sizeof(E2SM_gNB_X2_controlMessage_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_controlMessage, controlMsg); + + controlMsg->interfaceMessage.size = msgSize; + controlMsg->interfaceMessage.buf = calloc(1, sizeof(uint8_t) * msgSize); + memcpy(controlMsg->interfaceMessage.buf, message, msgSize); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_controlMessage, controlMsg, "E2SM_gNB_X2_controlMessage_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_controlMessage, + controlMsg, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_controlMessage, + controlMsg, + buf1, + 4096); + + } + + return len; +} diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/e2sm.h b/setup/e2/RIC-E2-TERMINATION/TEST/e2sm.h new file mode 100644 index 0000000..7cbc24d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/e2sm.h @@ -0,0 +1,322 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 6/19/19. +// + +#ifndef ASN_DISABLE_OER_SUPPORT +#define ASN_DISABLE_OER_SUPPORT // this is to remove the OER do not remove it +#endif + + +#ifdef __cplusplus +extern "C" +{ +#endif + + +#ifndef E2_E2SM_H +#define E2_E2SM_H + +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "asn1cFiles/ENB-ID.h" + +#include "asn1cFiles/E2SM-gNB-X2-actionDefinition.h" + +#include "asn1cFiles/E2SM-gNB-X2-callProcessID.h" +#include "asn1cFiles/E2SM-gNB-X2-controlHeader.h" +#include "asn1cFiles/E2SM-gNB-X2-controlMessage.h" +#include "asn1cFiles/E2SM-gNB-X2-indicationHeader.h" +#include "asn1cFiles/E2SM-gNB-X2-indicationMessage.h" +#include "asn1cFiles/E2SM-gNB-X2-eventTriggerDefinition.h" + + +#include "asn1cFiles/ActionParameter-Item.h" +#include "asn1cFiles/ActionParameter-Value.h" +#include "asn1cFiles/PLMN-Identity.h" +#include "asn1cFiles/GlobalENB-ID.h" +#include "asn1cFiles/GlobalGNB-ID.h" +#include "asn1cFiles/Interface-ID.h" +#include "asn1cFiles/InterfaceMessageType.h" +#include "asn1cFiles/InterfaceProtocolIE-Item.h" + +/** + * + * @param data + * @return + */ +PLMN_Identity_t *createPLMN_ID(const unsigned char *data); +/** + * + * @param enbType + * @param data + * @return + */ +ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data); +/** + * + * @param data + * @param numOfBits + * @return + */ +GNB_ID_t *createGnb_id(const unsigned char *data, int numOfBits); +/** + * + * @param plmnIdentity + * @param enbId + * @return + */ +GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId); +/** + * + * @param plmnIdent#ifdef __cplusplus +} +#endif +ity + * @param gnb + * @return + */ +GlobalGNB_ID_t *createGlobalGNB_ID(PLMN_Identity_t *plmnIdentity, GNB_ID_t *gnb); + +/** + * + * @param gnb + * @return + */ +Interface_ID_t *createInterfaceIDForGnb(GlobalGNB_ID_t *gnb); +/** + * + * @param enb + * @return + */ +Interface_ID_t *createInterfaceIDForEnb(GlobalENB_ID_t *enb); + +/** + * + * @param procedureCode + * @return + */ +InterfaceMessageType_t *createInterfaceMessageInitiating(ProcedureCode_t procedureCode); +/** + * + * @param procedureCode + * @return + */ +InterfaceMessageType_t *createInterfaceMessageSuccsesful(ProcedureCode_t procedureCode); + +/** + * + * @param procedureCode + * @return + */ +InterfaceMessageType_t *createInterfaceMessageUnsuccessful(ProcedureCode_t procedureCode); + + +/** + * + * @param number + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueInt(long number); +/** + * + * @param number + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueEnum(long number); +/** + * + * @param val + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBool(int val); + +/** + * + * @param buf + * @param numOfBits + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBitString(unsigned char *buf, int numOfBits); + +/** + * + * @param buf + * @param size + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueOCTETS(uint8_t *buf); +/** + * + * @param id + * @param test + * @param value + * @return + */ +InterfaceProtocolIE_Item_t *createInterfaceProtocolIE_Item(long id, long test, InterfaceProtocolIE_Value_t *value); + +/** + * + * @param number + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Int(long number); + +/** + * + * @param number + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Enum(long number); + +/** + * + * @param val + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Bool(int val); + +/** + * + * @param buf + * @param numOfBits + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Bit_String(unsigned char *buf, int numOfBits); + +/** + * + * @param buf + * @param size + * @return + */ +ActionParameter_Value_t *createActionParameterValue_OCTETS(uint8_t *buf); + +/** + * + * @param buf + * @param size + * @return + */ +ActionParameter_Value_t *createActionParameterValue_PRINTS(char *buf); + +/** + * + * @param id + * @param val + * @return + */ +ActionParameter_Item_t *creatActionParameter_Item(long id, ActionParameter_Value_t *val); + +/** + * + * @param interfaceId + * @param direction + * @param messageType + * @param interfaceProtocolItemList + * @param listSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createEventTrigger(Interface_ID_t *interfaceId, long direction, + InterfaceMessageType_t *messageType, + InterfaceProtocolIE_Item_t interfaceProtocolItemList[], + int listSize, + uint8_t *buffer, + size_t buffer_size); + + +/** + * + * @param styleId + * @param actionParamList + * @param listSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createActionDefinition(long styleId, ActionParameter_Item_t actionParamList[], int listSize, + uint8_t *buffer, + size_t buffer_size); +/** + * + * @param interfaceDirection + * @param interfaceId + * @param timestamp + * @param size + * @param buffer + * @param buffer_size + * @return + */ +size_t createE2SM_gNB_X2_indicationHeader(long interfaceDirection, + Interface_ID_t *interfaceId, + uint8_t *timestamp, //can put NULL if size == 0 + int size, + uint8_t *buffer, + size_t buffer_size); + +/** + * + * @param message + * @param msgSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createE2SM_gNB_X2_indicationMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size); + +/** + * + * @param callProcess_Id + * @param buffer + * @param buffer_size + * @return + */ +size_t createE2SM_gNB_X2_callProcessID(long callProcess_Id, + uint8_t *buffer, + size_t buffer_size); + +size_t createE2SM_gNB_X2_controlHeader(Interface_ID_t *interfaceId, long direction, + uint8_t *buffer, + size_t buffer_size); + +size_t createE2SM_gNB_X2_controlMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size); +#endif //E2_E2SM_H + +#ifdef __cplusplus +} +#endif diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/e2smTest/e2smtest.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/e2smTest/e2smtest.cpp new file mode 100644 index 0000000..864348c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/e2smTest/e2smtest.cpp @@ -0,0 +1,163 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 6/19/19. +// + +#include "../e2sm.h" +#include + +void init_log() +{ + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "e2smTests"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +int main(const int argc, char **argv) { + init_log(); + //mdclog_level_set(MDCLOG_WARN); + //mdclog_level_set(MDCLOG_INFO); + mdclog_level_set(MDCLOG_DEBUG); + + unsigned char plmnidData[3] = {0x33, 0xF4, 0x55}; + + //mdclog_write(MDCLOG_INFO, "Test PLMN_Identity_t"); + PLMN_Identity_t *plmnid = createPLMN_ID(plmnidData); + + unsigned char enbData[3] = {0x66, 0x77, 0x88}; + ENB_ID_t *enb = createENB_ID(ENB_ID_PR_macro_eNB_ID, enbData); + enbData[2] = 0x89; + ENB_ID_t *enb1 = createENB_ID(ENB_ID_PR_home_eNB_ID, enbData); + enbData[2] = 0x89; + ENB_ID_t *enb2 = createENB_ID(ENB_ID_PR_long_Macro_eNB_ID, enbData); + enbData[2] = 0x89; + ENB_ID_t *enb3 = createENB_ID(ENB_ID_PR_short_Macro_eNB_ID, enbData); + + unsigned char gnbData[3] = {0x99, 0xaa, 0xbb}; + GNB_ID_t *gnb = createGnb_id(gnbData, 26); + + GlobalENB_ID_t *globalEnb = createGlobalENB_ID(plmnid, enb2); + GlobalGNB_ID_t *globaGnb = createGlobalGNB_ID(plmnid, gnb); + + Interface_ID_t *gnbInterfaceId = createInterfaceIDForGnb(globaGnb); + + Interface_ID_t *enbInterfaceId = createInterfaceIDForEnb(globalEnb); + + InterfaceMessageType_t *initiatingInterface = createInterfaceMessageInitiating(28); + + InterfaceMessageType_t *succsesfulInterface = createInterfaceMessageSuccsesful(29); + + InterfaceMessageType_t *unSuccsesfulInterface = createInterfaceMessageUnsuccessful(29); + + InterfaceProtocolIE_Value_t *intVal = createInterfaceProtocolValueInt(88); + + InterfaceProtocolIE_Value_t *enumVal = createInterfaceProtocolValueEnum(2); + + InterfaceProtocolIE_Value_t *boolVal = createInterfaceProtocolValueBool(0); + + InterfaceProtocolIE_Value_t *bitStringVal = createInterfaceProtocolValueBitString((unsigned char *)"abcd0987", 60); + + uint8_t octe[6] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; + InterfaceProtocolIE_Value_t *octetsVal = createInterfaceProtocolValueOCTETS(octe); + + InterfaceProtocolIE_Item_t *item1 = createInterfaceProtocolIE_Item(10, 0, intVal); + InterfaceProtocolIE_Item_t *item2 = createInterfaceProtocolIE_Item(10, 1, enumVal); + InterfaceProtocolIE_Item_t *item3 = createInterfaceProtocolIE_Item(10, 0, boolVal); + InterfaceProtocolIE_Item_t *item4 = createInterfaceProtocolIE_Item(10, 3, bitStringVal); + InterfaceProtocolIE_Item_t *item5 = createInterfaceProtocolIE_Item(10, 4, octetsVal); + + ActionParameter_Item_t *actItem1 = creatActionParameter_Item(17, createActionParameterValue_Int(9)); + + ActionParameter_Value_t *actP_enum = createActionParameterValue_Enum(5); + ActionParameter_Item_t *actItem2 = creatActionParameter_Item(18, actP_enum); + + ActionParameter_Value_t *actP_bool = createActionParameterValue_Bool(0); + ActionParameter_Item_t *actItem3 = creatActionParameter_Item(18, actP_bool); + + //ActionParameter_Value_t *actP_bitString = createActionParameterValue_Bit_String((unsigned char *)"ABCDEF", 42); + ActionParameter_Item_t *actItem4 = creatActionParameter_Item(17, createActionParameterValue_Bit_String((unsigned char *)"ABCDEF", 42)); + + uint8_t octe1[7] = {0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27}; + ActionParameter_Value_t *actP_octates = createActionParameterValue_OCTETS(octe1); + ActionParameter_Item_t *actItem5 = creatActionParameter_Item(18, actP_octates); + + + char print[10] = {'a', 'b', 'C', 'D', 'e', 'f', 'g', 'H', 'I', '\0'}; + ActionParameter_Value_t *actP_printable = createActionParameterValue_PRINTS(print); + ActionParameter_Item_t *actItem6 = creatActionParameter_Item(18, actP_printable); + + InterfaceProtocolIE_Item_t *interfaceProtocolItemList[] = {item1, item2, item3, item4, item5}; + uint8_t buffer[4096]; + size_t len; + if ((len = createEventTrigger(gnbInterfaceId, + 0, + initiatingInterface, + *interfaceProtocolItemList, + 5, + buffer, + 4096)) <= 0) { + mdclog_write(MDCLOG_ERR, "returned error from createEventTrigger"); + } + + ActionParameter_Item_t *actionParamList[] = {actItem1, actItem2, actItem3, actItem4, actItem5, actItem6}; + len = createActionDefinition(10034, *actionParamList, 6, buffer, 4096); + + len = createE2SM_gNB_X2_indicationHeader(1, enbInterfaceId, nullptr, 0, buffer, 4096); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Check bad direction in header indication"); + len = createE2SM_gNB_X2_indicationHeader(2, enbInterfaceId, nullptr, 0, buffer, 4096); + if (len == (size_t)-1) { + mdclog_write(MDCLOG_DEBUG, "successes call function returned NULL please ignore ERROR log"); + } + } + + uint8_t msg[] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x0}; + + int x = 1; + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_indicationMessage(msg, strlen((char *)msg), buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_callProcessID(8, buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_controlHeader(enbInterfaceId, 1, buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_controlHeader(gnbInterfaceId, 1, buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_controlMessage(msg, strlen((char *)msg), buffer, 4096); + } + + + return 0; +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/e2test.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/e2test.cpp new file mode 100644 index 0000000..fad77b8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/e2test.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 12/19/19. +// + +#include "e2test.h" + + + +int main(const int argc, char **argv) { + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/e2test.h b/setup/e2/RIC-E2-TERMINATION/TEST/e2test.h new file mode 100644 index 0000000..09918c2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/e2test.h @@ -0,0 +1,51 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 12/19/19. +// + +#ifndef E2_E2TEST_H +#define E2_E2TEST_H + +#include + +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +// +// +//using namespace Pistache; + +class e2test { + +// Rest::Router router; + +}; + + +#endif //E2_E2TEST_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/logInit.h b/setup/e2/RIC-E2-TERMINATION/TEST/logInit.h new file mode 100644 index 0000000..3bf34e4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/logInit.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 6/11/19. +// + +#ifndef __LOG_INIT__ +#define __LOG_INIT__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +void init_log(char *name) { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, name); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +#ifdef __cplusplus +} +#endif +#endif diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ASN_LOG/LogTest.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ASN_LOG/LogTest.cpp new file mode 100644 index 0000000..89bc48a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ASN_LOG/LogTest.cpp @@ -0,0 +1,44 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/26/19. +// + +#include "LogTest.h" + +string LogTest::getLine() { + std::string line; + + if (std::getline(file, line)) { + return line; + } + return ""; +} + +void LogTest::getJsonDoc(string json) { + if (json.length() != 0) { + document.Parse(json.c_str()); + } +} + +string LogTest::getBase64(Document &document) { + if (document.HasMember("asnBase64")) { + return document["asnBase64"].GetString(); + } + return ""; +} diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ASN_LOG/LogTest.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ASN_LOG/LogTest.h new file mode 100644 index 0000000..d264fef --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ASN_LOG/LogTest.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/26/19. +// + +#ifndef E2_LOGTEST_H +#define E2_LOGTEST_H +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rapidjson/document.h" +#include "rapidjson/writer.h" +#include "rapidjson/stringbuffer.h" + +using namespace std; +using namespace rapidjson; + +class LogTest { +public: + LogTest() = default; + + int openFile(string const& configFile) { + file.open(configFile.c_str()); + if (!file) { + return -1; + } + return 0; + } + + string getLine(); + void getJsonDoc(string json); + + string getBase64(Document &document); + +private: + std::ifstream file; + Document document; +}; + + +#endif //E2_LOGTEST_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ConfigurationFileTest/testConfigFile.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ConfigurationFileTest/testConfigFile.cpp new file mode 100644 index 0000000..33deb2b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/ConfigurationFileTest/testConfigFile.cpp @@ -0,0 +1,112 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/19/19. +// + +#include "ReadConfigFile.h" +#include +#include + +Describe(Cgreen); +BeforeEach(Cgreen) {} +AfterEach(Cgreen) {} + +using namespace cgreen; + +void init_log() { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "TestConfiguration"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +Ensure(Cgreen, fileNotExist) { + ReadConfigFile conf {}; + assert_that( conf.openConfigFile("kuku") == -1); +} + +Ensure(Cgreen, fileExists) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); +} + +Ensure(Cgreen, goodparams) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); + assert_that(conf.getIntValue("nano") == 38000); + assert_that(conf.getStringValue("loglevel") == "info"); + assert_that(conf.getStringValue("volume") == "log"); + +} + +Ensure(Cgreen, badParams) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); + assert_that(conf.getIntValue("nano") != 38002); + assert_that(conf.getStringValue("loglevel") != ""); + assert_that(conf.getStringValue("volume") != "bob"); + assert_that(conf.getStringValue("volum") != "bob"); +} + +Ensure(Cgreen, wrongType) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.conf") == 0); + assert_that(conf.getStringValue("nano") != "debug"); + assert_that(conf.getIntValue("loglevel") != 3); + assert_that(conf.getDoubleValue("loglevel") != 3.0); +} + +Ensure(Cgreen, badValues) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.bad") == 0); +} + +Ensure(Cgreen, sectionTest) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.sec") == 0); + assert_that(conf.getIntValue("config.nano") == 38000); +} + +Ensure(Cgreen, sectionBadTest) { + ReadConfigFile conf {}; + assert_that(conf.openConfigFile("config/config.secbad") == -1); + //assert_that(conf.getIntValue("config.nano") == 38000); +} + +int main(const int argc, char **argv) { + mdclog_severity_t loglevel = MDCLOG_INFO; + init_log(); + mdclog_level_set(loglevel); + + //TestSuite *suite = create_test_suite(); + TestSuite *suite = create_named_test_suite_(__FUNCTION__, __FILE__, __LINE__); + + add_test_with_context(suite, Cgreen, fileNotExist); + add_test_with_context(suite, Cgreen, fileExists); + add_test_with_context(suite, Cgreen, goodparams); + add_test_with_context(suite, Cgreen, badParams); + add_test_with_context(suite, Cgreen, wrongType); + add_test_with_context(suite, Cgreen, badValues); + add_test_with_context(suite, Cgreen, sectionTest); + add_test_with_context(suite, Cgreen, sectionBadTest); + + return cgreen::run_test_suite(suite, create_text_reporter()); + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/T2/SubscriptionTest.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/T2/SubscriptionTest.cpp new file mode 100644 index 0000000..f0d4c50 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/T2/SubscriptionTest.cpp @@ -0,0 +1,352 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 6/17/19. +// + +#include + +#include "asn/type_defs.h" +#include "asn/per/codec.hpp" +#include "asn/printer.hpp" + +#include "X2AP-CommonDataTypes.hpp" +#include "X2AP-Containers.hpp" +#include "X2AP-Constants.hpp" +#include "X2AP-IEs.hpp" +#include "X2AP-PDU-Contents.hpp" + +#include "E2AP-Constants.hpp" +#include "E2AP-IEs.hpp" +#include "E2AP-PDU-Contents.hpp" +#include "E2AP-PDU-Descriptions.hpp" + + +#include +#include +#include +#include + +#include +#include +#include + +#include "logInit.h" + +// test X2SetUP request and response +using namespace std; + +#define MAXEVENTS 64 + +int main(const int argc, char **argv) { + mdclog_severity_t loglevel = MDCLOG_INFO; + + auto buff = new string("Subscription TEST"); + init_log((char *)buff->c_str()); + + mdclog_level_set(loglevel); + + if (argc < 5){ + mdclog_mdc_add("app", argv[0]); + mdclog_write(MDCLOG_ERR, "Usage ran rmr [logLevel = MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "We are after RMR INIT wait for RMR_Ready"); + } + + int rmrReady = 0; + int count = 0; + while (!rmrReady) { + if ((rmrReady = rmr_ready(rmrCtx)) == 0) { + sleep(1); + } + count++; + if (count % 60 == 0) { + mdclog_write(MDCLOG_INFO, "waiting to RMR ready state for %d seconds", count); + } + if (count > 180) { + mdclog_write(MDCLOG_ERR, "RMR not ready tried for 3 minutes "); + return(-2); + } + } + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "RMR running"); + } + + E2AP_PDU cuAckPdu {}; + auto &succ = cuAckPdu.select_successfulOutcome(); + succ.ref_procedureCode().select_id_endcConfigurationUpdate(); + succ.ref_criticality().select_id_endcConfigurationUpdate(); + auto &endcConfAck = succ.ref_value().select_id_endcConfigurationUpdate(); + auto &confAckIes = endcConfAck.ref_protocolIEs(); + + ENDCConfigurationUpdateAcknowledge::protocolIEs_t::value_type endcENB {}; + endcENB.ref_id().select_id_RespondingNodeType_EndcConfigUpdate(); + endcENB.ref_criticality().select_id_RespondingNodeType_EndcConfigUpdate(); + + auto &respondingNode = endcENB.ref_value().select_id_RespondingNodeType_EndcConfigUpdate(); + + auto &enb = respondingNode.select_respond_eNB(); + + + confAckIes.push_back(endcENB); + + + + E2AP_PDU pdu {}; + auto &initiatingMsg = pdu.select_initiatingMessage(); + initiatingMsg.ref_procedureCode().select_id_ricSubscription(); + initiatingMsg.ref_criticality().select_id_ricSubscription(); + auto &subscription = initiatingMsg.ref_value().select_id_ricSubscription(); + + auto &ies = subscription.ref_protocolIEs(); + + + + RICsubscriptionRequest::protocolIEs_t::value_type ranFuncId {}; + ranFuncId.ref_id().select_id_RANfunctionID(); + ranFuncId.ref_criticality().select_id_RANfunctionID(); + ranFuncId.ref_value().select_id_RANfunctionID().set(28); + ies.push_back(ranFuncId); + + RICsubscriptionRequest::protocolIEs_t::value_type ricRequestId {}; + ricRequestId.ref_id().select_id_RICrequestID(); + ricRequestId.ref_criticality().select_id_RICrequestID(); + ricRequestId.ref_value().select_id_RICrequestID().ref_ricRequestorID().set(44); + ricRequestId.ref_value().select_id_RICrequestID().ref_ricRequestSequenceNumber().set(55); + ies.push_back(ricRequestId); + + RICsubscriptionRequest::protocolIEs_t::value_type ricSubId {}; + ricSubId.ref_id().select_id_RICsubscription(); + ricSubId.ref_criticality().select_id_RICsubscription(); + + //E2SM_gNB_X2_eventTriggerDefinition_t evt; + uint8_t v1[] = {0x02, 0xf8, 0x29, 0x88}; + + RICeventTriggerDefinition eventTriggerDef {}; // octet string in E2AP but struct in E2SM + eventTriggerDef.set(4, v1); + +// eventTriggerDef. +// +// +// RICaction_Admitted_List::value_type actbl {}; +// actbl.ref_id().select_id_RICaction_Admitted_Item(); +// actbl.ref_criticality().select_id_RICaction_Admitted_Item(); + + +// RICaction_ToBeSetup_Item actb1{}; +// +// actbl.ref_value().select_id_RICaction_Admitted_Item().ref_ricActionID().set(actb1); +// ricSubId.ref_value().select_id_RICsubscription().ref_ricAction_ToBeSetup_List().set(actbl); + + + ies.push_back(ricSubId); + +/* + + ies.push_back(ranFuncId); + + X2SetupRequest::protocolIEs_t::value_type sc {}; + ies.push_back(sc); + + sc.ref_id().select_id_ServedCells(); + sc.ref_criticality().select_id_ServedCells(); + + ServedCells::value_type sce; + sc.ref_value().select_id_ServedCells().push_back(sce); + + sce.ref_servedCellInfo().ref_pCI().set(0x1F7); + uint8_t v3[] = {0x1, 0x2}; + sce.ref_servedCellInfo().ref_tAC().set(2,v3); + sce.ref_servedCellInfo().ref_cellId().ref_pLMN_Identity().set(3, v1); + uint8_t v4[] = {0x00, 0x07, 0xab, ((unsigned)0x50) >> (unsigned)4}; + sce.ref_servedCellInfo().ref_cellId().ref_eUTRANcellIdentifier().set_buffer(28, v4); + + BroadcastPLMNs_Item::value_type bpe; + sce.ref_servedCellInfo().ref_broadcastPLMNs().push_back(bpe); + bpe.set(3, v1); + + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_uL_EARFCN().set(0x1); + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_dL_EARFCN().set(0x1); + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_uL_Transmission_Bandwidth().set(Transmission_Bandwidth::bw50); + sce.ref_servedCellInfo().ref_eUTRA_Mode_Info().select_fDD().ref_dL_Transmission_Bandwidth().set(Transmission_Bandwidth::bw50); + +*/ + + unsigned char s_buffer[64 * 1024]; + asn::per::EncoderCtx ctx{s_buffer, sizeof(s_buffer)}; + std::cout << asn::get_printed(pdu) << std::endl; + if (!asn::per::pack(pdu, ctx)) { + std::cout << ctx.refErrorCtx().toString() << std::endl; + return -3; + } + size_t packed_buf_size; + packed_buf_size = static_cast(ctx.refBuffer().getBytesUsed()); + + // build message + char data[4096] {}; + //auto delimiter = (const char) '|'; + sprintf(data, "%s/0", ctx.refBuffer().getBytes(packed_buf_size)); + + rmr_mbuf_t *msg = rmr_alloc_msg(rmrCtx, int(strlen(data))); + rmr_bytes2meid(msg, (unsigned char const*)ranName, strlen(ranName)); + rmr_bytes2payload(msg, (unsigned char const*)data, strlen(data)); + rmr_bytes2xact(msg, (unsigned char const*)ranName, strlen(ranName)); + msg->mtype = RIC_SUB_REQ; + msg->state = 0; + + msg = rmr_send_msg(rmrCtx, msg); + if (msg->state != 0) { + mdclog_write(MDCLOG_ERR, "Message state %d while sending RIC_X2_SETUP to %s", msg->state, ranName); + rmr_free_msg(msg); + rmr_close(rmrCtx); + return -4; + } + rmr_free_msg(msg); + + + unsigned char allocBuffer[64*1024] {0}; + auto *events = (struct epoll_event *)calloc(MAXEVENTS, sizeof(event)); + + while (true) { + + auto numOfEvents = epoll_wait(epoll_fd, events, MAXEVENTS, -1); + if (numOfEvents < 0) { + mdclog_write(MDCLOG_ERR, "Epoll wait failed, errno = %s", strerror(errno)); + rmr_close(rmrCtx); + return -4; + } + for (auto i = 0; i < numOfEvents; i++) { + if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP) || (!(events[i].events & EPOLLIN))) { + mdclog_write(MDCLOG_ERR, "epoll error"); + } else if (rmrListenFd == events[i].data.fd) { + msg = rmr_alloc_msg(rmrCtx, 4096); + if (msg == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR Allocation message, %s", strerror(errno)); + rmr_close(rmrCtx); + return -5; + } + + msg = rmr_rcv_msg(rmrCtx, msg); + if (msg == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR Receving message, %s", strerror(errno)); + rmr_close(rmrCtx); + return -6; + } + memset(allocBuffer, 0, 64*1024); + switch (msg->mtype) { + default: { + mdclog_write(MDCLOG_INFO, "RMR receiveing message type %d", msg->mtype); + asn::per::DecoderCtx dCtx{msg->payload, (size_t) msg->len, allocBuffer, sizeof(allocBuffer)}; + E2AP_PDU opdu; + if (!asn::per::unpack(opdu, dCtx)) { + mdclog_write(MDCLOG_ERR, "Failed to unpack ASN message, %s", dCtx.refErrorCtx().toString()); + rmr_close(rmrCtx); + return -7; + } + + switch (opdu.get_index()) { + case 1: { //initiating message + mdclog_write(MDCLOG_INFO, "ASN initiating message type %ld", + opdu.get_initiatingMessage()->ref_procedureCode().ref_value().get()); + break; + } + case 2: { //successful message + mdclog_write(MDCLOG_INFO, "ASN initiating message type %ld", + opdu.get_successfulOutcome()->ref_procedureCode().ref_value().get()); + break; + } + case 3: { //unsuccessesful message + mdclog_write(MDCLOG_INFO, "ASN initiating message type %ld", + opdu.get_unsuccessfulOutcome()->ref_procedureCode().ref_value().get()); + break; + } + + } + mdclog_write(MDCLOG_INFO, "RMR receiveing message from E2 terminator, %d", + msg->mtype); + break; + } + } + } + } + } +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/base64/testBase64.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/base64/testBase64.cpp new file mode 100644 index 0000000..e30dca9 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/base64/testBase64.cpp @@ -0,0 +1,102 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 11/27/19. +// + +#include "base64.h" +#include +#include +#include +#include +#include +#include + +using namespace std; + +Describe(base64); +BeforeEach(base64) {} +AfterEach(base64) {} + +using namespace cgreen; + +void init_log() { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "TestConfiguration"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +const char *data = "ABC123Test Lets Try this' input and see What \"happens\""; + +Ensure(base64, encDec) { + string str = "ABC123Test Lets Try this' input and see What \"happens\""; + auto *buf = (unsigned char *)malloc(str.length() * 2); + auto length = (long)(str.length() * 2); + base64::encode((unsigned char *)str.c_str(), str.length(), buf, length); + auto *backBackBuff = (unsigned char *)malloc(length); + auto length2 = length; + assert_that(base64::decode(buf, length, backBackBuff, length2) == 0); + std::string str1( backBackBuff, backBackBuff + sizeof backBackBuff / sizeof backBackBuff[0]); + + assert_that(str.length() == (ulong)length2) + //auto val = str.compare((const char *)backBackBuff); + assert_that(str.compare((const char *)backBackBuff) == 0) + free(backBackBuff); + free(buf); +} + +Ensure(base64, errorsHandling) { + string str = "ABC123Test Lets Try this' input and see What \"happens\""; + auto *buf = (unsigned char *)malloc(str.length() * 2); + auto length = (long)(str.length()); + assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), buf, length) == -1); + length = (long)(str.length() * 2); + assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), buf, length) == 0); + auto *backBackBuff = (unsigned char *)malloc(length); + auto length2 = length >> 2; + assert_that(base64::decode(buf, length, backBackBuff, length2) == -1); + //std::string str1( backBackBuff, backBackBuff + sizeof backBackBuff / sizeof backBackBuff[0]); + auto length1 = 0l; + assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), nullptr , length) == -1); +// assert_that(base64::encode((unsigned char *)str.c_str(), str.length(), nullptr , length) == -1); + assert_that(base64::encode(nullptr, str.length(), backBackBuff , length) == -1); + assert_that(base64::encode((unsigned char *)str.c_str(), length1, backBackBuff , length) == -1); + assert_that(base64::encode(nullptr, str.length(), backBackBuff , length1) == -1); + length1 = -1; + assert_that(base64::encode((unsigned char *)str.c_str(), length1, backBackBuff , length) == -1); + assert_that(base64::encode(nullptr, str.length(), backBackBuff , length1) == -1); + +} + + +int main(const int argc, char **argv) { + mdclog_severity_t loglevel = MDCLOG_INFO; + init_log(); + mdclog_level_set(loglevel); + + //TestSuite *suite = create_test_suite(); + TestSuite *suite = create_named_test_suite_(__FUNCTION__, __FILE__, __LINE__); + + add_test_with_context(suite, base64, encDec); + add_test_with_context(suite, base64, errorsHandling); + + return cgreen::run_test_suite(suite, create_text_reporter()); + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2sm.c b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2sm.c new file mode 100644 index 0000000..12d6097 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2sm.c @@ -0,0 +1,833 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 6/19/19. +// + +#include "e2sm.h" + +#define printEntry(type, function) \ + if (mdclog_level_get() >= MDCLOG_DEBUG) { \ + mdclog_write(MDCLOG_DEBUG, "start Test %s , %s", type, function); \ + } + + +static void checkAndPrint(asn_TYPE_descriptor_t *typeDescriptor, void *data, char *dataType, const char *function) { + char errbuf[128]; /* Buffer for error message */ + size_t errlen = sizeof(errbuf); /* Size of the buffer */ + if (asn_check_constraints(typeDescriptor, data, errbuf, &errlen) != 0) { + mdclog_write(MDCLOG_ERR, "%s Constraint validation failed: %s", dataType, errbuf); + } else if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "%s successes function %s", dataType, function); + } +} + +static size_t encodebuff(int codingType, + asn_TYPE_descriptor_t *typeDescriptor, + void *objectData, + uint8_t *buffer, + size_t buffer_size) { + asn_enc_rval_t er; + struct timespec start = {0,0}; + struct timespec end = {0,0}; + clock_gettime(CLOCK_MONOTONIC, &start); + er = asn_encode_to_buffer(0, codingType, typeDescriptor, objectData, buffer, buffer_size); + clock_gettime(CLOCK_MONOTONIC, &end); + if (er.encoded == -1) { + mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", asn_DEF_E2SM_gNB_X2_eventTriggerDefinition.name, strerror(errno)); + } else if (er.encoded > (ssize_t)buffer_size) { + mdclog_write(MDCLOG_ERR, "Buffer of size %d is to small for %s", (int) buffer_size, + typeDescriptor->name); + } else if (mdclog_level_get() >= MDCLOG_DEBUG) { + if (codingType == ATS_BASIC_XER) { + mdclog_write(MDCLOG_DEBUG, "Buffer of size %d, data = %s", (int) er.encoded, buffer); + } + else { + if (mdclog_level_get() >= MDCLOG_INFO) { + char *printBuffer; + size_t size; + FILE *stream = open_memstream(&printBuffer, &size); + asn_fprint(stream, typeDescriptor, objectData); + mdclog_write(MDCLOG_DEBUG, "Encoding E2SM PDU past : %s", printBuffer); + } + + + mdclog_write(MDCLOG_DEBUG, "Buffer of size %d", (int) er.encoded); + } + } + mdclog_write(MDCLOG_INFO, "Encoding type %d, time is %ld seconds, %ld nanoseconds", codingType, end.tv_sec - start.tv_sec, end.tv_nsec - start.tv_nsec); + //mdclog_write(MDCLOG_INFO, "Encoding time is %3.9f seconds", ((double)end.tv_sec + 1.0e-9 * end.tv_nsec) - ((double)start.tv_sec + 1.0e-9 * start.tv_nsec)); + return er.encoded; +} + +PLMN_Identity_t *createPLMN_ID(const unsigned char *data) { + printEntry("PLMN_Identity_t", __func__) + PLMN_Identity_t *plmnId = calloc(1, sizeof(PLMN_Identity_t)); + ASN_STRUCT_RESET(asn_DEF_PLMN_Identity, plmnId); + plmnId->size = 3; + plmnId->buf = calloc(1, 3); + memcpy(plmnId->buf, data, 3); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_PLMN_Identity, plmnId, "PLMN_Identity_t", __func__); + } + + return plmnId; +} + +ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data) { + printEntry("ENB_ID_t", __func__) + ENB_ID_t *enb = calloc(1, sizeof(ENB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_ENB_ID, enb); + + enb->present = enbType; + + switch (enbType) { + case ENB_ID_PR_macro_eNB_ID: { // 20 bit 3 bytes + enb->choice.macro_eNB_ID.size = 3; + enb->choice.macro_eNB_ID.bits_unused = 4; + + enb->present = ENB_ID_PR_macro_eNB_ID; + + enb->choice.macro_eNB_ID.buf = calloc(1, enb->choice.macro_eNB_ID.size); + data[enb->choice.macro_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.macro_eNB_ID.size - 1] >> + (unsigned)enb->choice.macro_eNB_ID.bits_unused) << (unsigned)enb->choice.macro_eNB_ID.bits_unused); + memcpy(enb->choice.macro_eNB_ID.buf, data, enb->choice.macro_eNB_ID.size); + + break; + } + case ENB_ID_PR_home_eNB_ID: { // 28 bit 4 bytes + enb->choice.home_eNB_ID.size = 4; + enb->choice.home_eNB_ID.bits_unused = 4; + enb->present = ENB_ID_PR_home_eNB_ID; + + enb->choice.home_eNB_ID.buf = calloc(1, enb->choice.home_eNB_ID.size); + data[enb->choice.home_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.home_eNB_ID.size - 1] >> + (unsigned)enb->choice.home_eNB_ID.bits_unused) << (unsigned)enb->choice.home_eNB_ID.bits_unused); + memcpy(enb->choice.home_eNB_ID.buf, data, enb->choice.home_eNB_ID.size); + break; + } + case ENB_ID_PR_short_Macro_eNB_ID: { // 18 bit - 3 bytes + enb->choice.short_Macro_eNB_ID.size = 3; + enb->choice.short_Macro_eNB_ID.bits_unused = 6; + enb->present = ENB_ID_PR_short_Macro_eNB_ID; + + enb->choice.short_Macro_eNB_ID.buf = calloc(1, enb->choice.short_Macro_eNB_ID.size); + data[enb->choice.short_Macro_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.short_Macro_eNB_ID.size - 1] >> + (unsigned)enb->choice.short_Macro_eNB_ID.bits_unused) << (unsigned)enb->choice.short_Macro_eNB_ID.bits_unused); + memcpy(enb->choice.short_Macro_eNB_ID.buf, data, enb->choice.short_Macro_eNB_ID.size); + break; + } + case ENB_ID_PR_long_Macro_eNB_ID: { // 21 + enb->choice.long_Macro_eNB_ID.size = 3; + enb->choice.long_Macro_eNB_ID.bits_unused = 3; + enb->present = ENB_ID_PR_long_Macro_eNB_ID; + + enb->choice.long_Macro_eNB_ID.buf = calloc(1, enb->choice.long_Macro_eNB_ID.size); + data[enb->choice.long_Macro_eNB_ID.size - 1] = ((unsigned)(data[enb->choice.long_Macro_eNB_ID.size - 1] >> + (unsigned)enb->choice.long_Macro_eNB_ID.bits_unused) << (unsigned)enb->choice.long_Macro_eNB_ID.bits_unused); + memcpy(enb->choice.long_Macro_eNB_ID.buf, data, enb->choice.long_Macro_eNB_ID.size); + break; + } + default: + free(enb); + return NULL; + + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ENB_ID, enb, "ENB_ID_t", __func__); + } + return enb; +} + +GNB_ID_t *createGnb_id(const unsigned char *data, int numOfBits) { + printEntry("GNB_ID_t", __func__) + if (numOfBits < 22 || numOfBits > 32) { + mdclog_write(MDCLOG_ERR, "GNB_ID_t number of bits = %d, needs to be 22 .. 32", numOfBits); + return NULL; + } + GNB_ID_t *gnb = calloc(1, sizeof(GNB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GNB_ID, gnb); + + gnb->present = GNB_ID_PR_gNB_ID; + gnb->choice.gNB_ID.size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + gnb->choice.gNB_ID.bits_unused = (int)gnb->choice.gNB_ID.size * 8 - numOfBits; + gnb->choice.gNB_ID.buf = calloc(1, gnb->choice.gNB_ID.size); + memcpy(gnb->choice.gNB_ID.buf, data, gnb->choice.gNB_ID.size); + gnb->choice.gNB_ID.buf[gnb->choice.gNB_ID.size - 1] = + ((unsigned)(gnb->choice.gNB_ID.buf[gnb->choice.gNB_ID.size - 1] >> (unsigned)gnb->choice.gNB_ID.bits_unused) + << (unsigned)gnb->choice.gNB_ID.bits_unused); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_GNB_ID, gnb, "GNB_ID_t", __func__); + } + + return gnb; + +} + +GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId) { + printEntry("GlobalENB_ID_t", __func__) + GlobalENB_ID_t *genbId = calloc(1, sizeof(GlobalENB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GlobalENB_ID, genbId); + memcpy(&genbId->pLMN_Identity, plmnIdentity, sizeof(PLMN_Identity_t)); + memcpy(&genbId->eNB_ID, enbId, sizeof(ENB_ID_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_GlobalENB_ID, genbId, "GlobalENB_ID_t", __func__); + } + return genbId; +} + +GlobalGNB_ID_t *createGlobalGNB_ID(PLMN_Identity_t *plmnIdentity, GNB_ID_t *gnb) { + printEntry("GlobalGNB_ID_t", __func__) + GlobalGNB_ID_t *ggnbId = calloc(1, sizeof(GlobalGNB_ID_t)); + ASN_STRUCT_RESET(asn_DEF_GlobalGNB_ID, ggnbId); + + memcpy(&ggnbId->pLMN_Identity, plmnIdentity, sizeof(PLMN_Identity_t)); + memcpy(&ggnbId->gNB_ID, gnb, sizeof(GNB_ID_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_GlobalGNB_ID, ggnbId, "GlobalGNB_ID_t", __func__); + } + + return ggnbId; +} + + +Interface_ID_t *createInterfaceIDForGnb(GlobalGNB_ID_t *gnb) { + printEntry("Interface_ID_t", __func__) + Interface_ID_t *interfaceId = calloc(1, sizeof(Interface_ID_t)); + ASN_STRUCT_RESET(asn_DEF_Interface_ID, interfaceId); + + interfaceId->present = Interface_ID_PR_global_gNB_ID; + //memcpy(&interfaceId->choice.global_gNB_ID, gnb, sizeof(GlobalGNB_ID_t)); + interfaceId->choice.global_gNB_ID = gnb; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_Interface_ID, interfaceId, "Interface_ID_t", __func__); + } + + return interfaceId; +} + +Interface_ID_t *createInterfaceIDForEnb(GlobalENB_ID_t *enb) { + printEntry("Interface_ID_t", __func__) + Interface_ID_t *interfaceId = calloc(1, sizeof(Interface_ID_t)); + ASN_STRUCT_RESET(asn_DEF_Interface_ID, interfaceId); + + interfaceId->present = Interface_ID_PR_global_eNB_ID; + //memcpy(&interfaceId->choice.global_eNB_ID, enb, sizeof(GlobalENB_ID_t)); + interfaceId->choice.global_eNB_ID = enb; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_Interface_ID, interfaceId, "Interface_ID_t", __func__); + } + + return interfaceId; +} + + + +InterfaceMessageType_t *createInterfaceMessageInitiating(long procedureCode) { + printEntry("InterfaceMessageType_t", __func__) + InterfaceMessageType_t *intMsgT = calloc(1, sizeof(InterfaceMessageType_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceMessageType, intMsgT); + + intMsgT->procedureCode = procedureCode; + intMsgT->typeOfMessage = TypeOfMessage_initiating_message; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceMessageType, intMsgT, "InterfaceMessageType_t", __func__); + } + + return intMsgT; +} + +InterfaceMessageType_t *createInterfaceMessageSuccsesful(long procedureCode) { + printEntry("InterfaceMessageType_t", __func__) + InterfaceMessageType_t *intMsgT = calloc(1, sizeof(InterfaceMessageType_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceMessageType, intMsgT); + + intMsgT->procedureCode = procedureCode; + intMsgT->typeOfMessage = TypeOfMessage_successful_outcome; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceMessageType, intMsgT, "InterfaceMessageType_t", __func__); + } + + return intMsgT; +} + +InterfaceMessageType_t *createInterfaceMessageUnsuccessful(long procedureCode) { + printEntry("InterfaceMessageType_t", __func__) + InterfaceMessageType_t *intMsgT = calloc(1, sizeof(InterfaceMessageType_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceMessageType, intMsgT); + + intMsgT->procedureCode = procedureCode; + intMsgT->typeOfMessage = TypeOfMessage_unsuccessful_outcome; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceMessageType, intMsgT, "InterfaceMessageType_t", __func__); + } + + return intMsgT; +} + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueInt(long number) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueInt; + value->choice.valueInt = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueEnum(long number) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueEnum; + value->choice.valueEnum = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBool(int val) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueBool; + value->choice.valueBool = val == 0 ? 0 : 1; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBitString(unsigned char *buf, int numOfBits) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + size_t size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + if (strlen((const char *)buf) < size) { + mdclog_write(MDCLOG_ERR, "size of buffer is small : %d needs to be %d in %s", (int)strlen((const char *)buf), (int)size, __func__); + } + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueBitS; + value->choice.valueBitS.size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + value->choice.valueBitS.buf = calloc(1, value->choice.valueBitS.size); + int bits_unused = (int)value->choice.valueBitS.size * 8 - numOfBits; + value->choice.valueBitS.bits_unused = bits_unused; + + memcpy(value->choice.valueBitS.buf, buf, value->choice.valueBitS.size); + value->choice.valueBitS.buf[size -1] = ((unsigned)(buf[size - 1]) >> (unsigned)bits_unused << (unsigned)bits_unused); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + + +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueOCTETS(uint8_t *buf) { + printEntry("InterfaceProtocolIE_Value_t", __func__) + size_t size = strlen((const char *)buf); + InterfaceProtocolIE_Value_t *value = calloc(1, sizeof(InterfaceProtocolIE_Value_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Value, value); + + value->present = InterfaceProtocolIE_Value_PR_valueOctS; + value->choice.valueOctS.size = size; + value->choice.valueOctS.buf = calloc(1, value->choice.valueOctS.size); + memcpy(value->choice.valueOctS.buf, buf, value->choice.valueOctS.size); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Value, value, "InterfaceProtocolIE_Value_t", __func__); + } + + return value; +} + + +InterfaceProtocolIE_Item_t *createInterfaceProtocolIE_Item(long id, long test, InterfaceProtocolIE_Value_t *value) { + printEntry("InterfaceProtocolIE_Item_t", __func__) + if (test < InterfaceProtocolIE_Test_equal || test > InterfaceProtocolIE_Test_present) { + mdclog_write(MDCLOG_ERR, "InterfaceProtocolIE_Item_t test value is %ld, out of scope %d .. %d ", + test, InterfaceProtocolIE_Test_equal, InterfaceProtocolIE_Test_present); + return NULL; + } + InterfaceProtocolIE_Item_t *intProtIt = calloc(1, sizeof(InterfaceProtocolIE_Item_t)); + ASN_STRUCT_RESET(asn_DEF_InterfaceProtocolIE_Item, intProtIt); + + + intProtIt->interfaceProtocolIE_ID = id; + + intProtIt->interfaceProtocolIE_Test = test; + + memcpy(&intProtIt->interfaceProtocolIE_Value, value, sizeof(InterfaceProtocolIE_Value_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_InterfaceProtocolIE_Item, intProtIt, "InterfaceProtocolIE_Item_t", __func__); + } + + return intProtIt; + +} + + + +ActionParameter_Value_t *createActionParameterValue_Int(long number) { + printEntry("ActionParameter_Value_t", __func__) + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueInt; + value->choice.valueInt = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +ActionParameter_Value_t *createActionParameterValue_Enum(long number) { + printEntry("ActionParameter_Value_t", __func__) + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueEnum; + value->choice.valueEnum = number; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +ActionParameter_Value_t *createActionParameterValue_Bool(int val) { + printEntry("ActionParameter_Value_t", __func__) + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueBool; + value->choice.valueBool = val == 0 ? 0 : 1; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + + +ActionParameter_Value_t *createActionParameterValue_Bit_String(unsigned char *buf, int numOfBits) { + printEntry("ActionParameter_Value_t", __func__) + size_t size = numOfBits % 8 == 0 ? (unsigned int)(numOfBits / 8) : (unsigned int)(numOfBits / 8 + 1); + if (strlen((const char *)buf) < size) { + mdclog_write(MDCLOG_ERR, "size of buffer is small : %d needs to be %d in %s", (int)strlen((const char *)buf), (int)size, __func__); + } + int bits_unused = (int)size * 8 - numOfBits; + + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueBitS; + value->choice.valueBitS.size = size; + value->choice.valueBitS.buf = calloc(1, size); + value->choice.valueBitS.bits_unused = bits_unused; + + memcpy(value->choice.valueBitS.buf, buf, size); + value->choice.valueBitS.buf[size -1] = ((unsigned)(buf[size - 1]) >> (unsigned)bits_unused << (unsigned)bits_unused); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + + +ActionParameter_Value_t *createActionParameterValue_OCTETS(uint8_t *buf) { + printEntry("ActionParameter_Value_t", __func__) + size_t size = strlen((const char *)buf); + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valueOctS; + value->choice.valueOctS.size = size; + value->choice.valueOctS.buf = calloc(1, value->choice.valueOctS.size); + memcpy(value->choice.valueOctS.buf, buf, value->choice.valueOctS.size); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +/** + * + * @param buf buffer that must be null terminated + * @return ActionParameter_Value_t * + */ +ActionParameter_Value_t *createActionParameterValue_PRINTS(char *buf) { + printEntry("ActionParameter_Value_t", __func__) + size_t size = strlen((const char *)buf); + ActionParameter_Value_t *value = calloc(1, sizeof(ActionParameter_Value_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Value, value); + + value->present = ActionParameter_Value_PR_valuePrtS; + value->choice.valuePrtS.size = size; + value->choice.valuePrtS.buf = calloc(1, value->choice.valuePrtS.size); + memcpy(value->choice.valuePrtS.buf, buf, value->choice.valuePrtS.size); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Value, value, "ActionParameter_Value_t", __func__); + } + + return value; +} + +ActionParameter_Item_t *creatActionParameter_Item(long id, ActionParameter_Value_t *val) { + printEntry("ActionParameter_Item_t", __func__) + if (id < 0 || id > 255) { + mdclog_write(MDCLOG_ERR, "ActionParameter_Item_t id = %ld, values are 0 .. 255", id); + return NULL; + } + ActionParameter_Item_t *actionParameterItem = calloc(1, sizeof(ActionParameter_Item_t)); + ASN_STRUCT_RESET(asn_DEF_ActionParameter_Item, actionParameterItem); + + actionParameterItem->actionParameter_ID = id; + memcpy(&actionParameterItem->actionParameter_Value, val, sizeof(ActionParameter_Value_t)); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_ActionParameter_Item, actionParameterItem, "ActionParameter_Item_t", __func__); + } + + return actionParameterItem; +} + +/** + * + * @param interfaceId + * @param direction + * @param messageType + * @param interfaceProtocolItemList + * @param listSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createEventTrigger(Interface_ID_t *interfaceId, long direction, + InterfaceMessageType_t *messageType, + InterfaceProtocolIE_Item_t interfaceProtocolItemList[], + int listSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_eventTriggerDefinition_t", __func__) + if (direction < InterfaceDirection_incoming || direction > InterfaceDirection_outgoing) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_eventTriggerDefinition_t direction = %ld, values are %d .. %d", + direction, InterfaceDirection_incoming, InterfaceDirection_outgoing); + return -1; + } + + E2SM_gNB_X2_eventTriggerDefinition_t *eventTrigger = calloc(1, sizeof(E2SM_gNB_X2_eventTriggerDefinition_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, eventTrigger); + + memcpy(&eventTrigger->interface_ID , interfaceId, sizeof(Interface_ID_t)); + + eventTrigger->interfaceDirection = direction; + memcpy(&eventTrigger->interfaceMessageType, messageType, sizeof(InterfaceMessageType_t)); + + for (int i = 0; i < listSize; i++) { + ASN_SEQUENCE_ADD(eventTrigger->interfaceProtocolIE_List, &interfaceProtocolItemList[i]); + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, eventTrigger, "E2SM_gNB_X2_eventTriggerDefinition_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, + eventTrigger, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, + eventTrigger, + buf1, + 4096); + + } + + return len; +} + + +size_t createActionDefinition(long styleId, ActionParameter_Item_t actionParamList[], int listSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_actionDefinition_t", __func__) + E2SM_gNB_X2_actionDefinition_t *actDef = calloc(1, sizeof(E2SM_gNB_X2_actionDefinition_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_actionDefinition, actDef); + + actDef->style_ID = styleId; + for (int i = 0; i < listSize; i++) { + ASN_SEQUENCE_ADD(actDef->actionParameter_List, &actionParamList[i]); + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_actionDefinition, actDef, "E2SM_gNB_X2_actionDefinition_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_actionDefinition, + actDef, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_actionDefinition, + actDef, + buf1, + 4096); + + } + + return len; +} + +size_t createE2SM_gNB_X2_indicationHeader(long direction, + Interface_ID_t *interfaceId, + uint8_t *timestamp, //can put NULL if size == 0 + int size, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_indicationHeader_t", __func__) + if (direction < InterfaceDirection_incoming || direction > InterfaceDirection_outgoing) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_indicationHeader_t direction = %ld, values are %d .. %d", + direction, InterfaceDirection_incoming, InterfaceDirection_outgoing); + return -1; + } + + E2SM_gNB_X2_indicationHeader_t *indiHead = calloc(1, sizeof(E2SM_gNB_X2_indicationHeader_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_indicationHeader, indiHead); + + indiHead->interfaceDirection = direction; + memcpy(&indiHead->interface_ID, interfaceId, sizeof(Interface_ID_t)); + if (size > 0) { + indiHead->timestamp->size = size; + indiHead->timestamp->buf = calloc(1, sizeof(uint8_t) * size); + memcpy(indiHead->timestamp->buf, timestamp, size); + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_indicationHeader, indiHead, "E2SM_gNB_X2_indicationHeader_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_indicationHeader, + indiHead, + buffer, + buffer_size); + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_indicationHeader, + indiHead, + buf1, + 4096); + + } + + return len; +} + +size_t createE2SM_gNB_X2_indicationMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_indicationMessage_t", __func__) + if (msgSize <= 0) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_indicationMessage_t failed messsage size = %d", msgSize); + return -1; + } + + E2SM_gNB_X2_indicationMessage_t *indicationMessage = calloc(1, sizeof(E2SM_gNB_X2_indicationMessage_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_indicationMessage, indicationMessage); + + indicationMessage->interfaceMessage.size = msgSize; + indicationMessage->interfaceMessage.buf = calloc(1, sizeof(uint8_t) * msgSize); + memcpy(indicationMessage->interfaceMessage.buf, message, msgSize); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_indicationMessage, indicationMessage, "E2SM_gNB_X2_indicationMessage_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_indicationMessage, + indicationMessage, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_indicationMessage, + indicationMessage, + buf1, + 4096); + + } + + return len; +} + + +size_t createE2SM_gNB_X2_callProcessID(long callProcess_Id, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_callProcessID_t", __func__) + E2SM_gNB_X2_callProcessID_t *callProcessId = calloc(1, sizeof(E2SM_gNB_X2_callProcessID_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_callProcessID, callProcessId); + + callProcessId->callProcess_ID = callProcess_Id; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_callProcessID, callProcessId, "E2SM_gNB_X2_indicationMessage_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_callProcessID, + callProcessId, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_callProcessID, + callProcessId, + buf1, + 4096); + + } + + return len; +} + +size_t createE2SM_gNB_X2_controlHeader(Interface_ID_t *interfaceId, long direction, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_controlHeader_t", __func__) + if (direction < InterfaceDirection_incoming || direction > InterfaceDirection_outgoing) { + mdclog_write(MDCLOG_ERR, "E2SM_gNB_X2_controlHeader_t direction = %ld, values are %d .. %d", + direction, InterfaceDirection_incoming, InterfaceDirection_outgoing); + return -1; + } + E2SM_gNB_X2_controlHeader_t *controlHeader = calloc(1, sizeof(E2SM_gNB_X2_controlHeader_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_controlHeader, controlHeader); + + memcpy(&controlHeader->interface_ID, interfaceId, sizeof(Interface_ID_t)); + controlHeader->interfaceDirection = direction; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_controlHeader, controlHeader, "E2SM_gNB_X2_controlHeader_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_controlHeader, + controlHeader, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_controlHeader, + controlHeader, + buf1, + 4096); + + } + + return len; +} + + +size_t createE2SM_gNB_X2_controlMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size) { + printEntry("E2SM_gNB_X2_controlMessage_t", __func__) + E2SM_gNB_X2_controlMessage_t *controlMsg = calloc(1, sizeof(E2SM_gNB_X2_controlMessage_t)); + ASN_STRUCT_RESET(asn_DEF_E2SM_gNB_X2_controlMessage, controlMsg); + + controlMsg->interfaceMessage.size = msgSize; + controlMsg->interfaceMessage.buf = calloc(1, sizeof(uint8_t) * msgSize); + memcpy(controlMsg->interfaceMessage.buf, message, msgSize); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + checkAndPrint(&asn_DEF_E2SM_gNB_X2_controlMessage, controlMsg, "E2SM_gNB_X2_controlMessage_t", __func__); + } + + size_t len = encodebuff(ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_gNB_X2_controlMessage, + controlMsg, + buffer, + buffer_size); + + + if (mdclog_level_get() >= MDCLOG_INFO) { + uint8_t buf1[4096]; + //asn_enc_rval_t er1; + encodebuff(ATS_BASIC_XER, &asn_DEF_E2SM_gNB_X2_controlMessage, + controlMsg, + buf1, + 4096); + + } + + return len; +} diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2sm.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2sm.h new file mode 100644 index 0000000..7cbc24d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2sm.h @@ -0,0 +1,322 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 6/19/19. +// + +#ifndef ASN_DISABLE_OER_SUPPORT +#define ASN_DISABLE_OER_SUPPORT // this is to remove the OER do not remove it +#endif + + +#ifdef __cplusplus +extern "C" +{ +#endif + + +#ifndef E2_E2SM_H +#define E2_E2SM_H + +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "asn1cFiles/ENB-ID.h" + +#include "asn1cFiles/E2SM-gNB-X2-actionDefinition.h" + +#include "asn1cFiles/E2SM-gNB-X2-callProcessID.h" +#include "asn1cFiles/E2SM-gNB-X2-controlHeader.h" +#include "asn1cFiles/E2SM-gNB-X2-controlMessage.h" +#include "asn1cFiles/E2SM-gNB-X2-indicationHeader.h" +#include "asn1cFiles/E2SM-gNB-X2-indicationMessage.h" +#include "asn1cFiles/E2SM-gNB-X2-eventTriggerDefinition.h" + + +#include "asn1cFiles/ActionParameter-Item.h" +#include "asn1cFiles/ActionParameter-Value.h" +#include "asn1cFiles/PLMN-Identity.h" +#include "asn1cFiles/GlobalENB-ID.h" +#include "asn1cFiles/GlobalGNB-ID.h" +#include "asn1cFiles/Interface-ID.h" +#include "asn1cFiles/InterfaceMessageType.h" +#include "asn1cFiles/InterfaceProtocolIE-Item.h" + +/** + * + * @param data + * @return + */ +PLMN_Identity_t *createPLMN_ID(const unsigned char *data); +/** + * + * @param enbType + * @param data + * @return + */ +ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data); +/** + * + * @param data + * @param numOfBits + * @return + */ +GNB_ID_t *createGnb_id(const unsigned char *data, int numOfBits); +/** + * + * @param plmnIdentity + * @param enbId + * @return + */ +GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId); +/** + * + * @param plmnIdent#ifdef __cplusplus +} +#endif +ity + * @param gnb + * @return + */ +GlobalGNB_ID_t *createGlobalGNB_ID(PLMN_Identity_t *plmnIdentity, GNB_ID_t *gnb); + +/** + * + * @param gnb + * @return + */ +Interface_ID_t *createInterfaceIDForGnb(GlobalGNB_ID_t *gnb); +/** + * + * @param enb + * @return + */ +Interface_ID_t *createInterfaceIDForEnb(GlobalENB_ID_t *enb); + +/** + * + * @param procedureCode + * @return + */ +InterfaceMessageType_t *createInterfaceMessageInitiating(ProcedureCode_t procedureCode); +/** + * + * @param procedureCode + * @return + */ +InterfaceMessageType_t *createInterfaceMessageSuccsesful(ProcedureCode_t procedureCode); + +/** + * + * @param procedureCode + * @return + */ +InterfaceMessageType_t *createInterfaceMessageUnsuccessful(ProcedureCode_t procedureCode); + + +/** + * + * @param number + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueInt(long number); +/** + * + * @param number + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueEnum(long number); +/** + * + * @param val + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBool(int val); + +/** + * + * @param buf + * @param numOfBits + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBitString(unsigned char *buf, int numOfBits); + +/** + * + * @param buf + * @param size + * @return + */ +InterfaceProtocolIE_Value_t *createInterfaceProtocolValueOCTETS(uint8_t *buf); +/** + * + * @param id + * @param test + * @param value + * @return + */ +InterfaceProtocolIE_Item_t *createInterfaceProtocolIE_Item(long id, long test, InterfaceProtocolIE_Value_t *value); + +/** + * + * @param number + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Int(long number); + +/** + * + * @param number + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Enum(long number); + +/** + * + * @param val + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Bool(int val); + +/** + * + * @param buf + * @param numOfBits + * @return + */ +ActionParameter_Value_t *createActionParameterValue_Bit_String(unsigned char *buf, int numOfBits); + +/** + * + * @param buf + * @param size + * @return + */ +ActionParameter_Value_t *createActionParameterValue_OCTETS(uint8_t *buf); + +/** + * + * @param buf + * @param size + * @return + */ +ActionParameter_Value_t *createActionParameterValue_PRINTS(char *buf); + +/** + * + * @param id + * @param val + * @return + */ +ActionParameter_Item_t *creatActionParameter_Item(long id, ActionParameter_Value_t *val); + +/** + * + * @param interfaceId + * @param direction + * @param messageType + * @param interfaceProtocolItemList + * @param listSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createEventTrigger(Interface_ID_t *interfaceId, long direction, + InterfaceMessageType_t *messageType, + InterfaceProtocolIE_Item_t interfaceProtocolItemList[], + int listSize, + uint8_t *buffer, + size_t buffer_size); + + +/** + * + * @param styleId + * @param actionParamList + * @param listSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createActionDefinition(long styleId, ActionParameter_Item_t actionParamList[], int listSize, + uint8_t *buffer, + size_t buffer_size); +/** + * + * @param interfaceDirection + * @param interfaceId + * @param timestamp + * @param size + * @param buffer + * @param buffer_size + * @return + */ +size_t createE2SM_gNB_X2_indicationHeader(long interfaceDirection, + Interface_ID_t *interfaceId, + uint8_t *timestamp, //can put NULL if size == 0 + int size, + uint8_t *buffer, + size_t buffer_size); + +/** + * + * @param message + * @param msgSize + * @param buffer + * @param buffer_size + * @return + */ +size_t createE2SM_gNB_X2_indicationMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size); + +/** + * + * @param callProcess_Id + * @param buffer + * @param buffer_size + * @return + */ +size_t createE2SM_gNB_X2_callProcessID(long callProcess_Id, + uint8_t *buffer, + size_t buffer_size); + +size_t createE2SM_gNB_X2_controlHeader(Interface_ID_t *interfaceId, long direction, + uint8_t *buffer, + size_t buffer_size); + +size_t createE2SM_gNB_X2_controlMessage(uint8_t *message, uint msgSize, + uint8_t *buffer, + size_t buffer_size); +#endif //E2_E2SM_H + +#ifdef __cplusplus +} +#endif diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2smTest/e2smtest.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2smTest/e2smtest.cpp new file mode 100644 index 0000000..864348c --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2smTest/e2smtest.cpp @@ -0,0 +1,163 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 6/19/19. +// + +#include "../e2sm.h" +#include + +void init_log() +{ + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "e2smTests"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +int main(const int argc, char **argv) { + init_log(); + //mdclog_level_set(MDCLOG_WARN); + //mdclog_level_set(MDCLOG_INFO); + mdclog_level_set(MDCLOG_DEBUG); + + unsigned char plmnidData[3] = {0x33, 0xF4, 0x55}; + + //mdclog_write(MDCLOG_INFO, "Test PLMN_Identity_t"); + PLMN_Identity_t *plmnid = createPLMN_ID(plmnidData); + + unsigned char enbData[3] = {0x66, 0x77, 0x88}; + ENB_ID_t *enb = createENB_ID(ENB_ID_PR_macro_eNB_ID, enbData); + enbData[2] = 0x89; + ENB_ID_t *enb1 = createENB_ID(ENB_ID_PR_home_eNB_ID, enbData); + enbData[2] = 0x89; + ENB_ID_t *enb2 = createENB_ID(ENB_ID_PR_long_Macro_eNB_ID, enbData); + enbData[2] = 0x89; + ENB_ID_t *enb3 = createENB_ID(ENB_ID_PR_short_Macro_eNB_ID, enbData); + + unsigned char gnbData[3] = {0x99, 0xaa, 0xbb}; + GNB_ID_t *gnb = createGnb_id(gnbData, 26); + + GlobalENB_ID_t *globalEnb = createGlobalENB_ID(plmnid, enb2); + GlobalGNB_ID_t *globaGnb = createGlobalGNB_ID(plmnid, gnb); + + Interface_ID_t *gnbInterfaceId = createInterfaceIDForGnb(globaGnb); + + Interface_ID_t *enbInterfaceId = createInterfaceIDForEnb(globalEnb); + + InterfaceMessageType_t *initiatingInterface = createInterfaceMessageInitiating(28); + + InterfaceMessageType_t *succsesfulInterface = createInterfaceMessageSuccsesful(29); + + InterfaceMessageType_t *unSuccsesfulInterface = createInterfaceMessageUnsuccessful(29); + + InterfaceProtocolIE_Value_t *intVal = createInterfaceProtocolValueInt(88); + + InterfaceProtocolIE_Value_t *enumVal = createInterfaceProtocolValueEnum(2); + + InterfaceProtocolIE_Value_t *boolVal = createInterfaceProtocolValueBool(0); + + InterfaceProtocolIE_Value_t *bitStringVal = createInterfaceProtocolValueBitString((unsigned char *)"abcd0987", 60); + + uint8_t octe[6] = {0x11, 0x12, 0x13, 0x14, 0x15, 0x16}; + InterfaceProtocolIE_Value_t *octetsVal = createInterfaceProtocolValueOCTETS(octe); + + InterfaceProtocolIE_Item_t *item1 = createInterfaceProtocolIE_Item(10, 0, intVal); + InterfaceProtocolIE_Item_t *item2 = createInterfaceProtocolIE_Item(10, 1, enumVal); + InterfaceProtocolIE_Item_t *item3 = createInterfaceProtocolIE_Item(10, 0, boolVal); + InterfaceProtocolIE_Item_t *item4 = createInterfaceProtocolIE_Item(10, 3, bitStringVal); + InterfaceProtocolIE_Item_t *item5 = createInterfaceProtocolIE_Item(10, 4, octetsVal); + + ActionParameter_Item_t *actItem1 = creatActionParameter_Item(17, createActionParameterValue_Int(9)); + + ActionParameter_Value_t *actP_enum = createActionParameterValue_Enum(5); + ActionParameter_Item_t *actItem2 = creatActionParameter_Item(18, actP_enum); + + ActionParameter_Value_t *actP_bool = createActionParameterValue_Bool(0); + ActionParameter_Item_t *actItem3 = creatActionParameter_Item(18, actP_bool); + + //ActionParameter_Value_t *actP_bitString = createActionParameterValue_Bit_String((unsigned char *)"ABCDEF", 42); + ActionParameter_Item_t *actItem4 = creatActionParameter_Item(17, createActionParameterValue_Bit_String((unsigned char *)"ABCDEF", 42)); + + uint8_t octe1[7] = {0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27}; + ActionParameter_Value_t *actP_octates = createActionParameterValue_OCTETS(octe1); + ActionParameter_Item_t *actItem5 = creatActionParameter_Item(18, actP_octates); + + + char print[10] = {'a', 'b', 'C', 'D', 'e', 'f', 'g', 'H', 'I', '\0'}; + ActionParameter_Value_t *actP_printable = createActionParameterValue_PRINTS(print); + ActionParameter_Item_t *actItem6 = creatActionParameter_Item(18, actP_printable); + + InterfaceProtocolIE_Item_t *interfaceProtocolItemList[] = {item1, item2, item3, item4, item5}; + uint8_t buffer[4096]; + size_t len; + if ((len = createEventTrigger(gnbInterfaceId, + 0, + initiatingInterface, + *interfaceProtocolItemList, + 5, + buffer, + 4096)) <= 0) { + mdclog_write(MDCLOG_ERR, "returned error from createEventTrigger"); + } + + ActionParameter_Item_t *actionParamList[] = {actItem1, actItem2, actItem3, actItem4, actItem5, actItem6}; + len = createActionDefinition(10034, *actionParamList, 6, buffer, 4096); + + len = createE2SM_gNB_X2_indicationHeader(1, enbInterfaceId, nullptr, 0, buffer, 4096); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Check bad direction in header indication"); + len = createE2SM_gNB_X2_indicationHeader(2, enbInterfaceId, nullptr, 0, buffer, 4096); + if (len == (size_t)-1) { + mdclog_write(MDCLOG_DEBUG, "successes call function returned NULL please ignore ERROR log"); + } + } + + uint8_t msg[] = {0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x0}; + + int x = 1; + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_indicationMessage(msg, strlen((char *)msg), buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_callProcessID(8, buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_controlHeader(enbInterfaceId, 1, buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_controlHeader(gnbInterfaceId, 1, buffer, 4096); + } + + for (int i = 0; i < x; i++) { + len = createE2SM_gNB_X2_controlMessage(msg, strlen((char *)msg), buffer, 4096); + } + + + return 0; +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2test.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2test.cpp new file mode 100644 index 0000000..fad77b8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2test.cpp @@ -0,0 +1,33 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 12/19/19. +// + +#include "e2test.h" + + + +int main(const int argc, char **argv) { + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2test.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2test.h new file mode 100644 index 0000000..09918c2 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/e2test.h @@ -0,0 +1,51 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 12/19/19. +// + +#ifndef E2_E2TEST_H +#define E2_E2TEST_H + +#include + +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +// +// +//using namespace Pistache; + +class e2test { + +// Rest::Router router; + +}; + + +#endif //E2_E2TEST_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp new file mode 100644 index 0000000..22d536b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.cpp @@ -0,0 +1,151 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 2/16/20. +// + +#include "HttpServer.h" +#include +#include + + +#include "../sctpClient/sctpClient.h" + +#include "../T1/E2Builder.h" +#include "../base64.h" + +using namespace std; +using namespace Pistache; + +#define RECEIVE_SCTP_BUFFER_SIZE 8192 + +namespace Generic { + + void handleReady(const Rest::Request&, Http::ResponseWriter response) { + response.send(Http::Code::Ok, "1"); + } +} + + + HttpServer::HttpServer(Address addr) + : httpBaseSocket(0), httpEndpoint(std::make_shared(addr)) { } + + void HttpServer::init(size_t thr) { + if ((httpBaseSocket = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + fprintf(stderr, "Socket() error. %s\n", strerror(errno)); + exit(-1); + } + auto optval = 1; + if (setsockopt(httpBaseSocket, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof optval) != 0) { + fprintf(stderr, "setsockopt SO_REUSEPORT Error, %s %s, %d\n", strerror(errno), __func__, __LINE__); + close(httpBaseSocket); + exit(-1); + } + optval = 1; + if (setsockopt(httpBaseSocket, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval) != 0) { + fprintf(stderr, "setsockopt SO_REUSEADDR Error, %s %s, %d\n", strerror(errno), __func__, __LINE__); + close(httpBaseSocket); + exit(-1); + } + + struct sockaddr_in address{}; + address.sin_family = AF_INET; + if(inet_pton(AF_INET, "127.0.0.1", &address.sin_addr)<=0) + { + fprintf(stderr,"Invalid address/Address not supported. %s", strerror(errno)); + exit(-1); + } + + + address.sin_port = htons(9098); + if (connect(httpBaseSocket, (SA *)(&address), sizeof(address)) < 0) { + fprintf(stderr, "connect() error. %s\n", strerror(errno)); + exit(-1); + } + auto opts = Http::Endpoint::options().threads(thr); + httpEndpoint->init(opts); + setupRoutes(); + } + + void HttpServer::start() { + std::random_device device{}; + std::mt19937 generator(device()); + std::uniform_int_distribution distribution(1, (long) 1e12); + transactionCounter = distribution(generator); + + + httpEndpoint->setHandler(router.handler()); + httpEndpoint->serve(); + } + + void HttpServer::setupRoutes() { + using namespace Rest; + + Routes::Get(router, "/setup/:ricaddress/:ricPort/:mcc/:mnc", Routes::bind(&HttpServer::sendSetupReq, this)); + //Routes::Post(router, "/ricIndication/:ricid/:subscriptionId/:mcc/:mnc", Routes::bind(&HttpServer::sendSetupReq, this)); + Routes::Get(router, "/ready", Routes::bind(&Generic::handleReady)); + } + + + void HttpServer::sendSetupReq(const Rest::Request& request, Http::ResponseWriter response) { + auto mcc = request.param(":mcc").as(); + auto mnc = request.param(":mnc").as(); + auto ricAdress = request.param(":ricaddress").as(); + auto ricPort = request.param(":ricPort").as(); + //TODO build setup to send to address + E2AP_PDU_t pdu; + + buildSetupRequest(&pdu,mcc, mnc); + // encode PDU to PER + + auto buffer_size = RECEIVE_SCTP_BUFFER_SIZE; + unsigned char buffer[RECEIVE_SCTP_BUFFER_SIZE] = {}; + // encode to xml + asn_enc_rval_t er; + er = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, &pdu, buffer, buffer_size); + if (er.encoded == -1) { + cerr << "encoding of : " << asn_DEF_E2AP_PDU.name << " failed, "<< strerror(errno) << endl; + response.send(Http::Code::Internal_Server_Error, "strerror(errno)"); + return; + } else if (er.encoded > (ssize_t)buffer_size) { + cerr << "Buffer of size : " << buffer_size << " is to small for : " << asn_DEF_E2AP_PDU.name << endl; + response.send(Http::Code::Internal_Server_Error, "Buffer of size is too small"); + return; + } + + long len = er.encoded * 4 / 3 + 128; + auto *base64Buff = (unsigned char *)calloc(1,len + 1024); + char tx[32]; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + + auto sentLen = snprintf((char *)base64Buff, 1024, "%d|%s|%s|%d|", setupRequest_gnb, tx, ricAdress.c_str(), ricPort); + + base64::encode(buffer, er.encoded, &base64Buff[sentLen], len); + sentLen += len; + len = send(httpBaseSocket, base64Buff, sentLen, 0); + if (len < 0) { + cerr << "failed sending setupRequest_gnb to Other thread. Error : " << strerror(errno) << endl; + response.send(Http::Code::Internal_Server_Error, "Failed send buffer"); + free(base64Buff); + return; + } + char tx1[128]; + snprintf((char *) tx1, sizeof tx1, "{\"id\": %s}", tx); + response.send(Http::Code::Ok, tx1); + free(base64Buff); + } diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.h new file mode 100644 index 0000000..ccc6c3b --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/httpServer/HttpServer.h @@ -0,0 +1,57 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 2/18/20. +// + +#ifndef E2_HTTPSERVER_H +#define E2_HTTPSERVER_H + +#include +#include +#include +#include + + +using namespace std; +using namespace Pistache; + +#define SA struct sockaddr + +class HttpServer { +public: + explicit HttpServer(Address addr); + + void init(size_t thr = 2); + + void start(); + +private: + + long transactionCounter = 0; + int httpBaseSocket; + void setupRoutes(); + + + void sendSetupReq(const Rest::Request& request, Http::ResponseWriter response); + + std::shared_ptr httpEndpoint; + Rest::Router router; +}; + +#endif //E2_HTTPSERVER_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/logInit.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/logInit.h new file mode 100644 index 0000000..3bf34e4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/logInit.h @@ -0,0 +1,50 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 6/11/19. +// + +#ifndef __LOG_INIT__ +#define __LOG_INIT__ + +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +void init_log(char *name) { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, name); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +#ifdef __cplusplus +} +#endif +#endif diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/rmrClient/rmrClient.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/rmrClient/rmrClient.h new file mode 100644 index 0000000..71a486f --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/rmrClient/rmrClient.h @@ -0,0 +1,121 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 2/12/20. +// + +#include +#include +#include +#include +#include + +#include + +//rmr testing thread +#include + + +using namespace std; +#define MAX_RECEIVED_BUFFER 8192 + +class RmrException: public std::exception +{ + std::string msg; +public: + explicit RmrException(std::string msg) : msg(std::move(msg)){} + + const char* what() const noexcept override { + return msg.c_str(); + } +}; + + + +class RmrClient { +private: + void *rmrCtx = nullptr; + int rmr_fd = 0; + + void getRmrContext(const char *address, int epoll_fd) { + rmrCtx = rmr_init((char *)address, MAX_RECEIVED_BUFFER, RMRFL_NONE); + if (rmrCtx == nullptr) { + cerr << "Failed to initialize RMR. address = " << address << endl; + throw RmrException("Failed to initialize RMR"); + } + + rmr_set_stimeout(rmrCtx, 0); // disable retries for any send operation + cout << "Wait for RMR_Ready" << endl; + auto rmrReady = 0; + auto count = 0; + while (!rmrReady) { + if ((rmrReady = rmr_ready(rmrCtx)) == 0) { + usleep(1000000); + } + count++; + if (count % 60 == 0) { + cout << "Wait for RMR ready state : " << count << " seconds" << endl; + } + } + cout << "RMR running" << endl; + + + rmr_init_trace(rmrCtx, 200); + // get the RMR fd for the epoll + rmr_fd = rmr_get_rcvfd(rmrCtx); + struct epoll_event event{}; + // add RMR fd to epoll + event.events = (EPOLLIN); + event.data.fd = rmr_fd; + // add listening RMR FD to epoll + if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, rmr_fd, &event)) { + cerr << "Failed to add RMR descriptor to epoll. " << strerror(errno) << endl; + close(rmr_fd); + rmr_close(rmrCtx); + throw RmrException("Failed to add RMR descriptor to epoll."); + } + } + +public: + RmrClient(const char *address, int epoll_fd) { + try { + getRmrContext(address, epoll_fd); + } catch (RmrException &e) { + cout << e.what() << endl; + exit(-1); + } + } + + RmrClient() = delete; + RmrClient(const RmrClient &) = delete; + RmrClient &operator=(const RmrClient &) = delete; + RmrClient &operator&&(const RmrClient &) = delete; + + + inline void *getRmrCtx() const { + return rmrCtx; + } + + int getRmrFd() const { + return rmr_fd; + } + + inline rmr_mbuf_t *allocateRmrMsg(int size) {return (rmr_alloc_msg(rmrCtx, size));} + + static inline void freeRmrMsg(rmr_mbuf_t *msg) {rmr_free_msg(msg);} +}; \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp new file mode 100644 index 0000000..18ed686 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.cpp @@ -0,0 +1,513 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law fprintfor agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 2/10/20. +// + +#include "sctpClient.h" + +#define READ_BUFFER_SIZE 64 * 1024 + + +using namespace std; + + +void createHttpLocalSocket(SctpClient_t *sctpClient) { + struct sockaddr_in address{}; + int addrlen = sizeof(address); + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(9098); + sctpClient->httpSocket = accept(sctpClient->httpBaseSocket, (struct sockaddr *) &address, (socklen_t *) &addrlen) < 0; + if (sctpClient->httpSocket) { + fprintf(stderr, "Accept() error. %s\n", strerror(errno)); + exit(-1); + } + struct epoll_event event{}; + event.data.fd = sctpClient->httpSocket; + event.events = (EPOLLIN | EPOLLET); + if (epoll_ctl(sctpClient->epoll_fd, EPOLL_CTL_ADD, sctpClient->httpSocket, &event) < 0) { + fprintf(stderr, "epoll_ctl EPOLL_CTL_ADD, %s\n", strerror(errno)); + close(sctpClient->httpSocket); + exit(-1); + } +} + +int createEpoll(SctpClient &sctpClient) { + sctpClient.epoll_fd = epoll_create1(0); + if (sctpClient.epoll_fd == -1) { + fprintf(stderr, "failed to open epoll descriptor. %s\n", strerror(errno)); + return -1; + } + return sctpClient.epoll_fd; +} + + + +int createSctpConnction(SctpClient *sctpClient, const char *address, int port, bool local) { + sctpClient->sctpSock = socket(AF_INET6, SOCK_STREAM, IPPROTO_SCTP); + if (sctpClient->sctpSock < 0) { + fprintf(stderr, "Socket Error, %s %s, %d\n", strerror(errno), __func__, __LINE__); + return -1; + } + auto optval = 1; + if (setsockopt(sctpClient->sctpSock, SOL_SOCKET, SO_REUSEPORT, &optval, sizeof optval) != 0) { + fprintf(stderr, "setsockopt SO_REUSEPORT Error, %s %s, %d\n", strerror(errno), __func__, __LINE__); + close(sctpClient->sctpSock); + return -1; + } + optval = 1; + if (setsockopt(sctpClient->sctpSock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof optval) != 0) { + fprintf(stderr, "setsockopt SO_REUSEADDR Error, %s %s, %d\n", strerror(errno), __func__, __LINE__); + close(sctpClient->sctpSock); + return -1; + } + struct sockaddr_in6 servaddr = {}; +// struct addrinfo hints = {}; +// struct addrinfo *result; + + servaddr.sin6_family = AF_INET6; + servaddr.sin6_port = htons(port); /* daytime server */ + inet_pton(AF_INET6, address, &servaddr.sin6_addr); + // the bind here is to maintain the client port this is only if the test is not on the same IP as the tested system + if (!local) { + struct sockaddr_in6 localAddr{}; + localAddr.sin6_family = AF_INET6; + localAddr.sin6_addr = in6addr_any; + localAddr.sin6_port = htons(port); + if (bind(sctpClient->sctpSock, (struct sockaddr *) &localAddr, sizeof(struct sockaddr_in6)) < 0) { + fprintf(stderr, "bind Socket Error, %s %s, %d\n", strerror(errno), __func__, __LINE__); + return -1; + }//Ends the binding. + } + + // Add to Epol + struct epoll_event event{}; + event.data.fd = sctpClient->sctpSock; + event.events = (EPOLLOUT | EPOLLIN | EPOLLET); + if (epoll_ctl(sctpClient->epoll_fd, EPOLL_CTL_ADD, sctpClient->sctpSock, &event) < 0) { + fprintf(stderr, "epoll_ctl EPOLL_CTL_ADD, %s\n", strerror(errno)); + close(sctpClient->sctpSock); + return -1; + } + + char hostBuff[NI_MAXHOST]; + char portBuff[NI_MAXHOST]; + + if (getnameinfo((SA *) &servaddr, sizeof(servaddr), + hostBuff, sizeof(hostBuff), + portBuff, sizeof(portBuff), + (uint) (NI_NUMERICHOST) | (uint) (NI_NUMERICSERV)) != 0) { + fprintf(stderr, "getnameinfo() Error, %s %s %d\n", strerror(errno), __func__, __LINE__); + return -1; + } + + auto flags = fcntl(sctpClient->sctpSock, F_GETFL, 0); + if (flags == -1) { + fprintf(stderr, "fcntl error. %s\n", strerror(errno)); + close(sctpClient->sctpSock); + return -1; + } + + flags = (unsigned) flags | (unsigned) O_NONBLOCK; + if (fcntl(sctpClient->sctpSock, F_SETFL, flags) == -1) { + fprintf(stderr, "fcntl set O_NONBLOCK fail. %s\n", strerror(errno)); + close(sctpClient->sctpSock); + return -1; + } + + if (connect(sctpClient->sctpSock, (SA *) &servaddr, sizeof(servaddr)) < 0) { + if (errno != EINPROGRESS) { + fprintf(stderr, "connect FD %d to host : %s port %d, %s\n", sctpClient->sctpSock, address, port, + strerror(errno)); + close(sctpClient->sctpSock); + return -1; + } + fprintf(stdout, "Connect to FD %d returned with EINPROGRESS : %s\n", sctpClient->sctpSock, strerror(errno)); + } + return sctpClient->sctpSock; +} + +__attribute_warn_unused_result__ int createListeningTcpConnection(SctpClient *sctpClient) { + if ((sctpClient->httpBaseSocket = socket(AF_INET, SOCK_STREAM, 0)) == 0) { + fprintf(stderr, "socket failed. %s", strerror(errno)); + return -1; + } + + struct sockaddr_in address{}; + address.sin_family = AF_INET; + address.sin_addr.s_addr = INADDR_ANY; + address.sin_port = htons(9098); + + if (bind(sctpClient->httpBaseSocket, (struct sockaddr *)&address, sizeof(address)) < 0) { + fprintf(stderr, "Bind failed , %s %s, %d\n", strerror(errno), __func__, __LINE__); + return -1; + } + + struct epoll_event event{}; + event.data.fd = sctpClient->httpBaseSocket; + event.events = (EPOLLIN | EPOLLET); + if (epoll_ctl(sctpClient->epoll_fd, EPOLL_CTL_ADD, sctpClient->httpBaseSocket, &event) < 0) { + fprintf(stderr, "epoll_ctl EPOLL_CTL_ADD, %s\n", strerror(errno)); + close(sctpClient->httpBaseSocket); + return -1; + } + if (listen(sctpClient->httpBaseSocket, 128) < 0) + { + fprintf(stderr,"listen() error. %s", strerror(errno)); + return -1; + } + return 0; +} + +__attribute_warn_unused_result__ int modifyEpollToRead(SctpClient *sctpClient, int modifiedSocket) { + struct epoll_event event{}; + event.data.fd = modifiedSocket; + event.events = (EPOLLIN | EPOLLET); + if (epoll_ctl(sctpClient->epoll_fd, EPOLL_CTL_MOD, modifiedSocket, &event) < 0) { + fprintf(stderr, "failed to open epoll descriptor. %s\n", strerror(errno)); + return -1; + } + return 0; +} + + +__attribute_warn_unused_result__ cxxopts::ParseResult parse(SctpClient &sctpClient, int argc, const char *argv[]) { + cxxopts::Options options(argv[0], "sctp client test application"); + options.positional_help("[optional args]").show_positional_help(); + options.allow_unrecognised_options().add_options() + ("a,host", "Host address", cxxopts::value(sctpClient.host)->default_value("127.0.0.1")) + ("p,port", "port number", cxxopts::value(sctpClient.rmrPort)->default_value("38200")) + ("h,help", "Print help"); + + auto result = options.parse(argc, argv); + + if (result.count("help")) { + std::cout << options.help({""}) << std::endl; + exit(0); + } + return result; +} + +void run(SctpClient_t *sctpClient) { + cout << "in theread" << endl; + sleep(10); + cout << "in theread after sleep" << endl; + sleep(10); +} + +void runFunc(SctpClient_t *sctpClient) { + cout << "in theread 1" << endl; + + char rmrAddress[128] {}; + cout << "in theread 2" << endl; + + snprintf(rmrAddress, 128, "%d", sctpClient->rmrPort); + cout << "in theread 3" << endl; + + RmrClient rmrClient = {rmrAddress, sctpClient->epoll_fd}; + cout << "in theread 4" << endl; + + + auto *events = (struct epoll_event *) calloc(MAXEVENTS, sizeof(struct epoll_event)); +// auto counter = 1000; + // uint64_t st = 0; +// uint32_t aux1 = 0; +// st = rdtscp(aux1); + E2AP_PDU_t *pdu = nullptr; + + auto *msg = rmrClient.allocateRmrMsg(8192); + while (true) { + auto numOfEvents = epoll_wait(sctpClient->epoll_fd, events, MAXEVENTS, 1000); + if (numOfEvents < 0) { + if (errno == EINTR) { + fprintf(stderr, "got EINTR : %s\n", strerror(errno)); + continue; + } + fprintf(stderr, "Epoll wait failed, errno = %s\n", strerror(errno)); + break; + } + if (numOfEvents == 0) { // timeout +// if (--counter <= 0) { +// fprintf(stdout, "Finish waiting for epoll. going out of the thread\n"); +// continue; +// } + } + + auto done = 0; + + for (auto i = 0; i < numOfEvents; i++) { + uint32_t aux1 = 0; + auto start = rdtscp(aux1); + + if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP)) { + fprintf(stderr, "Got EPOLLERR or EPOLLHUP on fd = %d, errno = %s\n", events[i].data.fd, + strerror(errno)); + close(events[i].data.fd); + } else if (events[i].events & EPOLLOUT) { // AFTER EINPROGRESS + if (modifyEpollToRead(sctpClient, events[i].data.fd) < 0) { + fprintf(stderr, "failed modify FD %d after got EINPROGRESS\n", events[i].data.fd); + close(events[i].data.fd); + continue; + } + fprintf(stdout, "Connected to server after EinProgreevents[i].data.fdss FD %d\n", events[i].data.fd); + //TODO need to define RmrClient class + } else if (events[i].data.fd == sctpClient->httpBaseSocket) { + createHttpLocalSocket(sctpClient); + } else if (events[i].data.fd == sctpClient->httpSocket) { + //TODO handle messages from the http server + char buffer[READ_BUFFER_SIZE] {}; + while (true) { + auto size = read(sctpClient->httpSocket, buffer, READ_BUFFER_SIZE); + if (size < 0) { + if (errno == EINTR) { + continue; + } + if (errno != EAGAIN) { + fprintf(stderr, "Read error, %s\n", strerror(errno)); + done = 1; + } + break; // EAGAIN exit from loop on read normal way or on read error + } + // we got message get the id of message + char *tmp; + + // get mesage type + char *val = strtok_r(buffer, sctpClient->delimiter, &tmp); + messages_t messageType; + char *dummy; + if (val != nullptr) { + messageType = (decltype(messageType))strtol(val, &dummy, 10); + } else { + fprintf(stderr,"wrong message %s", buffer); + break; + } + char sctpLinkId[128] {}; + val = strtok_r(nullptr, sctpClient->delimiter, &tmp); + if (val != nullptr) { + memcpy(sctpLinkId, val, tmp - val); + } else { + fprintf(stderr,"wriong id %s", buffer); + break; + } + + char *values[128] {}; + int index = 0; + while ((val = strtok_r(nullptr, sctpClient->delimiter, &tmp)) != nullptr) { + auto valueLen = tmp - val; + values[index] = (char *)calloc(1, valueLen); + memcpy(values[index], val, valueLen); + index++; + } + values[i] = (char *)calloc(1, strlen(tmp)); + + switch ((int)messageType) { + case setupRequest_gnb: + case setupRequest_en_gNB: + case setupRequest_ng_eNB: + case setupRequest_eNB: { + + char *ricAddress = nullptr; + if (values[0] != nullptr) { + ricAddress = values[0]; + } else { + fprintf(stderr,"wrong address %s", buffer); + break; + } + //ric port + int ricPort = 0; + + if (values[1] != nullptr) { + ricPort = (decltype(ricPort))strtol(values[1], &dummy, 10); + } else { + fprintf(stderr,"wrong port %s", buffer); + for (auto e : values) { + if (e != nullptr) { + free(e); + } + } + break; + } + + // need to send message to E2Term + // build connection + auto fd = createSctpConnction(sctpClient, (const char *)ricAddress, ricPort); + if (fd < 0) { + fprintf(stderr,"Failed to create connection to %s:%d\n", ricAddress, ricPort); + for (auto e : values) { + if (e != nullptr) { + free(e); + } + } + break; + } + + auto len = strlen(values[index]); + auto *b64Decoded = (unsigned char *)calloc(1, len); + base64::decode((const unsigned char *)values[index], len, b64Decoded, (long)len); + + for (auto e : values) { + if (e != nullptr) { + free(e); + } + } + // send data + while (true) { + if (send(fd, b64Decoded, len, MSG_NOSIGNAL) < 0) { + if (errno == EINTR) { + continue; + } + cerr << "Error sendingdata to e2Term. " << strerror(errno) << endl; + break; + } + cout << "Message sent" << endl; + break; + } + free(b64Decoded); + char key[128] {}; + char *value = (char *)calloc(1,256); + snprintf(key, 128, "id:%s", sctpLinkId); + snprintf(value, 16, "%d", fd); + sctpClient->mapKey.setkey(key, (void *)value); + + snprintf(key, 128, "fd:%d", fd); + snprintf(&value[128], 128, "%s", sctpLinkId); + sctpClient->mapKey.setkey(key, (void *)&value[128]); + break; + } + case nothing: + default: { + break; + } + } + } + } else if (events[i].data.fd == rmrClient.getRmrFd()) { + msg->state = 0; + msg = rmr_rcv_msg(rmrClient.getRmrCtx(), msg); + if (msg == nullptr) { + cerr << "rmr_rcv_msg return with null pointer" << endl; + exit(-1); + } else if (msg->state != 0) { + cerr << "rmr_rcv_msg return with error status number : " << msg->state << endl; + msg->state = 0; + continue; + } + sleep(100); cout << "Got RMR message number : " << msg->mtype << endl; + + } else { // got data from server + /* We RMR_ERR_RETRY have data on the fd waiting to be read. Read and display it. + * We must read whatever data is available completely, as we are running + * in edge-triggered mode and won't get a notification again for the same data. */ + //TODO build a callback function to support many tests + if (pdu != nullptr) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + } + unsigned char buffer[SCTP_BUFFER_SIZE]{}; + while (true) { + auto len = read(events[i].data.fd, buffer, SCTP_BUFFER_SIZE); + if (len < 0) { + if (errno == EINTR) { + continue; + } + /* If errno == EAGAIN, that means we have read all + data. So go back to the main loop. */ + if (errno != EAGAIN) { + fprintf(stderr, "Read error, %s\n", strerror(errno)); + done = 1; + } + break; // EAGAIN exit from loop on read normal way or on read error + } else if (len == 0) { + /* End of file. The remote has closed the connection. */ + fprintf(stdout, "EOF Closed connection - descriptor = %d", events[i].data.fd); + done = 1; + break; + } + + asn_dec_rval_t rval; + rval = asn_decode(nullptr, + ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2AP_PDU, + (void **) &pdu, + buffer, + len); + if (rval.code != RC_OK) { + fprintf(stderr, "Error %d Decoding E2AP PDU from E2TERM\n", rval.code); + break; + } + //TODO handle messages + // switch (pdu->present) { + // case E2AP_PDU_PR_initiatingMessage: {//initiating message + // asnInitiatingRequest(pdu, message, rmrMessageBuffer); + // break; + // } + // case E2AP_PDU_PR_successfulOutcome: { //successful outcome + // asnSuccsesfulMsg(pdu, message, sctpMap, rmrMessageBuffer); + // break; + // } + // case E2AP_PDU_PR_unsuccessfulOutcome: { //Unsuccessful Outcome + // asnUnSuccsesfulMsg(pdu, message, sctpMap, rmrMessageBuffer); + // break; + // ipv6 client server c program } + // case E2AP_PDU_PR_NOTHING: + // default: + // fprintf(stderr, "Unknown index %d in E2AP PDU\n", pdu->present); + // break; + // } + } + } + aux1 = 0; + fprintf(stdout, "one loop took %ld clocks\n", rdtscp(aux1) - start); + } + if (done) { + //TODO report to RMR on closed connection + } + } + return;// nullptr; +} + +auto main(const int argc, const char **argv) -> int { + SctpClient_t sctpClient; + //unsigned num_cpus = std::thread::hardware_concurrency(); + + auto result = parse(sctpClient, argc, argv); + auto epoll_fd = createEpoll(sctpClient); + if (epoll_fd <= 0) { + exit(-1); + } + if (createListeningTcpConnection(&sctpClient) < 0) { + exit(-1); + } + std::thread th(runFunc, &sctpClient); +// std::thread th(run, &sctpClient); + + + sleep(29); + //start the http server + Port port(9080); + + Address addr(Ipv4::any(), port); + HttpServer server(addr); + + server.init(1); + + + server.start(); + + th.join(); + +} diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.h b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.h new file mode 100644 index 0000000..27ad789 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClient.h @@ -0,0 +1,99 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 2/16/20. +// + +#ifndef E2_SCTPCLIENT_H +#define E2_SCTPCLIENT_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "oranE2/E2AP-PDU.h" + +#include "../httpServer/HttpServer.h" + +#include "../rmrClient/rmrClient.h" +#include "cxxopts/include/cxxopts.hpp" +#include "../base64.h" +#include "../mapWrapper.h" + + + + +using namespace std; +using namespace Pistache; + +#define SA struct sockaddr + +#define MAXEVENTS 128 +#define SCTP_BUFFER_SIZE (64*1024) + +typedef enum messages { + setupRequest_gnb, + setupRequest_en_gNB, + setupRequest_ng_eNB, + setupRequest_eNB, + + nothing +} messages_t; + + +typedef struct SctpClient { + string host {}; + int rmrPort{}; + int epoll_fd{}; + int sctpSock{}; + int httpBaseSocket {}; + int httpSocket {}; + mapWrapper mapKey; + + char delimiter[2] {'|', 0}; + +} SctpClient_t; + +void createHttpLocalSocket(SctpClient_t &sctpClient); + +int createEpoll(SctpClient_t &sctpClient); + +inline static uint64_t rdtscp(uint32_t &aux) { + uint64_t rax, rdx; + asm volatile ("rdtscp\n" : "=a" (rax), "=d" (rdx), "=c" (aux) : :); + return (rdx << (unsigned) 32) + rax; +} + +int createSctpConnction(SctpClient_t *sctpClient, const char *address, int port, bool local = true); + +__attribute_warn_unused_result__ int createListeningTcpConnection(SctpClient_t *sctpClient); + +int modifyEpollToRead(SctpClient_t *sctpClient, int modifiedSocket); + +cxxopts::ParseResult parse(SctpClient_t &sctpClient, int argc, const char *argv[]); + +#endif //E2_SCTPCLIENT_H diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClientTest.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClientTest.cpp new file mode 100644 index 0000000..4652f0e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/sctpClient/sctpClientTest.cpp @@ -0,0 +1,91 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 2/10/20. +// +#include +#include +#include + +//#include "sctpClient.cpp" + +int epoll_fd = 0; + +Describe(Cgreen); +BeforeEach(Cgreen) {} +AfterEach(Cgreen) { + close(epoll_fd); +} + +using namespace cgreen; +using namespace std; + + +Ensure(Cgreen, createEpoll) { + epoll_fd = createEpoll(); + assert_that(epoll_fd != -1); + assert_that(epoll_fd > 0); +} + + + +Ensure(Cgreen, createConnectionIpV6) { + auto epoll_fd = createEpoll(); + assert_that(epoll_fd != -1); + assert_that(epoll_fd > 0); + unsigned num_cpus = std::thread::hardware_concurrency(); + std::vector threads(num_cpus); +// int i = 0; + +// threads[i] = std::thread(listener, &epoll_fd); +// auto port = 36422; +// auto fd = createSctpConnction("::1", port, epoll_fd); +// assert_that(fd != -1); +// assert_that(fd == 0); +// threads[i].join(); +// +// close(fd); +} + +Ensure(Cgreen, createConnectionIpV4) { + auto epoll_fd = createEpoll(); + assert_that(epoll_fd != -1); + assert_that(epoll_fd > 0); + unsigned num_cpus = std::thread::hardware_concurrency(); + std::vector threads(num_cpus); +// int i = 0; + +// threads[i] = std::thread(listener, &epoll_fd); +// auto port = 36422; +// auto fd = createSctpConnction("127.0.0.1", port, epoll_fd); +// assert_that(fd != -1); +// assert_that(fd == 0); +// +// threads[i].join(); +// close(fd); +} + + +//int main(const int argc, char **argv) { +// TestSuite *suite = create_named_test_suite_(__FUNCTION__, __FILE__, __LINE__); +// +// add_test_with_context(suite, Cgreen, createEpoll); +// //add_test_with_context(suite, Cgreen, createConnectionIpV6); +// add_test_with_context(suite, Cgreen, createConnectionIpV4); +// return cgreen::run_test_suite(suite, create_text_reporter()); +//} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp new file mode 100644 index 0000000..1c5a129 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/setUpMessages/SetUpMessages.cpp @@ -0,0 +1,264 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include +#include +#include +#include + + +//#include + + +#include "oranE2/E2AP-PDU.h" +#include "oranE2/InitiatingMessage.h" +#include "oranE2/SuccessfulOutcome.h" +#include "oranE2/UnsuccessfulOutcome.h" + +#include "oranE2/ProtocolIE-Field.h" +#include "oranE2/ENB-ID.h" +#include "oranE2/GlobalENB-ID.h" +#include "oranE2/GlobalE2node-gNB-ID.h" +#include "oranE2/constr_TYPE.h" + +#include "E2Builder.h" + +using namespace std; + + +#include "BuildRunName.h" + +void buildRanName(E2AP_PDU_t *pdu, unsigned char *buffer) { + for (auto i = 0; i < pdu->choice.initiatingMessage->value.choice.E2setupRequest.protocolIEs.list.count; i++) { + auto *ie = pdu->choice.initiatingMessage->value.choice.E2setupRequest.protocolIEs.list.array[i]; + if (ie->id == ProtocolIE_ID_id_GlobalE2node_ID) { + if (ie->value.present == E2setupRequestIEs__value_PR_GlobalE2node_ID) { + memset(buffer, 0, 128); + buildRanName( (char *) buffer, ie); + } + } + } + +} + +void extractPdu(E2AP_PDU_t *pdu, unsigned char *buffer, int buffer_size) { + asn_enc_rval_t er; + er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu, buffer, buffer_size); + if (er.encoded == -1) { + cerr << "encoding of " << asn_DEF_E2AP_PDU.name << " failed, " << strerror(errno) << endl; + exit(-1); + } else if (er.encoded > (ssize_t) buffer_size) { + cerr << "Buffer of size " << buffer_size << " is to small for " << asn_DEF_E2AP_PDU.name << endl; + exit(-1); + } else { + cout << "XML result = " << buffer << endl; + } +} + + +std::string otherXml = "\n" + " \n" + " 1\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 4\n" + " \n" + " \n" + " \n" + " 13 10 14\n" + " \n" + " 10011001101010101011" + " \n" + " \n" + " \n" + " \n" + " \n" + " 9\n" + " \n" + " \n" + " \n" + " \n" + " 6\n" + " \n" + " \n" + " \n" + " 1\n" + " 1\n" + " \n" + " \n" + " \n" + " \n" + " 6\n" + " \n" + " \n" + " \n" + " 2\n" + " 1\n" + " \n" + " \n" + " \n" + " \n" + " 6\n" + " \n" + " \n" + " \n" + " 3\n" + " 1\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + "\n"; + + + +std::string newXml = + "1413 10 14101010101100110011109611621631"; +std::string setupFailure = "" + "" + "1" + "" + "" + "" + "" + "" + "1" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + "" + ""; + + + +std::string otherSucc = " " + "" + "1" + "" + "" + "" + "" + "" + "4" + "" + "" + "" + "131014" + "10101010110011001110" + "" + "" + "9611621631"; + +auto main(const int argc, char **argv) -> int { + E2AP_PDU_t pdu; + char *printBuffer; + size_t size; + FILE *stream = open_memstream(&printBuffer, &size); + auto buffer_size = 8192; + unsigned char buffer[8192] = {}; + + E2AP_PDU_t *XERpdu = nullptr; + cout << "message size = " << otherSucc.length() << endl; + auto rval = asn_decode(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, (void **) &XERpdu, + otherSucc.c_str(), otherSucc.length()); + if (rval.code != RC_OK) { + cout << "Error " << rval.code << " (unpack) setup response " << endl; + //return -1; + } + + asn_fprint(stream, &asn_DEF_E2AP_PDU, XERpdu); + cout << "Encoding E2AP PDU of size " << size << endl << printBuffer << endl; + fseek(stream,0,SEEK_SET); + +// cout << "=========================" << endl << otherXml << endl << "========================" << endl; + + buildSetupRequest(&pdu, 311, 410); + asn_fprint(stream, &asn_DEF_E2AP_PDU, &pdu); + cout << "Encoding E2AP PDU of size " << size << endl << printBuffer << endl; + fseek(stream,0,SEEK_SET); + + extractPdu(&pdu, buffer, buffer_size); + buildRanName(&pdu, buffer); + cout << "Ran name = " << buffer << endl; + + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, &pdu); + memset(buffer, 0, buffer_size); + + cout << "========== en-gnb ============" << endl; + buildSetupRequesteenGNB(&pdu, 320, 512); + asn_fprint(stream, &asn_DEF_E2AP_PDU, &pdu); + cout << "Encoding E2AP PDU of size " << size << endl << printBuffer << endl; + fseek(stream,0,SEEK_SET); + cout << "========== en-gnb ============" << endl; + + extractPdu(&pdu, buffer, buffer_size); + buildRanName(&pdu, buffer); + cout << "Ran name = " << buffer << endl; + + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, &pdu); + memset(buffer, 0, buffer_size); + + buildSetupRequestWithFunc(&pdu, 311, 410); + extractPdu(&pdu, buffer, buffer_size); + + buildRanName(&pdu, buffer); + cout << "Ran name = " << buffer << endl; + + cout << "Sucessesfull outcome" << endl; + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, &pdu); + memset(buffer, 0, buffer_size); + uint8_t data[4] = {0x99, 0xAA, 0xBB, 0}; + + buildSetupSuccsessfulResponse(&pdu, 311, 410, data); + + asn_fprint(stream, &asn_DEF_E2AP_PDU, &pdu); + cout << "Encoding E2AP PDU of size " << size << endl << printBuffer << endl; + fseek(stream,0,SEEK_SET); + + extractPdu(&pdu, buffer, buffer_size); + + + cout << "Failure outcome" << endl; + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, &pdu); + memset(buffer, 0, buffer_size); + + buildSetupUnSuccsessfulResponse(&pdu); + asn_fprint(stream, &asn_DEF_E2AP_PDU, &pdu); + cout << "Encoding E2AP PDU of size " << size << endl << printBuffer << endl; + fseek(stream,0,SEEK_SET); + + extractPdu(&pdu, buffer, buffer_size); +} diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/testAsn.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/testAsn.cpp new file mode 100644 index 0000000..5e25251 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/testAsn.cpp @@ -0,0 +1,49 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 7/8/19. +// + +#include +#include "../../asn1cFiles/E2AP-PDU.h" + + +void init_log() +{ + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "e2smTests"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +int main(const int argc, char **argv) { + init_log(); + //mdclog_level_set(MDCLOG_WARN); + mdclog_level_set(MDCLOG_DEBUG); + + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/testAsn/testAsn.cpp b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/testAsn/testAsn.cpp new file mode 100644 index 0000000..5e25251 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/TEST/testAsn/testAsn/testAsn.cpp @@ -0,0 +1,49 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 7/8/19. +// + +#include +#include "../../asn1cFiles/E2AP-PDU.h" + + +void init_log() +{ + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "e2smTests"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} + +int main(const int argc, char **argv) { + init_log(); + //mdclog_level_set(MDCLOG_WARN); + mdclog_level_set(MDCLOG_DEBUG); + + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + +} \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/base64.cpp b/setup/e2/RIC-E2-TERMINATION/base64.cpp new file mode 100644 index 0000000..373aed8 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/base64.cpp @@ -0,0 +1,149 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 9/26/19. +// + +#include "base64.h" + +int base64::encode(const unsigned char *src, int srcLen, char unsigned *dst, long &dstLen) { + unsigned char *pos; + const unsigned char *end, *in; + + if (dstLen <= 0 || srcLen <= 0) { + mdclog_write(MDCLOG_ERR, "source or destination length are 0. dst =%ld source = %d", + dstLen, srcLen); + return -1; + } + if (dstLen < (srcLen * 4 / 3)) { + mdclog_write(MDCLOG_ERR, "Destination size %ld must be at least 140 percent from source size %d", + dstLen, srcLen); + return -1; + } + if (dst == nullptr) { + mdclog_write(MDCLOG_ERR, "Destination must be allocated and freed by caller the function not allocate the memory"); + return -1; + } + if (src == nullptr) { + mdclog_write(MDCLOG_ERR, "source is null pointer"); + return -1; + } + + end = src + srcLen; + in = src; + pos = dst; + while (end - in >= 3) { + *pos++ = base64_table[in[0] >> (unsigned int)2]; + *pos++ = base64_table[((in[0] & 0x03) << (unsigned int)4) | (in[1] >> (unsigned int)4)]; + *pos++ = base64_table[((in[1] & 0x0f) << (unsigned int)2) | (in[2] >> (unsigned int)6)]; + *pos++ = base64_table[in[2] & (unsigned int)0x3f]; + in += 3; + } + + if (end - in) { + *pos++ = base64_table[in[0] >> (unsigned int)2]; + if (end - in == 1) { + *pos++ = base64_table[(in[0] & 0x03) << (unsigned int)4]; + *pos++ = '='; + } else { + *pos++ = base64_table[((in[0] & 0x03) << 4) | (in[1] >> (unsigned int)4)]; + *pos++ = base64_table[(in[1] & 0x0f) << 2]; + } + *pos++ = '='; + } + + *pos = '\0'; + dstLen = pos - dst;return 0; +} + +int base64::decode(const unsigned char *src, int srcLen, char unsigned *dst, long dstLen) { + unsigned char inv_table[INVERSE_TABLE_SIZE]; + memset(inv_table, 0x80, INVERSE_TABLE_SIZE); + for (ulong i = 0; i < sizeof(base64_table) - 1; i++) { + inv_table[base64_table[i]] = (unsigned char) i; + } + inv_table['='] = 0; + + + if (dstLen == 0 || dstLen < (int)(srcLen / 4 * 3)) { + mdclog_write(MDCLOG_ERR, "Destination size %ld can be up to 40 smaller then source size %d", + dstLen, srcLen); + return -1; + } + if (dst == nullptr) { + mdclog_write(MDCLOG_ERR, "Destination must be allocated and freed by caller the function not allocate the memory"); + return -1; + } + + unsigned char *pos, block[4], tmp; + long i; + int pad = 0; + + size_t count = 0; + + for (i = 0; i < srcLen; i++) { + if (inv_table[src[i]] != 0x80) { + count++; + } + } + + if (count == 0 || count % 4) + return -1; + + pos = dst; + count = 0; + for (i = 0; i < srcLen; i++) { + tmp = inv_table[src[i]]; + if (tmp == 0x80) { + continue; + } + block[count] = tmp; + + if (src[i] == '=') { + pad++; + } + + count++; + if (count == 4) { + *pos++ = (block[0] << 2) | ((unsigned char)block[1] >> (unsigned int)4); + *pos++ = (block[1] << 4) | ((unsigned char)block[2] >> (unsigned int)2); + *pos++ = (block[2] << 6) | block[3]; + count = 0; + if (pad) { + if (pad == 1) { + pos--; + } + else if (pad == 2) { + pos -= 2; + } + else { + return -1; + } + break; + } + } + } + + dstLen = pos - dst; + return 0; +} diff --git a/setup/e2/RIC-E2-TERMINATION/base64.h b/setup/e2/RIC-E2-TERMINATION/base64.h new file mode 100644 index 0000000..d022c60 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/base64.h @@ -0,0 +1,63 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + /* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +// +// Created by adi ENZEL on 9/26/19. +// + +#ifndef E2_BASE64_H +#define E2_BASE64_H + +#include +#include +#include + +static const unsigned char base64_table[65] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +#define INVERSE_TABLE_SIZE 256 + +class base64 { +public: + /** + * + * @param src + * @param srcLen + * @param dst + * @param dstLen + * @return 0 = OK -1 fault + */ + static int encode(const unsigned char *src, int srcLen, char unsigned *dst, long &dstLen); + /** + * + * @param src + * @param srcLen + * @param dst + * @param dstLen + * @return 0 = OK -1 fault + */ + static int decode(const unsigned char *src, int srcLen, char unsigned *dst, long dstLen); + +}; + + +#endif //E2_BASE64_H diff --git a/setup/e2/RIC-E2-TERMINATION/config/config.conf b/setup/e2/RIC-E2-TERMINATION/config/config.conf new file mode 100644 index 0000000..c11262d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/config/config.conf @@ -0,0 +1,12 @@ +nano=38000 +loglevel=all +volume=log +#the key name of the environment holds the local ip address +#ip address of the E2T in the RMR +local-ip=127.0.0.1 +#trace is start, stop +trace=start +external-fqdn=e2t.com +#put pointer to the key that point to pod name +pod_name=E2TERM_POD_NAME +sctp-port=36422 diff --git a/setup/e2/RIC-E2-TERMINATION/config/rmr.verbose b/setup/e2/RIC-E2-TERMINATION/config/rmr.verbose new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/config/rmr.verbose @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/setup/e2/RIC-E2-TERMINATION/container-tag.yaml b/setup/e2/RIC-E2-TERMINATION/container-tag.yaml new file mode 100644 index 0000000..8c395d4 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/container-tag.yaml @@ -0,0 +1,3 @@ +# The Jenkins job requires a tag to build the Docker image. +# Global-JJB script assumes this file is in the repo root. +tag: 4.0.10 diff --git a/setup/e2/RIC-E2-TERMINATION/dockerRouter.txt b/setup/e2/RIC-E2-TERMINATION/dockerRouter.txt new file mode 100644 index 0000000..f14a197 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/dockerRouter.txt @@ -0,0 +1,26 @@ +newrt|start +rte|10020|10.0.2.15:3801 +rte|10060|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10070|10.0.2.15:3801 +rte|10071|10.0.2.15:3801 +rte|10080|10.0.2.15:3801 +rte|10081|10.0.2.15:38000 +rte|10082|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10361|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|10370|10.0.2.15:3801 +rte|10371|10.0.2.15:38000 +rte|10372|10.0.2.15:38000 +rte|1080|10.0.2.15:3801 +rte|1090|10.0.2.15:38000 +rte|1100|10.0.2.15:3801 +rte|12010|10.0.2.15:38010 +rte|10091|10.0.2.15:4801 +rte|10092|10.0.2.15:4801 +rte|1101|10.0.2.15:38000 +rte|1102|10.0.2.15:3801 +rte|12001|10.0.2.15:3801 +newrt|end diff --git a/setup/e2/RIC-E2-TERMINATION/mapWrapper.h b/setup/e2/RIC-E2-TERMINATION/mapWrapper.h new file mode 100644 index 0000000..ffa0eb3 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/mapWrapper.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 8/28/19. +// + +#ifndef E2_MAPWRAPPER_H +#define E2_MAPWRAPPER_H + +#include +#include +#include +#include +#include +#include + +class mapWrapper { +public: + void *find(char *key) { + std::shared_lock read(fence); + auto entry = keyMap.find(key); + if (entry == keyMap.end()) { + return nullptr; + } + return entry->second; + } + + void setkey(char *key, void *val) { + std::unique_lock write(fence); + keyMap[key] = val; + } + + void *erase(char *key) { + std::unique_lock write(fence); + return (void *)keyMap.erase(key); + } + + void clear() { + std::unique_lock write(fence); + keyMap.clear(); + } + + void getKeys(std::vector &v) { + std::shared_lock read(fence); + for (auto const &e : keyMap) { + v.emplace_back((char *)e.first.c_str()); + } + } + +private: + std::unordered_map keyMap; + std::shared_timed_mutex fence; + +}; +#endif //E2_MAPWRAPPER_H diff --git a/setup/e2/RIC-E2-TERMINATION/openTracing.h b/setup/e2/RIC-E2-TERMINATION/openTracing.h new file mode 100644 index 0000000..1f313da --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/openTracing.h @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +// +// Created by adi ENZEL on 8/21/19. +// + +#ifndef E2_OPENTRACING_H +#define E2_OPENTRACING_H + +#include +#include +#include +#include +#include +#include // use nlohmann json library as an example + +struct RICCarrierWriter : opentracing::TextMapWriter { + explicit RICCarrierWriter( + std::unordered_map& data_) + : data{data_} {} + + opentracing::expected Set( + opentracing::string_view key, + opentracing::string_view value) const override { + // OpenTracing uses opentracing::expected for error handling. This closely + // follows the expected proposal for the C++ Standard Library. See + // http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0323r3.pdf + // for more background. + opentracing::expected result; + + auto was_successful = data.emplace(key, value); + if (was_successful.second) { + // Use a default constructed opentracing::expected to indicate + // success. + return result; + } else { + // `key` clashes with existing data, so the span context can't be encoded + // successfully; set opentracing::expected to an std::error_code. + return opentracing::make_unexpected( + std::make_error_code(std::errc::not_supported)); + } + } + + std::unordered_map& data; +}; + +struct RICCarrierReader : opentracing::TextMapReader { + explicit RICCarrierReader( + const std::unordered_map& data_) + : data{data_} {} + + using F = std::function( + opentracing::string_view, opentracing::string_view)>; + + opentracing::expected ForeachKey(F f) const override { + // Iterate through all key-value pairs, the tracer will use the relevant keys + // to extract a span context. + for (auto& key_value : data) { + auto was_successful = f(key_value.first, key_value.second); + if (!was_successful) { + // If the callback returns and unexpected value, bail out of the loop. + return was_successful; + } + } + + // Indicate successful iteration. + return {}; + } + + // Optional, define TextMapReader::LookupKey to allow for faster extraction. + opentracing::expected LookupKey( + opentracing::string_view key) const override { + auto iter = data.find(key); + if (iter != data.end()) { + return opentracing::make_unexpected(opentracing::key_not_found_error); + } + return opentracing::string_view{iter->second}; + } + + const std::unordered_map& data; +}; + + + +#endif //E2_OPENTRACING_H diff --git a/setup/e2/RIC-E2-TERMINATION/router.txt b/setup/e2/RIC-E2-TERMINATION/router.txt new file mode 100644 index 0000000..e7b93b1 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/router.txt @@ -0,0 +1,9 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +newrt|end diff --git a/setup/e2/RIC-E2-TERMINATION/sctpThread.cpp b/setup/e2/RIC-E2-TERMINATION/sctpThread.cpp new file mode 100644 index 0000000..5da047d --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/sctpThread.cpp @@ -0,0 +1,2737 @@ +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +// TODO: High-level file comment. + + + +#include <3rdparty/oranE2/RANfunctions-List.h> +#include "sctpThread.h" +#include "BuildRunName.h" + +#include "3rdparty/oranE2SM/E2SM-gNB-NRT-RANfunction-Definition.h" +#include "BuildXml.h" +#include "pugixml/src/pugixml.hpp" + +// #include +// #include +// #include +// #include +// #include +// #include +// #include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +using namespace std; +//using namespace std::placeholders; +using namespace boost::filesystem; + +using namespace rapidjson; + +//#ifdef __cplusplus +//extern "C" +//{ +//#endif + +int sendMessageSocket(const int dest_port); +int parseMessageData(ReportingMessages_t &message, char *data, char *host, uint16_t &port); + +// need to expose without the include of gcov +extern "C" void __gcov_flush(void); + +static void catch_function(int signal) { + __gcov_flush(); + exit(signal); +} + + +BOOST_LOG_INLINE_GLOBAL_LOGGER_DEFAULT(my_logger, src::logger_mt) + +boost::shared_ptr> boostLogger; +double cpuClock = 0.0; +bool jsonTrace = true; + +void init_log() { + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, "E2Terminator"); + mdclog_init(attr); + mdclog_attr_destroy(attr); +} +auto start_time = std::chrono::high_resolution_clock::now(); +typedef std::chrono::duration> seconds_t; + +double age() { + return seconds_t(std::chrono::high_resolution_clock::now() - start_time).count(); +} + +double approx_CPU_MHz(unsigned sleeptime) { + using namespace std::chrono_literals; + uint32_t aux = 0; + uint64_t cycles_start = rdtscp(aux); + double time_start = age(); + std::this_thread::sleep_for(sleeptime * 1ms); + uint64_t elapsed_cycles = rdtscp(aux) - cycles_start; + double elapsed_time = age() - time_start; + return elapsed_cycles / elapsed_time; +} + +//std::atomic rmrCounter{0}; +std::atomic num_of_messages{0}; +std::atomic num_of_XAPP_messages{0}; +static long transactionCounter = 0; + +int buildListeningPort(sctp_params_t &sctpParams) { + sctpParams.listenFD = socket (AF_INET6, SOCK_STREAM, IPPROTO_SCTP); + struct sockaddr_in6 servaddr {}; + servaddr.sin6_family = AF_INET6; + servaddr.sin6_addr = in6addr_any; + servaddr.sin6_port = htons(sctpParams.sctpPort); + if (bind(sctpParams.listenFD, (SA *)&servaddr, sizeof(servaddr)) < 0 ) { + mdclog_write(MDCLOG_ERR, "Error binding. %s\n", strerror(errno)); + return -1; + } + if (setSocketNoBlocking(sctpParams.listenFD) == -1) { + //mdclog_write(MDCLOG_ERR, "Error binding. %s", strerror(errno)); + return -1; + } + if (mdclog_level_get() >= MDCLOG_DEBUG) { + struct sockaddr_in6 cliaddr {}; + socklen_t len = sizeof(cliaddr); + getsockname(sctpParams.listenFD, (SA *)&cliaddr, &len); + char buff[1024] {}; + inet_ntop(AF_INET6, &cliaddr.sin6_addr, buff, sizeof(buff)); + mdclog_write(MDCLOG_DEBUG, "My address: %s, port %d\n", buff, htons(cliaddr.sin6_port)); + } + + if (listen(sctpParams.listenFD, SOMAXCONN) < 0) { + mdclog_write(MDCLOG_ERR, "Error listening. %s\n", strerror(errno)); + return -1; + } + struct epoll_event event {}; + event.events = EPOLLIN | EPOLLET; + event.data.fd = sctpParams.listenFD; + + // add listening port to epoll + if (epoll_ctl(sctpParams.epoll_fd, EPOLL_CTL_ADD, sctpParams.listenFD, &event)) { + printf("Failed to add descriptor to epoll\n"); + mdclog_write(MDCLOG_ERR, "Failed to add descriptor to epoll. %s\n", strerror(errno)); + return -1; + } + + return 0; +} + +int buildConfiguration(sctp_params_t &sctpParams) { + path p = (sctpParams.configFilePath + "/" + sctpParams.configFileName).c_str(); + if (exists(p)) { + const int size = 2048; + auto fileSize = file_size(p); + if (fileSize > size) { + mdclog_write(MDCLOG_ERR, "File %s larger than %d", p.string().c_str(), size); + return -1; + } + } else { + mdclog_write(MDCLOG_ERR, "Configuration File %s not exists", p.string().c_str()); + return -1; + } + + ReadConfigFile conf; + if (conf.openConfigFile(p.string()) == -1) { + mdclog_write(MDCLOG_ERR, "Filed to open config file %s, %s", + p.string().c_str(), strerror(errno)); + return -1; + } + int rmrPort = conf.getIntValue("nano"); + if (rmrPort == -1) { + mdclog_write(MDCLOG_ERR, "illigal RMR port "); + return -1; + } + sctpParams.rmrPort = (uint16_t)rmrPort; + snprintf(sctpParams.rmrAddress, sizeof(sctpParams.rmrAddress), "%d", (int) (sctpParams.rmrPort)); + + auto tmpStr = conf.getStringValue("loglevel"); + if (tmpStr.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal loglevel. Set loglevel to MDCLOG_INFO"); + tmpStr = "info"; + } + transform(tmpStr.begin(), tmpStr.end(), tmpStr.begin(), ::tolower); + + if ((tmpStr.compare("debug")) == 0) { + sctpParams.logLevel = MDCLOG_DEBUG; + } else if ((tmpStr.compare("info")) == 0) { + sctpParams.logLevel = MDCLOG_INFO; + } else if ((tmpStr.compare("warning")) == 0) { + sctpParams.logLevel = MDCLOG_WARN; + } else if ((tmpStr.compare("error")) == 0) { + sctpParams.logLevel = MDCLOG_ERR; + } else { + mdclog_write(MDCLOG_ERR, "illigal loglevel = %s. Set loglevel to MDCLOG_INFO", tmpStr.c_str()); + sctpParams.logLevel = MDCLOG_INFO; + } + mdclog_level_set(sctpParams.logLevel); + + tmpStr = conf.getStringValue("volume"); + if (tmpStr.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal volume."); + return -1; + } + + char tmpLogFilespec[VOLUME_URL_SIZE]; + tmpLogFilespec[0] = 0; + sctpParams.volume[0] = 0; + snprintf(sctpParams.volume, VOLUME_URL_SIZE, "%s", tmpStr.c_str()); + // copy the name to temp file as well + snprintf(tmpLogFilespec, VOLUME_URL_SIZE, "%s", tmpStr.c_str()); + + + // define the file name in the tmp directory under the volume + strcat(tmpLogFilespec,"/tmp/E2Term_%Y-%m-%d_%H-%M-%S.%N.tmpStr"); + + sctpParams.myIP = conf.getStringValue("local-ip"); + if (sctpParams.myIP.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal local-ip."); + return -1; + } + + int sctpPort = conf.getIntValue("sctp-port"); + if (sctpPort == -1) { + mdclog_write(MDCLOG_ERR, "illigal SCTP port "); + return -1; + } + sctpParams.sctpPort = (uint16_t)sctpPort; + + sctpParams.fqdn = conf.getStringValue("external-fqdn"); + if (sctpParams.fqdn.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal external-fqdn"); + return -1; + } + + std::string pod = conf.getStringValue("pod_name"); + if (pod.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal pod_name in config file"); + return -1; + } + auto *podName = getenv(pod.c_str()); + if (podName == nullptr) { + mdclog_write(MDCLOG_ERR, "illigal pod_name or environment varible not exists : %s", pod.c_str()); + return -1; + + } else { + sctpParams.podName.assign(podName); + if (sctpParams.podName.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal pod_name"); + return -1; + } + } + + tmpStr = conf.getStringValue("trace"); + transform(tmpStr.begin(), tmpStr.end(), tmpStr.begin(), ::tolower); + if ((tmpStr.compare("start")) == 0) { + mdclog_write(MDCLOG_INFO, "Trace set to: start"); + sctpParams.trace = true; + } else if ((tmpStr.compare("stop")) == 0) { + mdclog_write(MDCLOG_INFO, "Trace set to: stop"); + sctpParams.trace = false; + } + jsonTrace = sctpParams.trace; + + sctpParams.ka_message_length = snprintf(sctpParams.ka_message, KA_MESSAGE_SIZE, "{\"address\": \"%s:%d\"," + "\"fqdn\": \"%s\"," + "\"pod_name\": \"%s\"}", + (const char *)sctpParams.myIP.c_str(), + sctpParams.rmrPort, + sctpParams.fqdn.c_str(), + sctpParams.podName.c_str()); + + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_mdc_add("RMR Port", to_string(sctpParams.rmrPort).c_str()); + mdclog_mdc_add("LogLevel", to_string(sctpParams.logLevel).c_str()); + mdclog_mdc_add("volume", sctpParams.volume); + mdclog_mdc_add("tmpLogFilespec", tmpLogFilespec); + mdclog_mdc_add("my ip", sctpParams.myIP.c_str()); + mdclog_mdc_add("pod name", sctpParams.podName.c_str()); + + mdclog_write(MDCLOG_INFO, "running parameters for instance : %s", sctpParams.ka_message); + } + mdclog_mdc_clean(); + + // Files written to the current working directory + boostLogger = logging::add_file_log( + keywords::file_name = tmpLogFilespec, // to temp directory + keywords::rotation_size = 10 * 1024 * 1024, + keywords::time_based_rotation = sinks::file::rotation_at_time_interval(posix_time::hours(1)), + keywords::format = "%Message%" + //keywords::format = "[%TimeStamp%]: %Message%" // use each tmpStr with time stamp + ); + + // Setup a destination folder for collecting rotated (closed) files --since the same volumn can use rename() + boostLogger->locked_backend()->set_file_collector(sinks::file::make_collector( + keywords::target = sctpParams.volume + )); + + // Upon restart, scan the directory for files matching the file_name pattern + boostLogger->locked_backend()->scan_for_files(); + + // Enable auto-flushing after each tmpStr record written + if (mdclog_level_get() >= MDCLOG_DEBUG) { + boostLogger->locked_backend()->auto_flush(true); + } + + return 0; +} + + + +int main(const int argc, const char **argv) { + sctp_params_t sctpParams; + + { + std::random_device device{}; + std::mt19937 generator(device()); + std::uniform_int_distribution distribution(1, (long) 1e12); + transactionCounter = distribution(generator); + } + +// uint64_t st = 0; +// uint32_t aux1 = 0; +// st = rdtscp(aux1); + + unsigned num_cpus = std::thread::hardware_concurrency(); + init_log(); + mdclog_level_set(MDCLOG_INFO); + + if (std::signal(SIGINT, catch_function) == SIG_ERR) { + mdclog_write(MDCLOG_ERR, "Error initializing SIGINT"); + exit(1); + } + if (std::signal(SIGABRT, catch_function)== SIG_ERR) { + mdclog_write(MDCLOG_ERR, "Error initializing SIGABRT"); + exit(1); + } + if (std::signal(SIGTERM, catch_function)== SIG_ERR) { + mdclog_write(MDCLOG_ERR, "Error initializing SIGTERM"); + exit(1); + } + + cpuClock = approx_CPU_MHz(100); + + mdclog_write(MDCLOG_DEBUG, "CPU speed %11.11f", cpuClock); + + auto result = parse(argc, argv, sctpParams); + + if (buildConfiguration(sctpParams) != 0) { + exit(-1); + } + + // start epoll + sctpParams.epoll_fd = epoll_create1(0); + if (sctpParams.epoll_fd == -1) { + mdclog_write(MDCLOG_ERR, "failed to open epoll descriptor"); + exit(-1); + } + + getRmrContext(sctpParams); + if (sctpParams.rmrCtx == nullptr) { + close(sctpParams.epoll_fd); + exit(-1); + } + + if (buildInotify(sctpParams) == -1) { + close(sctpParams.rmrListenFd); + rmr_close(sctpParams.rmrCtx); + close(sctpParams.epoll_fd); + exit(-1); + } + + if (buildListeningPort(sctpParams) != 0) { + close(sctpParams.rmrListenFd); + rmr_close(sctpParams.rmrCtx); + close(sctpParams.epoll_fd); + exit(-1); + } + + sctpParams.sctpMap = new mapWrapper(); + + std::vector threads(num_cpus); +// std::vector threads; + + num_cpus = 1; + for (unsigned int i = 0; i < num_cpus; i++) { + threads[i] = std::thread(listener, &sctpParams); + + cpu_set_t cpuset; + CPU_ZERO(&cpuset); + CPU_SET(i, &cpuset); + int rc = pthread_setaffinity_np(threads[i].native_handle(), sizeof(cpu_set_t), &cpuset); + if (rc != 0) { + mdclog_write(MDCLOG_ERR, "Error calling pthread_setaffinity_np: %d", rc); + } + } + + auto statFlag = false; + auto statThread = std::thread(statColectorThread, (void *)&statFlag); + + //loop over term_init until first message from xApp + handleTermInit(sctpParams); + + for (auto &t : threads) { + t.join(); + } + + statFlag = true; + statThread.join(); + + return 0; +} + +void handleTermInit(sctp_params_t &sctpParams) { + sendTermInit(sctpParams); + //send to e2 manager init of e2 term + //E2_TERM_INIT + + int count = 0; + while (true) { + auto xappMessages = num_of_XAPP_messages.load(std::memory_order_acquire); + if (xappMessages > 0) { + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "Got a message from some appliction, stop sending E2_TERM_INIT"); + } + return; + } + usleep(100000); + count++; + if (count % 1000 == 0) { + mdclog_write(MDCLOG_ERR, "GOT No messages from any xApp"); + sendTermInit(sctpParams); + } + } +} + +void sendTermInit(sctp_params_t &sctpParams) { + rmr_mbuf_t *msg = rmr_alloc_msg(sctpParams.rmrCtx, sctpParams.ka_message_length); + auto count = 0; + while (true) { + msg->mtype = E2_TERM_INIT; + msg->state = 0; + rmr_bytes2payload(msg, (unsigned char *)sctpParams.ka_message, sctpParams.ka_message_length); + static unsigned char tx[32]; + auto txLen = snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(msg, tx, txLen); + msg = rmr_send_msg(sctpParams.rmrCtx, msg); + if (msg == nullptr) { + msg = rmr_alloc_msg(sctpParams.rmrCtx, sctpParams.ka_message_length); + } else if (msg->state == 0) { + rmr_free_msg(msg); + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "E2_TERM_INIT succsesfuly sent "); + } + return; + } else { + if (count % 100 == 0) { + mdclog_write(MDCLOG_ERR, "Error sending E2_TERM_INIT cause : %s ", translateRmrErrorMessages(msg->state).c_str()); + } + sleep(1); + } + count++; + } +} + +/** + * + * @param argc + * @param argv + * @param sctpParams + * @return + */ +cxxopts::ParseResult parse(int argc, const char *argv[], sctp_params_t &sctpParams) { + cxxopts::Options options(argv[0], "e2 term help"); + options.positional_help("[optional args]").show_positional_help(); + options.allow_unrecognised_options().add_options() + ("p,path", "config file path", cxxopts::value(sctpParams.configFilePath)->default_value("config")) + ("f,file", "config file name", cxxopts::value(sctpParams.configFileName)->default_value("config.conf")) + ("h,help", "Print help"); + + auto result = options.parse(argc, argv); + + if (result.count("help")) { + std::cout << options.help({""}) << std::endl; + exit(0); + } + return result; +} + +/** + * + * @param sctpParams + * @return -1 failed 0 success + */ +int buildInotify(sctp_params_t &sctpParams) { + sctpParams.inotifyFD = inotify_init1(IN_NONBLOCK); + if (sctpParams.inotifyFD == -1) { + mdclog_write(MDCLOG_ERR, "Failed to init inotify (inotify_init1) %s", strerror(errno)); + close(sctpParams.rmrListenFd); + rmr_close(sctpParams.rmrCtx); + close(sctpParams.epoll_fd); + return -1; + } + + sctpParams.inotifyWD = inotify_add_watch(sctpParams.inotifyFD, + (const char *)sctpParams.configFilePath.c_str(), + (unsigned)IN_OPEN | (unsigned)IN_CLOSE_WRITE | (unsigned)IN_CLOSE_NOWRITE); //IN_CLOSE = (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) + if (sctpParams.inotifyWD == -1) { + mdclog_write(MDCLOG_ERR, "Failed to add directory : %s to inotify (inotify_add_watch) %s", + sctpParams.configFilePath.c_str(), + strerror(errno)); + close(sctpParams.inotifyFD); + return -1; + } + + struct epoll_event event{}; + event.events = (EPOLLIN); + event.data.fd = sctpParams.inotifyFD; + // add listening RMR FD to epoll + if (epoll_ctl(sctpParams.epoll_fd, EPOLL_CTL_ADD, sctpParams.inotifyFD, &event)) { + mdclog_write(MDCLOG_ERR, "Failed to add inotify FD to epoll"); + close(sctpParams.inotifyFD); + return -1; + } + return 0; +} + +/** + * + * @param args + * @return + */ +void listener(sctp_params_t *params) { + int num_of_SCTP_messages = 0; + auto totalTime = 0.0; + mdclog_mdc_clean(); + mdclog_level_set(params->logLevel); + + std::thread::id this_id = std::this_thread::get_id(); + //save cout + streambuf *oldCout = cout.rdbuf(); + ostringstream memCout; + // create new cout + cout.rdbuf(memCout.rdbuf()); + cout << this_id; + //return to the normal cout + cout.rdbuf(oldCout); + + char tid[32]; + memcpy(tid, memCout.str().c_str(), memCout.str().length() < 32 ? memCout.str().length() : 31); + tid[memCout.str().length()] = 0; + mdclog_mdc_add("thread id", tid); + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "started thread number %s", tid); + } + + + RmrMessagesBuffer_t rmrMessageBuffer{}; + //create and init RMR + rmrMessageBuffer.rmrCtx = params->rmrCtx; + + auto *events = (struct epoll_event *) calloc(MAXEVENTS, sizeof(struct epoll_event)); + struct timespec end{0, 0}; + struct timespec start{0, 0}; + + rmrMessageBuffer.rcvMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); + rmrMessageBuffer.sendMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); + + memcpy(rmrMessageBuffer.ka_message, params->ka_message, params->ka_message_length); + rmrMessageBuffer.ka_message_len = params->ka_message_length; + rmrMessageBuffer.ka_message[rmrMessageBuffer.ka_message_len] = 0; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "keep alive message is : %s", rmrMessageBuffer.ka_message); + } + + ReportingMessages_t message {}; + +// for (int i = 0; i < MAX_RMR_BUFF_ARRY; i++) { +// rmrMessageBuffer.rcvBufferedMessages[i] = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); +// rmrMessageBuffer.sendBufferedMessages[i] = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); +// } + + message.statCollector = StatCollector::GetInstance(); + + while (true) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Start EPOLL Wait"); + } + auto numOfEvents = epoll_wait(params->epoll_fd, events, MAXEVENTS, -1); + if (numOfEvents < 0 && errno == EINTR) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "got EINTR : %s", strerror(errno)); + } + continue; + } + if (numOfEvents < 0) { + mdclog_write(MDCLOG_ERR, "Epoll wait failed, errno = %s", strerror(errno)); + return; + } + for (auto i = 0; i < numOfEvents; i++) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "handling epoll event %d out of %d", i + 1, numOfEvents); + } + clock_gettime(CLOCK_MONOTONIC, &message.message.time); + start.tv_sec = message.message.time.tv_sec; + start.tv_nsec = message.message.time.tv_nsec; + + + if ((events[i].events & EPOLLERR) || (events[i].events & EPOLLHUP)) { + handlepoll_error(events[i], message, rmrMessageBuffer, params); + } else if (events[i].events & EPOLLOUT) { + handleEinprogressMessages(events[i], message, rmrMessageBuffer, params); + } else if (params->listenFD == events[i].data.fd) { + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "New connection request from sctp network\n"); + } + // new connection is requested from RAN start build connection + while (true) { + struct sockaddr in_addr {}; + socklen_t in_len; + char hostBuff[NI_MAXHOST]; + char portBuff[NI_MAXSERV]; + + in_len = sizeof(in_addr); + auto *peerInfo = (ConnectedCU_t *)calloc(1, sizeof(ConnectedCU_t)); + peerInfo->sctpParams = params; + peerInfo->fileDescriptor = accept(params->listenFD, &in_addr, &in_len); + if (peerInfo->fileDescriptor == -1) { + if ((errno == EAGAIN) || (errno == EWOULDBLOCK)) { + /* We have processed all incoming connections. */ + break; + } else { + mdclog_write(MDCLOG_ERR, "Accept error, errno = %s", strerror(errno)); + break; + } + } + if (setSocketNoBlocking(peerInfo->fileDescriptor) == -1) { + mdclog_write(MDCLOG_ERR, "setSocketNoBlocking failed to set new connection %s on port %s\n", hostBuff, portBuff); + close(peerInfo->fileDescriptor); + break; + } + auto ans = getnameinfo(&in_addr, in_len, + peerInfo->hostName, NI_MAXHOST, + peerInfo->portNumber, NI_MAXSERV, (unsigned )((unsigned int)NI_NUMERICHOST | (unsigned int)NI_NUMERICSERV)); + if (ans < 0) { + mdclog_write(MDCLOG_ERR, "Failed to get info on connection request. %s\n", strerror(errno)); + close(peerInfo->fileDescriptor); + break; + } + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Accepted connection on descriptor %d (host=%s, port=%s)\n", peerInfo->fileDescriptor, peerInfo->hostName, peerInfo->portNumber); + } + peerInfo->isConnected = false; + peerInfo->gotSetup = false; + if (addToEpoll(params->epoll_fd, + peerInfo, + (EPOLLIN | EPOLLET), + params->sctpMap, nullptr, + 0) != 0) { + break; + } + break; + } + } else if (params->rmrListenFd == events[i].data.fd) { + // got message from XAPP + num_of_XAPP_messages.fetch_add(1, std::memory_order_release); + num_of_messages.fetch_add(1, std::memory_order_release); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "new message from RMR"); + } + if (receiveXappMessages(params->sctpMap, + rmrMessageBuffer, + message.message.time) != 0) { + mdclog_write(MDCLOG_ERR, "Error handling Xapp message"); + } + } else if (params->inotifyFD == events[i].data.fd) { + mdclog_write(MDCLOG_INFO, "Got event from inotify (configuration update)"); + handleConfigChange(params); + } else { + /* We RMR_ERR_RETRY have data on the fd waiting to be read. Read and display it. + * We must read whatever data is available completely, as we are running + * in edge-triggered mode and won't get a notification again for the same data. */ + num_of_messages.fetch_add(1, std::memory_order_release); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "new message from SCTP, epoll flags are : %0x", events[i].events); + } + receiveDataFromSctp(&events[i], + params->sctpMap, + num_of_SCTP_messages, + rmrMessageBuffer, + message.message.time); + } + + clock_gettime(CLOCK_MONOTONIC, &end); + if (mdclog_level_get() >= MDCLOG_INFO) { + totalTime += ((end.tv_sec + 1.0e-9 * end.tv_nsec) - + ((double) start.tv_sec + 1.0e-9 * start.tv_nsec)); + } + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "message handling is %ld seconds %ld nanoseconds", + end.tv_sec - start.tv_sec, + end.tv_nsec - start.tv_nsec); + } + } + } +} + +/** + * + * @param sctpParams + */ +void handleConfigChange(sctp_params_t *sctpParams) { + char buf[4096] __attribute__ ((aligned(__alignof__(struct inotify_event)))); + const struct inotify_event *event; + char *ptr; + + path p = (sctpParams->configFilePath + "/" + sctpParams->configFileName).c_str(); + auto endlessLoop = true; + while (endlessLoop) { + auto len = read(sctpParams->inotifyFD, buf, sizeof buf); + if (len == -1) { + if (errno != EAGAIN) { + mdclog_write(MDCLOG_ERR, "read %s ", strerror(errno)); + endlessLoop = false; + continue; + } + else { + endlessLoop = false; + continue; + } + } + + for (ptr = buf; ptr < buf + len; ptr += sizeof(struct inotify_event) + event->len) { + event = (const struct inotify_event *)ptr; + if (event->mask & (uint32_t)IN_ISDIR) { + continue; + } + + // the directory name + if (sctpParams->inotifyWD == event->wd) { + // not the directory + } + if (event->len) { + auto retVal = strcmp(sctpParams->configFileName.c_str(), event->name); + if (retVal != 0) { + continue; + } + } + // only the file we want + if (event->mask & (uint32_t)IN_CLOSE_WRITE) { + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "Configuration file changed"); + } + if (exists(p)) { + const int size = 2048; + auto fileSize = file_size(p); + if (fileSize > size) { + mdclog_write(MDCLOG_ERR, "File %s larger than %d", p.string().c_str(), size); + return; + } + } else { + mdclog_write(MDCLOG_ERR, "Configuration File %s not exists", p.string().c_str()); + return; + } + + ReadConfigFile conf; + if (conf.openConfigFile(p.string()) == -1) { + mdclog_write(MDCLOG_ERR, "Filed to open config file %s, %s", + p.string().c_str(), strerror(errno)); + return; + } + + auto tmpStr = conf.getStringValue("loglevel"); + if (tmpStr.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal loglevel. Set loglevel to MDCLOG_INFO"); + tmpStr = "info"; + } + transform(tmpStr.begin(), tmpStr.end(), tmpStr.begin(), ::tolower); + + if ((tmpStr.compare("debug")) == 0) { + mdclog_write(MDCLOG_INFO, "Log level set to MDCLOG_DEBUG"); + sctpParams->logLevel = MDCLOG_DEBUG; + } else if ((tmpStr.compare("info")) == 0) { + mdclog_write(MDCLOG_INFO, "Log level set to MDCLOG_INFO"); + sctpParams->logLevel = MDCLOG_INFO; + } else if ((tmpStr.compare("warning")) == 0) { + mdclog_write(MDCLOG_INFO, "Log level set to MDCLOG_WARN"); + sctpParams->logLevel = MDCLOG_WARN; + } else if ((tmpStr.compare("error")) == 0) { + mdclog_write(MDCLOG_INFO, "Log level set to MDCLOG_ERR"); + sctpParams->logLevel = MDCLOG_ERR; + } else { + mdclog_write(MDCLOG_ERR, "illigal loglevel = %s. Set loglevel to MDCLOG_INFO", tmpStr.c_str()); + sctpParams->logLevel = MDCLOG_INFO; + } + mdclog_level_set(sctpParams->logLevel); + + + tmpStr = conf.getStringValue("trace"); + if (tmpStr.length() == 0) { + mdclog_write(MDCLOG_ERR, "illigal trace. Set trace to stop"); + tmpStr = "stop"; + } + + transform(tmpStr.begin(), tmpStr.end(), tmpStr.begin(), ::tolower); + if ((tmpStr.compare("start")) == 0) { + mdclog_write(MDCLOG_INFO, "Trace set to: start"); + sctpParams->trace = true; + } else if ((tmpStr.compare("stop")) == 0) { + mdclog_write(MDCLOG_INFO, "Trace set to: stop"); + sctpParams->trace = false; + } else { + mdclog_write(MDCLOG_ERR, "Trace was set to wrong value %s, set to stop", tmpStr.c_str()); + sctpParams->trace = false; + } + jsonTrace = sctpParams->trace; + endlessLoop = false; + } + } + } +} + +/** + * + * @param event + * @param message + * @param rmrMessageBuffer + * @param params + */ +void handleEinprogressMessages(struct epoll_event &event, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer, + sctp_params_t *params) { + auto *peerInfo = (ConnectedCU_t *)event.data.ptr; + memcpy(message.message.enodbName, peerInfo->enodbName, sizeof(peerInfo->enodbName)); + + mdclog_write(MDCLOG_INFO, "file descriptor %d got EPOLLOUT", peerInfo->fileDescriptor); + auto retVal = 0; + socklen_t retValLen = 0; + auto rc = getsockopt(peerInfo->fileDescriptor, SOL_SOCKET, SO_ERROR, &retVal, &retValLen); + if (rc != 0 || retVal != 0) { + if (rc != 0) { + rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, 256, + "%s|Failed SCTP Connection, after EINPROGRESS the getsockopt%s", + peerInfo->enodbName, strerror(errno)); + } else if (retVal != 0) { + rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, 256, + "%s|Failed SCTP Connection after EINPROGRESS, SO_ERROR", + peerInfo->enodbName); + } + + message.message.asndata = rmrMessageBuffer.sendMessage->payload; + message.message.asnLength = rmrMessageBuffer.sendMessage->len; + mdclog_write(MDCLOG_ERR, "%s", rmrMessageBuffer.sendMessage->payload); + message.message.direction = 'N'; + if (sendRequestToXapp(message, RIC_SCTP_CONNECTION_FAILURE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "SCTP_CONNECTION_FAIL message failed to send to xAPP"); + } + memset(peerInfo->asnData, 0, peerInfo->asnLength); + peerInfo->asnLength = 0; + peerInfo->mtype = 0; + return; + } + + peerInfo->isConnected = true; + + if (modifyToEpoll(params->epoll_fd, peerInfo, (EPOLLIN | EPOLLET), params->sctpMap, peerInfo->enodbName, + peerInfo->mtype) != 0) { + mdclog_write(MDCLOG_ERR, "epoll_ctl EPOLL_CTL_MOD"); + return; + } + + message.message.asndata = (unsigned char *)peerInfo->asnData; + message.message.asnLength = peerInfo->asnLength; + message.message.messageType = peerInfo->mtype; + memcpy(message.message.enodbName, peerInfo->enodbName, sizeof(peerInfo->enodbName)); + num_of_messages.fetch_add(1, std::memory_order_release); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "send the delayed SETUP/ENDC SETUP to sctp for %s", + message.message.enodbName); + } + if (sendSctpMsg(peerInfo, message, params->sctpMap) != 0) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Error write to SCTP %s %d", __func__, __LINE__); + } + return; + } + + memset(peerInfo->asnData, 0, peerInfo->asnLength); + peerInfo->asnLength = 0; + peerInfo->mtype = 0; +} + + +void handlepoll_error(struct epoll_event &event, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer, + sctp_params_t *params) { + if (event.data.fd != params->rmrListenFd) { + auto *peerInfo = (ConnectedCU_t *)event.data.ptr; + mdclog_write(MDCLOG_ERR, "epoll error, events %0x on fd %d, RAN NAME : %s", + event.events, peerInfo->fileDescriptor, peerInfo->enodbName); + + rmrMessageBuffer.sendMessage->len = snprintf((char *)rmrMessageBuffer.sendMessage->payload, 256, + "%s|Failed SCTP Connection", + peerInfo->enodbName); + message.message.asndata = rmrMessageBuffer.sendMessage->payload; + message.message.asnLength = rmrMessageBuffer.sendMessage->len; + + memcpy(message.message.enodbName, peerInfo->enodbName, sizeof(peerInfo->enodbName)); + message.message.direction = 'N'; + if (sendRequestToXapp(message, RIC_SCTP_CONNECTION_FAILURE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "SCTP_CONNECTION_FAIL message failed to send to xAPP"); + } + + close(peerInfo->fileDescriptor); + params->sctpMap->erase(peerInfo->enodbName); + cleanHashEntry((ConnectedCU_t *) event.data.ptr, params->sctpMap); + } else { + mdclog_write(MDCLOG_ERR, "epoll error, events %0x on RMR FD", event.events); + } +} +/** + * + * @param socket + * @return + */ +int setSocketNoBlocking(int socket) { + auto flags = fcntl(socket, F_GETFL, 0); + + if (flags == -1) { + mdclog_mdc_add("func", "fcntl"); + mdclog_write(MDCLOG_ERR, "%s, %s", __FUNCTION__, strerror(errno)); + mdclog_mdc_clean(); + return -1; + } + + flags = (unsigned) flags | (unsigned) O_NONBLOCK; + if (fcntl(socket, F_SETFL, flags) == -1) { + mdclog_mdc_add("func", "fcntl"); + mdclog_write(MDCLOG_ERR, "%s, %s", __FUNCTION__, strerror(errno)); + mdclog_mdc_clean(); + return -1; + } + + return 0; +} + +/** + * + * @param val + * @param m + */ +void cleanHashEntry(ConnectedCU_t *val, Sctp_Map_t *m) { + char *dummy; + auto port = (uint16_t) strtol(val->portNumber, &dummy, 10); + char searchBuff[2048]{}; + + snprintf(searchBuff, sizeof searchBuff, "host:%s:%d", val->hostName, port); + m->erase(searchBuff); + + m->erase(val->enodbName); + free(val); +} + +/** + * + * @param fd file discriptor + * @param data the asn data to send + * @param len length of the data + * @param enodbName the enodbName as in the map for printing purpose + * @param m map host information + * @param mtype message number + * @return 0 success, anegative number on fail + */ +int sendSctpMsg(ConnectedCU_t *peerInfo, ReportingMessages_t &message, Sctp_Map_t *m) { + auto loglevel = mdclog_level_get(); + int fd = peerInfo->fileDescriptor; + if (loglevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Send SCTP message for CU %s, %s", + message.message.enodbName, __FUNCTION__); + } + + while (true) { + if (send(fd,message.message.asndata, message.message.asnLength,MSG_NOSIGNAL) < 0) { + if (errno == EINTR) { + continue; + } + mdclog_write(MDCLOG_ERR, "error writing to CU a message, %s ", strerror(errno)); + if (!peerInfo->isConnected) { + mdclog_write(MDCLOG_ERR, "connection to CU %s is still in progress.", message.message.enodbName); + return -1; + } + cleanHashEntry(peerInfo, m); + close(fd); + char key[MAX_ENODB_NAME_SIZE * 2]; + snprintf(key, MAX_ENODB_NAME_SIZE * 2, "msg:%s|%d", message.message.enodbName, + message.message.messageType); + if (loglevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "remove key = %s from %s at line %d", key, __FUNCTION__, __LINE__); + } + auto tmp = m->find(key); + if (tmp) { + free(tmp); + } + m->erase(key); + return -1; + } + // TODO remove stat update + //message.statCollector->incSentMessage(string(message.message.enodbName)); + message.message.direction = 'D'; + // send report.buffer of size + buildJsonMessage(message); + + if (loglevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, + "SCTP message for CU %s sent from %s", + message.message.enodbName, + __FUNCTION__); + } + return 0; + } +} + +/** + * + * @param message + * @param rmrMessageBuffer + */ +void getRequestMetaData(ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMessageBuffer) { + rmr_get_meid(rmrMessageBuffer.rcvMessage, (unsigned char *) (message.message.enodbName)); + + message.message.asndata = rmrMessageBuffer.rcvMessage->payload; + message.message.asnLength = rmrMessageBuffer.rcvMessage->len; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Message from Xapp RAN name = %s message length = %ld", + message.message.enodbName, (unsigned long) message.message.asnLength); + } +} + + +/** + * 09/11/2020 - Leo: parse json message + * + * @param metaData all the data strip to structure + * @param data the data recived from xAPP + * @return 0 success all other values are fault + */ +int parseMessageData(ReportingMessages_t &message, char *data, char *host, uint16_t &port) { + + auto loglevel = mdclog_level_get(); + + Document document; + document.Parse(data); + + const char* ran_ip; + if (document.HasMember("ranIp")) { + ran_ip = document["ranIp"].GetString(); + std::cout << "ranIP: " << ran_ip << ", length: " << strlen(ran_ip) << std::endl; + memcpy(host, ran_ip, strlen(ran_ip)); + } + else { + mdclog_write(MDCLOG_ERR, "ranIp not provided"); + return -1; + } + + int ran_port; + if (document.HasMember("ranPort")) { + ran_port = document["ranPort"].GetInt(); + std::cout << "ranPort: " << ran_port << std::endl; + port = (uint16_t) ran_port; + } + else { + mdclog_write(MDCLOG_ERR, "ranPort not provided"); + return -2; + } + + const char* ran_name; + if (document.HasMember("ranName")) { + ran_name = document["ranName"].GetString(); + std::cout << "ranName: " << ran_name << ", length: " << strlen(ran_name) << std::endl; + memcpy(message.message.enodbName, ran_name, strlen(ran_name)); + } + else { + mdclog_write(MDCLOG_ERR, "ranName not provided"); + return -3; + } + + const char* message_payload; + if (document.HasMember("payload")) { + message_payload = document["payload"].GetString(); + std::cout << "payload: " << message_payload << ", length: " << strlen(message_payload) << std::endl; + message.message.asndata = (unsigned char *) message_payload; + std::cout << "message.message.asndata: " << message.message.asndata << std::endl; + message.message.asnLength = (uint16_t) strlen(message_payload); + std::cout << "message.message.asnLength: " << message.message.asnLength << std::endl; + } + else { + mdclog_write(MDCLOG_ERR, "Payload not provided"); + return -4; + } + + std::cout << "Step 1" << std::endl; + + // val = strtok_r(nullptr, delimiter, &tmp); + // if (val != nullptr) { + // mdclog_write(MDCLOG_DEBUG, "ASN length parameter from message = %s", val); + // if (mdclog_level_get() >= MDCLOG_DEBUG) { + // mdclog_write(MDCLOG_DEBUG, "ASN length parameter from message = %s", val); + // } + // char *dummy; + // message.message.asnLength = (uint16_t) strtol(val, &dummy, 10); + // } else { + // mdclog_write(MDCLOG_ERR, "wrong ASN length for setup request %s", data); + // return -4; + // } + // + // message.message.asndata = (unsigned char *)tmp; // tmp is local but point to the location in data + + if (loglevel >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "Message from Xapp RAN name = %s host address = %s port = %d", + message.message.enodbName, host, port); + } + + std::cout << "Step 2" << std::endl; + + return 0; +} + + +/** + * + * @param events + * @param sctpMap + * @param numOfMessages + * @param rmrMessageBuffer + * @param ts + * @return + */ +int receiveDataFromSctp(struct epoll_event *events, + Sctp_Map_t *sctpMap, + int &numOfMessages, + RmrMessagesBuffer_t &rmrMessageBuffer, + struct timespec &ts) { + /* We have data on the fd waiting to be read. Read and display it. + * We must read whatever data is available completely, as we are running + * in edge-triggered mode and won't get a notification again for the same data. */ + ReportingMessages_t message {}; + auto done = 0; + auto loglevel = mdclog_level_get(); + + // get the identity of the interface + message.peerInfo = (ConnectedCU_t *)events->data.ptr; + + message.statCollector = StatCollector::GetInstance(); + struct timespec start{0, 0}; + struct timespec decodestart{0, 0}; + struct timespec end{0, 0}; + + E2AP_PDU_t *pdu = nullptr; + + + while (true) { + if (loglevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Start Read from SCTP %d fd", message.peerInfo->fileDescriptor); + clock_gettime(CLOCK_MONOTONIC, &start); + } + // read the buffer directly to rmr payload + message.message.asndata = rmrMessageBuffer.sendMessage->payload; + message.message.asnLength = rmrMessageBuffer.sendMessage->len = + read(message.peerInfo->fileDescriptor, rmrMessageBuffer.sendMessage->payload, RECEIVE_SCTP_BUFFER_SIZE); + + if (loglevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Finish Read from SCTP %d fd message length = %ld", + message.peerInfo->fileDescriptor, message.message.asnLength); + } + + memcpy(message.message.enodbName, message.peerInfo->enodbName, sizeof(message.peerInfo->enodbName)); + message.statCollector->incRecvMessage(string(message.message.enodbName)); + message.message.direction = 'U'; + message.message.time.tv_nsec = ts.tv_nsec; + message.message.time.tv_sec = ts.tv_sec; + + if (message.message.asnLength < 0) { + if (errno == EINTR) { + continue; + } + /* If errno == EAGAIN, that means we have read all + data. So goReportingMessages_t back to the main loop. */ + if (errno != EAGAIN) { + mdclog_write(MDCLOG_ERR, "Read error, %s ", strerror(errno)); + done = 1; + } else if (loglevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "EAGAIN - descriptor = %d", message.peerInfo->fileDescriptor); + } + break; + } else if (message.message.asnLength == 0) { + /* End of file. The remote has closed the connection. */ + if (loglevel >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "END of File Closed connection - descriptor = %d", + message.peerInfo->fileDescriptor); + } + done = 1; + break; + } + + if (loglevel >= MDCLOG_DEBUG) { + char printBuffer[4096]{}; + char *tmp = printBuffer; + for (size_t i = 0; i < (size_t)message.message.asnLength; ++i) { + snprintf(tmp, 3, "%02x", message.message.asndata[i]); + tmp += 2; + } + printBuffer[message.message.asnLength] = 0; + clock_gettime(CLOCK_MONOTONIC, &end); + mdclog_write(MDCLOG_DEBUG, "Before Encoding E2AP PDU for : %s, Read time is : %ld seconds, %ld nanoseconds", + message.peerInfo->enodbName, end.tv_sec - start.tv_sec, end.tv_nsec - start.tv_nsec); + mdclog_write(MDCLOG_DEBUG, "PDU buffer length = %ld, data = : %s", message.message.asnLength, + printBuffer); + clock_gettime(CLOCK_MONOTONIC, &decodestart); + } + + auto rval = asn_decode(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, (void **) &pdu, + message.message.asndata, message.message.asnLength); + if (rval.code != RC_OK) { + mdclog_write(MDCLOG_ERR, "Error %d Decoding (unpack) E2AP PDU from RAN : %s", rval.code, + message.peerInfo->enodbName); + //todo may need reset to pdu + break; + } + + if (loglevel >= MDCLOG_DEBUG) { + clock_gettime(CLOCK_MONOTONIC, &end); + mdclog_write(MDCLOG_DEBUG, "After Encoding E2AP PDU for : %s, Read time is : %ld seconds, %ld nanoseconds", + message.peerInfo->enodbName, end.tv_sec - decodestart.tv_sec, end.tv_nsec - decodestart.tv_nsec); + char *printBuffer; + size_t size; + FILE *stream = open_memstream(&printBuffer, &size); + asn_fprint(stream, &asn_DEF_E2AP_PDU, pdu); + mdclog_write(MDCLOG_DEBUG, "Encoding E2AP PDU past : %s", printBuffer); + clock_gettime(CLOCK_MONOTONIC, &decodestart); + } + + switch (pdu->present) { + case E2AP_PDU_PR_initiatingMessage: {//initiating message + asnInitiatingRequest(pdu, sctpMap,message, rmrMessageBuffer); + break; + } + case E2AP_PDU_PR_successfulOutcome: { //successful outcome + asnSuccsesfulMsg(pdu, sctpMap, message, rmrMessageBuffer); + break; + } + case E2AP_PDU_PR_unsuccessfulOutcome: { //Unsuccessful Outcome + asnUnSuccsesfulMsg(pdu, sctpMap, message, rmrMessageBuffer); + break; + } + default: + mdclog_write(MDCLOG_ERR, "Unknown index %d in E2AP PDU", pdu->present); + break; + } + if (loglevel >= MDCLOG_DEBUG) { + clock_gettime(CLOCK_MONOTONIC, &end); + mdclog_write(MDCLOG_DEBUG, + "After processing message and sent to rmr for : %s, Read time is : %ld seconds, %ld nanoseconds", + message.peerInfo->enodbName, end.tv_sec - decodestart.tv_sec, end.tv_nsec - decodestart.tv_nsec); + } + numOfMessages++; + if (pdu != nullptr) { + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu); + //ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + //pdu = nullptr; + } + } + + if (done) { + if (loglevel >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "Closed connection - descriptor = %d", message.peerInfo->fileDescriptor); + } + message.message.asnLength = rmrMessageBuffer.sendMessage->len = + snprintf((char *)rmrMessageBuffer.sendMessage->payload, + 256, + "%s|CU disconnected unexpectedly", + message.peerInfo->enodbName); + message.message.asndata = rmrMessageBuffer.sendMessage->payload; + + if (sendRequestToXapp(message, + RIC_SCTP_CONNECTION_FAILURE, + rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "SCTP_CONNECTION_FAIL message failed to send to xAPP"); + } + + /* Closing descriptor make epoll remove it from the set of descriptors which are monitored. */ + close(message.peerInfo->fileDescriptor); + cleanHashEntry((ConnectedCU_t *) events->data.ptr, sctpMap); + } + if (loglevel >= MDCLOG_DEBUG) { + clock_gettime(CLOCK_MONOTONIC, &end); + mdclog_write(MDCLOG_DEBUG, "from receive SCTP to send RMR time is %ld seconds and %ld nanoseconds", + end.tv_sec - start.tv_sec, end.tv_nsec - start.tv_nsec); + + } + return 0; +} + +static void buildAndsendSetupRequest(ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer, + E2AP_PDU_t *pdu, + vector &repValues) { + auto logLevel = mdclog_level_get(); + // now we can send the data to e2Mgr + auto buffer_size = RECEIVE_SCTP_BUFFER_SIZE * 2; + unsigned char buffer[RECEIVE_SCTP_BUFFER_SIZE * 2]; + auto *rmrMsg = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, buffer_size); + // encode to xml + auto er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu, buffer, buffer_size); + if (er.encoded == -1) { + mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", asn_DEF_E2AP_PDU.name, strerror(errno)); + } else if (er.encoded > (ssize_t) buffer_size) { + mdclog_write(MDCLOG_ERR, "Buffer of size %d is to small for %s, at %s line %d", + (int) buffer_size, + asn_DEF_E2AP_PDU.name, __func__, __LINE__); + } else { + string messageType("E2setupRequest"); + string ieName("E2setupRequestIEs"); + buffer[er.encoded] = '\0'; + buildXmlData(messageType, ieName, repValues, buffer, (size_t)er.encoded); + +// string xmlStr = (char *)buffer; +// auto removeSpaces = [] (string str) -> string { +// str.erase(remove(str.begin(), str.end(), ' '), str.end()); +// str.erase(remove(str.begin(), str.end(), '\t'), str.end()); +// return str; +// }; +// +// xmlStr = removeSpaces(xmlStr); +// // we have the XML +// rmrMsg->len = snprintf((char *)rmrMsg->payload, RECEIVE_SCTP_BUFFER_SIZE * 2, "%s:%d|%s", +// message.peerInfo->sctpParams->myIP.c_str(), +// message.peerInfo->sctpParams->rmrPort, +// xmlStr.c_str()); + rmrMsg->len = snprintf((char *)rmrMsg->payload, RECEIVE_SCTP_BUFFER_SIZE * 2, "%s:%d|%s", + message.peerInfo->sctpParams->myIP.c_str(), + message.peerInfo->sctpParams->rmrPort, + buffer); + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Setup request of size %d :\n %s\n", rmrMsg->len, rmrMsg->payload); + } + // send to RMR + message.message.messageType = rmrMsg->mtype = RIC_E2_SETUP_REQ; + rmrMsg->state = 0; + rmr_bytes2meid(rmrMsg, (unsigned char *) message.message.enodbName, strlen(message.message.enodbName)); + + static unsigned char tx[32]; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMsg, tx, strlen((const char *) tx)); + + rmrMsg = rmr_send_msg(rmrMessageBuffer.rmrCtx, rmrMsg); + if (rmrMsg == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR failed to send returned nullptr"); + } else if (rmrMsg->state != 0) { + char meid[RMR_MAX_MEID]{}; + if (rmrMsg->state == RMR_ERR_RETRY) { + usleep(5); + rmrMsg->state = 0; + mdclog_write(MDCLOG_INFO, "RETRY sending Message %d to Xapp from %s", + rmrMsg->mtype, rmr_get_meid(rmrMsg, (unsigned char *) meid)); + rmrMsg = rmr_send_msg(rmrMessageBuffer.rmrCtx, rmrMsg); + if (rmrMsg == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR failed send returned nullptr"); + } else if (rmrMsg->state != 0) { + mdclog_write(MDCLOG_ERR, + "RMR Retry failed %s sending request %d to Xapp from %s", + translateRmrErrorMessages(rmrMsg->state).c_str(), + rmrMsg->mtype, + rmr_get_meid(rmrMsg, (unsigned char *) meid)); + } + } else { + mdclog_write(MDCLOG_ERR, "RMR failed: %s. sending request %d to Xapp from %s", + translateRmrErrorMessages(rmrMsg->state).c_str(), + rmrMsg->mtype, + rmr_get_meid(rmrMsg, (unsigned char *) meid)); + } + } + message.peerInfo->gotSetup = true; + buildJsonMessage(message); + if (rmrMsg != nullptr) { + rmr_free_msg(rmrMsg); + } + } + +} + +int RAN_Function_list_To_Vector(RANfunctions_List_t& list, vector &runFunXML_v) { + auto index = 0; + runFunXML_v.clear(); + for (auto j = 0; j < list.list.count; j++) { + auto *raNfunctionItemIEs = (RANfunction_ItemIEs_t *)list.list.array[j]; + if (raNfunctionItemIEs->id == ProtocolIE_ID_id_RANfunction_Item && + (raNfunctionItemIEs->value.present == RANfunction_ItemIEs__value_PR_RANfunction_Item)) { + // encode to xml + E2SM_gNB_NRT_RANfunction_Definition_t *ranFunDef = nullptr; + auto rval = asn_decode(nullptr, ATS_ALIGNED_BASIC_PER, + &asn_DEF_E2SM_gNB_NRT_RANfunction_Definition, + (void **)&ranFunDef, + raNfunctionItemIEs->value.choice.RANfunction_Item.ranFunctionDefinition.buf, + raNfunctionItemIEs->value.choice.RANfunction_Item.ranFunctionDefinition.size); + if (rval.code != RC_OK) { + mdclog_write(MDCLOG_ERR, "Error %d Decoding (unpack) E2SM message from : %s", + rval.code, + asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name); + return -1; + } + +// if (mdclog_level_get() >= MDCLOG_DEBUG) { +// char *printBuffer; +// size_t size; +// FILE *stream = open_memstream(&printBuffer, &size); +// asn_fprint(stream, &asn_DEF_E2SM_gNB_NRT_RANfunction_Definition, ranFunDef); +// mdclog_write(MDCLOG_DEBUG, "Encoding E2SM %s PDU past : %s", +// asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name, +// printBuffer); +// } + auto xml_buffer_size = RECEIVE_SCTP_BUFFER_SIZE * 2; + unsigned char xml_buffer[RECEIVE_SCTP_BUFFER_SIZE * 2]; + // encode to xml + auto er = asn_encode_to_buffer(nullptr, + ATS_BASIC_XER, + &asn_DEF_E2SM_gNB_NRT_RANfunction_Definition, + ranFunDef, + xml_buffer, + xml_buffer_size); + if (er.encoded == -1) { + mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", + asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name, + strerror(errno)); + } else if (er.encoded > (ssize_t)xml_buffer_size) { + mdclog_write(MDCLOG_ERR, "Buffer of size %d is to small for %s, at %s line %d", + (int) xml_buffer_size, + asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name, __func__, __LINE__); + } else { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Encoding E2SM %s PDU number %d : %s", + asn_DEF_E2SM_gNB_NRT_RANfunction_Definition.name, + index++, + xml_buffer); + } + string runFuncs = (char *)(xml_buffer); + runFunXML_v.emplace_back(runFuncs); + } + } + } + return 0; +} + + + +int collectSetupAndServiceUpdate_RequestData(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + vector &RANfunctionsAdded_v, + vector &RANfunctionsModified_v) { + memset(message.peerInfo->enodbName, 0 , MAX_ENODB_NAME_SIZE); + for (auto i = 0; i < pdu->choice.initiatingMessage->value.choice.E2setupRequest.protocolIEs.list.count; i++) { + auto *ie = pdu->choice.initiatingMessage->value.choice.E2setupRequest.protocolIEs.list.array[i]; + if (ie->id == ProtocolIE_ID_id_GlobalE2node_ID) { + // get the ran name for meid + if (ie->value.present == E2setupRequestIEs__value_PR_GlobalE2node_ID) { + if (buildRanName(message.peerInfo->enodbName, ie) < 0) { + mdclog_write(MDCLOG_ERR, "Bad param in E2setupRequestIEs GlobalE2node_ID.\n"); + // no mesage will be sent + return -1; + } + memcpy(message.message.enodbName, message.peerInfo->enodbName, strlen(message.peerInfo->enodbName)); + sctpMap->setkey(message.message.enodbName, message.peerInfo); + } + } else if (ie->id == ProtocolIE_ID_id_RANfunctionsAdded) { + if (ie->value.present == E2setupRequestIEs__value_PR_RANfunctions_List) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Run function list have %d entries", + ie->value.choice.RANfunctions_List.list.count); + } + if (RAN_Function_list_To_Vector(ie->value.choice.RANfunctions_List, RANfunctionsAdded_v) != 0 ) { + return -1; + } + } + } else if (ie->id == ProtocolIE_ID_id_RANfunctionsModified) { + if (ie->value.present == E2setupRequestIEs__value_PR_RANfunctions_List) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Run function list have %d entries", + ie->value.choice.RANfunctions_List.list.count); + } + if (RAN_Function_list_To_Vector(ie->value.choice.RANfunctions_List, RANfunctionsModified_v) != 0 ) { + return -1; + } + } + } + } + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Run function vector have %ld entries", + RANfunctionsAdded_v.size()); + } + return 0; +} +/** + * + * @param pdu + * @param message + * @param rmrMessageBuffer + */ +void asnInitiatingRequest(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer) { + auto logLevel = mdclog_level_get(); + auto procedureCode = ((InitiatingMessage_t *) pdu->choice.initiatingMessage)->procedureCode; + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Initiating message %ld\n", procedureCode); + } + switch (procedureCode) { + case ProcedureCode_id_E2setup: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got E2setup"); + } + + // first get the message as XML buffer + auto setup_xml_buffer_size = RECEIVE_SCTP_BUFFER_SIZE * 2; + unsigned char setup_xml_buffer[RECEIVE_SCTP_BUFFER_SIZE * 2]; + + auto er = asn_encode_to_buffer(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, pdu, setup_xml_buffer, setup_xml_buffer_size); + if (er.encoded == -1) { + mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", asn_DEF_E2AP_PDU.name, strerror(errno)); + break; + } else if (er.encoded > (ssize_t) setup_xml_buffer_size) { + mdclog_write(MDCLOG_ERR, "Buffer of size %d is to small for %s, at %s line %d", + (int)setup_xml_buffer_size, + asn_DEF_E2AP_PDU.name, __func__, __LINE__); + break; + } + std::string xmlString(setup_xml_buffer_size, setup_xml_buffer_size + er.encoded); + + vector RANfunctionsAdded_v; + vector RANfunctionsModified_v; + RANfunctionsAdded_v.clear(); + RANfunctionsModified_v.clear(); + if (collectSetupAndServiceUpdate_RequestData(pdu, sctpMap, message, + RANfunctionsAdded_v, RANfunctionsModified_v) != 0) { + break; + } + + buildAndsendSetupRequest(message, rmrMessageBuffer, pdu, RANfunctionsAdded_v); + break; + } + case ProcedureCode_id_RICserviceUpdate: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICserviceUpdate %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SERVICE_UPDATE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_SERVICE_UPDATE message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_ErrorIndication: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got ErrorIndication %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_ERROR_INDICATION, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_ERROR_INDICATION failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_Reset: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got Reset %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_X2_RESET, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_X2_RESET message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICcontrol: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICcontrol %s", message.message.enodbName); + } + break; + } + case ProcedureCode_id_RICindication: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICindication - initiating %s", message.message.enodbName); + } + for (auto i = 0; i < pdu->choice.initiatingMessage->value.choice.RICindication.protocolIEs.list.count; i++) { + auto messageSent = false; + RICindication_IEs_t *ie = pdu->choice.initiatingMessage->value.choice.RICindication.protocolIEs.list.array[i]; + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->id == ProtocolIE_ID_id_RICrequestID) { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RIC requestId entry, ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->value.present == RICindication_IEs__value_PR_RICrequestID) { + static unsigned char tx[32]; + message.message.messageType = rmrMessageBuffer.sendMessage->mtype = RIC_INDICATION; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, strlen((const char *) tx)); + int exit_status = rmr_bytes2meid(rmrMessageBuffer.sendMessage, + (unsigned char *)message.message.enodbName, + strlen(message.message.enodbName)); + rmrMessageBuffer.sendMessage->state = 0; + + // set sub_id to ricRequestorID for future lookup in rmr routing table. + // it was set to ricInstanceID before + rmrMessageBuffer.sendMessage->sub_id = ie->value.choice.RICrequestID.ricRequestorID; + // rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricInstanceID; + + unsigned char *me_id; + unsigned char* me_id_ptr = rmr_get_meid(rmrMessageBuffer.sendMessage, me_id); + mdclog_write(MDCLOG_DEBUG, "Received MEID: %s, exit_status %d, ptr %s", me_id, exit_status, me_id_ptr); + + //ie->value.choice.RICrequestID.ricInstanceID; + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "sub id = %d, mtype = %d, ric instance id %ld, requestor id = %ld", + rmrMessageBuffer.sendMessage->sub_id, + rmrMessageBuffer.sendMessage->mtype, + ie->value.choice.RICrequestID.ricInstanceID, + ie->value.choice.RICrequestID.ricRequestorID); + } + sendRmrMessage(rmrMessageBuffer, message); + messageSent = true; + } else { + mdclog_write(MDCLOG_ERR, "RIC request id missing illigal request"); + } + } + if (messageSent) { + break; + } + } + break; + } + case ProcedureCode_id_RICserviceQuery: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICserviceQuery %s", message.message.enodbName); + } + break; + } + case ProcedureCode_id_RICsubscription: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICsubscription %s", message.message.enodbName); + } + break; + } + case ProcedureCode_id_RICsubscriptionDelete: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICsubscriptionDelete %s", message.message.enodbName); + } + break; + } + default: { + mdclog_write(MDCLOG_ERR, "Undefined or not supported message = %ld", procedureCode); + message.message.messageType = 0; // no RMR message type yet + + buildJsonMessage(message); + + break; + } + } +} + +/** + * + * @param pdu + * @param message + * @param rmrMessageBuffer + */ +void asnSuccsesfulMsg(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer) { + auto procedureCode = pdu->choice.successfulOutcome->procedureCode; + auto logLevel = mdclog_level_get(); + if (logLevel >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "Successful Outcome %ld", procedureCode); + } + switch (procedureCode) { + case ProcedureCode_id_E2setup: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got E2setup\n"); + } + break; + } + case ProcedureCode_id_ErrorIndication: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got ErrorIndication %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_ERROR_INDICATION, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_ERROR_INDICATION failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_Reset: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got Reset %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_X2_RESET, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_X2_RESET message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICcontrol: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICcontrol %s", message.message.enodbName); + } + for (auto i = 0; + i < pdu->choice.successfulOutcome->value.choice.RICcontrolAcknowledge.protocolIEs.list.count; i++) { + auto messageSent = false; + RICcontrolAcknowledge_IEs_t *ie = pdu->choice.successfulOutcome->value.choice.RICcontrolAcknowledge.protocolIEs.list.array[i]; + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->id == ProtocolIE_ID_id_RICrequestID) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RIC requestId entry, ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->value.present == RICcontrolAcknowledge_IEs__value_PR_RICrequestID) { + message.message.messageType = rmrMessageBuffer.sendMessage->mtype = RIC_CONTROL_ACK; + rmrMessageBuffer.sendMessage->state = 0; +// rmrMessageBuffer.sendMessage->sub_id = (int) ie->value.choice.RICrequestID.ricRequestorID; + rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricInstanceID; + + static unsigned char tx[32]; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, strlen((const char *) tx)); + rmr_bytes2meid(rmrMessageBuffer.sendMessage, + (unsigned char *)message.message.enodbName, + strlen(message.message.enodbName)); + + sendRmrMessage(rmrMessageBuffer, message); + messageSent = true; + } else { + mdclog_write(MDCLOG_ERR, "RIC request id missing illigal request"); + } + } + if (messageSent) { + break; + } + } + + break; + } + case ProcedureCode_id_RICindication: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICindication %s", message.message.enodbName); + } + for (auto i = 0; i < pdu->choice.initiatingMessage->value.choice.RICindication.protocolIEs.list.count; i++) { + auto messageSent = false; + RICindication_IEs_t *ie = pdu->choice.initiatingMessage->value.choice.RICindication.protocolIEs.list.array[i]; + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->id == ProtocolIE_ID_id_RICrequestID) { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RIC requestId entry, ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->value.present == RICindication_IEs__value_PR_RICrequestID) { + static unsigned char tx[32]; + message.message.messageType = rmrMessageBuffer.sendMessage->mtype = RIC_INDICATION; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, strlen((const char *) tx)); + rmr_bytes2meid(rmrMessageBuffer.sendMessage, + (unsigned char *)message.message.enodbName, + strlen(message.message.enodbName)); + rmrMessageBuffer.sendMessage->state = 0; + rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricInstanceID; + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "RIC sub id = %d, message type = %d", + rmrMessageBuffer.sendMessage->sub_id, + rmrMessageBuffer.sendMessage->mtype); + } + sendRmrMessage(rmrMessageBuffer, message); + messageSent = true; + } else { + mdclog_write(MDCLOG_ERR, "RIC request id missing illigal request"); + } + } + if (messageSent) { + break; + } + } + break; + } + case ProcedureCode_id_RICserviceQuery: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICserviceQuery %s", message.message.enodbName); + } + break; + } + case ProcedureCode_id_RICserviceUpdate: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICserviceUpdate %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SERVICE_UPDATE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_SERVICE_UPDATE message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICsubscription: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICsubscription %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SUB_RESP, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "Subscription successful message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICsubscriptionDelete: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICsubscriptionDelete %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SUB_DEL_RESP, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "Subscription delete successful message failed to send to xAPP"); + } + break; + } + default: { + mdclog_write(MDCLOG_WARN, "Undefined or not supported message = %ld", procedureCode); + message.message.messageType = 0; // no RMR message type yet + buildJsonMessage(message); + + break; + } + } +} + +/** + * + * @param pdu + * @param message + * @param rmrMessageBuffer + */ +void asnUnSuccsesfulMsg(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer) { + auto procedureCode = pdu->choice.unsuccessfulOutcome->procedureCode; + auto logLevel = mdclog_level_get(); + if (logLevel >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "Unsuccessful Outcome %ld", procedureCode); + } + switch (procedureCode) { + case ProcedureCode_id_E2setup: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got E2setup\n"); + } + break; + } + case ProcedureCode_id_ErrorIndication: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got ErrorIndication %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_ERROR_INDICATION, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_ERROR_INDICATION failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_Reset: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got Reset %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_X2_RESET, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_X2_RESET message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICcontrol: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICcontrol %s", message.message.enodbName); + } + for (int i = 0; + i < pdu->choice.unsuccessfulOutcome->value.choice.RICcontrolFailure.protocolIEs.list.count; i++) { + auto messageSent = false; + RICcontrolFailure_IEs_t *ie = pdu->choice.unsuccessfulOutcome->value.choice.RICcontrolFailure.protocolIEs.list.array[i]; + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->id == ProtocolIE_ID_id_RICrequestID) { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RIC requestId entry, ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->value.present == RICcontrolFailure_IEs__value_PR_RICrequestID) { + message.message.messageType = rmrMessageBuffer.sendMessage->mtype = RIC_CONTROL_FAILURE; + rmrMessageBuffer.sendMessage->state = 0; +// rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricRequestorID; + rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricInstanceID; + static unsigned char tx[32]; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, strlen((const char *) tx)); + rmr_bytes2meid(rmrMessageBuffer.sendMessage, (unsigned char *) message.message.enodbName, + strlen(message.message.enodbName)); + sendRmrMessage(rmrMessageBuffer, message); + messageSent = true; + } else { + mdclog_write(MDCLOG_ERR, "RIC request id missing illigal request"); + } + } + if (messageSent) { + break; + } + } + break; + } + case ProcedureCode_id_RICindication: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICindication %s", message.message.enodbName); + } + for (auto i = 0; i < pdu->choice.initiatingMessage->value.choice.RICindication.protocolIEs.list.count; i++) { + auto messageSent = false; + RICindication_IEs_t *ie = pdu->choice.initiatingMessage->value.choice.RICindication.protocolIEs.list.array[i]; + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->id == ProtocolIE_ID_id_RICrequestID) { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RIC requestId entry, ie type (ProtocolIE_ID) = %ld", ie->id); + } + if (ie->value.present == RICindication_IEs__value_PR_RICrequestID) { + static unsigned char tx[32]; + message.message.messageType = rmrMessageBuffer.sendMessage->mtype = RIC_INDICATION; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, strlen((const char *) tx)); + rmr_bytes2meid(rmrMessageBuffer.sendMessage, + (unsigned char *)message.message.enodbName, + strlen(message.message.enodbName)); + rmrMessageBuffer.sendMessage->state = 0; +// rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricRequestorID; + rmrMessageBuffer.sendMessage->sub_id = (int)ie->value.choice.RICrequestID.ricInstanceID; + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "RIC sub id = %d, message type = %d", + rmrMessageBuffer.sendMessage->sub_id, + rmrMessageBuffer.sendMessage->mtype); + } + sendRmrMessage(rmrMessageBuffer, message); + messageSent = true; + } else { + mdclog_write(MDCLOG_ERR, "RIC request id missing illigal request"); + } + } + if (messageSent) { + break; + } + } + break; + } + case ProcedureCode_id_RICserviceQuery: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICserviceQuery %s", message.message.enodbName); + } + break; + } + case ProcedureCode_id_RICserviceUpdate: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICserviceUpdate %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SERVICE_UPDATE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "RIC_SERVICE_UPDATE message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICsubscription: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICsubscription %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SUB_FAILURE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "Subscription unsuccessful message failed to send to xAPP"); + } + break; + } + case ProcedureCode_id_RICsubscriptionDelete: { + if (logLevel >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got RICsubscriptionDelete %s", message.message.enodbName); + } + if (sendRequestToXapp(message, RIC_SUB_DEL_FAILURE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "Subscription Delete unsuccessful message failed to send to xAPP"); + } + break; + } + default: { + mdclog_write(MDCLOG_WARN, "Undefined or not supported message = %ld", procedureCode); + message.message.messageType = 0; // no RMR message type yet + + buildJsonMessage(message); + + break; + } + } +} + +/** + * + * @param message + * @param requestId + * @param rmrMmessageBuffer + * @return + */ +int sendRequestToXapp(ReportingMessages_t &message, + int requestId, + RmrMessagesBuffer_t &rmrMmessageBuffer) { + rmr_bytes2meid(rmrMmessageBuffer.sendMessage, + (unsigned char *)message.message.enodbName, + strlen(message.message.enodbName)); + message.message.messageType = rmrMmessageBuffer.sendMessage->mtype = requestId; + rmrMmessageBuffer.sendMessage->state = 0; + static unsigned char tx[32]; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMmessageBuffer.sendMessage, tx, strlen((const char *) tx)); + + auto rc = sendRmrMessage(rmrMmessageBuffer, message); + return rc; +} + + +void getRmrContext(sctp_params_t &pSctpParams) { + pSctpParams.rmrCtx = nullptr; + pSctpParams.rmrCtx = rmr_init(pSctpParams.rmrAddress, RECEIVE_XAPP_BUFFER_SIZE, RMRFL_NONE); + if (pSctpParams.rmrCtx == nullptr) { + mdclog_write(MDCLOG_ERR, "Failed to initialize RMR"); + return; + } + + rmr_set_stimeout(pSctpParams.rmrCtx, 0); // disable retries for any send operation + // we need to find that routing table exist and we can run + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "We are after RMR INIT wait for RMR_Ready"); + } + int rmrReady = 0; + int count = 0; + while (!rmrReady) { + if ((rmrReady = rmr_ready(pSctpParams.rmrCtx)) == 0) { + sleep(1); + } + count++; + if (count % 60 == 0) { + mdclog_write(MDCLOG_INFO, "waiting to RMR ready state for %d seconds", count); + } + } + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "RMR running"); + } + rmr_init_trace(pSctpParams.rmrCtx, 200); + // get the RMR fd for the epoll + pSctpParams.rmrListenFd = rmr_get_rcvfd(pSctpParams.rmrCtx); + struct epoll_event event{}; + // add RMR fd to epoll + event.events = (EPOLLIN); + event.data.fd = pSctpParams.rmrListenFd; + // add listening RMR FD to epoll + if (epoll_ctl(pSctpParams.epoll_fd, EPOLL_CTL_ADD, pSctpParams.rmrListenFd, &event)) { + mdclog_write(MDCLOG_ERR, "Failed to add RMR descriptor to epoll"); + close(pSctpParams.rmrListenFd); + rmr_close(pSctpParams.rmrCtx); + pSctpParams.rmrCtx = nullptr; + } +} + +int PER_FromXML(ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMessageBuffer) { + E2AP_PDU_t *pdu = nullptr; + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "got xml setup response of size %d is:%s", + rmrMessageBuffer.rcvMessage->len, rmrMessageBuffer.rcvMessage->payload); + } + auto rval = asn_decode(nullptr, ATS_BASIC_XER, &asn_DEF_E2AP_PDU, (void **) &pdu, + rmrMessageBuffer.rcvMessage->payload, rmrMessageBuffer.rcvMessage->len); + if (rval.code != RC_OK) { + mdclog_write(MDCLOG_ERR, "Error %d Decoding (unpack) setup response from E2MGR : %s", + rval.code, + message.message.enodbName); + return -1; + } + + int buff_size = RECEIVE_XAPP_BUFFER_SIZE; + auto er = asn_encode_to_buffer(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, pdu, + rmrMessageBuffer.rcvMessage->payload, buff_size); + if (er.encoded == -1) { + mdclog_write(MDCLOG_ERR, "encoding of %s failed, %s", asn_DEF_E2AP_PDU.name, strerror(errno)); + return -1; + } else if (er.encoded > (ssize_t)buff_size) { + mdclog_write(MDCLOG_ERR, "Buffer of size %d is to small for %s, at %s line %d", + (int)rmrMessageBuffer.rcvMessage->len, + asn_DEF_E2AP_PDU.name, + __func__, + __LINE__); + return -1; + } + rmrMessageBuffer.rcvMessage->len = er.encoded; + return 0; +} + +/** + * + * @param sctpMap + * @param rmrMessageBuffer + * @param ts + * @return + */ +int receiveXappMessages(Sctp_Map_t *sctpMap, + RmrMessagesBuffer_t &rmrMessageBuffer, + struct timespec &ts) { + if (rmrMessageBuffer.rcvMessage == nullptr) { + //we have error + mdclog_write(MDCLOG_ERR, "RMR Allocation message, %s", strerror(errno)); + return -1; + } + + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Call to rmr_rcv_msg"); + } + rmrMessageBuffer.rcvMessage = rmr_rcv_msg(rmrMessageBuffer.rmrCtx, rmrMessageBuffer.rcvMessage); + if (rmrMessageBuffer.rcvMessage == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR Receving message with null pointer, Realloc rmr mesage buffer"); + rmrMessageBuffer.rcvMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); + return -2; + } + ReportingMessages_t message; + message.message.direction = 'D'; + message.message.time.tv_nsec = ts.tv_nsec; + message.message.time.tv_sec = ts.tv_sec; + + // get message payload + //auto msgData = msg->payload; + if (rmrMessageBuffer.rcvMessage->state != 0) { + mdclog_write(MDCLOG_ERR, "RMR Receving message with stat = %d", rmrMessageBuffer.rcvMessage->state); + return -1; + } + rmr_get_meid(rmrMessageBuffer.rcvMessage, (unsigned char *)message.message.enodbName); + switch (rmrMessageBuffer.rcvMessage->mtype) { + case RIC_E2_SETUP_RESP : { + if (PER_FromXML(message, rmrMessageBuffer) != 0) { + break; + } + + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_E2_SETUP_RESP"); + return -6; + } + break; + } + case RIC_E2_SETUP_FAILURE : { + if (PER_FromXML(message, rmrMessageBuffer) != 0) { + break; + } + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_E2_SETUP_FAILURE"); + return -6; + } + break; + } + case RIC_ERROR_INDICATION: { + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_ERROR_INDICATION"); + return -6; + } + break; + } + case RIC_SUB_REQ: { + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_SUB_REQ"); + return -6; + } + break; + } + case RIC_SUB_DEL_REQ: { + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_SUB_DEL_REQ"); + return -6; + } + break; + } + case RIC_CONTROL_REQ: { + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_CONTROL_REQ"); + return -6; + } + break; + } + case RIC_SERVICE_QUERY: { + if (PER_FromXML(message, rmrMessageBuffer) != 0) { + break; + } + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_SERVICE_QUERY"); + return -6; + } + break; + } + case RIC_SERVICE_UPDATE_ACK: { + if (PER_FromXML(message, rmrMessageBuffer) != 0) { + break; + } + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_SERVICE_UPDATE_ACK"); + return -6; + } + break; + } + case RIC_SERVICE_UPDATE_FAILURE: { + if (PER_FromXML(message, rmrMessageBuffer) != 0) { + break; + } + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_SERVICE_UPDATE_FAILURE"); + return -6; + } + break; + } + case RIC_X2_RESET: { + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_X2_RESET"); + return -6; + } + break; + } + case RIC_X2_RESET_RESP: { + if (sendDirectionalSctpMsg(rmrMessageBuffer, message, 0, sctpMap) != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send RIC_X2_RESET_RESP"); + return -6; + } + break; + } + case RIC_SCTP_CLEAR_ALL: { + mdclog_write(MDCLOG_INFO, "RIC_SCTP_CLEAR_ALL"); + // loop on all keys and close socket and then erase all map. + vector v; + sctpMap->getKeys(v); + for (auto const &iter : v) { //}; iter != sctpMap.end(); iter++) { + if (!boost::starts_with((string) (iter), "host:") && !boost::starts_with((string) (iter), "msg:")) { + auto *peerInfo = (ConnectedCU_t *) sctpMap->find(iter); + if (peerInfo == nullptr) { + continue; + } + close(peerInfo->fileDescriptor); + memcpy(message.message.enodbName, peerInfo->enodbName, sizeof(peerInfo->enodbName)); + message.message.direction = 'D'; + message.message.time.tv_nsec = ts.tv_nsec; + message.message.time.tv_sec = ts.tv_sec; + + message.message.asnLength = rmrMessageBuffer.sendMessage->len = + snprintf((char *)rmrMessageBuffer.sendMessage->payload, + 256, + "%s|RIC_SCTP_CLEAR_ALL", + peerInfo->enodbName); + message.message.asndata = rmrMessageBuffer.sendMessage->payload; + mdclog_write(MDCLOG_INFO, "%s", message.message.asndata); + if (sendRequestToXapp(message, RIC_SCTP_CONNECTION_FAILURE, rmrMessageBuffer) != 0) { + mdclog_write(MDCLOG_ERR, "SCTP_CONNECTION_FAIL message failed to send to xAPP"); + } + free(peerInfo); + } + } + + sleep(1); + sctpMap->clear(); + break; + } + case E2_TERM_KEEP_ALIVE_REQ: { + // send message back + rmr_bytes2payload(rmrMessageBuffer.sendMessage, + (unsigned char *)rmrMessageBuffer.ka_message, + rmrMessageBuffer.ka_message_len); + rmrMessageBuffer.sendMessage->mtype = E2_TERM_KEEP_ALIVE_RESP; + rmrMessageBuffer.sendMessage->state = 0; + static unsigned char tx[32]; + auto txLen = snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(rmrMessageBuffer.sendMessage, tx, txLen); + rmrMessageBuffer.sendMessage = rmr_send_msg(rmrMessageBuffer.rmrCtx, rmrMessageBuffer.sendMessage); + if (rmrMessageBuffer.sendMessage == nullptr) { + rmrMessageBuffer.sendMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); + mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP RMR message returned NULL"); + } else if (rmrMessageBuffer.sendMessage->state != 0) { + mdclog_write(MDCLOG_ERR, "Failed to send E2_TERM_KEEP_ALIVE_RESP, on RMR state = %d ( %s)", + rmrMessageBuffer.sendMessage->state, translateRmrErrorMessages(rmrMessageBuffer.sendMessage->state).c_str()); + } else if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Got Keep Alive Request send : %s", rmrMessageBuffer.ka_message); + } + + break; + } + case 42000: { + mdclog_write(MDCLOG_INFO, "Received message 42000"); + + // sendMessageSocket(1234); + break; + } + default: + mdclog_write(MDCLOG_WARN, "Message Type : %d is not seported", rmrMessageBuffer.rcvMessage->mtype); + message.message.asndata = rmrMessageBuffer.rcvMessage->payload; + message.message.asnLength = rmrMessageBuffer.rcvMessage->len; + message.message.time.tv_nsec = ts.tv_nsec; + message.message.time.tv_sec = ts.tv_sec; + message.message.messageType = rmrMessageBuffer.rcvMessage->mtype; + + buildJsonMessage(message); + + + return -7; + } + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "EXIT OK from %s", __FUNCTION__); + } + return 0; +} + +int sendMessageSocket(const int dest_port) { + + const char* dest_ip = "10.0.2.100"; + + int sckfd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); + if (sckfd < 0) { + mdclog_write(MDCLOG_ERR, "ERROR: OPEN SOCKET"); + close(sckfd); + return -1; + } + + // SET SOCKET OPTIONS TO RELEASE THE SOCKET ADDRESS IMMEDIATELY AFTER + // THE SOCKET IS CLOSED + int option(1); + setsockopt(sckfd, SOL_SOCKET, SO_REUSEADDR, (char*)&option, sizeof(option)); + + struct sockaddr_in dest_addr = {0}; + dest_addr.sin_family = AF_INET; + dest_addr.sin_port = htons(dest_port); + + // convert dest_ip from char* to network address + if (inet_pton(AF_INET, dest_ip, &dest_addr.sin_addr) <= 0) { + mdclog_write(MDCLOG_ERR, "ERROR CONVERTING IP TO INTERNET ADDR"); + close(sckfd); // if conversion fail, close the socket and return error -2 + return -2; + } + + if (connect(sckfd, (struct sockaddr *) &dest_addr, sizeof(dest_addr)) < 0) { + mdclog_write(MDCLOG_ERR, "ERROR: CONNECT"); + close(sckfd); + return -3; + } + + // TRANSMIT DATA + const size_t max_size = 512; + char buf[max_size] = "Hello, Server!"; // store the data in a buffer + size_t data_size = 14; + int sent_size = sctp_sendmsg(sckfd, buf, data_size, NULL, 0, 0, 0, 0, 0, 0 ); + // int sent_size = sctp_sendmsg(sckfd, (void *) msg, strlen(msg) + 1, NULL, 0, 0, 0, 0, 0, 0 ); + + if(sent_size < 0) { // the send returns a size of -1 in case of errors + mdclog_write(MDCLOG_ERR, "ERROR: SEND"); + close(sckfd); // if error close the socket and exit + return -4; + } + else { + mdclog_write(MDCLOG_INFO, "Message sent"); + } + + close(sckfd); + + return 0; + + // // open a SOCK_STREAM (TCP) socket + // int sckfd = socket(AF_INET, SOCK_STREAM, 0); + // if (sckfd < 0){ + // mdclog_write(MDCLOG_ERR, "ERROR: OPEN SOCKET"); + // close(sckfd); + // return -1; + // } + // + // // SET SOCKET OPTIONS TO RELEASE THE SOCKET ADDRESS IMMEDIATELY AFTER + // // THE SOCKET IS CLOSED + // int option(1); + // setsockopt(sckfd, SOL_SOCKET, SO_REUSEADDR, (char*)&option, sizeof(option)); + // + // //SET SERVER DESTINATION ADDRESS + // struct sockaddr_in dest_addr = {0}; // set all elements of the struct to 0 + // dest_addr.sin_family = AF_INET; // address family is AF_INET (IPV4) + // + // // convert dest_port to network number format + // dest_addr.sin_port = htons(dest_port); + // // convert dest_ip from char* to network address + // if (inet_pton(AF_INET, dest_ip, &dest_addr.sin_addr) <= 0) { + // mdclog_write(MDCLOG_ERR, "ERROR CONVERTING IP TO INTERNET ADDR"); + // close(sckfd); // if conversion fail, close the socket and return error -2 + // return -2; + // } + // + // //CONNECT THE SOCKET TO THE SERVER IP:PORT SPECIFIED INTO DEST_ADDR + // if (connect(sckfd, (struct sockaddr*) &dest_addr, sizeof(dest_addr)) < 0) { + // mdclog_write(MDCLOG_ERR, "ERROR: CONNECT"); + // close(sckfd); // if connection failed return + // return -3; + // } + // + // //TRANSMIT DATA + // const size_t max_size = 512; + // char buf[max_size] = "Hello from e2term"; // store the data in a buffer + // size_t data_size = 10; + // int sent_size = send(sckfd,buf,data_size,0); // send the data through sckfd + // + // if(sent_size < 0) { // the send returns a size of -1 in case of errors + // mdclog_write(MDCLOG_ERR, "ERROR: SEND"); + // close(sckfd); // if error close the socket and exit + // return -4; + // } + // else { + // mdclog_write(MDCLOG_INFO, "Message sent"); + // } + // + // memset(buf, 0, max_size); // set buffer to zero for next read + // + // //CLOSE THE SOCKET + // close(sckfd); +} + +/** + * Send message to the CU that is not expecting for successful or unsuccessful results + * @param messageBuffer + * @param message + * @param failedMsgId + * @param sctpMap + * @return + */ +int sendDirectionalSctpMsg(RmrMessagesBuffer_t &messageBuffer, + ReportingMessages_t &message, + int failedMsgId, + Sctp_Map_t *sctpMap) { + + getRequestMetaData(message, messageBuffer); + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "send message to %s address", message.message.enodbName); + } + + auto rc = sendMessagetoCu(sctpMap, messageBuffer, message, failedMsgId); + return rc; +} + +/** + * + * @param sctpMap + * @param messageBuffer + * @param message + * @param failedMesgId + * @return + */ +int sendMessagetoCu(Sctp_Map_t *sctpMap, + RmrMessagesBuffer_t &messageBuffer, + ReportingMessages_t &message, + int failedMesgId) { + auto *peerInfo = (ConnectedCU_t *) sctpMap->find(message.message.enodbName); + if (peerInfo == nullptr) { + if (failedMesgId != 0) { + sendFailedSendingMessagetoXapp(messageBuffer, message, failedMesgId); + } else { + mdclog_write(MDCLOG_ERR, "Failed to send message no CU entry %s", message.message.enodbName); + } + return -1; + } + + // get the FD + message.message.messageType = messageBuffer.rcvMessage->mtype; + auto rc = sendSctpMsg(peerInfo, message, sctpMap); + return rc; +} + +/** + * + * @param rmrCtx the rmr context to send and receive + * @param msg the msg we got fromxApp + * @param metaData data from xApp in ordered struct + * @param failedMesgId the return message type error + */ +void +sendFailedSendingMessagetoXapp(RmrMessagesBuffer_t &rmrMessageBuffer, ReportingMessages_t &message, int failedMesgId) { + rmr_mbuf_t *msg = rmrMessageBuffer.sendMessage; + msg->len = snprintf((char *) msg->payload, 200, "the gNb/eNode name %s not found", + message.message.enodbName); + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "%s", msg->payload); + } + msg->mtype = failedMesgId; + msg->state = 0; + + static unsigned char tx[32]; + snprintf((char *) tx, sizeof tx, "%15ld", transactionCounter++); + rmr_bytes2xact(msg, tx, strlen((const char *) tx)); + + sendRmrMessage(rmrMessageBuffer, message); +} + + + +/** + * + * @param epoll_fd + * @param peerInfo + * @param events + * @param sctpMap + * @param enodbName + * @param msgType + * @return + */ +int addToEpoll(int epoll_fd, + ConnectedCU_t *peerInfo, + uint32_t events, + Sctp_Map_t *sctpMap, + char *enodbName, + int msgType) { + // Add to Epol + struct epoll_event event{}; + event.data.ptr = peerInfo; + event.events = events; + if (epoll_ctl(epoll_fd, EPOLL_CTL_ADD, peerInfo->fileDescriptor, &event) < 0) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "epoll_ctl EPOLL_CTL_ADD (may chack not to quit here), %s, %s %d", + strerror(errno), __func__, __LINE__); + } + close(peerInfo->fileDescriptor); + if (enodbName != nullptr) { + cleanHashEntry(peerInfo, sctpMap); + char key[MAX_ENODB_NAME_SIZE * 2]; + snprintf(key, MAX_ENODB_NAME_SIZE * 2, "msg:%s|%d", enodbName, msgType); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "remove key = %s from %s at line %d", key, __FUNCTION__, __LINE__); + } + auto tmp = sctpMap->find(key); + if (tmp) { + free(tmp); + sctpMap->erase(key); + } + } else { + peerInfo->enodbName[0] = 0; + } + mdclog_write(MDCLOG_ERR, "epoll_ctl EPOLL_CTL_ADD (may chack not to quit here)"); + return -1; + } + return 0; +} + +/** + * + * @param epoll_fd + * @param peerInfo + * @param events + * @param sctpMap + * @param enodbName + * @param msgType + * @return + */ +int modifyToEpoll(int epoll_fd, + ConnectedCU_t *peerInfo, + uint32_t events, + Sctp_Map_t *sctpMap, + char *enodbName, + int msgType) { + // Add to Epol + struct epoll_event event{}; + event.data.ptr = peerInfo; + event.events = events; + if (epoll_ctl(epoll_fd, EPOLL_CTL_MOD, peerInfo->fileDescriptor, &event) < 0) { + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "epoll_ctl EPOLL_CTL_MOD (may chack not to quit here), %s, %s %d", + strerror(errno), __func__, __LINE__); + } + close(peerInfo->fileDescriptor); + cleanHashEntry(peerInfo, sctpMap); + char key[MAX_ENODB_NAME_SIZE * 2]; + snprintf(key, MAX_ENODB_NAME_SIZE * 2, "msg:%s|%d", enodbName, msgType); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "remove key = %s from %s at line %d", key, __FUNCTION__, __LINE__); + } + auto tmp = sctpMap->find(key); + if (tmp) { + free(tmp); + } + sctpMap->erase(key); + mdclog_write(MDCLOG_ERR, "epoll_ctl EPOLL_CTL_ADD (may chack not to quit here)"); + return -1; + } + return 0; +} + + +int sendRmrMessage(RmrMessagesBuffer_t &rmrMessageBuffer, ReportingMessages_t &message) { + buildJsonMessage(message); + + rmrMessageBuffer.sendMessage = rmr_send_msg(rmrMessageBuffer.rmrCtx, rmrMessageBuffer.sendMessage); + + if (rmrMessageBuffer.sendMessage == nullptr) { + rmrMessageBuffer.sendMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); + mdclog_write(MDCLOG_ERR, "RMR failed send message returned with NULL pointer"); + return -1; + } + + if (rmrMessageBuffer.sendMessage->state != 0) { + char meid[RMR_MAX_MEID]{}; + if (rmrMessageBuffer.sendMessage->state == RMR_ERR_RETRY) { + usleep(5); + rmrMessageBuffer.sendMessage->state = 0; + mdclog_write(MDCLOG_INFO, "RETRY sending Message type %d to Xapp from %s", + rmrMessageBuffer.sendMessage->mtype, + rmr_get_meid(rmrMessageBuffer.sendMessage, (unsigned char *)meid)); + rmrMessageBuffer.sendMessage = rmr_send_msg(rmrMessageBuffer.rmrCtx, rmrMessageBuffer.sendMessage); + if (rmrMessageBuffer.sendMessage == nullptr) { + mdclog_write(MDCLOG_ERR, "RMR failed send message returned with NULL pointer"); + rmrMessageBuffer.sendMessage = rmr_alloc_msg(rmrMessageBuffer.rmrCtx, RECEIVE_XAPP_BUFFER_SIZE); + return -1; + } else if (rmrMessageBuffer.sendMessage->state != 0) { + mdclog_write(MDCLOG_ERR, + "Message state %s while sending request %d to Xapp from %s after retry of 10 microseconds", + translateRmrErrorMessages(rmrMessageBuffer.sendMessage->state).c_str(), + rmrMessageBuffer.sendMessage->mtype, + rmr_get_meid(rmrMessageBuffer.sendMessage, (unsigned char *)meid)); + auto rc = rmrMessageBuffer.sendMessage->state; + return rc; + } + } else { + mdclog_write(MDCLOG_ERR, "Message state %s while sending request %d to Xapp from %s", + translateRmrErrorMessages(rmrMessageBuffer.sendMessage->state).c_str(), + rmrMessageBuffer.sendMessage->mtype, + rmr_get_meid(rmrMessageBuffer.sendMessage, (unsigned char *)meid)); + return rmrMessageBuffer.sendMessage->state; + } + } + return 0; +} + +void buildJsonMessage(ReportingMessages_t &message) { + if (jsonTrace) { + message.outLen = sizeof(message.base64Data); + base64::encode((const unsigned char *) message.message.asndata, + (const int) message.message.asnLength, + message.base64Data, + message.outLen); + if (mdclog_level_get() >= MDCLOG_DEBUG) { + mdclog_write(MDCLOG_DEBUG, "Tracing: ASN length = %d, base64 message length = %d ", + (int) message.message.asnLength, + (int) message.outLen); + } + + snprintf(message.buffer, sizeof(message.buffer), + "{\"header\": {\"ts\": \"%ld.%09ld\"," + "\"ranName\": \"%s\"," + "\"messageType\": %d," + "\"direction\": \"%c\"}," + "\"base64Length\": %d," + "\"asnBase64\": \"%s\"}", + message.message.time.tv_sec, + message.message.time.tv_nsec, + message.message.enodbName, + message.message.messageType, + message.message.direction, + (int) message.outLen, + message.base64Data); + static src::logger_mt &lg = my_logger::get(); + + BOOST_LOG(lg) << message.buffer; + } +} + + +/** + * take RMR error code to string + * @param state + * @return + */ +string translateRmrErrorMessages(int state) { + string str = {}; + switch (state) { + case RMR_OK: + str = "RMR_OK - state is good"; + break; + case RMR_ERR_BADARG: + str = "RMR_ERR_BADARG - argument passd to function was unusable"; + break; + case RMR_ERR_NOENDPT: + str = "RMR_ERR_NOENDPT - send//call could not find an endpoint based on msg type"; + break; + case RMR_ERR_EMPTY: + str = "RMR_ERR_EMPTY - msg received had no payload; attempt to send an empty message"; + break; + case RMR_ERR_NOHDR: + str = "RMR_ERR_NOHDR - message didn't contain a valid header"; + break; + case RMR_ERR_SENDFAILED: + str = "RMR_ERR_SENDFAILED - send failed; errno has nano reason"; + break; + case RMR_ERR_CALLFAILED: + str = "RMR_ERR_CALLFAILED - unable to send call() message"; + break; + case RMR_ERR_NOWHOPEN: + str = "RMR_ERR_NOWHOPEN - no wormholes are open"; + break; + case RMR_ERR_WHID: + str = "RMR_ERR_WHID - wormhole id was invalid"; + break; + case RMR_ERR_OVERFLOW: + str = "RMR_ERR_OVERFLOW - operation would have busted through a buffer/field size"; + break; + case RMR_ERR_RETRY: + str = "RMR_ERR_RETRY - request (send/call/rts) failed, but caller should retry (EAGAIN for wrappers)"; + break; + case RMR_ERR_RCVFAILED: + str = "RMR_ERR_RCVFAILED - receive failed (hard error)"; + break; + case RMR_ERR_TIMEOUT: + str = "RMR_ERR_TIMEOUT - message processing call timed out"; + break; + case RMR_ERR_UNSET: + str = "RMR_ERR_UNSET - the message hasn't been populated with a transport buffer"; + break; + case RMR_ERR_TRUNC: + str = "RMR_ERR_TRUNC - received message likely truncated"; + break; + case RMR_ERR_INITFAILED: + str = "RMR_ERR_INITFAILED - initialisation of something (probably message) failed"; + break; + case RMR_ERR_NOTSUPP: + str = "RMR_ERR_NOTSUPP - the request is not supported, or RMr was not initialised for the request"; + break; + default: + char buf[128]{}; + snprintf(buf, sizeof buf, "UNDOCUMENTED RMR_ERR : %d", state); + str = buf; + break; + } + return str; +} diff --git a/setup/e2/RIC-E2-TERMINATION/sctpThread.h b/setup/e2/RIC-E2-TERMINATION/sctpThread.h new file mode 100644 index 0000000..0568d7a --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/sctpThread.h @@ -0,0 +1,401 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#ifndef X2_SCTP_THREAD_H +#define X2_SCTP_THREAD_H + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "oranE2/E2AP-PDU.h" +#include "oranE2/ProtocolIE-Container.h" +#include "oranE2/InitiatingMessage.h" +#include "oranE2/SuccessfulOutcome.h" +#include "oranE2/UnsuccessfulOutcome.h" +#include "oranE2/ProtocolIE-Container.h" +#include "oranE2/ProtocolIE-Field.h" +#include "oranE2/GlobalE2node-gNB-ID.h" +#include "oranE2/GlobalE2node-en-gNB-ID.h" +#include "oranE2/GlobalE2node-ng-eNB-ID.h" +#include "oranE2/GlobalE2node-eNB-ID.h" + +#include "cxxopts.hpp" +//#include "config-cpp/include/config-cpp/config-cpp.h" + + +#include "mapWrapper.h" +#include "statCollector.h" + +#include "base64.h" + +#include "ReadConfigFile.h" + +using namespace std; +namespace logging = boost::log; +namespace src = boost::log::sources; +namespace keywords = boost::log::keywords; +namespace sinks = boost::log::sinks; +namespace posix_time = boost::posix_time; +namespace expr = boost::log::expressions; + +#define SRC_PORT 36422 +#define SA struct sockaddr +#define MAX_ENODB_NAME_SIZE 64 + +#define MAXEVENTS 128 + +#define RECEIVE_SCTP_BUFFER_SIZE (128 * 1024) +#define RECEIVE_XAPP_BUFFER_SIZE RECEIVE_SCTP_BUFFER_SIZE + +typedef mapWrapper Sctp_Map_t; + + + +#define VOLUME_URL_SIZE 256 +#define KA_MESSAGE_SIZE 2048 + +typedef struct sctp_params { + uint16_t rmrPort = 0; + uint16_t sctpPort = SRC_PORT; + int epoll_fd = 0; + int listenFD = 0; + int rmrListenFd = 0; + int inotifyFD = 0; + int inotifyWD = 0; + void *rmrCtx = nullptr; + Sctp_Map_t *sctpMap = nullptr; + char ka_message[KA_MESSAGE_SIZE] {}; + int ka_message_length = 0; + char rmrAddress[256] {}; // "tcp:portnumber" "tcp:5566" listen to all address on port 5566 + mdclog_severity_t logLevel = MDCLOG_INFO; + char volume[VOLUME_URL_SIZE]; + string myIP {}; + string fqdn {}; + string podName {}; + string configFilePath {}; + string configFileName {}; + bool trace = true; + //shared_timed_mutex fence; // moved to mapWrapper +} sctp_params_t; + +typedef struct ConnectedCU { + int fileDescriptor = 0; + char hostName[NI_MAXHOST] {}; + char portNumber[NI_MAXSERV] {}; + char enodbName[MAX_ENODB_NAME_SIZE] {}; + char asnData[RECEIVE_SCTP_BUFFER_SIZE] {}; + size_t asnLength = 0; + int mtype = 0; + bool isConnected = false; + bool gotSetup = false; + sctp_params_t *sctpParams = nullptr; +} ConnectedCU_t ; + +#define MAX_RMR_BUFF_ARRY 32 +typedef struct RmrMessagesBuffer { + char ka_message[KA_MESSAGE_SIZE] {}; + int ka_message_len = 0; + void *rmrCtx = nullptr; + rmr_mbuf_t *sendMessage= nullptr; + //rmr_mbuf_t *sendBufferedMessages[MAX_RMR_BUFF_ARRY] {}; + rmr_mbuf_t *rcvMessage= nullptr; + //rmr_mbuf_t *rcvBufferedMessages[MAX_RMR_BUFF_ARRY] {}; +} RmrMessagesBuffer_t; + +typedef struct formatedMessage { + char enodbName[MAX_ENODB_NAME_SIZE]; + struct timespec time; + int messageType; + char direction; + ssize_t asnLength; + unsigned char *asndata; +} FormatedMessage_t; + +typedef struct ReportingMessages { + FormatedMessage_t message {}; + ConnectedCU_t *peerInfo = nullptr; + long outLen = 0; + unsigned char base64Data[RECEIVE_SCTP_BUFFER_SIZE * 2] {}; + char buffer[RECEIVE_SCTP_BUFFER_SIZE * 8] {}; + StatCollector *statCollector = nullptr; +} ReportingMessages_t; + +cxxopts::ParseResult parse(int argc, const char *argv[], sctp_params_t &pSctpParams); + +int buildInotify(sctp_params_t &sctpParams); + +void handleTermInit(sctp_params_t &sctpParams); + +void handleConfigChange(sctp_params_t *sctpParams); + +void listener(sctp_params_t *params); + +void sendTermInit(sctp_params_t &sctpParams); + +int setSocketNoBlocking(int socket); + +void handleEinprogressMessages(struct epoll_event &event, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer, + sctp_params_t *params); + +void handlepoll_error(struct epoll_event &event, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer, + sctp_params_t *params); + + +void cleanHashEntry(ConnectedCU_t *peerInfo, Sctp_Map_t *m); + + +/** + * + * @param message + * @param rmrMessageBuffer + */ +void getRequestMetaData(ReportingMessages_t &message, RmrMessagesBuffer_t &rmrMessageBuffer); + +/** + * + * @param sctpMap + * @param messagBuffer + * @param message + * @param failedMesgId + * @return + */ +int sendMessagetoCu(Sctp_Map_t *sctpMap, + RmrMessagesBuffer_t &messagBuffer, + ReportingMessages_t &message, + int failedMesgId); + +void sendFailedSendingMessagetoXapp(RmrMessagesBuffer_t &rmrMessageBuffer, + ReportingMessages_t &message, + int failedMesgId); + +int sendRequestToXapp(ReportingMessages_t &message, + int requestId, + RmrMessagesBuffer_t &rmrMmessageBuffer); + +/** + * + * @param message + * @param msgType + * @param requestType + * @param rmrMessageBuffer + * @param sctpMap + * @return + */ +/* +int sendResponseToXapp(ReportingMessages_t &message, + int msgType, + int requestType, + RmrMessagesBuffer_t &rmrMessageBuffer, + Sctp_Map_t *sctpMap); +*/ + +/** + * + * @param peerInfo + * @param message + * @param m + * @return + */ +int sendSctpMsg(ConnectedCU_t *peerInfo, + ReportingMessages_t &message, + Sctp_Map_t *m); + +/** + * + * @param events + * @param sctpMap + * @param numOfMessages + * @param rmrMessageBuffer + * @param ts + * @return + */ +int receiveDataFromSctp(struct epoll_event *events, + Sctp_Map_t *sctpMap, + int &numOfMessages, + RmrMessagesBuffer_t &rmrMessageBuffer, + struct timespec &ts); + +/** + * + * @param rmrAddress + * @return + */ +void getRmrContext(sctp_params_t &pSctpParams); + +/** + * + * @param epoll_fd + * @param rmrCtx + * @param sctpMap + * @param messagBuffer + * @return + */ +int receiveXappMessages(Sctp_Map_t *sctpMap, + RmrMessagesBuffer_t &rmrMessageBuffer, + struct timespec &ts); + +/** + * + * @param messagBuffer + * @param failedMsgId + * @param sctpMap + * @return + */ +int sendDirectionalSctpMsg(RmrMessagesBuffer_t &messagBuffer, + ReportingMessages_t &message, + int failedMsgId, + Sctp_Map_t *sctpMap); +/** + * + * @param pdu + * @param message + * @param rmrMessageBuffer + */ +void asnInitiatingRequest(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer); +/** + * + * @param pdu + * @param message + * @param sctpMap + * @param rmrMessageBuffer + */ +void asnSuccsesfulMsg(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer); +/** + * + * @param pdu + * @param message + * @param sctpMap + * @param rmrMessageBuffer + */ +void asnUnSuccsesfulMsg(E2AP_PDU_t *pdu, + Sctp_Map_t *sctpMap, + ReportingMessages_t &message, + RmrMessagesBuffer_t &rmrMessageBuffer); + +/** + * + * @param rmrMessageBuffer + * @param message + * @return + */ +int sendRmrMessage(RmrMessagesBuffer_t &rmrMessageBuffer, ReportingMessages_t &message); +/** + * + * @param epoll_fd + * @param peerInfo + * @param events + * @param sctpMap + * @param enodbName + * @param msgType + * @returnsrc::logger_mt& lg = my_logger::get(); + */ +int addToEpoll(int epoll_fd, ConnectedCU_t *peerInfo, uint32_t events, Sctp_Map_t *sctpMap, char *enodbName, int msgType); +/** + * + * @param epoll_fd + * @param peerInfo + * @param events + * @param sctpMap + * @param enodbName + * @param msgType + * @return + */ +int modifyToEpoll(int epoll_fd, ConnectedCU_t *peerInfo, uint32_t events, Sctp_Map_t *sctpMap, char *enodbName, int msgType); + +/** + * + * @param message + */ +void buildJsonMessage(ReportingMessages_t &message); + +/** + * + * + * @param state + * @return + */ +string translateRmrErrorMessages(int state); + + +static inline uint64_t rdtscp(uint32_t &aux) { + uint64_t rax,rdx; + asm volatile ("rdtscp\n" : "=a" (rax), "=d" (rdx), "=c" (aux) : :); + return (rdx << (unsigned)32) + rax; +} +#ifndef RIC_SCTP_CONNECTION_FAILURE +#define RIC_SCTP_CONNECTION_FAILURE 10080 +#endif + +#endif //X2_SCTP_THREAD_H diff --git a/setup/e2/RIC-E2-TERMINATION/startup.sh b/setup/e2/RIC-E2-TERMINATION/startup.sh new file mode 100644 index 0000000..600a59e --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/startup.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +#dockerIp=$(ifconfig eth0 | awk '{ print $2}' | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}") +#echo "docker ip: $dockerIp" +serviceName=$(env| grep RMR_SRC_ID | tr -d 'RMR_SRC_ID=' | awk '{split($0,srv,"."); print srv[1]}'| sed -r 's/-/_/g' | tr '[:lower:]' '[:upper:]') +fullServiceName=${serviceName}_SERVICE_HOST +echo "environments service name is $fullServiceName" +serviceIp=$(env | grep $fullServiceName | awk '{split($0,ip,"="); print ip[2]}') +echo "service ip is $serviceIp" +sed -i "s/local-ip=127.0.0.1/local-ip=$serviceIp/g" "/opt/e2/config/config.conf" +sed -i "s/external-fqdn=e2t.com/external-fqdn=$serviceIp/g" "/opt/e2/config/config.conf" +cat "/opt/e2/config/config.conf" +./e2 -p config -f config.conf diff --git a/setup/e2/RIC-E2-TERMINATION/statCollector.h b/setup/e2/RIC-E2-TERMINATION/statCollector.h new file mode 100644 index 0000000..3279585 --- /dev/null +++ b/setup/e2/RIC-E2-TERMINATION/statCollector.h @@ -0,0 +1,166 @@ +/* + * Copyright 2020 AT&T Intellectual Property + * Copyright 2020 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// +// Created by adi ENZEL on 3/24/20. +// + +#ifndef E2_STATCOLLECTOR_H +#define E2_STATCOLLECTOR_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include + +//using namespace tbb; + +typedef struct statResult { + std::string ranName; + uint32_t receivedMessages; + uint32_t sentMessages; +} statResult_t ; + +class StatCollector { + + static std::mutex singltonMutex; + static std::atomic obj; + +public: + static StatCollector* GetInstance() { + StatCollector* pStatCollector = obj.load(std::memory_order_acquire); + if (pStatCollector == nullptr) { + std::lock_guard lock(singltonMutex); + pStatCollector = obj.load(std::memory_order_relaxed); + if (pStatCollector == nullptr) { + pStatCollector = new StatCollector(); + obj.store(pStatCollector, std::memory_order_release); + } + } + return pStatCollector; + } + + void incSentMessage(const std::string &key) { + increment(sentMessages, key); + } + void incRecvMessage(const std::string &key) { + increment(recvMessages, key); + } + + std::vector &getCurrentStats() { + results.clear(); + + for (auto const &e : recvMessages) { + statResult_t result {}; + result.ranName = e.first; + result.receivedMessages = e.second.load(std::memory_order_acquire); + auto found = sentMessages.find(result.ranName); + if (found != sentMessages.end()) { + result.sentMessages = found->second.load(std::memory_order_acquire); + } else { + result.sentMessages = 0; + } + + results.emplace_back(result); + } + return results; + } + + StatCollector(const StatCollector&)= delete; + StatCollector& operator=(const StatCollector&)= delete; + +private: + //tbb::concurrent_unordered_map sentMessages; + std::unordered_map> sentMessages; + std::unordered_map> recvMessages; +// tbb::concurrent_unordered_map recvMessages; + std::vector results; + + +// StatCollector() = default; + StatCollector() { + sentMessages.clear(); + recvMessages.clear(); + } + ~StatCollector() = default; + + + void increment(std::unordered_map> &map, const std::string &key); + +}; + +void StatCollector::increment(std::unordered_map> &map, const std::string &key) { + if (map.empty()) { + map.emplace(std::piecewise_construct, + std::forward_as_tuple(key), + std::forward_as_tuple(1)); + return; + } + auto found = map.find(key); + if (found != map.end()) { //inc + map[key].fetch_add(1, std::memory_order_release); + //map[key]++; + } else { //add + //sentMessages.emplace(std::make_pair(std::string(key), std::atomic(0))); + map.emplace(std::piecewise_construct, + std::forward_as_tuple(key), + std::forward_as_tuple(1)); + } + +} + + +// must define this to allow StatCollector private variables to be known to compiler linker +std::mutex StatCollector::singltonMutex; +std::atomic StatCollector::obj; + + +void statColectorThread(void *runtime) { + bool *stop_loop = (bool *)runtime; + auto *statCollector = StatCollector::GetInstance(); + std::time_t tt = std::chrono::system_clock::to_time_t (std::chrono::system_clock::now()); + + struct std::tm * ptm = std::localtime(&tt); + std::cout << "Waiting for the next minute to begin...\n"; + ptm->tm_min = ptm->tm_min + (5 - ptm->tm_min % 5); + ptm->tm_sec=0; + + std::this_thread::sleep_until(std::chrono::system_clock::from_time_t(mktime(ptm))); + +// alligned to 5 minutes + while (true) { + if (*stop_loop) { + break; + } + for (auto const &e : statCollector->getCurrentStats()) { + if (mdclog_level_get() >= MDCLOG_INFO) { + mdclog_write(MDCLOG_INFO, "RAN : %s sent messages : %d recived messages : %d\n", + e.ranName.c_str(), e.sentMessages, e.receivedMessages); + } + } + std::this_thread::sleep_for(std::chrono::seconds(300)); + } +} +#endif //E2_STATCOLLECTOR_H diff --git a/setup/e2/config/config.bad b/setup/e2/config/config.bad new file mode 100644 index 0000000..980bbd5 --- /dev/null +++ b/setup/e2/config/config.bad @@ -0,0 +1,10 @@ +nano=38000 +loglevel=info +volume=log +local-ip=127.0.0.1 +stam string + +xxx= +#trace is start, stop +trace=start +external-fqdn=e2t.att.com \ No newline at end of file diff --git a/setup/e2/config/config.sec b/setup/e2/config/config.sec new file mode 100644 index 0000000..bf7689f --- /dev/null +++ b/setup/e2/config/config.sec @@ -0,0 +1,9 @@ +[config] +nano=38000 +loglevel=info +volume=log +local-ip=127.0.0.1 +[xxxyyy] +#trace is start, stop +trace=start +external-fqdn=e2t.att.com \ No newline at end of file diff --git a/setup/e2/config/config.secbad b/setup/e2/config/config.secbad new file mode 100644 index 0000000..9b5db3d --- /dev/null +++ b/setup/e2/config/config.secbad @@ -0,0 +1,9 @@ +[config] +nano=38000 +loglevel=info +volume=log +local-ip=127.0.0.1 +[xxxyyy +#trace is start, stop +trace=start +external-fqdn=e2t.att.com \ No newline at end of file diff --git a/setup/e2/docs/_static/logo.png b/setup/e2/docs/_static/logo.png new file mode 100755 index 0000000..c3b6ce5 Binary files /dev/null and b/setup/e2/docs/_static/logo.png differ diff --git a/setup/e2/docs/conf.py b/setup/e2/docs/conf.py new file mode 100644 index 0000000..e06c3ac --- /dev/null +++ b/setup/e2/docs/conf.py @@ -0,0 +1,6 @@ +from docs_conf.conf import * +linkcheck_ignore = [ + 'http://localhost.*', + 'http://127.0.0.1.*', + 'https://gerrit.o-ran-sc.org.*' +] diff --git a/setup/e2/docs/conf.yaml b/setup/e2/docs/conf.yaml new file mode 100644 index 0000000..c0b39cc --- /dev/null +++ b/setup/e2/docs/conf.yaml @@ -0,0 +1,3 @@ +--- +project_cfg: oran +project: ric-plt/e2 diff --git a/setup/e2/docs/favicon.ico b/setup/e2/docs/favicon.ico new file mode 100755 index 0000000..00b0fd0 Binary files /dev/null and b/setup/e2/docs/favicon.ico differ diff --git a/setup/e2/docs/index.rst b/setup/e2/docs/index.rst new file mode 100755 index 0000000..3aaf6d6 --- /dev/null +++ b/setup/e2/docs/index.rst @@ -0,0 +1,17 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 + + +Welcome to O-RAN SC ric-plt/e2 Documentation +============================================ + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + overview.rst + release-notes.rst + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/setup/e2/docs/overview.rst b/setup/e2/docs/overview.rst new file mode 100755 index 0000000..abbfd70 --- /dev/null +++ b/setup/e2/docs/overview.rst @@ -0,0 +1,10 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 + + +..please write your project overview +..please delete this content after editing + + +ric-plt/e2 Overview +=================== diff --git a/setup/e2/docs/release-notes.rst b/setup/e2/docs/release-notes.rst new file mode 100644 index 0000000..cc368fc --- /dev/null +++ b/setup/e2/docs/release-notes.rst @@ -0,0 +1,102 @@ +.. +.. Copyright (c) 2019 AT&T Intellectual Property. +.. Copyright (c) 2019 Nokia. +.. +.. Licensed under the Creative Commons Attribution 4.0 International +.. Public License (the "License"); you may not use this file except +.. in compliance with the License. You may obtain a copy of the License at +.. +.. https://creativecommons.org/licenses/by/4.0/ +.. +.. Unless required by applicable law or agreed to in writing, documentation +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. + +Release-Notes +============= + + +This document provides the release notes for the Bronze release of E2Terminator + +.. contents:: + :depth: 3 + :local: + + +Version history +--------------- + ++--------------------+--------------------+--------------------+--------------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2019-10-31 | 2.0.7.5 | Shuky Har-Noy | First draft | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2019-12-02 | 2.0.10 | Shuky Har-Noy | Amber Release | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2020-06-14 | 4.4.1 | Shuky Har-Noy | Bronze Release | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ + + +Summary +------- + +The Bronze release of E2Manager supports the following flows: + - Support all E2 Messages from RAN to RIC and from RIC to RAN + +X2 flows are not supported anymore + + +The Amber release of E2Terminator supports the following flows: + - ENDC Setup + - X2 Setup + - ENDC Configuration Update + - X2 Configuration Update + - Reset + - Shutdown + - Load Information + +Release Data +------------ + ++--------------------------------------+--------------------------------------+ +| **Project** | RAN Intelligent Controller | +| | | ++--------------------------------------+--------------------------------------+ +| **Repo/commit-ID** | ric-plt/e2mgr | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | Bronze | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-06-14 | +| | | ++--------------------------------------+--------------------------------------+ +| **Purpose of the delivery** | open-source E2Manager | +| | | ++--------------------------------------+--------------------------------------+ + + ++--------------------------------------+--------------------------------------+ +| **Project** | RAN Intelligent Controller | +| | | ++--------------------------------------+--------------------------------------+ +| **Repo/commit-ID** | ric-plt/e2 | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | Amber | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2019-12-02 | +| | | ++--------------------------------------+--------------------------------------+ +| **Purpose of the delivery** | open-source E2Terminator | +| | | ++--------------------------------------+--------------------------------------+ diff --git a/setup/e2/docs/requirements-docs.txt b/setup/e2/docs/requirements-docs.txt new file mode 100644 index 0000000..09a0c1c --- /dev/null +++ b/setup/e2/docs/requirements-docs.txt @@ -0,0 +1,5 @@ +sphinx +sphinx-rtd-theme +sphinxcontrib-httpdomain +recommonmark +lfdocs-conf diff --git a/setup/e2/releases/container-release-ric-plt-e2.yaml b/setup/e2/releases/container-release-ric-plt-e2.yaml new file mode 100644 index 0000000..7a471f3 --- /dev/null +++ b/setup/e2/releases/container-release-ric-plt-e2.yaml @@ -0,0 +1,10 @@ +--- +distribution_type: container +container_release_tag: 4.4.1 +container_pull_registry: nexus3.o-ran-sc.org:10004 +container_push_registry: nexus3.o-ran-sc.org:10002 +project: ric-plt/e2 +ref: 175ef39f1efc79b3a18dad0ecd6d8475e92df631 +containers: + - name: ric-plt-e2 + version: 4.0.10 diff --git a/setup/e2/tox.ini b/setup/e2/tox.ini new file mode 100644 index 0000000..db50ddf --- /dev/null +++ b/setup/e2/tox.ini @@ -0,0 +1,32 @@ +[tox] +minversion = 2.0 +envlist = + docs, + docs-linkcheck, + +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = + sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf + +commands = + sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + + echo "Generated docs available in {toxinidir}/docs/_build/html" + +whitelist_externals = echo + +[testenv:docs-linkcheck] +basepython = python3 +deps = sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf +commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck diff --git a/setup/e2mgr/.gitignore b/setup/e2mgr/.gitignore new file mode 100644 index 0000000..e6901da --- /dev/null +++ b/setup/e2mgr/.gitignore @@ -0,0 +1,17 @@ +/.idea/* +.vscode/launch.json +*.o +*.a +E2Manager/3rdparty/asn1codec/e2ap_engine/converter-example +E2Manager/3rdparty/asn1codec/tests/ +E2Manager/cp.out +Automation/Tests/**/*.xml +__pycache__/ +*.html +*.log +# documentation +.tox +docs/_build/ +/.gitreview +E2Manager/coverage.txt +E2Manager/e2m diff --git a/setup/e2mgr/.readthedocs.yaml b/setup/e2mgr/.readthedocs.yaml new file mode 100644 index 0000000..3797dc8 --- /dev/null +++ b/setup/e2mgr/.readthedocs.yaml @@ -0,0 +1,20 @@ +--- +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Required +version: 2 + +formats: + - htmlzip + +build: + image: latest + +python: + version: 3.7 + install: + - requirements: docs/requirements-docs.txt + +sphinx: + configuration: docs/conf.py diff --git a/setup/e2mgr/Automation/Dockerfile b/setup/e2mgr/Automation/Dockerfile new file mode 100755 index 0000000..e981b44 --- /dev/null +++ b/setup/e2mgr/Automation/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.6 + +RUN python3 -m pip install robotframework \ + && pip install --upgrade RESTinstance \ + && pip install docker \ + && pip install -U robotframework-requests\ + && apt-get update + +WORKDIR /opt +COPY ./Scripts /opt/Scripts +COPY ./Tests /opt/Tests +COPY ./run_tests.sh /opt/run_tests.sh + +ENV DOCKER_HOST_IP "127.0.0.1" + +CMD [ "/opt/run_tests.sh" ] diff --git a/setup/e2mgr/Automation/FAILED_TESTS/Reset_unhappy.robot b/setup/e2mgr/Automation/FAILED_TESTS/Reset_unhappy.robot new file mode 100644 index 0000000..d173919 --- /dev/null +++ b/setup/e2mgr/Automation/FAILED_TESTS/Reset_unhappy.robot @@ -0,0 +1,55 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} +Suite Teardown Start E2 + +*** Test Cases *** + +Pre Condition for Connecting - no E2 + Run And Return Rc And Output ${stop_docker_e2} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} 4 + + +Prepare Ran in Connecting connectionStatus + Sleep 1s + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body connectionStatus CONNECTING + + +Send Reset reqeust with no cause + Set Headers ${header} + PUT /v1/nodeb/test1/reset ${resetcausejson} + Integer response status 400 + Integer response body errorCode 403 + diff --git a/setup/e2mgr/Automation/Scripts/docker_ms.sh b/setup/e2mgr/Automation/Scripts/docker_ms.sh new file mode 100755 index 0000000..946d96a --- /dev/null +++ b/setup/e2mgr/Automation/Scripts/docker_ms.sh @@ -0,0 +1,62 @@ +#!/bin/bash + + +MS=$1 +ACTION=$2 + +do_stop(){ + MS=$1 + if ! docker ps --filter "name=^/${MS}" | grep -q "${MS}"; then + echo "${MS} is already stopped, ignore the action." + else + echo "Executing 'docker stop ${MS}'" + docker stop ${MS} + fi +} + +do_start(){ + MS=$1 + if docker ps --filter "name=^/${MS}" | grep -q "${MS}"; then + echo "${MS} is running, performing restart." + echo "Executing \'\docker stop ${MS}'" + docker stop ${MS} && sleep 2 + echo "Executing 'docker start ${MS}'" + docker start ${MS} + else + echo "Executing 'docker start ${MS}'" + docker start ${MS} + fi +} + + +do_status(){ + MS=$1 + out=$(docker ps --filter "name=^/${MS}" | grep "${MS}") + res=$? + if [ "$res" == "0" ]; then + echo $out + echo "The ${MS} is currnetly up & running!" + else + echo "The ${MS} is currnetly not running!" + fi +} + + +case $ACTION in + start) + do_start ${MS} + ;; + stop) + do_stop ${MS} + ;; + status) + do_status ${MS} + ;; + restart) + do_stop ${MS} + do_start ${MS} + ;; + *) + do_status ${MS} + ;; +esac \ No newline at end of file diff --git a/setup/e2mgr/Automation/Scripts/k8s_ms.py b/setup/e2mgr/Automation/Scripts/k8s_ms.py new file mode 100755 index 0000000..9384d85 --- /dev/null +++ b/setup/e2mgr/Automation/Scripts/k8s_ms.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python + + +import sys, os, traceback +import docker +# Getting the Arguments. if argument are missing exit the script with exit 1 +try: + ms = sys.argv[1].lower() + action = sys.argv[2].lower() + script = os.path.basename(sys.argv[0]) +except: + print("Usage: %s for now only stop action is allowd" % \ + (os.path.basename(sys.argv[0]))) + sys.exit(1) + +ms=sys.argv[1].lower() +action=sys.argv[2].lower() +docker_host_ip=os.environ.get('DOCKER_HOST_IP', False) +cms=[] +if not docker_host_ip: + print('The DOCKER_HOST_IP env varibale is not defined, exiting!') + sys.exit(1) + +def get_ms(): + try: + client = docker.DockerClient(base_url='tcp://%s:2376' % docker_host_ip) + + for ms in client.containers.list(): + if ms.name == sys.argv[1]: + cms.append(ms) + return cms[0] + except: + print('Can\'t connect to docker API, Exiting!') + print(traceback.format_exc()) + sys.exit(1) + +if action == 'stop': + print('Stop the %s pod' % ms ) + get_ms().stop() + sys.exit(0) +else: + print ('Only stop commnad is allowed!, exiting!') + sys.exit(1) diff --git a/setup/e2mgr/Automation/Scripts/ric_ms.sh b/setup/e2mgr/Automation/Scripts/ric_ms.sh new file mode 100755 index 0000000..e11b9d7 --- /dev/null +++ b/setup/e2mgr/Automation/Scripts/ric_ms.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +stringContain() { [ -z "${2##*$1*}" ]; } + +MS=${1} +ACTION=${2} +SCRIPT=`basename "$0"` +USAGE="\nUsage: ./$SCRIPT \nValid Options: ./$SCRIPT \nE.g ./$SCRIPT dbass stop" +OPTIONS="simu,dbass,e2mgr,e2,stop,start,restart,status" +DOC_SCRIPT="/opt/docker_ms.sh" +K8S_SCRIPT="/opt/k8s_ms.py" +# Check if script got the reqiured arguments +[ -z ${SYS_TYPE} ] && echo -e "\nThe SYS_TYPE environemnt variable is not set!" && echo -e "${USAGE}" && exit 1 +[ -z ${MS} ] && echo -e "\nThe MS argument is reqiured!" && echo -e "${USAGE}" && exit 2 +[ -z ${ACTION} ] && echo -e "\nThe ACTION argument is reqiured!" && echo -e "${USAGE}" && exit 2 +! grep -q $MS <<<"$OPTIONS" && echo -e "\nThe microservice '${MS}' is not a valid value!" && echo -e "${USAGE}" && exit 3 +! grep -q $ACTION <<<"$OPTIONS" && echo -e "\nThe action '${ACTION}' is not a valid value!" && echo -e "${USAGE}" && exit 3 + +if [ "${SYS_TYPE}" == "docker" ]; then + echo "SYS_TYPE=docker, Docker mode is set" + [ ! -f ${DOC_SCRIPT} ] && echo "reqiured file '${DOC_SCRIPT}' is missing, exit" && exit 4 + echo "Executing the '${DOC_SCRIPT}' script!" + ${DOC_SCRIPT} ${MS} ${ACTION} +elif [ "${SYS_TYPE}" == "k8s" ]; then + echo "SYS_TYPE=k8s, K8S mode is set" + [ ! -f ${K8S_SCRIPT} ] && echo "reqiured file '${K8S_SCRIPT}' is missing, exit" && exit 4 + echo "Executing the '${K8S_SCRIPT}' script!" + ${K8S_SCRIPT} ${MS} ${ACTION} +fi \ No newline at end of file diff --git a/setup/e2mgr/Automation/Scripts/run.sh b/setup/e2mgr/Automation/Scripts/run.sh new file mode 100755 index 0000000..5b89f94 --- /dev/null +++ b/setup/e2mgr/Automation/Scripts/run.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +COMP="${1:-all}" +E2M_TAG="${2:-2.0.6}" +E2T_TAG="${3:-2.0.6}" +SIM_TAG="${4:-1.0.6}" +E2ADAPTER_TAG="${5:-1.3.2}" + +if [ "$COMP" == "all" ]; then +docker rm -f e2 +docker rm -f e2mgr +docker rm -f gnbe2_simu +docker rm -f e2adapter +docker rm -f dbass + +docker ps +sleep 2 + +#docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2:$E2T_TAG +#docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2:$E2T_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2mgr:$E2M_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_simu:$SIM_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2adapter:$E2ADAPTER_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/dbass:1.0.0 + +docker run -d --name dbass -p 6379:6379 --env DBAAS_SERVICE_HOST=10.0.2.15 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/dbass:1.0.0 + +#docker run -d --name e2mgr -p 3800:3800 -p 3801:3801 --env DBAAS_SERVICE_HOST=10.0.2.15 --env RMR_VCTL_FILE=/tmp/rmr.verbose nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker run -d --name e2mgr -p 3800:3800 -p 3801:3801 --env DBAAS_SERVICE_HOST=10.0.2.15 --env RMR_VCTL_FILE=/tmp/rmr.verbose snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2mgr:$E2M_TAG +#docker cp e2mgr:/opt/E2Manager/router.txt . +sleep 2 +#docker create --name e2 --env sctp=5577 --env nano=38000 --env loglevel=debug --env print=1 -p 38000:38000 nexus3.o-ran-sc.org:10004/ric-plt-e2:$E2T_TAG +docker create --name e2 --env sctp=5577 --env nano=38000 --env loglevel=debug --env print=1 -p 38000:38000 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2:$E2T_TAG +sleep 2 +#docker cp router.txt e2:/opt/e2/dockerRouter.txt +sleep 2 +docker start e2 + +docker run -d --name gnbe2_simu --env gNBipv4=localhost --env gNBport=36422 --env indicationReportRate=0 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_simu:$SIM_TAG + +docker run -d -v /etc/e2adapter:/etc/e2adapter -v /var/log/e2adapter:/var/log/e2adapter --network host --name e2adapter snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2adapter:$E2ADAPTER_TAG + +docker ps +fi +if [ "$COMP" = "gnbe2_sim" ]; then +docker rm -f gnb_simu +docker run -d --name gnbe2_simu --env gNBipv4=localhost --env gNBport=36422 indicationReportRate=0 --env indicationInsertRate=0 -p 5577:36422/sctp snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_simu:$SIM_TAG +docker ps +fi +if [ "$COMP" = "e2" ]; then +docker rm -f e2 +#docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2:$E2T_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2:$E2T_TAG +docker create --name e2 --env sctp=5577 --env nano=38000 --env print=1 --env RMR_RTG_SVC=10.0.2.15 -p 38000:38000 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2:$E2T_TAG + +docker ps +fi +if [ "$COMP" = "e2mgr" ]; then +docker rm -f e2mgr +#docker pull nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker pull snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2mgr:$E2M_TAG +#docker run -d --name e2mgr -p 3800:3800 -p 3801:3801 --env RMR_RTG_SVC=10.0.2.15 --env DBAAS_SERVICE_HOST=10.0.2.15 nexus3.o-ran-sc.org:10004/ric-plt-e2mgr:$E2M_TAG +docker run -d --name e2mgr -p 3800:3800 -p 3801:3801 --env RMR_RTG_SVC=10.0.2.15 --env DBAAS_SERVICE_HOST=10.0.2.15 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/e2mgr:$E2M_TAG +docker ps +fi \ No newline at end of file diff --git a/setup/e2mgr/Automation/Tests/E2Term_Initialization/E2Term_Init_Message_Test.robot b/setup/e2mgr/Automation/Tests/E2Term_Initialization/E2Term_Init_Message_Test.robot new file mode 100644 index 0000000..b575dd8 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/E2Term_Initialization/E2Term_Init_Message_Test.robot @@ -0,0 +1,35 @@ +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/cleanup_db.py +Library ../Scripts/e2t_db_script.py + +*** Test Cases *** + +Test New E2T Send Init + Stop E2 + ${result}= cleanup_db.flush + Should Be Equal As Strings ${result} True + Start E2 + +prepare logs for tests + Remove log files + Save logs + +E2M Logs - Verify RMR Message + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${E2_INIT_message_type} ${None} + Should Be Equal As Strings ${result} True + +Verify E2T keys in DB + ${result}= e2t_db_script.verify_e2t_addresses_key + Should Be Equal As Strings ${result} True + + ${result}= e2t_db_script.verify_e2t_instance_key + Should Be Equal As Strings ${result} True + + + diff --git a/setup/e2mgr/Automation/Tests/E2Term_Initialization/__init__.robot b/setup/e2mgr/Automation/Tests/E2Term_Initialization/__init__.robot new file mode 100755 index 0000000..7112a73 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/E2Term_Initialization/__init__.robot @@ -0,0 +1,20 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Documentation E2Term-Initialization diff --git a/setup/e2mgr/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot b/setup/e2mgr/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot new file mode 100644 index 0000000..ac8f70a --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Get-All-Nodes-Real/Get_all_nodes_run_setup_and_get_all.robot @@ -0,0 +1,50 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library REST ${url} + + +*** Test Cases *** + + + +Get all node ids + GET v1/nodeb/ids + Sleep 2s + Integer response status 200 + String response body 0 inventoryName ${ranName} + String response body 0 globalNbId plmnId 02F829 + String response body 0 globalNbId nbId 001100000011000000110000 + + + + + + + + + diff --git a/setup/e2mgr/Automation/Tests/Get-All-Nodes-Real/__init__.robot b/setup/e2mgr/Automation/Tests/Get-All-Nodes-Real/__init__.robot new file mode 100644 index 0000000..08137c0 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Get-All-Nodes-Real/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Get all nodes diff --git a/setup/e2mgr/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot b/setup/e2mgr/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot new file mode 100644 index 0000000..9b249b1 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Get-All-Nodes/Get_nodes_Add_nodes_and_get.robot @@ -0,0 +1,59 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Library Process +Library ../Scripts/getnodes.py +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library REST ${url} + + + + +*** Test Cases *** +Add nodes to redis db + ${result} getnodes.add + Should Be Equal As Strings ${result} True + + +Get all node ids + GET v1/nodeb/ids + Integer response status 200 + String response body 0 inventoryName test1 + String response body 0 globalNbId plmnId 02f829 + String response body 0 globalNbId nbId 007a80 + String response body 1 inventoryName test2 + String response body 1 globalNbId plmnId 03f829 + String response body 1 globalNbId nbId 001234 + + + + + + + + + + diff --git a/setup/e2mgr/Automation/Tests/Get-All-Nodes/__init__.robot b/setup/e2mgr/Automation/Tests/Get-All-Nodes/__init__.robot new file mode 100644 index 0000000..08137c0 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Get-All-Nodes/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Get all nodes diff --git a/setup/e2mgr/Automation/Tests/GetNodeB-GNB/GetNodeB-GNB_test.robot b/setup/e2mgr/Automation/Tests/GetNodeB-GNB/GetNodeB-GNB_test.robot new file mode 100644 index 0000000..ac39305 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/GetNodeB-GNB/GetNodeB-GNB_test.robot @@ -0,0 +1,58 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library REST ${url} + + + + +*** Test Cases *** + + +Get request gnb + Sleep 2s + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranname} + String response body connectionStatus CONNECTED + String response body nodeType GNB + String response body associatedE2tInstanceAddress ${e2tinstanceaddress} + Integer response body gnb ranFunctions 0 ranFunctionId 1 + Integer response body gnb ranFunctions 0 ranFunctionRevision 1 + Integer response body gnb ranFunctions 1 ranFunctionId 2 + Integer response body gnb ranFunctions 1 ranFunctionRevision 1 + Integer response body gnb ranFunctions 2 ranFunctionId 3 + Integer response body gnb ranFunctions 2 ranFunctionRevision 1 + + + + + diff --git a/setup/e2mgr/Automation/Tests/GetNodeB-GNB/__init__.robot b/setup/e2mgr/Automation/Tests/GetNodeB-GNB/__init__.robot new file mode 100644 index 0000000..f98c6aa --- /dev/null +++ b/setup/e2mgr/Automation/Tests/GetNodeB-GNB/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation GetNodeb-GNB diff --git a/setup/e2mgr/Automation/Tests/Get_E2T_Instances/get_e2t_instances.robot b/setup/e2mgr/Automation/Tests/Get_E2T_Instances/get_e2t_instances.robot new file mode 100644 index 0000000..09bc6ca --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Get_E2T_Instances/get_e2t_instances.robot @@ -0,0 +1,53 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Resource ../Resource/scripts_variables.robot +Library REST ${url} +Library RequestsLibrary +Library Collections +Library OperatingSystem +Library json +Library ../Scripts/e2mdbscripts.py + + +*** Test Cases *** + +Get E2T instances + ${result} e2mdbscripts.populate_e2t_instances_in_e2m_db_for_get_e2t_instances_tc + Create Session getE2tInstances ${url} + ${headers}= Create Dictionary Accept=application/json + ${resp}= Get Request getE2tInstances /v1/e2t/list headers=${headers} + Should Be Equal As Strings ${resp.status_code} 200 + Should Be Equal As Strings ${resp.content} [{"e2tAddress":"e2t.att.com:38000","ranNames":["test1","test2","test3"]},{"e2tAddress":"e2t.att.com:38001","ranNames":[]}] + ${flush} cleanup_db.flush + + + + + + + + + + + + diff --git a/setup/e2mgr/Automation/Tests/Health/__init__.robot b/setup/e2mgr/Automation/Tests/Health/__init__.robot new file mode 100644 index 0000000..092c8a9 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Health/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN health check diff --git a/setup/e2mgr/Automation/Tests/Health/get_health_check.robot b/setup/e2mgr/Automation/Tests/Health/get_health_check.robot new file mode 100644 index 0000000..5dc757c --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Health/get_health_check.robot @@ -0,0 +1,37 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + +*** Test Cases *** +Get Health + GET /v1/health + Integer response status 200 + + diff --git a/setup/e2mgr/Automation/Tests/Health/get_health_check_unhappy.robot b/setup/e2mgr/Automation/Tests/Health/get_health_check_unhappy.robot new file mode 100644 index 0000000..06b4ba4 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Health/get_health_check_unhappy.robot @@ -0,0 +1,40 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} +Suite Teardown Start Dbass + + + +*** Test Cases *** +Get Health Unhappy - Dbass down + Stop Dbass + GET /v1/health + Integer response status 500 + + + diff --git a/setup/e2mgr/Automation/Tests/KeepAlive/__init__.robot b/setup/e2mgr/Automation/Tests/KeepAlive/__init__.robot new file mode 100755 index 0000000..6826893 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/KeepAlive/__init__.robot @@ -0,0 +1,20 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Documentation Keep Alive diff --git a/setup/e2mgr/Automation/Tests/KeepAlive/keep_alive_test.robot b/setup/e2mgr/Automation/Tests/KeepAlive/keep_alive_test.robot new file mode 100644 index 0000000..89e1b87 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/KeepAlive/keep_alive_test.robot @@ -0,0 +1,81 @@ +robot############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library ../Scripts/find_error_script.py +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library ../Scripts/e2mdbscripts.py +Library OperatingSystem +Library Collections +Library REST ${url} + + +*** Test Cases *** + +Get request gnb + Sleep 2s + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranname} + String response body connectionStatus CONNECTED + String response body nodeType GNB + String response body associatedE2tInstanceAddress ${e2tinstanceaddress} + Integer response body gnb ranFunctions 0 ranFunctionId 1 + Integer response body gnb ranFunctions 0 ranFunctionRevision 1 + Integer response body gnb ranFunctions 1 ranFunctionId 2 + Integer response body gnb ranFunctions 1 ranFunctionRevision 1 + Integer response body gnb ranFunctions 2 ranFunctionId 3 + Integer response body gnb ranFunctions 2 ranFunctionRevision 1 + + +prepare logs for tests + Remove log files + Save logs + +Verify RAN is associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance ${ranname} ${e2tinstanceaddress} + Should Be True ${result} + +Stop E2T + Stop E2 + Sleep 3s + +Prepare logs + Remove log files + Save logs + +Verify RAN is not associated with E2T instance + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranname} + Missing response body associatedE2tInstanceAddress + String response body connectionStatus DISCONNECTED + +Verify E2T instance removed from db + ${result} e2mdbscripts.verify_e2t_instance_key_exists ${e2tinstanceaddress} + Should Be True ${result} == False + + ${result} e2mdbscripts.verify_e2t_instance_exists_in_addresses ${e2tinstanceaddress} + Should Be True ${result} == False + +Start E2T + Start E2 \ No newline at end of file diff --git a/setup/e2mgr/Automation/Tests/Lost_Connection/LostConnectionTestConnectedRan.robot b/setup/e2mgr/Automation/Tests/Lost_Connection/LostConnectionTestConnectedRan.robot new file mode 100644 index 0000000..f172c5b --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Lost_Connection/LostConnectionTestConnectedRan.robot @@ -0,0 +1,59 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library ../Scripts/e2mdbscripts.py +Library OperatingSystem +Library Collections +Library REST ${url} + + +*** Test Cases *** + +prepare logs for tests + Remove log files + Save logs + + +Setup Ran and verify it's CONNECTED and associated + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranname} + String response body connectionStatus CONNECTED + String response body associatedE2tInstanceAddress ${e2tinstanceaddress} + +Stop simulator + Stop Simulator + +Verify connection status is DISCONNECTED and RAN is not associated with E2T instance + Sleep 2s + GET ${getNodeb} + Integer response status 200 + String response body ranName ${ranname} + Missing response body associatedE2tInstanceAddress + String response body connectionStatus DISCONNECTED + +Verify E2T instance is NOT associated with RAN + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance ${ranname} ${e2tinstanceaddress} + Should Be True ${result} == False diff --git a/setup/e2mgr/Automation/Tests/Lost_Connection/__init__.robot b/setup/e2mgr/Automation/Tests/Lost_Connection/__init__.robot new file mode 100644 index 0000000..baffd82 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Lost_Connection/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Lost Connection scenarios diff --git a/setup/e2mgr/Automation/Tests/RedButton/RedButton_CONNECTED.robot b/setup/e2mgr/Automation/Tests/RedButton/RedButton_CONNECTED.robot new file mode 100644 index 0000000..dffc874 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/RedButton/RedButton_CONNECTED.robot @@ -0,0 +1,46 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource red_button_keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} + + +*** Test Cases *** + +Verify gnb nodeb connection status is CONNECTED and it's associated to an e2t instance + Verify connected and associated + +Execute Shutdown + Execute Shutdown + +Verify nodeb's connection status is SHUT_DOWN and it's NOT associated to an e2t instance + Verify shutdown for gnb + +Verify E2T instance has no associated RANs + Verify E2T instance has no associated RANs + diff --git a/setup/e2mgr/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot b/setup/e2mgr/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot new file mode 100644 index 0000000..d20a1fa --- /dev/null +++ b/setup/e2mgr/Automation/Tests/RedButton/RedButton_CONNECTED_SHUTDOWN_CONNECTED.robot @@ -0,0 +1,48 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource red_button_keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} + +*** Test Cases *** + +Verify gnb nodeb connection status is CONNECTED and it's associated to an e2t instance + Verify connected and associated + +Execute Shutdown + Execute Shutdown + +Verify nodeb's connection status is SHUT_DOWN and it's NOT associated to an e2t instance + Verify shutdown for gnb + Verify E2T instance has no associated RANs + +Restart simulator + Restart simulator + +Verify gnb nodeb connection status is CONNECTED and it's associated to an e2t instance + Verify connected and associated \ No newline at end of file diff --git a/setup/e2mgr/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot b/setup/e2mgr/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot new file mode 100644 index 0000000..7cdf0a6 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/RedButton/RedButton_SHUTDOWN_SHUTDOWN.robot @@ -0,0 +1,53 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource red_button_keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} + +*** Test Cases *** +Verify nodeb connection status is CONNECTED and it's associated to an e2t instance + Verify connected and associated + +Execute Shutdown + Execute Shutdown + +Verify nodeb's connection status is SHUT_DOWN and it's NOT associated to an e2t instance + Verify shutdown for gnb + +Verify E2T instance has no associated RANs + Verify E2T instance has no associated RANs + + +Execute second Shutdown + Execute Shutdown + +Verify again nodeb's connection status is SHUT_DOWN and it's NOT associated to an e2t instance + Verify shutdown for gnb + +Verify again E2T instance has no associated RANs + Verify E2T instance has no associated RANs diff --git a/setup/e2mgr/Automation/Tests/RedButton/__init__.robot b/setup/e2mgr/Automation/Tests/RedButton/__init__.robot new file mode 100644 index 0000000..a2b0216 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/RedButton/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Red Button Scenarios diff --git a/setup/e2mgr/Automation/Tests/RedButton/red_button_keywords.robot b/setup/e2mgr/Automation/Tests/RedButton/red_button_keywords.robot new file mode 100644 index 0000000..17f7b50 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/RedButton/red_button_keywords.robot @@ -0,0 +1,55 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Documentation Keywords file +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library ../Scripts/e2mdbscripts.py +Library Collections +Library OperatingSystem +Library json +Library REST ${url} + +*** Keywords *** +Verify connected and associated + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranName} + String response body connectionStatus CONNECTED + String response body associatedE2tInstanceAddress ${e2tinstanceaddress} + +Verify shutdown for gnb + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranName} + String response body connectionStatus SHUT_DOWN + Missing response body associatedE2tInstanceAddress + +Verify E2T instance has no associated RANs + ${result} e2mdbscripts.verify_e2t_instance_has_no_associated_rans ${e2tinstanceaddress} + Should Be True ${result} + +Execute Shutdown + PUT /v1/nodeb/shutdown + Integer response status 204 + + + + + diff --git a/setup/e2mgr/Automation/Tests/Resource/Keywords.robot b/setup/e2mgr/Automation/Tests/Resource/Keywords.robot new file mode 100644 index 0000000..46296d8 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Resource/Keywords.robot @@ -0,0 +1,128 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Keywords file +Library ../Scripts/cleanup_db.py +Resource ../Resource/resource.robot +Library OperatingSystem + +*** Keywords *** +Get Request node b gnb + Sleep 1s + GET ${getNodeb} + +Update Ran request + Sleep 1s + PUT ${update_gnb_url} ${update_gnb_body} + + +Update Ran request not valid + Sleep 1s + PUT ${update_gnb_url} ${update_gnb_body_notvalid} + +Remove log files + Remove File ${EXECDIR}/${gnb_log_filename} + Remove File ${EXECDIR}/${e2mgr_log_filename} + Remove File ${EXECDIR}/${e2t_log_filename} + Remove File ${EXECDIR}/${rm_sim_log_filename} + +Save logs + Sleep 1s + Run ${Save_sim_log} + Run ${Save_e2mgr_log} + Run ${Save_e2t_log} + Run ${Save_rm_sim_log} + +Stop Simulator + Run And Return Rc And Output ${stop_simu} + +Prepare Enviorment + Log To Console Starting preparations + ${starting_timestamp} Evaluate datetime.datetime.now(datetime.timezone.utc).isoformat("T") modules=datetime + ${e2t_log_filename} Evaluate "e2t.${SUITE NAME}.log".replace(" ","-") + ${e2mgr_log_filename} Evaluate "e2mgr.${SUITE NAME}.log".replace(" ","-") + ${gnb_log_filename} Evaluate "gnb.${SUITE NAME}.log".replace(" ","-") + ${rm_sim_log_filename} Evaluate "rm_sim.${SUITE NAME}.log".replace(" ","-") + ${Save_sim_log} Evaluate 'docker logs --since ${starting_timestamp} gnbe2_oran_simu > ${gnb_log_filename}' + ${Save_e2mgr_log} Evaluate 'docker logs --since ${starting_timestamp} e2mgr > ${e2mgr_log_filename}' + ${Save_e2t_log} Evaluate 'docker logs --since ${starting_timestamp} e2 > ${e2t_log_filename}' + ${Save_rm_sim_log} Evaluate 'docker logs --since ${starting_timestamp} rm_sim > ${rm_sim_log_filename}' + Set Suite Variable ${e2t_log_filename} + Set Suite Variable ${e2mgr_log_filename} + Set Suite Variable ${gnb_log_filename} + Set Suite Variable ${rm_sim_log_filename} + Set Suite Variable ${Save_sim_log} + Set Suite Variable ${Save_e2mgr_log} + Set Suite Variable ${Save_e2t_log} + Set Suite Variable ${Save_rm_sim_log} + + Log To Console Ready to flush db + ${flush} cleanup_db.flush + Should Be Equal As Strings ${flush} True + Run And Return Rc And Output ${stop_simu} + Run And Return Rc And Output ${docker_Remove} + Run And Return Rc And Output ${run_simu_regular} + Sleep 3s + Log To Console Validating dockers are up + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number} + +Start E2 + Run And Return Rc And Output ${start_e2} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number} + Sleep 2s + +Stop E2 + Run And Return Rc And Output ${stop_e2} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number-1} + Sleep 2s + +Start Dbass + Run And Return Rc And Output ${dbass_remove} + Run And Return Rc And Output ${dbass_start} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number} + +Stop Dbass + Run And Return Rc And Output ${dbass_stop} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number-1} + +Restart simulator + Run And Return Rc And Output ${restart_simu} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number} + +Start RoutingManager Simulator + Run And Return Rc And Output ${start_routingmanager_sim} + +Stop RoutingManager Simulator + Run And Return Rc And Output ${stop_routingmanager_sim} + +Restart simulator with less docker + Run And Return Rc And Output ${restart_simu} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number-1} + diff --git a/setup/e2mgr/Automation/Tests/Resource/resource.robot b/setup/e2mgr/Automation/Tests/Resource/resource.robot new file mode 100644 index 0000000..29e15f8 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Resource/resource.robot @@ -0,0 +1,55 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Resource file + + +*** Variables *** +${docker_number} 5 +${docker_number-1} 4 +${url} http://localhost:3800 +${ranName} gnb:208-092-303030 +${getNodeb} /v1/nodeb/${ranName} +${update_gnb_url} /v1/nodeb/${ranName}/update +${update_gnb_body} {"servedNrCells":[{"servedNrCellInformation":{"cellId":"abcd","choiceNrMode":{"fdd":{}},"nrMode":1,"nrPci":1,"servedPlmns":["whatever"]},"nrNeighbourInfos":[{"nrCgi":"one","choiceNrMode":{"fdd":{}},"nrMode":1,"nrPci":1}]}]} +${update_gnb_body_notvalid} {"servedNrCells":[{"servedNrCellInformation":{"choiceNrMode":{"fdd":{}},"nrMode":1,"nrPci":1,"servedPlmns":["whatever"]},"nrNeighbourInfos":[{"nrCgi":"whatever","choiceNrMode":{"fdd":{}},"nrMode":1,"nrPci":1}]}]} +${E2tInstanceAddress} 10.0.2.15:38000 +${header} {"Content-Type": "application/json"} +${docker_command} docker ps | grep Up | wc --lines +${stop_simu} docker stop gnbe2_oran_simu +${run_simu_regular} docker run -d --name gnbe2_oran_simu --net host --env gNBipv4=10.0.2.15 --env gNBport=5577 --env ricIpv4=10.0.2.15 --env ricPort=36422 --env nbue=0 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/gnbe2_oran_simu:3.2-32 +${docker_Remove} docker rm gnbe2_oran_simu +${docker_restart} docker restart e2mgr +${restart_simu} docker restart gnbe2_oran_simu +${start_e2} docker start e2 +${stop_e2} docker stop e2 +${dbass_start} docker run -d --name dbass -p 6379:6379 --env DBAAS_SERVICE_HOST=10.0.2.15 snapshot.docker.ranco-dev-tools.eastus.cloudapp.azure.com:10001/dbass:1.0.0 +${dbass_remove} docker rm dbass +${dbass_stop} docker stop dbass +${restart_simu} docker restart gnbe2_oran_simu +${stop_docker_e2} docker stop e2 +${stop_routingmanager_sim} docker stop rm_sim +${start_routingmanager_sim} docker start rm_sim + + + diff --git a/setup/e2mgr/Automation/Tests/Resource/scripts_variables.robot b/setup/e2mgr/Automation/Tests/Resource/scripts_variables.robot new file mode 100644 index 0000000..89dc05a --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Resource/scripts_variables.robot @@ -0,0 +1,36 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Message types resource file + + +*** Variables *** + +${E2_INIT_message_type} MType: 1100 +${Setup_failure_message_type} MType: 12003 +${first_retry_to_retrieve_from_db} RnibDataService.retry - retrying 1 GetNodeb +${third_retry_to_retrieve_from_db} RnibDataService.retry - after 3 attempts of GetNodeb +${RIC_RES_STATUS_REQ_message_type_successfully_sent} Message type: 10090 - Successfully sent RMR message +${E2_TERM_KEEP_ALIVE_REQ_message_type_successfully_sent} Message type: 1101 - Successfully sent RMR message + + diff --git a/setup/e2mgr/Automation/Tests/Scripts/cleanup_db.py b/setup/e2mgr/Automation/Tests/Scripts/cleanup_db.py new file mode 100644 index 0000000..4dd3ff0 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/cleanup_db.py @@ -0,0 +1,45 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# +import config +import redis +import time + + +def flush(): + + c = config.redis_ip_address + + p = config.redis_ip_port + + r = redis.Redis(host=c, port=p, db=0) + + r.flushall() + + r.set("{e2Manager},E2TAddresses", "[\"10.0.2.15:38000\"]") + + r.set("{e2Manager},E2TInstance:10.0.2.15:38000","{\"address\":\"10.0.2.15:38000\",\"associatedRanList\":[],\"keepAliveTimestamp\":" + str(int((time.time()+2) * 1000000000)) + ",\"state\":\"ACTIVE\",\"deletionTimeStamp\":0}") + + return True + + + + diff --git a/setup/e2mgr/Automation/Tests/Scripts/config.py b/setup/e2mgr/Automation/Tests/Scripts/config.py new file mode 100644 index 0000000..f33cd51 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/config.py @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +redis_ip_address = 'localhost' +redis_ip_port = 6379 diff --git a/setup/e2mgr/Automation/Tests/Scripts/e2mdbscripts.py b/setup/e2mgr/Automation/Tests/Scripts/e2mdbscripts.py new file mode 100644 index 0000000..b452b93 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/e2mdbscripts.py @@ -0,0 +1,73 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +import config +import redis +import cleanup_db +import json + +def getRedisClientDecodeResponse(): + c = config.redis_ip_address + p = config.redis_ip_port + return redis.Redis(host=c, port=p, db=0, decode_responses=True) + +def verify_ran_is_associated_with_e2t_instance(ranName, e2tAddress): + r = getRedisClientDecodeResponse() + e2tInstanceJson = r.get("{e2Manager},E2TInstance:"+e2tAddress) + e2tInstanceDic = json.loads(e2tInstanceJson) + assocRanList = e2tInstanceDic.get("associatedRanList") + return ranName in assocRanList + +def verify_e2t_instance_has_no_associated_rans(e2tAddress): + r = getRedisClientDecodeResponse() + e2tInstanceJson = r.get("{e2Manager},E2TInstance:"+e2tAddress) + e2tInstanceDic = json.loads(e2tInstanceJson) + assocRanList = e2tInstanceDic.get("associatedRanList") + return not assocRanList + +def verify_e2t_instance_exists_in_addresses(e2tAddress): + r = getRedisClientDecodeResponse() + e2tAddressesJson = r.get("{e2Manager},E2TAddresses") + e2tAddresses = json.loads(e2tAddressesJson) + return e2tAddress in e2tAddresses + +def verify_e2t_instance_key_exists(e2tAddress): + r = getRedisClientDecodeResponse() + return r.exists("{e2Manager},E2TInstance:"+e2tAddress) + +def populate_e2t_instances_in_e2m_db_for_get_e2t_instances_tc(): + r = getRedisClientDecodeResponse() + r.set("{e2Manager},E2TAddresses", "[\"e2t.att.com:38000\",\"e2t.att.com:38001\"]") + r.set("{e2Manager},E2TInstance:e2t.att.com:38000", "{\"address\":\"e2t.att.com:38000\",\"associatedRanList\":[\"test1\",\"test2\",\"test3\"],\"keepAliveTimestamp\":1577619310484022369,\"state\":\"ACTIVE\"}") + r.set("{e2Manager},E2TInstance:e2t.att.com:38001", "{\"address\":\"e2t.att.com:38001\",\"associatedRanList\":[],\"keepAliveTimestamp\":1577619310484022369,\"state\":\"ACTIVE\"}") + return True + +# def dissociate_ran_from_e2tInstance(ranName, e2tAddress): +# r = getRedisClientDecodeResponse() +# e2tInstanceJson = r.get("{e2Manager},E2TInstance:"+e2tAddress) +# e2tInstanceDic = json.loads(e2tInstanceJson) +# assocRanList = e2tInstanceDic.get("associatedRanList") +# print(assocRanList) +# assocRanList.remove(ranName) +# updatedE2tInstanceJson = json.dumps(e2tInstanceDic) +# print(updatedE2tInstanceJson) +# r.set("{e2Manager},E2TInstance:"+e2tAddress, updatedE2tInstanceJson) +# nodebBytes = r.get("{e2Manager},RAN:"+ranName) +# encoded = nodebBytes.decode().replace(e2tAddress,"").encode() +# r.set("{e2Manager},RAN:"+ranName, encoded) + diff --git a/setup/e2mgr/Automation/Tests/Scripts/e2t_db_script.py b/setup/e2mgr/Automation/Tests/Scripts/e2t_db_script.py new file mode 100644 index 0000000..045353c --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/e2t_db_script.py @@ -0,0 +1,58 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +import config +import redis + + +def getRedisClientDecodeResponse(): + + c = config.redis_ip_address + + p = config.redis_ip_port + + return redis.Redis(host=c, port=p, db=0, decode_responses=True) + + +def verify_e2t_addresses_key(): + + r = getRedisClientDecodeResponse() + + value = "[\"10.0.2.15:38000\"]" + + return r.get("{e2Manager},E2TAddresses") == value + + +def verify_e2t_instance_key(): + + r = getRedisClientDecodeResponse() + + e2_address = "\"address\":\"10.0.2.15:38000\"" + e2_associated_ran_list = "\"associatedRanList\":[]" + e2_state = "\"state\":\"ACTIVE\"" + + e2_db_instance = r.get("{e2Manager},E2TInstance:10.0.2.15:38000") + + if e2_db_instance.find(e2_address) < 0: + return False + if e2_db_instance.find(e2_associated_ran_list) < 0: + return False + if e2_db_instance.find(e2_state) < 0: + return False + + return True \ No newline at end of file diff --git a/setup/e2mgr/Automation/Tests/Scripts/find_error_script.py b/setup/e2mgr/Automation/Tests/Scripts/find_error_script.py new file mode 100644 index 0000000..357ccea --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/find_error_script.py @@ -0,0 +1,40 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +def find_error(directory,filename, message): + + path = '/' + + file_path = directory + path + filename + + f = open(file_path, 'r') + + for l in f: + + if l.find(message) > 0: + return True + + return False + + + diff --git a/setup/e2mgr/Automation/Tests/Scripts/find_rmr_message.py b/setup/e2mgr/Automation/Tests/Scripts/find_rmr_message.py new file mode 100644 index 0000000..e75d9c6 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/find_rmr_message.py @@ -0,0 +1,43 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +def verify_logs(directory,filename,mtype,meid): + + path = '/' + + file_path = directory + path + filename + + f = open(file_path, 'r') + + for l in f: + + if (meid is not None): + if l.find(mtype) > 0 and l.find(meid) > 0: + return True + else: + if l.find(mtype) > 0: + return True + + return False + + diff --git a/setup/e2mgr/Automation/Tests/Scripts/getnodes.py b/setup/e2mgr/Automation/Tests/Scripts/getnodes.py new file mode 100644 index 0000000..2161094 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/getnodes.py @@ -0,0 +1,59 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +import config +import redis +import cleanup_db + + +def add(): + + c = config.redis_ip_address + + p = config.redis_ip_port + + r = redis.Redis(host=c, port=p, db=0) + + cleanup_db.flush() + + r.set("{e2Manager},ENB:02f829:007a80", "\n\x05test1\x12\t10.0.2.15\x18\xc9+ \x01*\x10\n\x0602f829\x12\x06007a800\x01:3\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01") + + r.set("{e2Manager},RAN:test1","\x12\t10.0.2.15\x18\xc9+ \x03H\x01R\x02\b\t") + + r.set("{e2Manager},PCI:test1:63" , "\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01") + + r.set("{e2Manager},CELL:02f829:0007ab50" , "\b\x01\x12/\bc\x12\x0f02f829:0007ab50\x1a\x040102\"\x0602f829*\n\n\b\b\x01\x10\x01\x18\x04 \x040\x01") + + r.sadd("{e2Manager},ENB" , "\n\x05test1\x12\x10\n\x0602f829\x12\x06007a80") + + + r.set("{e2Manager},GNB:03f829:002234", "\n\x05test2\x12\t10.0.2.16\x18\xc9+ \x01*\x10\n\x0702f829\x12\x070012340\x02BI\nG\nE\bc\x12\x1102f829:0008ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + + r.set("{e2Manager},RAN:test2", "\n\x05test2\x12\t10.0.2.15\x18\xc9+ \x01*\x10\n\x0702f829\x12\x070012340\x03BI\nG\nE\bc\x12\x1103f829:0008ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + + r.set("{e2Manager},PCI:test2:63", "\b\x02\x1aG\nE\bc\x12\x1102f829:0008ab0120*\x0702f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + + r.set("{e2Manager},NRCELL:02f829:0007ab0120", "\b\x02\x1aG\nE\bc\x12\x1102f829:0007ab0120*\x0602f8290\x01:$\n\"\n\t\bd\"\x05\b\t\x12\x01\t\x12\t\bd\"\x05\b\t\x12\x01\t\x1a\x04\b\x01\x10\x01\"\x04\b\x01\x10\x01") + + r.sadd("{e2Manager},GNB","\n\x05test2\x12\x10\n\x0603f829\x12\x06001234") + + return True diff --git a/setup/e2mgr/Automation/Tests/Scripts/loadscripts.py b/setup/e2mgr/Automation/Tests/Scripts/loadscripts.py new file mode 100644 index 0000000..aec4b59 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/loadscripts.py @@ -0,0 +1,68 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +import redis +import config + +def getRedisClient(): + + c = config.redis_ip_address + + p = config.redis_ip_port + + return redis.Redis(host=c, port=p, db=0) + + +def verify_value(): + + r = getRedisClient() + + value = "\b\x98\xf7\xdd\xa3\xc7\xb4\x83\xde\x15\x12\x11\n\x0f02f829:0007ab00" + + if r.get("{e2Manager},LOAD:test1") != value: + return True + else: + return False + + +def add(): + + r = getRedisClient() + + r.set("{e2Manager},LOAD:test1", "\b\x98\xf7\xdd\xa3\xc7\xb4\x83\xde\x15\x12\x11\n\x0f02f829:0007ab00") + + if r.exists("{e2Manager},LOAD:test1"): + return True + else: + return False + + +def verify(): + + r = getRedisClient() + + if r.exists("{e2Manager},LOAD:test1"): + return True + else: + return False + diff --git a/setup/e2mgr/Automation/Tests/Scripts/rsmscripts.py b/setup/e2mgr/Automation/Tests/Scripts/rsmscripts.py new file mode 100644 index 0000000..db2a869 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Scripts/rsmscripts.py @@ -0,0 +1,97 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +import config +import redis +import json + + +def getRedisClientDecodeResponse(): + + c = config.redis_ip_address + + p = config.redis_ip_port + + return redis.Redis(host=c, port=p, db=0, decode_responses=True) + +def set_general_config_resource_status_false(): + + r = getRedisClientDecodeResponse() + r.set("{rsm},CFG:GENERAL:v1.0.0" , "{\"enableResourceStatus\":false,\"partialSuccessAllowed\":true,\"prbPeriodic\":true,\"tnlLoadIndPeriodic\":true,\"wwLoadIndPeriodic\":true,\"absStatusPeriodic\":true,\"rsrpMeasurementPeriodic\":true,\"csiPeriodic\":true,\"periodicityMs\":1,\"periodicityRsrpMeasurementMs\":3,\"periodicityCsiMs\":3}") + +def verify_rsm_ran_info_start_false(): + + r = getRedisClientDecodeResponse() + + value = "{\"ranName\":\"test1\",\"enb1MeasurementId\":1,\"enb2MeasurementId\":0,\"action\":\"start\",\"actionStatus\":false}" + + return r.get("{rsm},RAN:test1") == value + + +def verify_rsm_ran_info_start_true(): + + r = getRedisClientDecodeResponse() + + rsmInfoStr = r.get("{rsm},RAN:test1") + rsmInfoJson = json.loads(rsmInfoStr) + + response = rsmInfoJson["ranName"] == "test1" and rsmInfoJson["enb1MeasurementId"] == 1 and rsmInfoJson["enb2MeasurementId"] != 1 and rsmInfoJson["action"] == "start" and rsmInfoJson["actionStatus"] == True + + return response + + +def verify_rsm_ran_info_stop_false(): + + r = getRedisClientDecodeResponse() + + rsmInfoStr = r.get("{rsm},RAN:test1") + rsmInfoJson = json.loads(rsmInfoStr) + + response = rsmInfoJson["ranName"] == "test1" and rsmInfoJson["enb1MeasurementId"] == 1 and rsmInfoJson["action"] == "stop" and rsmInfoJson["actionStatus"] == False + + return response + + +def verify_rsm_ran_info_stop_true(): + + r = getRedisClientDecodeResponse() + + rsmInfoStr = r.get("{rsm},RAN:test1") + rsmInfoJson = json.loads(rsmInfoStr) + + response = rsmInfoJson["ranName"] == "test1" and rsmInfoJson["action"] == "stop" and rsmInfoJson["actionStatus"] == True + + return response + +def verify_general_config_enable_resource_status_true(): + + r = getRedisClientDecodeResponse() + + configStr = r.get("{rsm},CFG:GENERAL:v1.0.0") + configJson = json.loads(configStr) + + return configJson["enableResourceStatus"] == True + +def verify_general_config_enable_resource_status_false(): + + r = getRedisClientDecodeResponse() + + configStr = r.get("{rsm},CFG:GENERAL:v1.0.0") + configJson = json.loads(configStr) + + return configJson["enableResourceStatus"] == False \ No newline at end of file diff --git a/setup/e2mgr/Automation/Tests/Setup_Failure/Setup_failure.robot b/setup/e2mgr/Automation/Tests/Setup_Failure/Setup_failure.robot new file mode 100644 index 0000000..052579b --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Setup_Failure/Setup_failure.robot @@ -0,0 +1,67 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library REST ${url} +Suite Teardown Start RoutingManager Simulator + + + + +*** Test Cases *** +Stop Routing manager simulator and restarting simulator + Stop RoutingManager Simulator + Restart simulator with less docker + +prepare logs for tests + Remove log files + Save logs + +Get request gnb + Sleep 2s + Get Request node b gnb + Integer response status 200 + String response body ranName ${ranname} + String response body connectionStatus DISCONNECTED + String response body nodeType GNB + Integer response body gnb ranFunctions 0 ranFunctionId 1 + Integer response body gnb ranFunctions 0 ranFunctionRevision 1 + Integer response body gnb ranFunctions 1 ranFunctionId 2 + Integer response body gnb ranFunctions 1 ranFunctionRevision 1 + Integer response body gnb ranFunctions 2 ranFunctionId 3 + Integer response body gnb ranFunctions 2 ranFunctionRevision 1 + +E2M Logs - Verify RMR Message + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${Setup_failure_message_type} ${None} + Should Be Equal As Strings ${result} True + + + + + diff --git a/setup/e2mgr/Automation/Tests/Setup_Failure/__init__.robot b/setup/e2mgr/Automation/Tests/Setup_Failure/__init__.robot new file mode 100644 index 0000000..51e9ef6 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Setup_Failure/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Setup Failure diff --git a/setup/e2mgr/Automation/Tests/Unhappy/Get_All_Nodedb_HttpResponse500.robot b/setup/e2mgr/Automation/Tests/Unhappy/Get_All_Nodedb_HttpResponse500.robot new file mode 100644 index 0000000..99df9a3 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Unhappy/Get_All_Nodedb_HttpResponse500.robot @@ -0,0 +1,38 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library REST ${url} +Suite Teardown Start Dbass + +*** Test Cases *** +Get All nodes - 500 http - 500 RNIB error + Stop Dbass + GET /v1/nodeb/ids + Integer response status 500 + Integer response body errorCode 500 + String response body errorMessage RNIB error + + diff --git a/setup/e2mgr/Automation/Tests/Unhappy/Get_Nodeb_HttpResponse404.robot b/setup/e2mgr/Automation/Tests/Unhappy/Get_Nodeb_HttpResponse404.robot new file mode 100644 index 0000000..54f2c3f --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Unhappy/Get_Nodeb_HttpResponse404.robot @@ -0,0 +1,37 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + +*** Test Cases *** +Get Request node b gnb - resource not found 404 + GET /v1/nodeb/test5 + Integer response status 404 + Integer response body errorCode 404 + String response body errorMessage "Resource not found" + diff --git a/setup/e2mgr/Automation/Tests/Unhappy/Get_Nodeb_HttpResponse500.robot b/setup/e2mgr/Automation/Tests/Unhappy/Get_Nodeb_HttpResponse500.robot new file mode 100644 index 0000000..05badb6 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Unhappy/Get_Nodeb_HttpResponse500.robot @@ -0,0 +1,53 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/scripts_variables.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library ../Scripts/find_error_script.py +Library OperatingSystem +Library REST ${url} +Suite Teardown Start Dbass + +*** Test Cases *** +Get node b gnb - DB down - 500 + Stop Dbass + GET /v1/nodeb/test5 + Integer response status 500 + Integer response body errorCode 500 + String response body errorMessage RNIB error + + +Prepare logs for tests + Remove log files + Save logs + +Verify e2mgr logs - First retry to retrieve from db + ${result} find_error_script.find_error ${EXECDIR} ${e2mgr_log_filename} ${first_retry_to_retrieve_from_db} + Should Be Equal As Strings ${result} True + +Verify e2mgr logs - Third retry to retrieve from db + ${result} find_error_script.find_error ${EXECDIR} ${e2mgr_log_filename} ${third_retry_to_retrieve_from_db} + Should Be Equal As Strings ${result} True + diff --git a/setup/e2mgr/Automation/Tests/Unhappy/RedButton_HttpResponse500.robot b/setup/e2mgr/Automation/Tests/Unhappy/RedButton_HttpResponse500.robot new file mode 100644 index 0000000..048155c --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Unhappy/RedButton_HttpResponse500.robot @@ -0,0 +1,38 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library REST ${url} +Suite Teardown Start Dbass + +*** Test Cases *** +Red Button - Shut Dwon - 500 RNIB error + Stop Dbass + PUT /v1/nodeb/shutdown + Integer response status 500 + Integer response body errorCode 500 + String response body errorMessage RNIB error + + diff --git a/setup/e2mgr/Automation/Tests/Update_Ran/Update_ran_Unhappy.robot b/setup/e2mgr/Automation/Tests/Update_Ran/Update_ran_Unhappy.robot new file mode 100644 index 0000000..3b00667 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Update_Ran/Update_ran_Unhappy.robot @@ -0,0 +1,47 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library REST ${url} + + + + +*** Test Cases *** + +Update Ran Unhappy + Sleep 2s + Update Ran request not valid + Integer response status 400 + Integer response body errorCode 402 + String response body errorMessage Validation error + + + + + + diff --git a/setup/e2mgr/Automation/Tests/Update_Ran/Update_ran_happy.robot b/setup/e2mgr/Automation/Tests/Update_Ran/Update_ran_happy.robot new file mode 100644 index 0000000..0b104d2 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Update_Ran/Update_ran_happy.robot @@ -0,0 +1,56 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library REST ${url} + + + + +*** Test Cases *** + +Update Ran + Sleep 2s + Update Ran request + Integer response status 200 + String response body ranName ${ranname} + String response body connectionStatus CONNECTED + String response body nodeType GNB + String response body gnb servedNrCells 0 servedNrCellInformation cellId abcd + String response body gnb servedNrCells 0 nrNeighbourInfos 0 nrCgi one + String response body gnb servedNrCells 0 servedNrCellInformation servedPlmns 0 whatever + + + + + + + + + + + diff --git a/setup/e2mgr/Automation/Tests/Update_Ran/__init__.robot b/setup/e2mgr/Automation/Tests/Update_Ran/__init__.robot new file mode 100644 index 0000000..5cca474 --- /dev/null +++ b/setup/e2mgr/Automation/Tests/Update_Ran/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation Update Ran diff --git a/setup/e2mgr/Automation/deprecated/ConfigurationUpdate/ConfigurationUpdate_prepartations_tests.robot b/setup/e2mgr/Automation/deprecated/ConfigurationUpdate/ConfigurationUpdate_prepartations_tests.robot new file mode 100644 index 0000000..f833a3e --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ConfigurationUpdate/ConfigurationUpdate_prepartations_tests.robot @@ -0,0 +1,82 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library REST ${url} +Resource ../Resource/scripts_variables.robot +Library String +Library Process +Library ../Scripts/find_rmr_message.py + + +*** Test Cases *** +X2 - Setup and Get + Post Request setup node b x-2 + Get Request node b enb test1 + String response body connectionStatus CONNECTED + + +Run Configuration update + Run ${Run_Config} + Sleep 1s + +Prepare logs for tests + Remove log files + Save logs + +Verify logs - Confiugration update - Begin Tag Get + ${Configuration}= Grep File ./${gnb_log_filename} + ${ConfigurationAfterStrip}= Strip String ${Configuration} + Should Be Equal ${ConfigurationAfterStrip} + +Verify logs - Confiugration update - End Tag Get + ${ConfigurationEnd}= Grep File ./${gnb_log_filename} + ${ConfigurationEndAfterStrip}= Strip String ${ConfigurationEnd} + Should Be Equal ${ConfigurationEndAfterStrip} + +Verify logs - Confiugration update - Ack Tag Begin + ${ConfigurationAck}= Grep File ./${gnb_log_filename} + ${ConfigurationAckAfter}= Strip String ${ConfigurationAck} + Should Be Equal ${ConfigurationAckAfter} + +Verify logs - Confiugration update - Ack Tag End + ${ConfigurationAckEnd}= Grep File ./${gnb_log_filename} + ${ConfigurationAckEndAfterStrip}= Strip String ${ConfigurationAckEnd} + Should Be Equal ${ConfigurationAckEndAfterStrip} + +Verify logs - find RIC_ENDC_CONF_UPDATE + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${configurationupdate_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True +Verify logs - find RIC_ENDC_CONF_UPDATE_ACK + ${result1} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${configurationupdate_ack_message_type} ${Meid_test1} + Should Be Equal As Strings ${result1} True + + + + + + diff --git a/setup/e2mgr/Automation/deprecated/ConfigurationUpdate/__init__.robot b/setup/e2mgr/Automation/deprecated/ConfigurationUpdate/__init__.robot new file mode 100644 index 0000000..6aca9ea --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ConfigurationUpdate/__init__.robot @@ -0,0 +1,25 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + + +*** Settings *** +Documentation Configuration Update test diff --git a/setup/e2mgr/Automation/deprecated/ENDC_Reset_RAN_TO_RIC/Reset_RAN_Found.robot b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RAN_TO_RIC/Reset_RAN_Found.robot new file mode 100644 index 0000000..9215ebc --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RAN_TO_RIC/Reset_RAN_Found.robot @@ -0,0 +1,86 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} +Resource ../Resource/scripts_variables.robot +Library String +Library Process +Library ../Scripts/find_rmr_message.py +Library ../Scripts/find_error_script.py +Library ../Scripts/rsmscripts.py + +*** Test Cases *** + +Prepare Ran in Connected connectionStatus +# Post Request setup node b endc-setup + Set Headers ${header} + POST /v1/nodeb/endc-setup ${json} + Integer response status 204 + Sleep 1s +# GET /v1/nodeb/test2 + GET /v1/nodeb/test1 + Integer response status 200 +# String response body ranName test2 + String response body ranName test1 + String response body connectionStatus CONNECTED + +Run Reset from RAN + Run ${Run_Config} + Sleep 1s + +Prepare logs for tests + Remove log files + Save logs + +#Verify logs - Reset Sent by e2adapter +# ${result} find_error_script.find_error ${EXECDIR} ${e2adapter_log_filename} ${E2ADAPTER_Setup_Resp} +# Should Be Equal As Strings ${result} True + +Verify logs - Reset Sent by simulator + ${Reset}= Grep File ./${gnb_log_filename} ResetRequest has been sent + Should Be Equal ${Reset} gnbe2_simu: ResetRequest has been sent + +Verify logs - e2mgr logs - messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RIC_X2_RESET_REQ_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +Verify logs - e2mgr logs - messege received + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RIC_X2_RESET_RESP_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RAN Restarted messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_RESTARTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message not sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test2} + Should Be Equal As Strings ${result} False + +Verify RSM RAN info doesn't exist in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} False \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/ENDC_Reset_RAN_TO_RIC/__init__.robot b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RAN_TO_RIC/__init__.robot new file mode 100644 index 0000000..cec78e8 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RAN_TO_RIC/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Reset - ENDC RAN to RIC Scenario 1 diff --git a/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot new file mode 100644 index 0000000..a3ecabe --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot @@ -0,0 +1,65 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/scripts_variables.robot +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library REST ${url} + + +*** Test Cases *** +Prepare Ran in Connected connectionStatus + Post Request setup node b endc-setup + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test2 + Integer response status 200 + String response body ranName test2 + String response body connectionStatus CONNECTED + + +Send Reset reqeust with no cause + Set Headers ${header} + PUT /v1/nodeb/test2/reset + Integer response status 204 + +Prepare logs for tests + Remove log files + Save logs + + +RAN Restarted messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_RESTARTED_message_type} ${Meid_test2} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message not sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test2} + Should Be Equal As Strings ${result} False + +Verify RSM RAN info doesn't exist in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} False diff --git a/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot new file mode 100644 index 0000000..2e5a003 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot @@ -0,0 +1,66 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/scripts_variables.robot +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library REST ${url} + + +*** Test Cases *** +Prepare Ran in Connected connectionStatus + Post Request setup node b endc-setup + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test2 + Integer response status 200 + String response body ranName test2 + String response body connectionStatus CONNECTED + + +Send Reset reqeust with cause + Set Headers ${header} + PUT /v1/nodeb/test2/reset ${resetcausejson} + Integer response status 204 + + +Prepare logs for tests + Remove log files + Save logs + + +RAN Restarted messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_RESTARTED_message_type} ${Meid_test2} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message not sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test2} + Should Be Equal As Strings ${result} False + +Verify RSM RAN info doesn't exist in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} False \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/__init__.robot b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/__init__.robot new file mode 100644 index 0000000..e0025c4 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/ENDC_Reset_RIC_TO_RAN/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Reset API - ENDC RIC to RAN diff --git a/setup/e2mgr/Automation/deprecated/LoadInfomation/Loadinformation_adding_data_and_overwrite.robot b/setup/e2mgr/Automation/deprecated/LoadInfomation/Loadinformation_adding_data_and_overwrite.robot new file mode 100644 index 0000000..32e81b9 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/LoadInfomation/Loadinformation_adding_data_and_overwrite.robot @@ -0,0 +1,56 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Simulator For Load Information +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library Process +Library ../Scripts/loadscripts.py +Library REST ${url} +Suite Teardown Stop Simulator + + +*** Test Cases *** +Verify Load information doesn't exist in redis + ${result}= loadscripts.verify + Should Be Equal As Strings ${result} False + +Adding Load information to overwrite on + ${result}= loadscripts.add + Should Be Equal As Strings ${result} True + + +Trigger X-2 Setup for load information + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body connectionStatus CONNECTED + + +Verify Load information exists in redis + ${result}= loadscripts.verify_value + Should Be Equal As Strings ${result} True + diff --git a/setup/e2mgr/Automation/deprecated/LoadInfomation/Loadinformation_verify_saving.robot b/setup/e2mgr/Automation/deprecated/LoadInfomation/Loadinformation_verify_saving.robot new file mode 100644 index 0000000..f0390fb --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/LoadInfomation/Loadinformation_verify_saving.robot @@ -0,0 +1,56 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Simulator For Load Information +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library Process +Library ../Scripts/loadscripts.py +Library REST ${url} +Suite Teardown Stop Simulator + + + + + +*** Test Cases *** +Verify Load information doesn't exist in redis + ${result}= loadscripts.verify + Should Be Equal As Strings ${result} False + + +Trigger X-2 Setup for load information + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body connectionStatus CONNECTED + + +Verify Load information does exist in redis + Sleep 2s + ${result}= loadscripts.verify + Should Be Equal As Strings ${result} True + diff --git a/setup/e2mgr/Automation/deprecated/LoadInfomation/__init__.robot b/setup/e2mgr/Automation/deprecated/LoadInfomation/__init__.robot new file mode 100644 index 0000000..a2cb163 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/LoadInfomation/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Load Infomration scenarios diff --git a/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/__init__.robot b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/__init__.robot new file mode 100755 index 0000000..4a008d9 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/__init__.robot @@ -0,0 +1,20 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Documentation Resource status diff --git a/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_false_start.robot b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_false_start.robot new file mode 100644 index 0000000..cf34c1f --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_false_start.robot @@ -0,0 +1,57 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Resource resource_status_keywords.robot +Library ../Scripts/rsmscripts.py +Library ../Scripts/find_rmr_message.py +Library OperatingSystem +Library REST ${url_rsm} +Suite Teardown Delete All Sessions + + +*** Test Cases *** +Run setup + rsmscripts.set_general_config_resource_status_false + + Prepare Ran In Connected Status + +Put Http Start Request To RSM + Put Request Resource Status Start + Integer response status 204 + +Verify RSM RAN Info Status Is Start And True In Redis + Sleep 1s + ${result}= rsmscripts.verify_rsm_ran_info_start_true + Should Be Equal As Strings ${result} True + +Verify RSM Enable Resource Status Is True In General Configuration In Redis + ${result}= rsmscripts.verify_general_config_enable_resource_status_true + Should Be Equal As Strings ${result} True + +prepare logs for tests + Remove log files + Save logs + +Verify RSM Resource Status Request Message Sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_false_stop.robot b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_false_stop.robot new file mode 100644 index 0000000..9864e3e --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_false_stop.robot @@ -0,0 +1,56 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Resource resource_status_keywords.robot +Library ../Scripts/rsmscripts.py +Library ../Scripts/find_rmr_message.py +Library OperatingSystem +Library REST ${url_rsm} +Suite Teardown Delete All Sessions + + +*** Test Cases *** +Run setup + rsmscripts.set_general_config_resource_status_false + + Prepare Ran In Connected Status + +Put Http Stop Request To RSM + Put Request Resource Status Stop + Integer response status 204 + +Verify RSM RAN Info Status Is Stop And True In Redis + ${result}= rsmscripts.verify_rsm_ran_info_stop_true + Should Be Equal As Strings ${result} True + +Verify RSM Enable Resource Status Is False In General Configuration In Redis + ${result}= rsmscripts.verify_general_config_enable_resource_status_false + Should Be Equal As Strings ${result} True + +prepare logs for tests + Remove log files + Save logs + +Verify RSM Resource Status Request Message Not Sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} False \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_keywords.robot b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_keywords.robot new file mode 100644 index 0000000..2dc0ec2 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_keywords.robot @@ -0,0 +1,36 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Documentation Keywords file +Library ../Scripts/cleanup_db.py +Resource ../Resource/resource.robot +Library Collections +Library OperatingSystem +Library json +Library RequestsLibrary + + + +*** Keywords *** +Prepare Ran In Connected Status + Create Session x2setup ${url} + ${headers}= Create Dictionary Accept=application/json Content-Type=application/json + ${resp}= Post Request x2setup /v1/nodeb/x2-setup data=${json_setup_rsm_tests} headers=${headers} + Should Be Equal As Strings ${resp.status_code} 204 + diff --git a/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_true_start.robot b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_true_start.robot new file mode 100644 index 0000000..2e40459 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_true_start.robot @@ -0,0 +1,55 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Resource resource_status_keywords.robot +Library ../Scripts/rsmscripts.py +Library ../Scripts/find_rmr_message.py +Library OperatingSystem +Library REST ${url_rsm} +Suite Teardown Delete All Sessions + + +*** Test Cases *** +Run setup + Prepare Ran In Connected Status + +Put Http Start Request To RSM + Put Request Resource Status Start + Integer response status 204 + +Verify RSM RAN Info Status Is Start And True In Redis + Sleep 1s + ${result}= rsmscripts.verify_rsm_ran_info_start_true + Should Be Equal As Strings ${result} True + +Verify RSM Enable Resource Status Is True In General Configuration In Redis + ${result}= rsmscripts.verify_general_config_enable_resource_status_true + Should Be Equal As Strings ${result} True + +prepare logs for RSM tests + Remove log files + Save logs + +Verify RSM Resource Status Request Message Sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_true_stop.robot b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_true_stop.robot new file mode 100644 index 0000000..32cab38 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RSM_Resource_Status/resource_status_true_stop.robot @@ -0,0 +1,54 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Resource resource_status_keywords.robot +Library ../Scripts/rsmscripts.py +Library ../Scripts/find_rmr_message.py +Library OperatingSystem +Library REST ${url_rsm} +Suite Teardown Delete All Sessions + + +*** Test Cases *** +Run setup + Prepare Ran In Connected Status + +Put Http Stop Request To RSM + Put Request Resource Status Stop + Integer response status 204 + +#Verify RSM RAN Info Status Is Stop And False In Redis +#${result}= rsmscripts.verify_rsm_ran_info_stop_false +#Should Be Equal As Strings ${result} True + +Verify RSM Enable Resource Status Is False In General Configuration In Redis + ${result}= rsmscripts.verify_general_config_enable_resource_status_false + Should Be Equal As Strings ${result} True + +prepare logs for tests + Remove log files + Save logs + +Verify RSM Resource Status Request Message Sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/RedButton/RedButton_DISCONNECTED.robot b/setup/e2mgr/Automation/deprecated/RedButton/RedButton_DISCONNECTED.robot new file mode 100644 index 0000000..9e047f9 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/RedButton/RedButton_DISCONNECTED.robot @@ -0,0 +1,46 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource red_button_keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} + + + +*** Test Cases *** +Verify gnb nodeb connection status is CONNECTED and it's associated to an e2t instance + Verify connected and associated + + + +Execute Shutdown + Execute Shutdown + +Verify nodeb's connection status is SHUT_DOWN and it's NOT associated to an e2t instance + Verify shutdown for gnb + +Verify E2T instance has no associated RANs + Verify E2T instance has no associated RANs diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse400.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse400.robot new file mode 100644 index 0000000..6227d3a --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse400.robot @@ -0,0 +1,58 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Library Collections +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + + + +*** Test Cases *** +Reset - 400 http - 401 Corrupted json + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + String response body connectionStatus CONNECTED + Set Headers ${header} + PUT /v1/nodeb/test1/reset {abc} + Integer response status 400 + Integer response body errorCode 401 + String response body errorMessage corrupted json + +Reset - 400 http - 401 Validation error + Set Headers ${header} + PUT /v1/nodeb/test1/reset ${resetbadcausejson} + Integer response status 400 + Integer response body errorCode 402 + String response body errorMessage Validation error + + + + + diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse400_wrongstate.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse400_wrongstate.robot new file mode 100644 index 0000000..f0c36f7 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse400_wrongstate.robot @@ -0,0 +1,57 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Library Collections +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + + + +*** Test Cases *** + +Pre Condition for Connecting - no simu + Run And Return Rc And Output ${stop_simu} + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number-1} + +Reset - 400 http - 403 wrong state + Post Request setup node b x-2 + Integer response status 204 + Sleep 10s + GET /v1/nodeb/test1 + String response body connectionStatus DISCONNECTED + Set Headers ${header} + PUT /v1/nodeb/test1/reset + #Output + Integer response status 400 + Integer response body errorCode 403 + String response body errorMessage ${403_reset_message} + + + + diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse404.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse404.robot new file mode 100644 index 0000000..dfa55be --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Reset_HttpResponse404.robot @@ -0,0 +1,38 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + +*** Test Cases *** +Reset - 404 http - 404 Corrupted json + Set Headers ${header} + PUT /v1/nodeb/test11/reset + Integer response status 404 + Integer response body errorCode 404 + String response body errorMessage Resource not found + diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse400.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse400.robot new file mode 100644 index 0000000..f8da377 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse400.robot @@ -0,0 +1,51 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Library Collections +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + +*** Test Cases *** +Endc-setup - 400 http - 401 Corrupted json + Set Headers ${header} + POST /v1/nodeb/endc-setup + Integer response status 400 + Integer response body errorCode 401 + String response body errorMessage corrupted json + +Endc-setup - 400 http - 402 Validation error + Set Headers ${header} + POST /v1/nodeb/endc-setup ${endcbadjson} + Integer response status 400 + Integer response body errorCode 402 + String response body errorMessage Validation error + + + + + diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse500.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse500.robot new file mode 100644 index 0000000..7bcb26a --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse500.robot @@ -0,0 +1,39 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library REST ${url} +Suite Teardown Start Dbass + +*** Test Cases *** +ENDC-setup - 500 http - 500 RNIB error + Stop Dbass + Set Headers ${header} + POST /v1/nodeb/endc-setup ${json} + Integer response status 500 + Integer response body errorCode 500 + String response body errorMessage RNIB error + + diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse503.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse503.robot new file mode 100644 index 0000000..0e7e9c4 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_HttpResponse503.robot @@ -0,0 +1,42 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library ../Scripts/e2mdbscripts.py +Library REST ${url} +Suite Teardown Start RoutingManager Simulator + +*** Test Cases *** +ENDC-setup - 503 http - 511 No Routing Manager Available + Stop RoutingManager Simulator + Set Headers ${header} + POST /v1/nodeb/x2-setup ${json} + Integer response status 503 + Integer response body errorCode 511 + String response body errorMessage No Routing Manager Available + +Verify RAN is NOT associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance test1 e2t.att.com:38000 + Should Be True ${result} == False diff --git a/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_setup_failure.robot b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_setup_failure.robot new file mode 100644 index 0000000..b86379c --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/Unhappy/Setup_Request_setup_failure.robot @@ -0,0 +1,46 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/Keywords.robot +Resource ../Resource/resource.robot +Library OperatingSystem +Library REST ${url} + + + + +*** Test Cases *** +Post Request setup node b x2-setup - setup failure + Set Headers ${header} + POST /v1/nodeb/x2-setup ${json} + Sleep 1s + POST /v1/nodeb/x2-setup ${json} + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body connectionStatus CONNECTED_SETUP_FAILED + String response body failureType X2_SETUP_FAILURE + + + diff --git a/setup/e2mgr/Automation/deprecated/X2-Setup/X2_Setup_reuqest_test.robot b/setup/e2mgr/Automation/deprecated/X2-Setup/X2_Setup_reuqest_test.robot new file mode 100644 index 0000000..337bf7a --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2-Setup/X2_Setup_reuqest_test.robot @@ -0,0 +1,81 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library ../Scripts/e2mdbscripts.py +Library REST ${url} + +*** Test Cases *** +X2 - Setup Test + Post Request setup node b x-2 + Integer response status 204 + +X2 - Get Nodeb + Get Request Node B Enb test1 + Integer response status 200 + String response body ranName test1 + String response body ip ${ip_gnb_simu} + Integer response body port 5577 + String response body connectionStatus CONNECTED + String response body nodeType ENB + String response body associatedE2tInstanceAddress e2t.att.com:38000 + String response body enb enbType MACRO_ENB + Integer response body enb servedCells 0 pci 99 + String response body enb servedCells 0 cellId 02f829:0007ab00 + String response body enb servedCells 0 tac 0102 + String response body enb servedCells 0 broadcastPlmns 0 "02f829" + Integer response body enb servedCells 0 choiceEutraMode fdd ulearFcn 1 + Integer response body enb servedCells 0 choiceEutraMode fdd dlearFcn 1 + String response body enb servedCells 0 choiceEutraMode fdd ulTransmissionBandwidth BW50 + String response body enb servedCells 0 choiceEutraMode fdd dlTransmissionBandwidth BW50 + + +prepare logs for tests + Remove log files + Save logs + + +X2 - RAN Connected message going to be sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_CONNECTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True + +Verify RSM RAN info exists in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} True + +Verify RAN is associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance test1 e2t.att.com:38000 + Should Be True ${result} + + + diff --git a/setup/e2mgr/Automation/deprecated/X2-Setup/__init__.robot b/setup/e2mgr/Automation/deprecated/X2-Setup/__init__.robot new file mode 100644 index 0000000..93f2e74 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2-Setup/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation X2-Setup ENB diff --git a/setup/e2mgr/Automation/deprecated/X2-Setup/x2_setup_existing_assoc_test.robot b/setup/e2mgr/Automation/deprecated/X2-Setup/x2_setup_existing_assoc_test.robot new file mode 100644 index 0000000..f1ec70d --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2-Setup/x2_setup_existing_assoc_test.robot @@ -0,0 +1,67 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library ../Scripts/e2mdbscripts.py +Library REST ${url} + +*** Test Cases *** +X2 - Setup Test 1 + Post Request setup node b x-2 + Integer response status 204 + +X2 - Setup Test 2 + Post Request setup node b x-2 + Integer response status 204 + +X2 - Get Nodeb + Get Request Node B Enb test1 + Integer response status 200 + String response body ranName test1 + String response body associatedE2tInstanceAddress e2t.att.com:38000 + +prepare logs for tests + Remove log files + Save logs + +X2 - RAN Connected message going to be sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_CONNECTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True + +Verify RSM RAN info exists in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} True + +Verify RAN is associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance test1 e2t.att.com:38000 + Should Be True ${result} diff --git a/setup/e2mgr/Automation/deprecated/X2-Setup/x2_setup_existing_not_assoc_test.robot b/setup/e2mgr/Automation/deprecated/X2-Setup/x2_setup_existing_not_assoc_test.robot new file mode 100644 index 0000000..457ca9c --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2-Setup/x2_setup_existing_not_assoc_test.robot @@ -0,0 +1,71 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Resource ../Resource/scripts_variables.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library ../Scripts/e2mdbscripts.py +Library REST ${url} + +*** Test Cases *** +X2 - Setup Test 1 + Post Request setup node b x-2 + Integer response status 204 + +Restart Simulator + Restart Simulator + +Verify RAN is NOT associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance test1 e2t.att.com:38000 + Should Be True ${result} == False + + +X2 - Setup Test 2 + Post Request setup node b x-2 + Integer response status 204 + +X2 - Get Nodeb + Get Request Node B Enb test1 + Integer response status 200 + String response body ranName test1 + String response body associatedE2tInstanceAddress e2t.att.com:38000 + +prepare logs for tests + Remove log files + Save logs + +X2 - RAN Connected message going to be sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_CONNECTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True + +Verify RSM RAN info exists in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} True + +Verify RAN is associated with E2T instance + ${result} e2mdbscripts.verify_ran_is_associated_with_e2t_instance test1 e2t.att.com:38000 + Should Be True ${result} diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC/Reset_RAN_Found.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC/Reset_RAN_Found.robot new file mode 100644 index 0000000..6f50b7e --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC/Reset_RAN_Found.robot @@ -0,0 +1,79 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} +Resource ../Resource/scripts_variables.robot +Library String +Library Process +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py + + + +*** Test Cases *** + +Prepare Ran in Connected connectionStatus + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body connectionStatus CONNECTED + +Run Reset from RAN + Run ${Run_Config} + Sleep 1s + +Prepare logs for tests + Remove log files + Save logs + +Verify logs - Reset Sent by simulator + ${Reset}= Grep File ./${gnb_log_filename} ResetRequest has been sent + Should Be Equal ${Reset} gnbe2_simu: ResetRequest has been sent + +Verify logs - e2mgr logs - messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RIC_X2_RESET_REQ_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +Verify logs - e2mgr logs - messege received + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RIC_X2_RESET_RESP_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RAN Restarted messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_RESTARTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True + +Verify RSM RAN info exists in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC/__init__.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC/__init__.robot new file mode 100644 index 0000000..068ea48 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Reset - X2 RAN to RIC Scenario 1 diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC_Unhappy/Reset_RNIB.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC_Unhappy/Reset_RNIB.robot new file mode 100644 index 0000000..8dc416b --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC_Unhappy/Reset_RNIB.robot @@ -0,0 +1,81 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library Collections +Library REST ${url} +Resource ../Resource/scripts_variables.robot +Library String +Library Process +Library ../Scripts/find_rmr_message.py +Library ../Scripts/find_error_script.py +Suite Teardown Start Dbass with 4 dockers + + +*** Test Cases *** + +Prepare Ran in Connected connectionStatus + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body connectionStatus CONNECTED + +Stop RNIB + Stop Dbass + + +Run Reset from RAN + Run ${Run_Config} + Sleep 60s + +Prepare logs for tests + Remove log files + Save logs + +Verify logs - Reset Sent by simulator + ${Reset}= Grep File ./${gnb_log_filename} ResetRequest has been sent + Should Be Equal ${Reset} gnbe2_simu: ResetRequest has been sent + +Verify logs for restart received + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RIC_X2_RESET_REQ_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +Verify for error on retrying + ${result} find_error_script.find_error ${EXECDIR} ${e2mgr_log_filename} ${failed_to_retrieve_nodeb_message} + Should Be Equal As Strings ${result} True + + +*** Keywords *** +Start Dbass with 4 dockers + Run And Return Rc And Output ${dbass_remove} + Run And Return Rc And Output ${dbass_start} + Sleep 5s + ${result}= Run And Return Rc And Output ${docker_command} + Should Be Equal As Integers ${result[1]} ${docker_number-1} + diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC_Unhappy/__init__.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC_Unhappy/__init__.robot new file mode 100644 index 0000000..f5ce189 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RAN_TO_RIC_Unhappy/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Reset - RAN to RIC Scenario Unhappy diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot new file mode 100644 index 0000000..3227fe7 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/Reset_Happy_no_cause.robot @@ -0,0 +1,65 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/scripts_variables.robot +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library REST ${url} + + +*** Test Cases *** +Prepare Ran in Connected connectionStatus + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body connectionStatus CONNECTED + + +Send Reset reqeust with no cause + Set Headers ${header} + PUT /v1/nodeb/test1/reset + Integer response status 204 + +Prepare logs for tests + Remove log files + Save logs + + +RAN Restarted messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_RESTARTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True + +Verify RSM RAN info exists in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot new file mode 100644 index 0000000..d4103e8 --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/Reset_Happy_with_cause.robot @@ -0,0 +1,66 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Suite Setup Prepare Enviorment +Resource ../Resource/scripts_variables.robot +Resource ../Resource/resource.robot +Resource ../Resource/Keywords.robot +Library OperatingSystem +Library ../Scripts/find_rmr_message.py +Library ../Scripts/rsmscripts.py +Library REST ${url} + + +*** Test Cases *** +Prepare Ran in Connected connectionStatus + Post Request setup node b x-2 + Integer response status 204 + Sleep 1s + GET /v1/nodeb/test1 + Integer response status 200 + String response body ranName test1 + String response body connectionStatus CONNECTED + + +Send Reset reqeust with cause + Set Headers ${header} + PUT /v1/nodeb/test1/reset ${resetcausejson} + Integer response status 204 + + +Prepare logs for tests + Remove log files + Save logs + + +RAN Restarted messege sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${e2mgr_log_filename} ${RAN_RESTARTED_message_type} ${Meid_test1} + Should Be Equal As Strings ${result} True + +RSM RESOURCE STATUS REQUEST message sent + ${result} find_rmr_message.verify_logs ${EXECDIR} ${rsm_log_filename} ${RIC_RES_STATUS_REQ_message_type_successfully_sent} ${RAN_NAME_test1} + Should Be Equal As Strings ${result} True + +Verify RSM RAN info exists in redis + ${result}= rsmscripts.verify_rsm_ran_info_start_false + Should Be Equal As Strings ${result} True \ No newline at end of file diff --git a/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/__init__.robot b/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/__init__.robot new file mode 100644 index 0000000..1fd403e --- /dev/null +++ b/setup/e2mgr/Automation/deprecated/X2_Reset_RIC_TO_RAN/__init__.robot @@ -0,0 +1,24 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +*** Settings *** +Documentation ORAN Reset API - X2 RIC to RAN diff --git a/setup/e2mgr/Automation/run_tests.sh b/setup/e2mgr/Automation/run_tests.sh new file mode 100755 index 0000000..704ebbb --- /dev/null +++ b/setup/e2mgr/Automation/run_tests.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +cd /opt/Tests +robot . \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/.cproject b/setup/e2mgr/E2Manager/3rdparty/asn1codec/.cproject new file mode 100644 index 0000000..e5866e4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/.cproject @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/.project b/setup/e2mgr/E2Manager/3rdparty/asn1codec/.project new file mode 100644 index 0000000..f8a49ae --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/.project @@ -0,0 +1,27 @@ + + + asn1codec + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/Makefile b/setup/e2mgr/E2Manager/3rdparty/asn1codec/Makefile new file mode 100644 index 0000000..e8086b8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/Makefile @@ -0,0 +1,72 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# +CFLAGS=-Wall -Wpedantic -std=c11 -Og -I./inc -I./src -I./e2ap_engine -DASN_DISABLE_OER_SUPPORT -DASN_PDU_COLLECTION -D_POSIX_C_SOURCE=200809L -ggdb +export CFLAGS +OBJDIR=lib +LIB=$(OBJDIR)/libe2ap_codec.a +LIBSRC=configuration_update_wrapper.c x2setup_request_wrapper.c x2reset_request_wrapper.c x2reset_response_wrapper.c asn1codec_utils.c +LIBOBJ=$(addprefix $(OBJDIR)/,$(LIBSRC:.c=.o)) +TESTX2SETUPREQUEST=tests/x2setup_request_wrapper_test +TESTCONFUPDATE=tests/configuration_update_wrapper_test +TESTX2RESETREQUEST=tests/x2reset_request_wrapper_test +TESTX2RESETRESPONSE=tests/x2reset_response_wrapper_test +TESTUNPACKXER=tests/unpack_xer + +.PHONY: all clean e2ap_engine + +all: $(LIB) $(TESTX2SETUPREQUEST) $(TESTCONFUPDATE) $(TESTX2RESETREQUEST) $(TESTUNPACKXER) $(TESTX2RESETRESPONSE) + +e2ap_engine/libasncodec.a: + cd e2ap_engine/ && make -f converter-example.mk + +$(OBJDIR)/%.o: src/%.c e2ap_engine/*.h + mkdir -p $(dir $@) + $(CC) $(CFLAGS) -c $< -o $@ + +$(LIB): e2ap_engine/libasncodec.a $(LIBOBJ) + $(AR) -crv $(LIB) $(LIBOBJ) + +$(TESTX2SETUPREQUEST): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +$(TESTCONFUPDATE): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +$(TESTX2RESETREQUEST): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +$(TESTUNPACKXER): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +$(TESTX2RESETRESPONSE): % : $(LIB) src/%.c + mkdir -p $(dir $@) + $(CC) $(CFLAGS) src/$@.c -o $@ $(LIB) e2ap_engine/libasncodec.a + +clean: + rm -rf $(OBJDIR) tests +clobber: + cd e2ap_engine/ && make -f converter-example.mk clean + rm -rf $(OBJDIR) tests diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABS-Status.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABS-Status.c new file mode 100644 index 0000000..506ea49 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABS-Status.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABS-Status.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ABS_Status_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status, dL_ABS_status), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_ABS_status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-ABS-status" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status, usableABSInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_UsableABSInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "usableABSInformation" + }, + { ATF_POINTER, 1, offsetof(struct ABS_Status, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P106, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ABS_Status_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ABS_Status_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABS_Status_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-ABS-status */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* usableABSInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_specs_1 = { + sizeof(struct ABS_Status), + offsetof(struct ABS_Status, _asn_ctx), + asn_MAP_ABS_Status_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ABS_Status_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABS_Status = { + "ABS-Status", + "ABS-Status", + &asn_OP_SEQUENCE, + asn_DEF_ABS_Status_tags_1, + sizeof(asn_DEF_ABS_Status_tags_1) + /sizeof(asn_DEF_ABS_Status_tags_1[0]), /* 1 */ + asn_DEF_ABS_Status_tags_1, /* Same as above */ + sizeof(asn_DEF_ABS_Status_tags_1) + /sizeof(asn_DEF_ABS_Status_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABS_Status_1, + 3, /* Elements count */ + &asn_SPC_ABS_Status_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABS-Status.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABS-Status.h new file mode 100644 index 0000000..8b03f2b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABS-Status.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABS_Status_H_ +#define _ABS_Status_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DL-ABS-status.h" +#include "UsableABSInformation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ABS-Status */ +typedef struct ABS_Status { + DL_ABS_status_t dL_ABS_status; + UsableABSInformation_t usableABSInformation; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABS_Status_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ABS_Status; +extern asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_specs_1; +extern asn_TYPE_member_t asn_MBR_ABS_Status_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABS_Status_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformation.c new file mode 100644 index 0000000..fb941b1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformation.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABSInformation.h" + +#include "ABSInformationFDD.h" +#include "ABSInformationTDD.h" +asn_per_constraints_t asn_PER_type_ABSInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ABSInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct ABSInformation, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ABSInformationFDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct ABSInformation, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ABSInformationTDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformation, choice.abs_inactive), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "abs-inactive" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tdd */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* abs-inactive */ +}; +asn_CHOICE_specifics_t asn_SPC_ABSInformation_specs_1 = { + sizeof(struct ABSInformation), + offsetof(struct ABSInformation, _asn_ctx), + offsetof(struct ABSInformation, present), + sizeof(((struct ABSInformation *)0)->present), + asn_MAP_ABSInformation_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformation = { + "ABSInformation", + "ABSInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ABSInformation_constr_1, CHOICE_constraint }, + asn_MBR_ABSInformation_1, + 3, /* Elements count */ + &asn_SPC_ABSInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformation.h new file mode 100644 index 0000000..29bb4eb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformation.h @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABSInformation_H_ +#define _ABSInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ABSInformation_PR { + ABSInformation_PR_NOTHING, /* No components present */ + ABSInformation_PR_fdd, + ABSInformation_PR_tdd, + ABSInformation_PR_abs_inactive + /* Extensions may appear below */ + +} ABSInformation_PR; + +/* Forward declarations */ +struct ABSInformationFDD; +struct ABSInformationTDD; + +/* ABSInformation */ +typedef struct ABSInformation { + ABSInformation_PR present; + union ABSInformation_u { + struct ABSInformationFDD *fdd; + struct ABSInformationTDD *tdd; + NULL_t abs_inactive; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ABSInformation; +extern asn_CHOICE_specifics_t asn_SPC_ABSInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_ABSInformation_1[3]; +extern asn_per_constraints_t asn_PER_type_ABSInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABSInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationFDD.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationFDD.c new file mode 100644 index 0000000..a5e285e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationFDD.c @@ -0,0 +1,228 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABSInformationFDD.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_measurement_subset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_numberOfCellSpecificAntennaPorts_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_measurement_subset_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3[] = { + { 0, 3, "one" }, + { 1, 3, "two" }, + { 2, 4, "four" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3[] = { + 2, /* four(2) */ + 0, /* one(0) */ + 1 /* two(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 = { + asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3 = { + "numberOfCellSpecificAntennaPorts", + "numberOfCellSpecificAntennaPorts", + &asn_OP_NativeEnumerated, + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]) - 1, /* 1 */ + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, /* Same as above */ + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_numberOfCellSpecificAntennaPorts_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationFDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD, abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_abs_pattern_info_constr_2, memb_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "abs-pattern-info" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD, numberOfCellSpecificAntennaPorts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_numberOfCellSpecificAntennaPorts_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfCellSpecificAntennaPorts" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD, measurement_subset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_measurement_subset_constr_8, memb_measurement_subset_constraint_1 }, + 0, 0, /* No default value */ + "measurement-subset" + }, + { ATF_POINTER, 1, offsetof(struct ABSInformationFDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P104, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ABSInformationFDD_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_ABSInformationFDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationFDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfCellSpecificAntennaPorts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measurement-subset */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_specs_1 = { + sizeof(struct ABSInformationFDD), + offsetof(struct ABSInformationFDD, _asn_ctx), + asn_MAP_ABSInformationFDD_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ABSInformationFDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD = { + "ABSInformationFDD", + "ABSInformationFDD", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationFDD_tags_1, + sizeof(asn_DEF_ABSInformationFDD_tags_1) + /sizeof(asn_DEF_ABSInformationFDD_tags_1[0]), /* 1 */ + asn_DEF_ABSInformationFDD_tags_1, /* Same as above */ + sizeof(asn_DEF_ABSInformationFDD_tags_1) + /sizeof(asn_DEF_ABSInformationFDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationFDD_1, + 4, /* Elements count */ + &asn_SPC_ABSInformationFDD_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationFDD.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationFDD.h new file mode 100644 index 0000000..b39dcbd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationFDD.h @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABSInformationFDD_H_ +#define _ABSInformationFDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ABSInformationFDD__numberOfCellSpecificAntennaPorts { + ABSInformationFDD__numberOfCellSpecificAntennaPorts_one = 0, + ABSInformationFDD__numberOfCellSpecificAntennaPorts_two = 1, + ABSInformationFDD__numberOfCellSpecificAntennaPorts_four = 2 + /* + * Enumeration is extensible + */ +} e_ABSInformationFDD__numberOfCellSpecificAntennaPorts; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ABSInformationFDD */ +typedef struct ABSInformationFDD { + BIT_STRING_t abs_pattern_info; + long numberOfCellSpecificAntennaPorts; + BIT_STRING_t measurement_subset; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformationFDD_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_specs_1; +extern asn_TYPE_member_t asn_MBR_ABSInformationFDD_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABSInformationFDD_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationTDD.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationTDD.c new file mode 100644 index 0000000..1d62f1c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationTDD.c @@ -0,0 +1,228 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ABSInformationTDD.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 70)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_measurement_subset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 70)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_numberOfCellSpecificAntennaPorts_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 70 } /* (SIZE(1..70,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_measurement_subset_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 70 } /* (SIZE(1..70,...)) */, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3[] = { + { 0, 3, "one" }, + { 1, 3, "two" }, + { 2, 4, "four" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3[] = { + 2, /* four(2) */ + 0, /* one(0) */ + 1 /* two(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 = { + asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_3, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3 = { + "numberOfCellSpecificAntennaPorts", + "numberOfCellSpecificAntennaPorts", + &asn_OP_NativeEnumerated, + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]) - 1, /* 1 */ + asn_DEF_numberOfCellSpecificAntennaPorts_tags_3, /* Same as above */ + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_numberOfCellSpecificAntennaPorts_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_numberOfCellSpecificAntennaPorts_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationTDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD, abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_abs_pattern_info_constr_2, memb_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "abs-pattern-info" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD, numberOfCellSpecificAntennaPorts), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_numberOfCellSpecificAntennaPorts_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfCellSpecificAntennaPorts" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD, measurement_subset), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_measurement_subset_constr_8, memb_measurement_subset_constraint_1 }, + 0, 0, /* No default value */ + "measurement-subset" + }, + { ATF_POINTER, 1, offsetof(struct ABSInformationTDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P105, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ABSInformationTDD_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_ABSInformationTDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationTDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* numberOfCellSpecificAntennaPorts */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measurement-subset */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_specs_1 = { + sizeof(struct ABSInformationTDD), + offsetof(struct ABSInformationTDD, _asn_ctx), + asn_MAP_ABSInformationTDD_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ABSInformationTDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD = { + "ABSInformationTDD", + "ABSInformationTDD", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationTDD_tags_1, + sizeof(asn_DEF_ABSInformationTDD_tags_1) + /sizeof(asn_DEF_ABSInformationTDD_tags_1[0]), /* 1 */ + asn_DEF_ABSInformationTDD_tags_1, /* Same as above */ + sizeof(asn_DEF_ABSInformationTDD_tags_1) + /sizeof(asn_DEF_ABSInformationTDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationTDD_1, + 4, /* Elements count */ + &asn_SPC_ABSInformationTDD_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationTDD.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationTDD.h new file mode 100644 index 0000000..b756b14 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ABSInformationTDD.h @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ABSInformationTDD_H_ +#define _ABSInformationTDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ABSInformationTDD__numberOfCellSpecificAntennaPorts { + ABSInformationTDD__numberOfCellSpecificAntennaPorts_one = 0, + ABSInformationTDD__numberOfCellSpecificAntennaPorts_two = 1, + ABSInformationTDD__numberOfCellSpecificAntennaPorts_four = 2 + /* + * Enumeration is extensible + */ +} e_ABSInformationTDD__numberOfCellSpecificAntennaPorts; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ABSInformationTDD */ +typedef struct ABSInformationTDD { + BIT_STRING_t abs_pattern_info; + long numberOfCellSpecificAntennaPorts; + BIT_STRING_t measurement_subset; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformationTDD_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_specs_1; +extern asn_TYPE_member_t asn_MBR_ABSInformationTDD_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ABSInformationTDD_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ANY.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ANY.c new file mode 100644 index 0000000..6e327db --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ANY.c @@ -0,0 +1,451 @@ + +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, + OCTET_STRING_print, + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + 0, + 0, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + ANY_decode_uper, + ANY_encode_uper, + ANY_decode_aper, + ANY_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { 0, 0, asn_generic_no_constraint }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key); + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ANY.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ANY.h new file mode 100644 index 0000000..ba17b91 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ANY.h @@ -0,0 +1,66 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +asn_struct_free_f ANY_free; +asn_struct_print_f ANY_print; +ber_type_decoder_f ANY_decode_ber; +der_type_encoder_f ANY_encode_der; +xer_type_encoder_f ANY_encode_xer; +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; + +#define ANY_free OCTET_STRING_free +#define ANY_print OCTET_STRING_print +#define ANY_compare OCTET_STRING_compare +#define ANY_constraint asn_generic_no_constraint +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#define ANY_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AS-SecurityInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AS-SecurityInformation.c new file mode 100644 index 0000000..14f2037 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AS-SecurityInformation.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AS-SecurityInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AS_SecurityInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation, key_eNodeB_star), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Key_eNodeB_Star, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "key-eNodeB-star" + }, + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation, nextHopChainingCount), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NextHopChainingCount, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nextHopChainingCount" + }, + { ATF_POINTER, 1, offsetof(struct AS_SecurityInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P110, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AS_SecurityInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_AS_SecurityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AS_SecurityInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* key-eNodeB-star */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nextHopChainingCount */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_specs_1 = { + sizeof(struct AS_SecurityInformation), + offsetof(struct AS_SecurityInformation, _asn_ctx), + asn_MAP_AS_SecurityInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_AS_SecurityInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation = { + "AS-SecurityInformation", + "AS-SecurityInformation", + &asn_OP_SEQUENCE, + asn_DEF_AS_SecurityInformation_tags_1, + sizeof(asn_DEF_AS_SecurityInformation_tags_1) + /sizeof(asn_DEF_AS_SecurityInformation_tags_1[0]), /* 1 */ + asn_DEF_AS_SecurityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_AS_SecurityInformation_tags_1) + /sizeof(asn_DEF_AS_SecurityInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AS_SecurityInformation_1, + 3, /* Elements count */ + &asn_SPC_AS_SecurityInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AS-SecurityInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AS-SecurityInformation.h new file mode 100644 index 0000000..a22dbe8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AS-SecurityInformation.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AS_SecurityInformation_H_ +#define _AS_SecurityInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Key-eNodeB-Star.h" +#include "NextHopChainingCount.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AS-SecurityInformation */ +typedef struct AS_SecurityInformation { + Key_eNodeB_Star_t key_eNodeB_star; + NextHopChainingCount_t nextHopChainingCount; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AS_SecurityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_AS_SecurityInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AS_SecurityInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-ID.c new file mode 100644 index 0000000..126b7a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActionParameter-ID.h" + +int +ActionParameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ActionParameter_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ActionParameter_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ActionParameter_ID = { + "ActionParameter-ID", + "ActionParameter-ID", + &asn_OP_NativeInteger, + asn_DEF_ActionParameter_ID_tags_1, + sizeof(asn_DEF_ActionParameter_ID_tags_1) + /sizeof(asn_DEF_ActionParameter_ID_tags_1[0]), /* 1 */ + asn_DEF_ActionParameter_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionParameter_ID_tags_1) + /sizeof(asn_DEF_ActionParameter_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActionParameter_ID_constr_1, ActionParameter_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-ID.h new file mode 100644 index 0000000..b4710f9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActionParameter_ID_H_ +#define _ActionParameter_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActionParameter-ID */ +typedef long ActionParameter_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ActionParameter_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_ID; +asn_struct_free_f ActionParameter_ID_free; +asn_struct_print_f ActionParameter_ID_print; +asn_constr_check_f ActionParameter_ID_constraint; +ber_type_decoder_f ActionParameter_ID_decode_ber; +der_type_encoder_f ActionParameter_ID_encode_der; +xer_type_decoder_f ActionParameter_ID_decode_xer; +xer_type_encoder_f ActionParameter_ID_encode_xer; +per_type_decoder_f ActionParameter_ID_decode_uper; +per_type_encoder_f ActionParameter_ID_encode_uper; +per_type_decoder_f ActionParameter_ID_decode_aper; +per_type_encoder_f ActionParameter_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionParameter_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Item.c new file mode 100644 index 0000000..a573b88 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Item.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActionParameter-Item.h" + +asn_TYPE_member_t asn_MBR_ActionParameter_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Item, actionParameter_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ActionParameter_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "actionParameter-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Item, actionParameter_Value), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ActionParameter_Value, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "actionParameter-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActionParameter_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActionParameter_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* actionParameter-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionParameter-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActionParameter_Item_specs_1 = { + sizeof(struct ActionParameter_Item), + offsetof(struct ActionParameter_Item, _asn_ctx), + asn_MAP_ActionParameter_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionParameter_Item = { + "ActionParameter-Item", + "ActionParameter-Item", + &asn_OP_SEQUENCE, + asn_DEF_ActionParameter_Item_tags_1, + sizeof(asn_DEF_ActionParameter_Item_tags_1) + /sizeof(asn_DEF_ActionParameter_Item_tags_1[0]), /* 1 */ + asn_DEF_ActionParameter_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ActionParameter_Item_tags_1) + /sizeof(asn_DEF_ActionParameter_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActionParameter_Item_1, + 2, /* Elements count */ + &asn_SPC_ActionParameter_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Item.h new file mode 100644 index 0000000..fdb138a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Item.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActionParameter_Item_H_ +#define _ActionParameter_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ActionParameter-ID.h" +#include "ActionParameter-Value.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActionParameter-Item */ +typedef struct ActionParameter_Item { + ActionParameter_ID_t actionParameter_ID; + ActionParameter_Value_t actionParameter_Value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionParameter_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ActionParameter_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ActionParameter_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionParameter_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Value.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Value.c new file mode 100644 index 0000000..bb73be9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Value.c @@ -0,0 +1,125 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActionParameter-Value.h" + +asn_per_constraints_t asn_PER_type_ActionParameter_Value_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ActionParameter_Value_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueEnum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueEnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueBool), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBool" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueBitS), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBitS" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valueOctS), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueOctS" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActionParameter_Value, choice.valuePrtS), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrintableString, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valuePrtS" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ActionParameter_Value_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* valueOctS */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* valuePrtS */ +}; +asn_CHOICE_specifics_t asn_SPC_ActionParameter_Value_specs_1 = { + sizeof(struct ActionParameter_Value), + offsetof(struct ActionParameter_Value, _asn_ctx), + offsetof(struct ActionParameter_Value, present), + sizeof(((struct ActionParameter_Value *)0)->present), + asn_MAP_ActionParameter_Value_tag2el_1, + 6, /* Count of tags in the map */ + 0, 0, + 6 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ActionParameter_Value = { + "ActionParameter-Value", + "ActionParameter-Value", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ActionParameter_Value_constr_1, CHOICE_constraint }, + asn_MBR_ActionParameter_Value_1, + 6, /* Elements count */ + &asn_SPC_ActionParameter_Value_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Value.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Value.h new file mode 100644 index 0000000..40f42f1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActionParameter-Value.h @@ -0,0 +1,93 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActionParameter_Value_H_ +#define _ActionParameter_Value_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "BIT_STRING.h" +#include "OCTET_STRING.h" +#include "PrintableString.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ActionParameter_Value_PR { + ActionParameter_Value_PR_NOTHING, /* No components present */ + ActionParameter_Value_PR_valueInt, + ActionParameter_Value_PR_valueEnum, + ActionParameter_Value_PR_valueBool, + ActionParameter_Value_PR_valueBitS, + ActionParameter_Value_PR_valueOctS, + ActionParameter_Value_PR_valuePrtS + /* Extensions may appear below */ + +} ActionParameter_Value_PR; + +/* ActionParameter-Value */ +typedef struct ActionParameter_Value { + ActionParameter_Value_PR present; + union ActionParameter_Value_u { + long valueInt; + long valueEnum; + BOOLEAN_t valueBool; + BIT_STRING_t valueBitS; + OCTET_STRING_t valueOctS; + PrintableString_t valuePrtS; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActionParameter_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActionParameter_Value; +extern asn_CHOICE_specifics_t asn_SPC_ActionParameter_Value_specs_1; +extern asn_TYPE_member_t asn_MBR_ActionParameter_Value_1[6]; +extern asn_per_constraints_t asn_PER_type_ActionParameter_Value_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActionParameter_Value_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList-Item.c new file mode 100644 index 0000000..9891ae4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList-Item.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedCellList-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item, ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecgi" + }, + { ATF_POINTER, 1, offsetof(struct ActivatedCellList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ActivatedCellList_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ActivatedCellList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedCellList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_specs_1 = { + sizeof(struct ActivatedCellList_Item), + offsetof(struct ActivatedCellList_Item, _asn_ctx), + asn_MAP_ActivatedCellList_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ActivatedCellList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item = { + "ActivatedCellList-Item", + "ActivatedCellList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedCellList_Item_tags_1, + sizeof(asn_DEF_ActivatedCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedCellList_Item_tags_1[0]), /* 1 */ + asn_DEF_ActivatedCellList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedCellList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedCellList_Item_1, + 2, /* Elements count */ + &asn_SPC_ActivatedCellList_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList-Item.h new file mode 100644 index 0000000..4f73629 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedCellList_Item_H_ +#define _ActivatedCellList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ActivatedCellList-Item */ +typedef struct ActivatedCellList_Item { + ECGI_t ecgi; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedCellList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedCellList_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList.c new file mode 100644 index 0000000..bc24ddf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedCellList.h" + +#include "ActivatedCellList-Item.h" +static asn_per_constraints_t asn_PER_type_ActivatedCellList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ActivatedCellList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedCellList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedCellList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ActivatedCellList_specs_1 = { + sizeof(struct ActivatedCellList), + offsetof(struct ActivatedCellList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedCellList = { + "ActivatedCellList", + "ActivatedCellList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ActivatedCellList_tags_1, + sizeof(asn_DEF_ActivatedCellList_tags_1) + /sizeof(asn_DEF_ActivatedCellList_tags_1[0]), /* 1 */ + asn_DEF_ActivatedCellList_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedCellList_tags_1) + /sizeof(asn_DEF_ActivatedCellList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActivatedCellList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ActivatedCellList_1, + 1, /* Single element */ + &asn_SPC_ActivatedCellList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList.h new file mode 100644 index 0000000..876ac32 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedCellList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedCellList_H_ +#define _ActivatedCellList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActivatedCellList_Item; + +/* ActivatedCellList */ +typedef struct ActivatedCellList { + A_SEQUENCE_OF(struct ActivatedCellList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedCellList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedCellList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedCellList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c new file mode 100644 index 0000000..a43e9af --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList-Item.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedNRCellList-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 1, offsetof(struct ActivatedNRCellList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P102, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ActivatedNRCellList_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ActivatedNRCellList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedNRCellList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_specs_1 = { + sizeof(struct ActivatedNRCellList_Item), + offsetof(struct ActivatedNRCellList_Item, _asn_ctx), + asn_MAP_ActivatedNRCellList_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ActivatedNRCellList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item = { + "ActivatedNRCellList-Item", + "ActivatedNRCellList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedNRCellList_Item_tags_1, + sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1[0]), /* 1 */ + asn_DEF_ActivatedNRCellList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedNRCellList_Item_1, + 2, /* Elements count */ + &asn_SPC_ActivatedNRCellList_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h new file mode 100644 index 0000000..5acc44d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedNRCellList_Item_H_ +#define _ActivatedNRCellList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ActivatedNRCellList-Item */ +typedef struct ActivatedNRCellList_Item { + NRCGI_t nrCellID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedNRCellList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedNRCellList_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList.c new file mode 100644 index 0000000..384203e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivatedNRCellList.h" + +#include "ActivatedNRCellList-Item.h" +static asn_per_constraints_t asn_PER_type_ActivatedNRCellList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ActivatedNRCellList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedNRCellList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedNRCellList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ActivatedNRCellList_specs_1 = { + sizeof(struct ActivatedNRCellList), + offsetof(struct ActivatedNRCellList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList = { + "ActivatedNRCellList", + "ActivatedNRCellList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ActivatedNRCellList_tags_1, + sizeof(asn_DEF_ActivatedNRCellList_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_tags_1[0]), /* 1 */ + asn_DEF_ActivatedNRCellList_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivatedNRCellList_tags_1) + /sizeof(asn_DEF_ActivatedNRCellList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActivatedNRCellList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ActivatedNRCellList_1, + 1, /* Single element */ + &asn_SPC_ActivatedNRCellList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList.h new file mode 100644 index 0000000..dd7f34d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivatedNRCellList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivatedNRCellList_H_ +#define _ActivatedNRCellList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActivatedNRCellList_Item; + +/* ActivatedNRCellList */ +typedef struct ActivatedNRCellList { + A_SEQUENCE_OF(struct ActivatedNRCellList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedNRCellList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivatedNRCellList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivationID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivationID.c new file mode 100644 index 0000000..52a1e8d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivationID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ActivationID.h" + +int +ActivationID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ActivationID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ActivationID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ActivationID = { + "ActivationID", + "ActivationID", + &asn_OP_NativeInteger, + asn_DEF_ActivationID_tags_1, + sizeof(asn_DEF_ActivationID_tags_1) + /sizeof(asn_DEF_ActivationID_tags_1[0]), /* 1 */ + asn_DEF_ActivationID_tags_1, /* Same as above */ + sizeof(asn_DEF_ActivationID_tags_1) + /sizeof(asn_DEF_ActivationID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ActivationID_constr_1, ActivationID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivationID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivationID.h new file mode 100644 index 0000000..bbb2d05 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ActivationID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ActivationID_H_ +#define _ActivationID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ActivationID */ +typedef long ActivationID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ActivationID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ActivationID; +asn_struct_free_f ActivationID_free; +asn_struct_print_f ActivationID_print; +asn_constr_check_f ActivationID_constraint; +ber_type_decoder_f ActivationID_decode_ber; +der_type_encoder_f ActivationID_encode_der; +xer_type_decoder_f ActivationID_decode_xer; +xer_type_encoder_f ActivationID_encode_xer; +per_type_decoder_f ActivationID_decode_uper; +per_type_encoder_f ActivationID_encode_uper; +per_type_decoder_f ActivationID_decode_aper; +per_type_encoder_f ActivationID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ActivationID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c new file mode 100644 index 0000000..05d22b4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframe-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info, additionalspecialSubframePatterns), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdditionalSpecialSubframePatterns, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "additionalspecialSubframePatterns" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info, cyclicPrefixDL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixDL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info, cyclicPrefixUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixUL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixUL" + }, + { ATF_POINTER, 1, offsetof(struct AdditionalSpecialSubframe_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P107, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AdditionalSpecialSubframe_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframe_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframe_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalspecialSubframePatterns */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cyclicPrefixDL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cyclicPrefixUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_specs_1 = { + sizeof(struct AdditionalSpecialSubframe_Info), + offsetof(struct AdditionalSpecialSubframe_Info, _asn_ctx), + asn_MAP_AdditionalSpecialSubframe_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_AdditionalSpecialSubframe_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info = { + "AdditionalSpecialSubframe-Info", + "AdditionalSpecialSubframe-Info", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframe_Info_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframe_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframe_Info_1, + 4, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframe_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h new file mode 100644 index 0000000..35418c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframe-Info.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframe_Info_H_ +#define _AdditionalSpecialSubframe_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AdditionalSpecialSubframePatterns.h" +#include "CyclicPrefixDL.h" +#include "CyclicPrefixUL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AdditionalSpecialSubframe-Info */ +typedef struct AdditionalSpecialSubframe_Info { + AdditionalSpecialSubframePatterns_t additionalspecialSubframePatterns; + CyclicPrefixDL_t cyclicPrefixDL; + CyclicPrefixUL_t cyclicPrefixUL; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalSpecialSubframe_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframe_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c new file mode 100644 index 0000000..72bfa7a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframeExtension-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info, additionalspecialSubframePatternsExtension), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AdditionalSpecialSubframePatternsExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "additionalspecialSubframePatternsExtension" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info, cyclicPrefixDL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixDL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info, cyclicPrefixUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixUL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixUL" + }, + { ATF_POINTER, 1, offsetof(struct AdditionalSpecialSubframeExtension_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P108, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AdditionalSpecialSubframeExtension_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframeExtension_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalspecialSubframePatternsExtension */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cyclicPrefixDL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cyclicPrefixUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_specs_1 = { + sizeof(struct AdditionalSpecialSubframeExtension_Info), + offsetof(struct AdditionalSpecialSubframeExtension_Info, _asn_ctx), + asn_MAP_AdditionalSpecialSubframeExtension_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_AdditionalSpecialSubframeExtension_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info = { + "AdditionalSpecialSubframeExtension-Info", + "AdditionalSpecialSubframeExtension-Info", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframeExtension_Info_1, + 4, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframeExtension_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h new file mode 100644 index 0000000..37a2dfb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframeExtension-Info.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframeExtension_Info_H_ +#define _AdditionalSpecialSubframeExtension_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "AdditionalSpecialSubframePatternsExtension.h" +#include "CyclicPrefixDL.h" +#include "CyclicPrefixUL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AdditionalSpecialSubframeExtension-Info */ +typedef struct AdditionalSpecialSubframeExtension_Info { + AdditionalSpecialSubframePatternsExtension_t additionalspecialSubframePatternsExtension; + CyclicPrefixDL_t cyclicPrefixDL; + CyclicPrefixUL_t cyclicPrefixUL; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalSpecialSubframeExtension_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframeExtension_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c new file mode 100644 index 0000000..73ed9c7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.c @@ -0,0 +1,94 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframePatterns.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatterns_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AdditionalSpecialSubframePatterns_value2enum_1[] = { + { 0, 4, "ssp0" }, + { 1, 4, "ssp1" }, + { 2, 4, "ssp2" }, + { 3, 4, "ssp3" }, + { 4, 4, "ssp4" }, + { 5, 4, "ssp5" }, + { 6, 4, "ssp6" }, + { 7, 4, "ssp7" }, + { 8, 4, "ssp8" }, + { 9, 4, "ssp9" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AdditionalSpecialSubframePatterns_enum2value_1[] = { + 0, /* ssp0(0) */ + 1, /* ssp1(1) */ + 2, /* ssp2(2) */ + 3, /* ssp3(3) */ + 4, /* ssp4(4) */ + 5, /* ssp5(5) */ + 6, /* ssp6(6) */ + 7, /* ssp7(7) */ + 8, /* ssp8(8) */ + 9 /* ssp9(9) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatterns_specs_1 = { + asn_MAP_AdditionalSpecialSubframePatterns_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AdditionalSpecialSubframePatterns_enum2value_1, /* N => "tag"; sorted by N */ + 10, /* Number of elements in the maps */ + 11, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframePatterns_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatterns = { + "AdditionalSpecialSubframePatterns", + "AdditionalSpecialSubframePatterns", + &asn_OP_NativeEnumerated, + asn_DEF_AdditionalSpecialSubframePatterns_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframePatterns_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatterns_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_AdditionalSpecialSubframePatterns_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AdditionalSpecialSubframePatterns_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h new file mode 100644 index 0000000..418d813 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatterns.h @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframePatterns_H_ +#define _AdditionalSpecialSubframePatterns_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdditionalSpecialSubframePatterns { + AdditionalSpecialSubframePatterns_ssp0 = 0, + AdditionalSpecialSubframePatterns_ssp1 = 1, + AdditionalSpecialSubframePatterns_ssp2 = 2, + AdditionalSpecialSubframePatterns_ssp3 = 3, + AdditionalSpecialSubframePatterns_ssp4 = 4, + AdditionalSpecialSubframePatterns_ssp5 = 5, + AdditionalSpecialSubframePatterns_ssp6 = 6, + AdditionalSpecialSubframePatterns_ssp7 = 7, + AdditionalSpecialSubframePatterns_ssp8 = 8, + AdditionalSpecialSubframePatterns_ssp9 = 9 + /* + * Enumeration is extensible + */ +} e_AdditionalSpecialSubframePatterns; + +/* AdditionalSpecialSubframePatterns */ +typedef long AdditionalSpecialSubframePatterns_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatterns_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatterns; +extern const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatterns_specs_1; +asn_struct_free_f AdditionalSpecialSubframePatterns_free; +asn_struct_print_f AdditionalSpecialSubframePatterns_print; +asn_constr_check_f AdditionalSpecialSubframePatterns_constraint; +ber_type_decoder_f AdditionalSpecialSubframePatterns_decode_ber; +der_type_encoder_f AdditionalSpecialSubframePatterns_encode_der; +xer_type_decoder_f AdditionalSpecialSubframePatterns_decode_xer; +xer_type_encoder_f AdditionalSpecialSubframePatterns_encode_xer; +per_type_decoder_f AdditionalSpecialSubframePatterns_decode_uper; +per_type_encoder_f AdditionalSpecialSubframePatterns_encode_uper; +per_type_decoder_f AdditionalSpecialSubframePatterns_decode_aper; +per_type_encoder_f AdditionalSpecialSubframePatterns_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframePatterns_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c new file mode 100644 index 0000000..66e4971 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AdditionalSpecialSubframePatternsExtension.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatternsExtension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AdditionalSpecialSubframePatternsExtension_value2enum_1[] = { + { 0, 5, "ssp10" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AdditionalSpecialSubframePatternsExtension_enum2value_1[] = { + 0 /* ssp10(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatternsExtension_specs_1 = { + asn_MAP_AdditionalSpecialSubframePatternsExtension_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AdditionalSpecialSubframePatternsExtension_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatternsExtension = { + "AdditionalSpecialSubframePatternsExtension", + "AdditionalSpecialSubframePatternsExtension", + &asn_OP_NativeEnumerated, + asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1, + sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1) + /sizeof(asn_DEF_AdditionalSpecialSubframePatternsExtension_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_AdditionalSpecialSubframePatternsExtension_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AdditionalSpecialSubframePatternsExtension_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h new file mode 100644 index 0000000..0f65b50 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AdditionalSpecialSubframePatternsExtension.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AdditionalSpecialSubframePatternsExtension_H_ +#define _AdditionalSpecialSubframePatternsExtension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AdditionalSpecialSubframePatternsExtension { + AdditionalSpecialSubframePatternsExtension_ssp10 = 0 + /* + * Enumeration is extensible + */ +} e_AdditionalSpecialSubframePatternsExtension; + +/* AdditionalSpecialSubframePatternsExtension */ +typedef long AdditionalSpecialSubframePatternsExtension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AdditionalSpecialSubframePatternsExtension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframePatternsExtension; +extern const asn_INTEGER_specifics_t asn_SPC_AdditionalSpecialSubframePatternsExtension_specs_1; +asn_struct_free_f AdditionalSpecialSubframePatternsExtension_free; +asn_struct_print_f AdditionalSpecialSubframePatternsExtension_print; +asn_constr_check_f AdditionalSpecialSubframePatternsExtension_constraint; +ber_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_ber; +der_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_der; +xer_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_xer; +xer_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_xer; +per_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_uper; +per_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_uper; +per_type_decoder_f AdditionalSpecialSubframePatternsExtension_decode_aper; +per_type_encoder_f AdditionalSpecialSubframePatternsExtension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AdditionalSpecialSubframePatternsExtension_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c new file mode 100644 index 0000000..22737cb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AerialUEsubscriptionInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_AerialUEsubscriptionInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_AerialUEsubscriptionInformation_value2enum_1[] = { + { 0, 7, "allowed" }, + { 1, 11, "not-allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_AerialUEsubscriptionInformation_enum2value_1[] = { + 0, /* allowed(0) */ + 1 /* not-allowed(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_AerialUEsubscriptionInformation_specs_1 = { + asn_MAP_AerialUEsubscriptionInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_AerialUEsubscriptionInformation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_AerialUEsubscriptionInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_AerialUEsubscriptionInformation = { + "AerialUEsubscriptionInformation", + "AerialUEsubscriptionInformation", + &asn_OP_NativeEnumerated, + asn_DEF_AerialUEsubscriptionInformation_tags_1, + sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1) + /sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1[0]), /* 1 */ + asn_DEF_AerialUEsubscriptionInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1) + /sizeof(asn_DEF_AerialUEsubscriptionInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_AerialUEsubscriptionInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_AerialUEsubscriptionInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h new file mode 100644 index 0000000..2dc0f9a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AerialUEsubscriptionInformation.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AerialUEsubscriptionInformation_H_ +#define _AerialUEsubscriptionInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AerialUEsubscriptionInformation { + AerialUEsubscriptionInformation_allowed = 0, + AerialUEsubscriptionInformation_not_allowed = 1 + /* + * Enumeration is extensible + */ +} e_AerialUEsubscriptionInformation; + +/* AerialUEsubscriptionInformation */ +typedef long AerialUEsubscriptionInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_AerialUEsubscriptionInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_AerialUEsubscriptionInformation; +extern const asn_INTEGER_specifics_t asn_SPC_AerialUEsubscriptionInformation_specs_1; +asn_struct_free_f AerialUEsubscriptionInformation_free; +asn_struct_print_f AerialUEsubscriptionInformation_print; +asn_constr_check_f AerialUEsubscriptionInformation_constraint; +ber_type_decoder_f AerialUEsubscriptionInformation_decode_ber; +der_type_encoder_f AerialUEsubscriptionInformation_encode_der; +xer_type_decoder_f AerialUEsubscriptionInformation_decode_xer; +xer_type_encoder_f AerialUEsubscriptionInformation_encode_xer; +per_type_decoder_f AerialUEsubscriptionInformation_decode_uper; +per_type_encoder_f AerialUEsubscriptionInformation_encode_uper; +per_type_decoder_f AerialUEsubscriptionInformation_decode_aper; +per_type_encoder_f AerialUEsubscriptionInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _AerialUEsubscriptionInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c new file mode 100644 index 0000000..974d43d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AllocationAndRetentionPriority.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AllocationAndRetentionPriority.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority, priorityLevel), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PriorityLevel, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "priorityLevel" + }, + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority, pre_emptionCapability), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Pre_emptionCapability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pre-emptionCapability" + }, + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority, pre_emptionVulnerability), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Pre_emptionVulnerability, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pre-emptionVulnerability" + }, + { ATF_POINTER, 1, offsetof(struct AllocationAndRetentionPriority, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P109, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_AllocationAndRetentionPriority_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_AllocationAndRetentionPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AllocationAndRetentionPriority_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* priorityLevel */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pre-emptionCapability */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pre-emptionVulnerability */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_specs_1 = { + sizeof(struct AllocationAndRetentionPriority), + offsetof(struct AllocationAndRetentionPriority, _asn_ctx), + asn_MAP_AllocationAndRetentionPriority_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_AllocationAndRetentionPriority_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority = { + "AllocationAndRetentionPriority", + "AllocationAndRetentionPriority", + &asn_OP_SEQUENCE, + asn_DEF_AllocationAndRetentionPriority_tags_1, + sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1) + /sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1[0]), /* 1 */ + asn_DEF_AllocationAndRetentionPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1) + /sizeof(asn_DEF_AllocationAndRetentionPriority_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AllocationAndRetentionPriority_1, + 4, /* Elements count */ + &asn_SPC_AllocationAndRetentionPriority_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h new file mode 100644 index 0000000..b633298 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AllocationAndRetentionPriority.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AllocationAndRetentionPriority_H_ +#define _AllocationAndRetentionPriority_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PriorityLevel.h" +#include "Pre-emptionCapability.h" +#include "Pre-emptionVulnerability.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* AllocationAndRetentionPriority */ +typedef struct AllocationAndRetentionPriority { + PriorityLevel_t priorityLevel; + Pre_emptionCapability_t pre_emptionCapability; + Pre_emptionVulnerability_t pre_emptionVulnerability; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AllocationAndRetentionPriority_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority; +extern asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_specs_1; +extern asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _AllocationAndRetentionPriority_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfMDT.c new file mode 100644 index 0000000..aeb6c4b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfMDT.c @@ -0,0 +1,108 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AreaScopeOfMDT.h" + +#include "CellBasedMDT.h" +#include "TABasedMDT.h" +#include "TAIBasedMDT.h" +asn_per_constraints_t asn_PER_type_AreaScopeOfMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_AreaScopeOfMDT_1[] = { + { ATF_POINTER, 0, offsetof(struct AreaScopeOfMDT, choice.cellBased), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellBasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellBased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfMDT, choice.tABased), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TABasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tABased" + }, + { ATF_NOFLAGS, 0, offsetof(struct AreaScopeOfMDT, choice.pLMNWide), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNWide" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfMDT, choice.tAIBased), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIBasedMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIBased" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_AreaScopeOfMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellBased */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tABased */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pLMNWide */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* tAIBased */ +}; +asn_CHOICE_specifics_t asn_SPC_AreaScopeOfMDT_specs_1 = { + sizeof(struct AreaScopeOfMDT), + offsetof(struct AreaScopeOfMDT, _asn_ctx), + offsetof(struct AreaScopeOfMDT, present), + sizeof(((struct AreaScopeOfMDT *)0)->present), + asn_MAP_AreaScopeOfMDT_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_AreaScopeOfMDT = { + "AreaScopeOfMDT", + "AreaScopeOfMDT", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_AreaScopeOfMDT_constr_1, CHOICE_constraint }, + asn_MBR_AreaScopeOfMDT_1, + 4, /* Elements count */ + &asn_SPC_AreaScopeOfMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfMDT.h new file mode 100644 index 0000000..78b1089 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfMDT.h @@ -0,0 +1,89 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AreaScopeOfMDT_H_ +#define _AreaScopeOfMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AreaScopeOfMDT_PR { + AreaScopeOfMDT_PR_NOTHING, /* No components present */ + AreaScopeOfMDT_PR_cellBased, + AreaScopeOfMDT_PR_tABased, + AreaScopeOfMDT_PR_pLMNWide, + /* Extensions may appear below */ + AreaScopeOfMDT_PR_tAIBased +} AreaScopeOfMDT_PR; + +/* Forward declarations */ +struct CellBasedMDT; +struct TABasedMDT; +struct TAIBasedMDT; + +/* AreaScopeOfMDT */ +typedef struct AreaScopeOfMDT { + AreaScopeOfMDT_PR present; + union AreaScopeOfMDT_u { + struct CellBasedMDT *cellBased; + struct TABasedMDT *tABased; + NULL_t pLMNWide; + /* + * This type is extensible, + * possible extensions are below. + */ + struct TAIBasedMDT *tAIBased; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AreaScopeOfMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AreaScopeOfMDT; +extern asn_CHOICE_specifics_t asn_SPC_AreaScopeOfMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_AreaScopeOfMDT_1[4]; +extern asn_per_constraints_t asn_PER_type_AreaScopeOfMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _AreaScopeOfMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfQMC.c new file mode 100644 index 0000000..781df97 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfQMC.c @@ -0,0 +1,109 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "AreaScopeOfQMC.h" + +#include "CellBasedQMC.h" +#include "TABasedQMC.h" +#include "TAIBasedQMC.h" +#include "PLMNAreaBasedQMC.h" +asn_per_constraints_t asn_PER_type_AreaScopeOfQMC_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_AreaScopeOfQMC_1[] = { + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.cellBased), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellBasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellBased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.tABased), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TABasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tABased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.tAIBased), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIBasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIBased" + }, + { ATF_POINTER, 0, offsetof(struct AreaScopeOfQMC, choice.pLMNAreaBased), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNAreaBasedQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMNAreaBased" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_AreaScopeOfQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellBased */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tABased */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tAIBased */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pLMNAreaBased */ +}; +asn_CHOICE_specifics_t asn_SPC_AreaScopeOfQMC_specs_1 = { + sizeof(struct AreaScopeOfQMC), + offsetof(struct AreaScopeOfQMC, _asn_ctx), + offsetof(struct AreaScopeOfQMC, present), + sizeof(((struct AreaScopeOfQMC *)0)->present), + asn_MAP_AreaScopeOfQMC_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_AreaScopeOfQMC = { + "AreaScopeOfQMC", + "AreaScopeOfQMC", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_AreaScopeOfQMC_constr_1, CHOICE_constraint }, + asn_MBR_AreaScopeOfQMC_1, + 4, /* Elements count */ + &asn_SPC_AreaScopeOfQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfQMC.h new file mode 100644 index 0000000..46f45c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/AreaScopeOfQMC.h @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _AreaScopeOfQMC_H_ +#define _AreaScopeOfQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum AreaScopeOfQMC_PR { + AreaScopeOfQMC_PR_NOTHING, /* No components present */ + AreaScopeOfQMC_PR_cellBased, + AreaScopeOfQMC_PR_tABased, + AreaScopeOfQMC_PR_tAIBased, + AreaScopeOfQMC_PR_pLMNAreaBased + /* Extensions may appear below */ + +} AreaScopeOfQMC_PR; + +/* Forward declarations */ +struct CellBasedQMC; +struct TABasedQMC; +struct TAIBasedQMC; +struct PLMNAreaBasedQMC; + +/* AreaScopeOfQMC */ +typedef struct AreaScopeOfQMC { + AreaScopeOfQMC_PR present; + union AreaScopeOfQMC_u { + struct CellBasedQMC *cellBased; + struct TABasedQMC *tABased; + struct TAIBasedQMC *tAIBased; + struct PLMNAreaBasedQMC *pLMNAreaBased; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AreaScopeOfQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_AreaScopeOfQMC; +extern asn_CHOICE_specifics_t asn_SPC_AreaScopeOfQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_AreaScopeOfQMC_1[4]; +extern asn_per_constraints_t asn_PER_type_AreaScopeOfQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _AreaScopeOfQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BIT_STRING.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BIT_STRING.c new file mode 100644 index 0000000..7a9a68e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BIT_STRING.c @@ -0,0 +1,657 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BIT_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +static const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BIT_STRING.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BIT_STRING.h new file mode 100644 index 0000000..8488941 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BIT_STRING.h @@ -0,0 +1,49 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_struct_compare_f BIT_STRING_compare; +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +asn_random_fill_f BIT_STRING_random_fill; + +#define BIT_STRING_free OCTET_STRING_free +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BOOLEAN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BOOLEAN.c new file mode 100644 index 0000000..ab72106 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BOOLEAN.c @@ -0,0 +1,493 @@ + +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, + BOOLEAN_print, + BOOLEAN_compare, + BOOLEAN_decode_ber, + BOOLEAN_encode_der, + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BOOLEAN_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} + + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") + != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +#ifndef ASN_DISABLE_OER_SUPPORT + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} + + + +#endif + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BOOLEAN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BOOLEAN.h new file mode 100644 index 0000000..00b50db --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BOOLEAN.h @@ -0,0 +1,46 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef int BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; +asn_struct_print_f BOOLEAN_print; +asn_struct_compare_f BOOLEAN_compare; +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +asn_random_fill_f BOOLEAN_random_fill; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandInfo.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandInfo.c new file mode 100644 index 0000000..61943ba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandInfo.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BandInfo.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_BandInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BandInfo, freqBandIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FreqBandIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "freqBandIndicator" + }, + { ATF_POINTER, 1, offsetof(struct BandInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P169, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_BandInfo_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_BandInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BandInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BandInfo_specs_1 = { + sizeof(struct BandInfo), + offsetof(struct BandInfo, _asn_ctx), + asn_MAP_BandInfo_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_BandInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BandInfo = { + "BandInfo", + "BandInfo", + &asn_OP_SEQUENCE, + asn_DEF_BandInfo_tags_1, + sizeof(asn_DEF_BandInfo_tags_1) + /sizeof(asn_DEF_BandInfo_tags_1[0]), /* 1 */ + asn_DEF_BandInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_BandInfo_tags_1) + /sizeof(asn_DEF_BandInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BandInfo_1, + 2, /* Elements count */ + &asn_SPC_BandInfo_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandInfo.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandInfo.h new file mode 100644 index 0000000..93977f8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandInfo.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BandInfo_H_ +#define _BandInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "FreqBandIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* BandInfo */ +typedef struct BandInfo { + FreqBandIndicator_t freqBandIndicator; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BandInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BandInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_BandInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_BandInfo_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BandInfo_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandwidthReducedSI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandwidthReducedSI.c new file mode 100644 index 0000000..b02cb73 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandwidthReducedSI.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BandwidthReducedSI.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BandwidthReducedSI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_BandwidthReducedSI_value2enum_1[] = { + { 0, 9, "scheduled" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BandwidthReducedSI_enum2value_1[] = { + 0 /* scheduled(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BandwidthReducedSI_specs_1 = { + asn_MAP_BandwidthReducedSI_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BandwidthReducedSI_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BandwidthReducedSI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BandwidthReducedSI = { + "BandwidthReducedSI", + "BandwidthReducedSI", + &asn_OP_NativeEnumerated, + asn_DEF_BandwidthReducedSI_tags_1, + sizeof(asn_DEF_BandwidthReducedSI_tags_1) + /sizeof(asn_DEF_BandwidthReducedSI_tags_1[0]), /* 1 */ + asn_DEF_BandwidthReducedSI_tags_1, /* Same as above */ + sizeof(asn_DEF_BandwidthReducedSI_tags_1) + /sizeof(asn_DEF_BandwidthReducedSI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BandwidthReducedSI_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BandwidthReducedSI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandwidthReducedSI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandwidthReducedSI.h new file mode 100644 index 0000000..a965d87 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BandwidthReducedSI.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BandwidthReducedSI_H_ +#define _BandwidthReducedSI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BandwidthReducedSI { + BandwidthReducedSI_scheduled = 0 + /* + * Enumeration is extensible + */ +} e_BandwidthReducedSI; + +/* BandwidthReducedSI */ +typedef long BandwidthReducedSI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BandwidthReducedSI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BandwidthReducedSI; +extern const asn_INTEGER_specifics_t asn_SPC_BandwidthReducedSI_specs_1; +asn_struct_free_f BandwidthReducedSI_free; +asn_struct_print_f BandwidthReducedSI_print; +asn_constr_check_f BandwidthReducedSI_constraint; +ber_type_decoder_f BandwidthReducedSI_decode_ber; +der_type_encoder_f BandwidthReducedSI_encode_der; +xer_type_decoder_f BandwidthReducedSI_decode_xer; +xer_type_encoder_f BandwidthReducedSI_encode_xer; +per_type_decoder_f BandwidthReducedSI_decode_uper; +per_type_encoder_f BandwidthReducedSI_encode_uper; +per_type_decoder_f BandwidthReducedSI_decode_aper; +per_type_encoder_f BandwidthReducedSI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BandwidthReducedSI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BearerType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BearerType.c new file mode 100644 index 0000000..4ae9087 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BearerType.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BearerType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BearerType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_BearerType_value2enum_1[] = { + { 0, 6, "non-IP" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BearerType_enum2value_1[] = { + 0 /* non-IP(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BearerType_specs_1 = { + asn_MAP_BearerType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BearerType_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BearerType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BearerType = { + "BearerType", + "BearerType", + &asn_OP_NativeEnumerated, + asn_DEF_BearerType_tags_1, + sizeof(asn_DEF_BearerType_tags_1) + /sizeof(asn_DEF_BearerType_tags_1[0]), /* 1 */ + asn_DEF_BearerType_tags_1, /* Same as above */ + sizeof(asn_DEF_BearerType_tags_1) + /sizeof(asn_DEF_BearerType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BearerType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BearerType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BearerType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BearerType.h new file mode 100644 index 0000000..dcb2ef0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BearerType.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BearerType_H_ +#define _BearerType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BearerType { + BearerType_non_IP = 0 + /* + * Enumeration is extensible + */ +} e_BearerType; + +/* BearerType */ +typedef long BearerType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BearerType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BearerType; +extern const asn_INTEGER_specifics_t asn_SPC_BearerType_specs_1; +asn_struct_free_f BearerType_free; +asn_struct_print_f BearerType_print; +asn_constr_check_f BearerType_constraint; +ber_type_decoder_f BearerType_decode_ber; +der_type_encoder_f BearerType_encode_der; +xer_type_decoder_f BearerType_decode_xer; +xer_type_encoder_f BearerType_encode_xer; +per_type_decoder_f BearerType_decode_uper; +per_type_encoder_f BearerType_encode_uper; +per_type_decoder_f BearerType_decode_aper; +per_type_encoder_f BearerType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BearerType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BenefitMetric.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BenefitMetric.c new file mode 100644 index 0000000..d95edff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BenefitMetric.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BenefitMetric.h" + +int +BenefitMetric_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -101 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BenefitMetric_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, -101, 100 } /* (-101..100,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BenefitMetric_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BenefitMetric = { + "BenefitMetric", + "BenefitMetric", + &asn_OP_NativeInteger, + asn_DEF_BenefitMetric_tags_1, + sizeof(asn_DEF_BenefitMetric_tags_1) + /sizeof(asn_DEF_BenefitMetric_tags_1[0]), /* 1 */ + asn_DEF_BenefitMetric_tags_1, /* Same as above */ + sizeof(asn_DEF_BenefitMetric_tags_1) + /sizeof(asn_DEF_BenefitMetric_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BenefitMetric_constr_1, BenefitMetric_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BenefitMetric.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BenefitMetric.h new file mode 100644 index 0000000..b40af36 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BenefitMetric.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BenefitMetric_H_ +#define _BenefitMetric_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BenefitMetric */ +typedef long BenefitMetric_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BenefitMetric_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BenefitMetric; +asn_struct_free_f BenefitMetric_free; +asn_struct_print_f BenefitMetric_print; +asn_constr_check_f BenefitMetric_constraint; +ber_type_decoder_f BenefitMetric_decode_ber; +der_type_encoder_f BenefitMetric_encode_der; +xer_type_decoder_f BenefitMetric_decode_xer; +xer_type_encoder_f BenefitMetric_encode_xer; +per_type_decoder_f BenefitMetric_decode_uper; +per_type_encoder_f BenefitMetric_encode_uper; +per_type_decoder_f BenefitMetric_decode_aper; +per_type_encoder_f BenefitMetric_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BenefitMetric_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BitRate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BitRate.c new file mode 100644 index 0000000..ee9a76b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BitRate.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BitRate.h" + +int +BitRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 10000000000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BitRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 34, -1, 0, 10000000000 } /* (0..10000000000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BitRate = { + "BitRate", + "BitRate", + &asn_OP_INTEGER, + asn_DEF_BitRate_tags_1, + sizeof(asn_DEF_BitRate_tags_1) + /sizeof(asn_DEF_BitRate_tags_1[0]), /* 1 */ + asn_DEF_BitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_BitRate_tags_1) + /sizeof(asn_DEF_BitRate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BitRate_constr_1, BitRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BitRate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BitRate.h new file mode 100644 index 0000000..536d941 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BitRate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BitRate_H_ +#define _BitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BitRate */ +typedef INTEGER_t BitRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BitRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BitRate; +asn_struct_free_f BitRate_free; +asn_struct_print_f BitRate_print; +asn_constr_check_f BitRate_constraint; +ber_type_decoder_f BitRate_decode_ber; +der_type_encoder_f BitRate_encode_der; +xer_type_decoder_f BitRate_decode_xer; +xer_type_encoder_f BitRate_encode_xer; +per_type_decoder_f BitRate_decode_uper; +per_type_encoder_f BitRate_encode_uper; +per_type_decoder_f BitRate_decode_aper; +per_type_encoder_f BitRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BitRate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfig.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfig.c new file mode 100644 index 0000000..b4037a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfig.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothMeasConfig.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BluetoothMeasConfig_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_BluetoothMeasConfig_value2enum_1[] = { + { 0, 5, "setup" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_BluetoothMeasConfig_enum2value_1[] = { + 0 /* setup(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_BluetoothMeasConfig_specs_1 = { + asn_MAP_BluetoothMeasConfig_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_BluetoothMeasConfig_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasConfig_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfig = { + "BluetoothMeasConfig", + "BluetoothMeasConfig", + &asn_OP_NativeEnumerated, + asn_DEF_BluetoothMeasConfig_tags_1, + sizeof(asn_DEF_BluetoothMeasConfig_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfig_tags_1[0]), /* 1 */ + asn_DEF_BluetoothMeasConfig_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasConfig_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfig_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BluetoothMeasConfig_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_BluetoothMeasConfig_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfig.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfig.h new file mode 100644 index 0000000..e037592 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfig.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothMeasConfig_H_ +#define _BluetoothMeasConfig_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BluetoothMeasConfig { + BluetoothMeasConfig_setup = 0 + /* + * Enumeration is extensible + */ +} e_BluetoothMeasConfig; + +/* BluetoothMeasConfig */ +typedef long BluetoothMeasConfig_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BluetoothMeasConfig_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfig; +extern const asn_INTEGER_specifics_t asn_SPC_BluetoothMeasConfig_specs_1; +asn_struct_free_f BluetoothMeasConfig_free; +asn_struct_print_f BluetoothMeasConfig_print; +asn_constr_check_f BluetoothMeasConfig_constraint; +ber_type_decoder_f BluetoothMeasConfig_decode_ber; +der_type_encoder_f BluetoothMeasConfig_encode_der; +xer_type_decoder_f BluetoothMeasConfig_decode_xer; +xer_type_encoder_f BluetoothMeasConfig_encode_xer; +per_type_decoder_f BluetoothMeasConfig_decode_uper; +per_type_encoder_f BluetoothMeasConfig_encode_uper; +per_type_decoder_f BluetoothMeasConfig_decode_aper; +per_type_encoder_f BluetoothMeasConfig_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothMeasConfig_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c new file mode 100644 index 0000000..2b2ecf1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothMeasConfigNameList.h" + +asn_per_constraints_t asn_PER_type_BluetoothMeasConfigNameList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_BluetoothMeasConfigNameList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_BluetoothName, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasConfigNameList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_BluetoothMeasConfigNameList_specs_1 = { + sizeof(struct BluetoothMeasConfigNameList), + offsetof(struct BluetoothMeasConfigNameList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfigNameList = { + "BluetoothMeasConfigNameList", + "BluetoothMeasConfigNameList", + &asn_OP_SEQUENCE_OF, + asn_DEF_BluetoothMeasConfigNameList_tags_1, + sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1[0]), /* 1 */ + asn_DEF_BluetoothMeasConfigNameList_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1) + /sizeof(asn_DEF_BluetoothMeasConfigNameList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BluetoothMeasConfigNameList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_BluetoothMeasConfigNameList_1, + 1, /* Single element */ + &asn_SPC_BluetoothMeasConfigNameList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h new file mode 100644 index 0000000..b9abc54 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasConfigNameList.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothMeasConfigNameList_H_ +#define _BluetoothMeasConfigNameList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BluetoothName.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BluetoothMeasConfigNameList */ +typedef struct BluetoothMeasConfigNameList { + A_SEQUENCE_OF(BluetoothName_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BluetoothMeasConfigNameList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasConfigNameList; +extern asn_SET_OF_specifics_t asn_SPC_BluetoothMeasConfigNameList_specs_1; +extern asn_TYPE_member_t asn_MBR_BluetoothMeasConfigNameList_1[1]; +extern asn_per_constraints_t asn_PER_type_BluetoothMeasConfigNameList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothMeasConfigNameList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c new file mode 100644 index 0000000..e1e5f7f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.c @@ -0,0 +1,153 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothMeasurementConfiguration.h" + +#include "BluetoothMeasConfigNameList.h" +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_bt_rssi_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_bt_rssi_value2enum_4[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_bt_rssi_enum2value_4[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_bt_rssi_specs_4 = { + asn_MAP_bt_rssi_value2enum_4, /* "tag" => N; sorted by tag */ + asn_MAP_bt_rssi_enum2value_4, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_bt_rssi_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_bt_rssi_4 = { + "bt-rssi", + "bt-rssi", + &asn_OP_NativeEnumerated, + asn_DEF_bt_rssi_tags_4, + sizeof(asn_DEF_bt_rssi_tags_4) + /sizeof(asn_DEF_bt_rssi_tags_4[0]) - 1, /* 1 */ + asn_DEF_bt_rssi_tags_4, /* Same as above */ + sizeof(asn_DEF_bt_rssi_tags_4) + /sizeof(asn_DEF_bt_rssi_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_bt_rssi_constr_4, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_bt_rssi_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration, bluetoothMeasConfig), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BluetoothMeasConfig, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bluetoothMeasConfig" + }, + { ATF_POINTER, 3, offsetof(struct BluetoothMeasurementConfiguration, bluetoothMeasConfigNameList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BluetoothMeasConfigNameList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bluetoothMeasConfigNameList" + }, + { ATF_POINTER, 2, offsetof(struct BluetoothMeasurementConfiguration, bt_rssi), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_bt_rssi_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bt-rssi" + }, + { ATF_POINTER, 1, offsetof(struct BluetoothMeasurementConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P111, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_BluetoothMeasurementConfiguration_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasurementConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BluetoothMeasurementConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bluetoothMeasConfig */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bluetoothMeasConfigNameList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bt-rssi */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_specs_1 = { + sizeof(struct BluetoothMeasurementConfiguration), + offsetof(struct BluetoothMeasurementConfiguration, _asn_ctx), + asn_MAP_BluetoothMeasurementConfiguration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_BluetoothMeasurementConfiguration_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration = { + "BluetoothMeasurementConfiguration", + "BluetoothMeasurementConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_BluetoothMeasurementConfiguration_tags_1, + sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1[0]), /* 1 */ + asn_DEF_BluetoothMeasurementConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BluetoothMeasurementConfiguration_1, + 4, /* Elements count */ + &asn_SPC_BluetoothMeasurementConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h new file mode 100644 index 0000000..c0771a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothMeasurementConfiguration.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothMeasurementConfiguration_H_ +#define _BluetoothMeasurementConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BluetoothMeasConfig.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum BluetoothMeasurementConfiguration__bt_rssi { + BluetoothMeasurementConfiguration__bt_rssi_true = 0 + /* + * Enumeration is extensible + */ +} e_BluetoothMeasurementConfiguration__bt_rssi; + +/* Forward declarations */ +struct BluetoothMeasConfigNameList; +struct ProtocolExtensionContainer; + +/* BluetoothMeasurementConfiguration */ +typedef struct BluetoothMeasurementConfiguration { + BluetoothMeasConfig_t bluetoothMeasConfig; + struct BluetoothMeasConfigNameList *bluetoothMeasConfigNameList; /* OPTIONAL */ + long *bt_rssi; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BluetoothMeasurementConfiguration_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_bt_rssi_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothMeasurementConfiguration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothName.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothName.c new file mode 100644 index 0000000..15de56c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothName.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BluetoothName.h" + +int +BluetoothName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 248)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_BluetoothName_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 248 } /* (SIZE(1..248)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_BluetoothName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothName = { + "BluetoothName", + "BluetoothName", + &asn_OP_OCTET_STRING, + asn_DEF_BluetoothName_tags_1, + sizeof(asn_DEF_BluetoothName_tags_1) + /sizeof(asn_DEF_BluetoothName_tags_1[0]), /* 1 */ + asn_DEF_BluetoothName_tags_1, /* Same as above */ + sizeof(asn_DEF_BluetoothName_tags_1) + /sizeof(asn_DEF_BluetoothName_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BluetoothName_constr_1, BluetoothName_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothName.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothName.h new file mode 100644 index 0000000..255afac --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BluetoothName.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BluetoothName_H_ +#define _BluetoothName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BluetoothName */ +typedef OCTET_STRING_t BluetoothName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_BluetoothName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_BluetoothName; +asn_struct_free_f BluetoothName_free; +asn_struct_print_f BluetoothName_print; +asn_constr_check_f BluetoothName_constraint; +ber_type_decoder_f BluetoothName_decode_ber; +der_type_encoder_f BluetoothName_encode_der; +xer_type_decoder_f BluetoothName_decode_xer; +xer_type_encoder_f BluetoothName_encode_xer; +per_type_decoder_f BluetoothName_decode_uper; +per_type_encoder_f BluetoothName_encode_uper; +per_type_decoder_f BluetoothName_decode_aper; +per_type_encoder_f BluetoothName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _BluetoothName_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c new file mode 100644 index 0000000..c7d3638 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BroadcastPLMNs-Item.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "BroadcastPLMNs-Item.h" + +asn_per_constraints_t asn_PER_type_BroadcastPLMNs_Item_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 6 } /* (SIZE(1..6)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_BroadcastPLMNs_Item_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_BroadcastPLMNs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_BroadcastPLMNs_Item_specs_1 = { + sizeof(struct BroadcastPLMNs_Item), + offsetof(struct BroadcastPLMNs_Item, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_BroadcastPLMNs_Item = { + "BroadcastPLMNs-Item", + "BroadcastPLMNs-Item", + &asn_OP_SEQUENCE_OF, + asn_DEF_BroadcastPLMNs_Item_tags_1, + sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1) + /sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1[0]), /* 1 */ + asn_DEF_BroadcastPLMNs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1) + /sizeof(asn_DEF_BroadcastPLMNs_Item_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_BroadcastPLMNs_Item_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_BroadcastPLMNs_Item_1, + 1, /* Single element */ + &asn_SPC_BroadcastPLMNs_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h new file mode 100644 index 0000000..22e095d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/BroadcastPLMNs-Item.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _BroadcastPLMNs_Item_H_ +#define _BroadcastPLMNs_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* BroadcastPLMNs-Item */ +typedef struct BroadcastPLMNs_Item { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BroadcastPLMNs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_BroadcastPLMNs_Item; +extern asn_SET_OF_specifics_t asn_SPC_BroadcastPLMNs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_BroadcastPLMNs_Item_1[1]; +extern asn_per_constraints_t asn_PER_type_BroadcastPLMNs_Item_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _BroadcastPLMNs_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictions.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictions.c new file mode 100644 index 0000000..ecb2fb7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictions.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CNTypeRestrictions.h" + +#include "CNTypeRestrictionsItem.h" +asn_per_constraints_t asn_PER_type_CNTypeRestrictions_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CNTypeRestrictions_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CNTypeRestrictionsItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CNTypeRestrictions_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CNTypeRestrictions_specs_1 = { + sizeof(struct CNTypeRestrictions), + offsetof(struct CNTypeRestrictions, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictions = { + "CNTypeRestrictions", + "CNTypeRestrictions", + &asn_OP_SEQUENCE_OF, + asn_DEF_CNTypeRestrictions_tags_1, + sizeof(asn_DEF_CNTypeRestrictions_tags_1) + /sizeof(asn_DEF_CNTypeRestrictions_tags_1[0]), /* 1 */ + asn_DEF_CNTypeRestrictions_tags_1, /* Same as above */ + sizeof(asn_DEF_CNTypeRestrictions_tags_1) + /sizeof(asn_DEF_CNTypeRestrictions_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CNTypeRestrictions_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CNTypeRestrictions_1, + 1, /* Single element */ + &asn_SPC_CNTypeRestrictions_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictions.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictions.h new file mode 100644 index 0000000..dded947 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictions.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CNTypeRestrictions_H_ +#define _CNTypeRestrictions_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CNTypeRestrictionsItem; + +/* CNTypeRestrictions */ +typedef struct CNTypeRestrictions { + A_SEQUENCE_OF(struct CNTypeRestrictionsItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CNTypeRestrictions_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictions; +extern asn_SET_OF_specifics_t asn_SPC_CNTypeRestrictions_specs_1; +extern asn_TYPE_member_t asn_MBR_CNTypeRestrictions_1[1]; +extern asn_per_constraints_t asn_PER_type_CNTypeRestrictions_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CNTypeRestrictions_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c new file mode 100644 index 0000000..62a34e9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictionsItem.c @@ -0,0 +1,142 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CNTypeRestrictionsItem.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_cn_type_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_cn_type_value2enum_3[] = { + { 0, 16, "fiveGC-forbidden" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_cn_type_enum2value_3[] = { + 0 /* fiveGC-forbidden(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_cn_type_specs_3 = { + asn_MAP_cn_type_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_cn_type_enum2value_3, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_cn_type_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_cn_type_3 = { + "cn-type", + "cn-type", + &asn_OP_NativeEnumerated, + asn_DEF_cn_type_tags_3, + sizeof(asn_DEF_cn_type_tags_3) + /sizeof(asn_DEF_cn_type_tags_3[0]) - 1, /* 1 */ + asn_DEF_cn_type_tags_3, /* Same as above */ + sizeof(asn_DEF_cn_type_tags_3) + /sizeof(asn_DEF_cn_type_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_cn_type_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_cn_type_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem, plmn_Id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmn-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem, cn_type), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_cn_type_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cn-type" + }, + { ATF_POINTER, 1, offsetof(struct CNTypeRestrictionsItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P116, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CNTypeRestrictionsItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CNTypeRestrictionsItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CNTypeRestrictionsItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-Id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cn-type */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_specs_1 = { + sizeof(struct CNTypeRestrictionsItem), + offsetof(struct CNTypeRestrictionsItem, _asn_ctx), + asn_MAP_CNTypeRestrictionsItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CNTypeRestrictionsItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem = { + "CNTypeRestrictionsItem", + "CNTypeRestrictionsItem", + &asn_OP_SEQUENCE, + asn_DEF_CNTypeRestrictionsItem_tags_1, + sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1) + /sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1[0]), /* 1 */ + asn_DEF_CNTypeRestrictionsItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1) + /sizeof(asn_DEF_CNTypeRestrictionsItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CNTypeRestrictionsItem_1, + 3, /* Elements count */ + &asn_SPC_CNTypeRestrictionsItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h new file mode 100644 index 0000000..511fbf7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CNTypeRestrictionsItem.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CNTypeRestrictionsItem_H_ +#define _CNTypeRestrictionsItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CNTypeRestrictionsItem__cn_type { + CNTypeRestrictionsItem__cn_type_fiveGC_forbidden = 0 + /* + * Enumeration is extensible + */ +} e_CNTypeRestrictionsItem__cn_type; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CNTypeRestrictionsItem */ +typedef struct CNTypeRestrictionsItem { + PLMN_Identity_t plmn_Id; + long cn_type; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CNTypeRestrictionsItem_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_cn_type_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem; +extern asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CNTypeRestrictionsItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTValueExtended.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTValueExtended.c new file mode 100644 index 0000000..7def5cc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTValueExtended.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "COUNTValueExtended.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_COUNTValueExtended_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended, pDCP_SNExtended), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PDCP_SNExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SNExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended, hFNModified), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HFNModified, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFNModified" + }, + { ATF_POINTER, 1, offsetof(struct COUNTValueExtended, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P124, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_COUNTValueExtended_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_COUNTValueExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTValueExtended_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SNExtended */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFNModified */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_specs_1 = { + sizeof(struct COUNTValueExtended), + offsetof(struct COUNTValueExtended, _asn_ctx), + asn_MAP_COUNTValueExtended_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_COUNTValueExtended_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended = { + "COUNTValueExtended", + "COUNTValueExtended", + &asn_OP_SEQUENCE, + asn_DEF_COUNTValueExtended_tags_1, + sizeof(asn_DEF_COUNTValueExtended_tags_1) + /sizeof(asn_DEF_COUNTValueExtended_tags_1[0]), /* 1 */ + asn_DEF_COUNTValueExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_COUNTValueExtended_tags_1) + /sizeof(asn_DEF_COUNTValueExtended_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTValueExtended_1, + 3, /* Elements count */ + &asn_SPC_COUNTValueExtended_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTValueExtended.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTValueExtended.h new file mode 100644 index 0000000..60e0290 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTValueExtended.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _COUNTValueExtended_H_ +#define _COUNTValueExtended_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PDCP-SNExtended.h" +#include "HFNModified.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* COUNTValueExtended */ +typedef struct COUNTValueExtended { + PDCP_SNExtended_t pDCP_SNExtended; + HFNModified_t hFNModified; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTValueExtended_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_specs_1; +extern asn_TYPE_member_t asn_MBR_COUNTValueExtended_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _COUNTValueExtended_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvalue.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvalue.c new file mode 100644 index 0000000..1e0f9e0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvalue.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "COUNTvalue.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_COUNTvalue_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue, pDCP_SN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PDCP_SN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SN" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue, hFN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HFN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFN" + }, + { ATF_POINTER, 1, offsetof(struct COUNTvalue, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P123, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_COUNTvalue_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_COUNTvalue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvalue_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFN */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_specs_1 = { + sizeof(struct COUNTvalue), + offsetof(struct COUNTvalue, _asn_ctx), + asn_MAP_COUNTvalue_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_COUNTvalue_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvalue = { + "COUNTvalue", + "COUNTvalue", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvalue_tags_1, + sizeof(asn_DEF_COUNTvalue_tags_1) + /sizeof(asn_DEF_COUNTvalue_tags_1[0]), /* 1 */ + asn_DEF_COUNTvalue_tags_1, /* Same as above */ + sizeof(asn_DEF_COUNTvalue_tags_1) + /sizeof(asn_DEF_COUNTvalue_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvalue_1, + 3, /* Elements count */ + &asn_SPC_COUNTvalue_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvalue.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvalue.h new file mode 100644 index 0000000..91e9e36 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvalue.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _COUNTvalue_H_ +#define _COUNTvalue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PDCP-SN.h" +#include "HFN.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* COUNTvalue */ +typedef struct COUNTvalue { + PDCP_SN_t pDCP_SN; + HFN_t hFN; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTvalue_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_COUNTvalue; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_specs_1; +extern asn_TYPE_member_t asn_MBR_COUNTvalue_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _COUNTvalue_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c new file mode 100644 index 0000000..bcd84df --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "COUNTvaluePDCP-SNlength18.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18, pDCP_SNlength18), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCP-SNlength18" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18, hFNforPDCP_SNlength18), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HFNforPDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hFNforPDCP-SNlength18" + }, + { ATF_POINTER, 1, offsetof(struct COUNTvaluePDCP_SNlength18, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P125, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_COUNTvaluePDCP_SNlength18_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_COUNTvaluePDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvaluePDCP_SNlength18_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCP-SNlength18 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hFNforPDCP-SNlength18 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_specs_1 = { + sizeof(struct COUNTvaluePDCP_SNlength18), + offsetof(struct COUNTvaluePDCP_SNlength18, _asn_ctx), + asn_MAP_COUNTvaluePDCP_SNlength18_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_COUNTvaluePDCP_SNlength18_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18 = { + "COUNTvaluePDCP-SNlength18", + "COUNTvaluePDCP-SNlength18", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvaluePDCP_SNlength18_tags_1, + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_COUNTvaluePDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvaluePDCP_SNlength18_1, + 3, /* Elements count */ + &asn_SPC_COUNTvaluePDCP_SNlength18_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h new file mode 100644 index 0000000..1f934ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/COUNTvaluePDCP-SNlength18.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _COUNTvaluePDCP_SNlength18_H_ +#define _COUNTvaluePDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PDCP-SNlength18.h" +#include "HFNforPDCP-SNlength18.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* COUNTvaluePDCP-SNlength18 */ +typedef struct COUNTvaluePDCP_SNlength18 { + PDCP_SNlength18_t pDCP_SNlength18; + HFNforPDCP_SNlength18_t hFNforPDCP_SNlength18; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTvaluePDCP_SNlength18_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_specs_1; +extern asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _COUNTvaluePDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CRNTI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CRNTI.c new file mode 100644 index 0000000..dfdd583 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CRNTI.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CRNTI.h" + +int +CRNTI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CRNTI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CRNTI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CRNTI = { + "CRNTI", + "CRNTI", + &asn_OP_BIT_STRING, + asn_DEF_CRNTI_tags_1, + sizeof(asn_DEF_CRNTI_tags_1) + /sizeof(asn_DEF_CRNTI_tags_1[0]), /* 1 */ + asn_DEF_CRNTI_tags_1, /* Same as above */ + sizeof(asn_DEF_CRNTI_tags_1) + /sizeof(asn_DEF_CRNTI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CRNTI_constr_1, CRNTI_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CRNTI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CRNTI.h new file mode 100644 index 0000000..ff1eb47 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CRNTI.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CRNTI_H_ +#define _CRNTI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CRNTI */ +typedef BIT_STRING_t CRNTI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CRNTI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CRNTI; +asn_struct_free_f CRNTI_free; +asn_struct_print_f CRNTI_print; +asn_constr_check_f CRNTI_constraint; +ber_type_decoder_f CRNTI_decode_ber; +der_type_encoder_f CRNTI_encode_der; +xer_type_decoder_f CRNTI_decode_xer; +xer_type_encoder_f CRNTI_encode_xer; +per_type_decoder_f CRNTI_decode_uper; +per_type_encoder_f CRNTI_encode_uper; +per_type_decoder_f CRNTI_decode_aper; +per_type_encoder_f CRNTI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CRNTI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSG-Id.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSG-Id.c new file mode 100644 index 0000000..5651088 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSG-Id.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSG-Id.h" + +int +CSG_Id_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 27)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CSG_Id_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 27, 27 } /* (SIZE(27..27)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CSG_Id_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSG_Id = { + "CSG-Id", + "CSG-Id", + &asn_OP_BIT_STRING, + asn_DEF_CSG_Id_tags_1, + sizeof(asn_DEF_CSG_Id_tags_1) + /sizeof(asn_DEF_CSG_Id_tags_1[0]), /* 1 */ + asn_DEF_CSG_Id_tags_1, /* Same as above */ + sizeof(asn_DEF_CSG_Id_tags_1) + /sizeof(asn_DEF_CSG_Id_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSG_Id_constr_1, CSG_Id_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSG-Id.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSG-Id.h new file mode 100644 index 0000000..22d0acf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSG-Id.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSG_Id_H_ +#define _CSG_Id_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CSG-Id */ +typedef BIT_STRING_t CSG_Id_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CSG_Id_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CSG_Id; +asn_struct_free_f CSG_Id_free; +asn_struct_print_f CSG_Id_print; +asn_constr_check_f CSG_Id_constraint; +ber_type_decoder_f CSG_Id_decode_ber; +der_type_encoder_f CSG_Id_encode_der; +xer_type_decoder_f CSG_Id_decode_xer; +xer_type_encoder_f CSG_Id_encode_xer; +per_type_decoder_f CSG_Id_decode_uper; +per_type_encoder_f CSG_Id_encode_uper; +per_type_decoder_f CSG_Id_decode_aper; +per_type_encoder_f CSG_Id_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSG_Id_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSGMembershipStatus.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSGMembershipStatus.c new file mode 100644 index 0000000..312e282 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSGMembershipStatus.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSGMembershipStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CSGMembershipStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CSGMembershipStatus_value2enum_1[] = { + { 0, 6, "member" }, + { 1, 10, "not-member" } +}; +static const unsigned int asn_MAP_CSGMembershipStatus_enum2value_1[] = { + 0, /* member(0) */ + 1 /* not-member(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1 = { + asn_MAP_CSGMembershipStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CSGMembershipStatus_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CSGMembershipStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus = { + "CSGMembershipStatus", + "CSGMembershipStatus", + &asn_OP_NativeEnumerated, + asn_DEF_CSGMembershipStatus_tags_1, + sizeof(asn_DEF_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */ + asn_DEF_CSGMembershipStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_CSGMembershipStatus_tags_1) + /sizeof(asn_DEF_CSGMembershipStatus_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSGMembershipStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CSGMembershipStatus_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSGMembershipStatus.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSGMembershipStatus.h new file mode 100644 index 0000000..52cfb46 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSGMembershipStatus.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSGMembershipStatus_H_ +#define _CSGMembershipStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CSGMembershipStatus { + CSGMembershipStatus_member = 0, + CSGMembershipStatus_not_member = 1 +} e_CSGMembershipStatus; + +/* CSGMembershipStatus */ +typedef long CSGMembershipStatus_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CSGMembershipStatus_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipStatus; +extern const asn_INTEGER_specifics_t asn_SPC_CSGMembershipStatus_specs_1; +asn_struct_free_f CSGMembershipStatus_free; +asn_struct_print_f CSGMembershipStatus_print; +asn_constr_check_f CSGMembershipStatus_constraint; +ber_type_decoder_f CSGMembershipStatus_decode_ber; +der_type_encoder_f CSGMembershipStatus_encode_der; +xer_type_decoder_f CSGMembershipStatus_decode_xer; +xer_type_encoder_f CSGMembershipStatus_encode_xer; +per_type_decoder_f CSGMembershipStatus_decode_uper; +per_type_encoder_f CSGMembershipStatus_encode_uper; +per_type_decoder_f CSGMembershipStatus_decode_aper; +per_type_encoder_f CSGMembershipStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSGMembershipStatus_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportList.c new file mode 100644 index 0000000..e042185 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportList.c @@ -0,0 +1,137 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSIReportList.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_CSIReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 128 } /* (SIZE(1..128)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList__Member, uEID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList__Member, cSIReportPerCSIProcess), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CSIReportPerCSIProcess, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSIReportPerCSIProcess" + }, + { ATF_POINTER, 1, offsetof(struct CSIReportList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P128, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uEID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSIReportPerCSIProcess */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CSIReportList__Member), + offsetof(struct CSIReportList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CSIReportList_specs_1 = { + sizeof(struct CSIReportList), + offsetof(struct CSIReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportList = { + "CSIReportList", + "CSIReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_CSIReportList_tags_1, + sizeof(asn_DEF_CSIReportList_tags_1) + /sizeof(asn_DEF_CSIReportList_tags_1[0]), /* 1 */ + asn_DEF_CSIReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_CSIReportList_tags_1) + /sizeof(asn_DEF_CSIReportList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSIReportList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CSIReportList_1, + 1, /* Single element */ + &asn_SPC_CSIReportList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportList.h new file mode 100644 index 0000000..70b07f8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportList.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSIReportList_H_ +#define _CSIReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "UEID.h" +#include "CSIReportPerCSIProcess.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CSIReportList__Member { + UEID_t uEID; + CSIReportPerCSIProcess_t cSIReportPerCSIProcess; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportList__Member; + +/* CSIReportList */ +typedef struct CSIReportList { + A_SEQUENCE_OF(CSIReportList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSIReportList; +extern asn_SET_OF_specifics_t asn_SPC_CSIReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_CSIReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_CSIReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSIReportList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c new file mode 100644 index 0000000..57af10d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcess.c @@ -0,0 +1,167 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSIReportPerCSIProcess.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_cSIProcessConfigurationIndex_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_cSIProcessConfigurationIndex_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 7 } /* (1..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcess_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess__Member, cSIProcessConfigurationIndex), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_cSIProcessConfigurationIndex_constr_3, memb_cSIProcessConfigurationIndex_constraint_2 }, + 0, 0, /* No default value */ + "cSIProcessConfigurationIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess__Member, cSIReportPerCSIProcessItem), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CSIReportPerCSIProcessItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cSIReportPerCSIProcessItem" + }, + { ATF_POINTER, 1, offsetof(struct CSIReportPerCSIProcess__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P129, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cSIProcessConfigurationIndex */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cSIReportPerCSIProcessItem */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CSIReportPerCSIProcess__Member), + offsetof(struct CSIReportPerCSIProcess__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcess_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcess_specs_1 = { + sizeof(struct CSIReportPerCSIProcess), + offsetof(struct CSIReportPerCSIProcess, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess = { + "CSIReportPerCSIProcess", + "CSIReportPerCSIProcess", + &asn_OP_SEQUENCE_OF, + asn_DEF_CSIReportPerCSIProcess_tags_1, + sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcess_tags_1, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcess_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSIReportPerCSIProcess_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CSIReportPerCSIProcess_1, + 1, /* Single element */ + &asn_SPC_CSIReportPerCSIProcess_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h new file mode 100644 index 0000000..70487f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcess.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSIReportPerCSIProcess_H_ +#define _CSIReportPerCSIProcess_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NativeInteger.h" +#include "CSIReportPerCSIProcessItem.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CSIReportPerCSIProcess__Member { + long cSIProcessConfigurationIndex; + CSIReportPerCSIProcessItem_t cSIReportPerCSIProcessItem; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcess__Member; + +/* CSIReportPerCSIProcess */ +typedef struct CSIReportPerCSIProcess { + A_SEQUENCE_OF(CSIReportPerCSIProcess__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcess_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess; +extern asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcess_specs_1; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_1[1]; +extern asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcess_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSIReportPerCSIProcess_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c new file mode 100644 index 0000000..d243446 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.c @@ -0,0 +1,188 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CSIReportPerCSIProcessItem.h" + +#include "SubbandCQIList.h" +#include "ProtocolExtensionContainer.h" +static int +memb_rI_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_rI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (1..8,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcessItem_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem__Member, rI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_rI_constr_3, memb_rI_constraint_2 }, + 0, 0, /* No default value */ + "rI" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem__Member, widebandCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WidebandCQI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "widebandCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem__Member, subbandSize), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubbandSize, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandSize" + }, + { ATF_POINTER, 2, offsetof(struct CSIReportPerCSIProcessItem__Member, subbandCQIList), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubbandCQIList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQIList" + }, + { ATF_POINTER, 1, offsetof(struct CSIReportPerCSIProcessItem__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P130, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3, 4 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* widebandCQI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subbandSize */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* subbandCQIList */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CSIReportPerCSIProcessItem__Member), + offsetof(struct CSIReportPerCSIProcessItem__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 5, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 5, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcessItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcessItem_specs_1 = { + sizeof(struct CSIReportPerCSIProcessItem), + offsetof(struct CSIReportPerCSIProcessItem, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem = { + "CSIReportPerCSIProcessItem", + "CSIReportPerCSIProcessItem", + &asn_OP_SEQUENCE_OF, + asn_DEF_CSIReportPerCSIProcessItem_tags_1, + sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcessItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CSIReportPerCSIProcessItem_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CSIReportPerCSIProcessItem_1, + 1, /* Single element */ + &asn_SPC_CSIReportPerCSIProcessItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h new file mode 100644 index 0000000..ee451f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CSIReportPerCSIProcessItem.h @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CSIReportPerCSIProcessItem_H_ +#define _CSIReportPerCSIProcessItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NativeInteger.h" +#include "WidebandCQI.h" +#include "SubbandSize.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SubbandCQIList; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CSIReportPerCSIProcessItem__Member { + long rI; + WidebandCQI_t widebandCQI; + SubbandSize_t subbandSize; + struct SubbandCQIList *subbandCQIList; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcessItem__Member; + +/* CSIReportPerCSIProcessItem */ +typedef struct CSIReportPerCSIProcessItem { + A_SEQUENCE_OF(CSIReportPerCSIProcessItem__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcessItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem; +extern asn_SET_OF_specifics_t asn_SPC_CSIReportPerCSIProcessItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_1[1]; +extern asn_per_constraints_t asn_PER_type_CSIReportPerCSIProcessItem_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CSIReportPerCSIProcessItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CallProcess-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CallProcess-ID.c new file mode 100644 index 0000000..08bfe47 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CallProcess-ID.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CallProcess-ID.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_CallProcess_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CallProcess_ID = { + "CallProcess-ID", + "CallProcess-ID", + &asn_OP_NativeInteger, + asn_DEF_CallProcess_ID_tags_1, + sizeof(asn_DEF_CallProcess_ID_tags_1) + /sizeof(asn_DEF_CallProcess_ID_tags_1[0]), /* 1 */ + asn_DEF_CallProcess_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_CallProcess_ID_tags_1) + /sizeof(asn_DEF_CallProcess_ID_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CallProcess-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CallProcess-ID.h new file mode 100644 index 0000000..738e20b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CallProcess-ID.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CallProcess_ID_H_ +#define _CallProcess_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CallProcess-ID */ +typedef long CallProcess_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CallProcess_ID; +asn_struct_free_f CallProcess_ID_free; +asn_struct_print_f CallProcess_ID_print; +asn_constr_check_f CallProcess_ID_constraint; +ber_type_decoder_f CallProcess_ID_decode_ber; +der_type_encoder_f CallProcess_ID_encode_der; +xer_type_decoder_f CallProcess_ID_decode_xer; +xer_type_encoder_f CallProcess_ID_encode_xer; +per_type_decoder_f CallProcess_ID_decode_uper; +per_type_encoder_f CallProcess_ID_encode_uper; +per_type_decoder_f CallProcess_ID_decode_aper; +per_type_encoder_f CallProcess_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CallProcess_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CapacityValue.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CapacityValue.c new file mode 100644 index 0000000..36dcd8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CapacityValue.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CapacityValue.h" + +int +CapacityValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CapacityValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CapacityValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CapacityValue = { + "CapacityValue", + "CapacityValue", + &asn_OP_NativeInteger, + asn_DEF_CapacityValue_tags_1, + sizeof(asn_DEF_CapacityValue_tags_1) + /sizeof(asn_DEF_CapacityValue_tags_1[0]), /* 1 */ + asn_DEF_CapacityValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CapacityValue_tags_1) + /sizeof(asn_DEF_CapacityValue_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CapacityValue_constr_1, CapacityValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CapacityValue.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CapacityValue.h new file mode 100644 index 0000000..5586773 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CapacityValue.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CapacityValue_H_ +#define _CapacityValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CapacityValue */ +typedef long CapacityValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CapacityValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CapacityValue; +asn_struct_free_f CapacityValue_free; +asn_struct_print_f CapacityValue_print; +asn_constr_check_f CapacityValue_constraint; +ber_type_decoder_f CapacityValue_decode_ber; +der_type_encoder_f CapacityValue_encode_der; +xer_type_decoder_f CapacityValue_decode_xer; +xer_type_encoder_f CapacityValue_encode_xer; +per_type_decoder_f CapacityValue_decode_uper; +per_type_encoder_f CapacityValue_encode_uper; +per_type_decoder_f CapacityValue_decode_aper; +per_type_encoder_f CapacityValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CapacityValue_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cause.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cause.c new file mode 100644 index 0000000..bb81a7f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cause.c @@ -0,0 +1,105 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Cause.h" + +asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.radioNetwork), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRadioNetwork, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioNetwork" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */ +}; +asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { + sizeof(struct Cause), + offsetof(struct Cause, _asn_ctx), + offsetof(struct Cause, present), + sizeof(((struct Cause *)0)->present), + asn_MAP_Cause_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Cause = { + "Cause", + "Cause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, + asn_MBR_Cause_1, + 4, /* Elements count */ + &asn_SPC_Cause_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cause.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cause.h new file mode 100644 index 0000000..1c9f197 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cause.h @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Cause_H_ +#define _Cause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CauseRadioNetwork.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_radioNetwork, + Cause_PR_transport, + Cause_PR_protocol, + Cause_PR_misc + /* Extensions may appear below */ + +} Cause_PR; + +/* Cause */ +typedef struct Cause { + Cause_PR present; + union Cause_u { + CauseRadioNetwork_t radioNetwork; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Cause; +extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; +extern asn_TYPE_member_t asn_MBR_Cause_1[4]; +extern asn_per_constraints_t asn_PER_type_Cause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cause_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseMisc.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseMisc.c new file mode 100644 index 0000000..10b520f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseMisc.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseMisc.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { + { 0, 27, "control-processing-overload" }, + { 1, 16, "hardware-failure" }, + { 2, 15, "om-intervention" }, + { 3, 42, "not-enough-user-plane-processing-resources" }, + { 4, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { + 0, /* control-processing-overload(0) */ + 1, /* hardware-failure(1) */ + 3, /* not-enough-user-plane-processing-resources(3) */ + 2, /* om-intervention(2) */ + 4 /* unspecified(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { + asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseMisc = { + "CauseMisc", + "CauseMisc", + &asn_OP_NativeEnumerated, + asn_DEF_CauseMisc_tags_1, + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseMisc.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseMisc.h new file mode 100644 index 0000000..46145c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseMisc.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseMisc_H_ +#define _CauseMisc_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseMisc { + CauseMisc_control_processing_overload = 0, + CauseMisc_hardware_failure = 1, + CauseMisc_om_intervention = 2, + CauseMisc_not_enough_user_plane_processing_resources = 3, + CauseMisc_unspecified = 4 + /* + * Enumeration is extensible + */ +} e_CauseMisc; + +/* CauseMisc */ +typedef long CauseMisc_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; +extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseMisc_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseProtocol.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseProtocol.c new file mode 100644 index 0000000..d92c87e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseProtocol.c @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseProtocol.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { + { 0, 21, "transfer-syntax-error" }, + { 1, 28, "abstract-syntax-error-reject" }, + { 2, 39, "abstract-syntax-error-ignore-and-notify" }, + { 3, 42, "message-not-compatible-with-receiver-state" }, + { 4, 14, "semantic-error" }, + { 5, 11, "unspecified" }, + { 6, 49, "abstract-syntax-error-falsely-constructed-message" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { + 6, /* abstract-syntax-error-falsely-constructed-message(6) */ + 2, /* abstract-syntax-error-ignore-and-notify(2) */ + 1, /* abstract-syntax-error-reject(1) */ + 3, /* message-not-compatible-with-receiver-state(3) */ + 4, /* semantic-error(4) */ + 0, /* transfer-syntax-error(0) */ + 5 /* unspecified(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { + asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + &asn_OP_NativeEnumerated, + asn_DEF_CauseProtocol_tags_1, + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseProtocol.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseProtocol.h new file mode 100644 index 0000000..f06552b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseProtocol.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseProtocol_H_ +#define _CauseProtocol_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseProtocol { + CauseProtocol_transfer_syntax_error = 0, + CauseProtocol_abstract_syntax_error_reject = 1, + CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + CauseProtocol_message_not_compatible_with_receiver_state = 3, + CauseProtocol_semantic_error = 4, + CauseProtocol_unspecified = 5, + CauseProtocol_abstract_syntax_error_falsely_constructed_message = 6 + /* + * Enumeration is extensible + */ +} e_CauseProtocol; + +/* CauseProtocol */ +typedef long CauseProtocol_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; +extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseProtocol_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRIC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRIC.c new file mode 100644 index 0000000..8dcf1a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRIC.c @@ -0,0 +1,100 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseRIC.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRIC_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 12 } /* (0..12,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRIC_value2enum_1[] = { + { 0, 19, "function-id-Invalid" }, + { 1, 20, "action-not-supported" }, + { 2, 17, "excessive-actions" }, + { 3, 16, "duplicate-action" }, + { 4, 15, "duplicate-event" }, + { 5, 23, "function-resource-limit" }, + { 6, 18, "request-id-unknown" }, + { 7, 46, "inconsistent-action-subsequent-action-sequence" }, + { 8, 23, "control-message-invalid" }, + { 9, 23, "call-process-id-invalid" }, + { 10, 21, "function-not-required" }, + { 11, 19, "excessive-functions" }, + { 12, 18, "ric-resource-limit" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRIC_enum2value_1[] = { + 1, /* action-not-supported(1) */ + 9, /* call-process-id-invalid(9) */ + 8, /* control-message-invalid(8) */ + 3, /* duplicate-action(3) */ + 4, /* duplicate-event(4) */ + 2, /* excessive-actions(2) */ + 11, /* excessive-functions(11) */ + 0, /* function-id-Invalid(0) */ + 10, /* function-not-required(10) */ + 5, /* function-resource-limit(5) */ + 7, /* inconsistent-action-subsequent-action-sequence(7) */ + 6, /* request-id-unknown(6) */ + 12 /* ric-resource-limit(12) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1 = { + asn_MAP_CauseRIC_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRIC_enum2value_1, /* N => "tag"; sorted by N */ + 13, /* Number of elements in the maps */ + 14, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRIC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRIC = { + "CauseRIC", + "CauseRIC", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRIC_tags_1, + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + asn_DEF_CauseRIC_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRIC_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRIC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRIC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRIC.h new file mode 100644 index 0000000..7899033 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRIC.h @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseRIC_H_ +#define _CauseRIC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRIC { + CauseRIC_function_id_Invalid = 0, + CauseRIC_action_not_supported = 1, + CauseRIC_excessive_actions = 2, + CauseRIC_duplicate_action = 3, + CauseRIC_duplicate_event = 4, + CauseRIC_function_resource_limit = 5, + CauseRIC_request_id_unknown = 6, + CauseRIC_inconsistent_action_subsequent_action_sequence = 7, + CauseRIC_control_message_invalid = 8, + CauseRIC_call_process_id_invalid = 9, + CauseRIC_function_not_required = 10, + CauseRIC_excessive_functions = 11, + CauseRIC_ric_resource_limit = 12 + /* + * Enumeration is extensible + */ +} e_CauseRIC; + +/* CauseRIC */ +typedef long CauseRIC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRIC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRIC; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1; +asn_struct_free_f CauseRIC_free; +asn_struct_print_f CauseRIC_print; +asn_constr_check_f CauseRIC_constraint; +ber_type_decoder_f CauseRIC_decode_ber; +der_type_encoder_f CauseRIC_encode_der; +xer_type_decoder_f CauseRIC_decode_xer; +xer_type_encoder_f CauseRIC_encode_xer; +per_type_decoder_f CauseRIC_decode_uper; +per_type_encoder_f CauseRIC_encode_uper; +per_type_decoder_f CauseRIC_decode_aper; +per_type_encoder_f CauseRIC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRIC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRadioNetwork.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRadioNetwork.c new file mode 100644 index 0000000..8de69dd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRadioNetwork.c @@ -0,0 +1,176 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseRadioNetwork.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRadioNetwork_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 21 } /* (0..21,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRadioNetwork_value2enum_1[] = { + { 0, 36, "handover-desirable-for-radio-reasons" }, + { 1, 22, "time-critical-handover" }, + { 2, 30, "resource-optimisation-handover" }, + { 3, 27, "reduce-load-in-serving-cell" }, + { 4, 16, "partial-handover" }, + { 5, 26, "unknown-new-eNB-UE-X2AP-ID" }, + { 6, 26, "unknown-old-eNB-UE-X2AP-ID" }, + { 7, 26, "unknown-pair-of-UE-X2AP-ID" }, + { 8, 21, "ho-target-not-allowed" }, + { 9, 22, "tx2relocoverall-expiry" }, + { 10, 17, "trelocprep-expiry" }, + { 11, 18, "cell-not-available" }, + { 12, 43, "no-radio-resources-available-in-target-cell" }, + { 13, 19, "invalid-MME-GroupID" }, + { 14, 16, "unknown-MME-Code" }, + { 15, 63, "encryption-and-or-integrity-protection-algorithms-not-supported" }, + { 16, 26, "reportCharacteristicsEmpty" }, + { 17, 19, "noReportPeriodicity" }, + { 18, 21, "existingMeasurementID" }, + { 19, 26, "unknown-eNB-Measurement-ID" }, + { 20, 37, "measurement-temporarily-not-available" }, + { 21, 11, "unspecified" }, + { 22, 14, "load-balancing" }, + { 23, 21, "handover-optimisation" }, + { 24, 26, "value-out-of-allowed-range" }, + { 25, 27, "multiple-E-RAB-ID-instances" }, + { 26, 18, "switch-off-ongoing" }, + { 27, 23, "not-supported-QCI-value" }, + { 28, 40, "measurement-not-supported-for-the-object" }, + { 29, 17, "tDCoverall-expiry" }, + { 30, 14, "tDCprep-expiry" }, + { 31, 34, "action-desirable-for-radio-reasons" }, + { 32, 11, "reduce-load" }, + { 33, 21, "resource-optimisation" }, + { 34, 20, "time-critical-action" }, + { 35, 18, "target-not-allowed" }, + { 36, 28, "no-radio-resources-available" }, + { 37, 23, "invalid-QoS-combination" }, + { 38, 35, "encryption-algorithms-not-aupported" }, + { 39, 19, "procedure-cancelled" }, + { 40, 11, "rRM-purpose" }, + { 41, 21, "improve-user-bit-rate" }, + { 42, 15, "user-inactivity" }, + { 43, 29, "radio-connection-with-UE-lost" }, + { 44, 40, "failure-in-the-radio-interface-procedure" }, + { 45, 27, "bearer-option-not-supported" }, + { 46, 12, "mCG-Mobility" }, + { 47, 12, "sCG-Mobility" }, + { 48, 23, "count-reaches-max-value" }, + { 49, 29, "unknown-old-en-gNB-UE-X2AP-ID" }, + { 50, 13, "pDCP-Overload" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRadioNetwork_enum2value_1[] = { + 31, /* action-desirable-for-radio-reasons(31) */ + 45, /* bearer-option-not-supported(45) */ + 11, /* cell-not-available(11) */ + 48, /* count-reaches-max-value(48) */ + 38, /* encryption-algorithms-not-aupported(38) */ + 15, /* encryption-and-or-integrity-protection-algorithms-not-supported(15) */ + 18, /* existingMeasurementID(18) */ + 44, /* failure-in-the-radio-interface-procedure(44) */ + 0, /* handover-desirable-for-radio-reasons(0) */ + 23, /* handover-optimisation(23) */ + 8, /* ho-target-not-allowed(8) */ + 41, /* improve-user-bit-rate(41) */ + 13, /* invalid-MME-GroupID(13) */ + 37, /* invalid-QoS-combination(37) */ + 22, /* load-balancing(22) */ + 46, /* mCG-Mobility(46) */ + 28, /* measurement-not-supported-for-the-object(28) */ + 20, /* measurement-temporarily-not-available(20) */ + 25, /* multiple-E-RAB-ID-instances(25) */ + 36, /* no-radio-resources-available(36) */ + 12, /* no-radio-resources-available-in-target-cell(12) */ + 17, /* noReportPeriodicity(17) */ + 27, /* not-supported-QCI-value(27) */ + 50, /* pDCP-Overload(50) */ + 4, /* partial-handover(4) */ + 39, /* procedure-cancelled(39) */ + 40, /* rRM-purpose(40) */ + 43, /* radio-connection-with-UE-lost(43) */ + 32, /* reduce-load(32) */ + 3, /* reduce-load-in-serving-cell(3) */ + 16, /* reportCharacteristicsEmpty(16) */ + 33, /* resource-optimisation(33) */ + 2, /* resource-optimisation-handover(2) */ + 47, /* sCG-Mobility(47) */ + 26, /* switch-off-ongoing(26) */ + 29, /* tDCoverall-expiry(29) */ + 30, /* tDCprep-expiry(30) */ + 35, /* target-not-allowed(35) */ + 34, /* time-critical-action(34) */ + 1, /* time-critical-handover(1) */ + 10, /* trelocprep-expiry(10) */ + 9, /* tx2relocoverall-expiry(9) */ + 14, /* unknown-MME-Code(14) */ + 19, /* unknown-eNB-Measurement-ID(19) */ + 5, /* unknown-new-eNB-UE-X2AP-ID(5) */ + 6, /* unknown-old-eNB-UE-X2AP-ID(6) */ + 49, /* unknown-old-en-gNB-UE-X2AP-ID(49) */ + 7, /* unknown-pair-of-UE-X2AP-ID(7) */ + 21, /* unspecified(21) */ + 42, /* user-inactivity(42) */ + 24 /* value-out-of-allowed-range(24) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1 = { + asn_MAP_CauseRadioNetwork_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRadioNetwork_enum2value_1, /* N => "tag"; sorted by N */ + 51, /* Number of elements in the maps */ + 23, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRadioNetwork_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork = { + "CauseRadioNetwork", + "CauseRadioNetwork", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRadioNetwork_tags_1, + sizeof(asn_DEF_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */ + asn_DEF_CauseRadioNetwork_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRadioNetwork_tags_1) + /sizeof(asn_DEF_CauseRadioNetwork_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRadioNetwork_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRadioNetwork_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRadioNetwork.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRadioNetwork.h new file mode 100644 index 0000000..60ae93b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseRadioNetwork.h @@ -0,0 +1,126 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseRadioNetwork_H_ +#define _CauseRadioNetwork_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRadioNetwork { + CauseRadioNetwork_handover_desirable_for_radio_reasons = 0, + CauseRadioNetwork_time_critical_handover = 1, + CauseRadioNetwork_resource_optimisation_handover = 2, + CauseRadioNetwork_reduce_load_in_serving_cell = 3, + CauseRadioNetwork_partial_handover = 4, + CauseRadioNetwork_unknown_new_eNB_UE_X2AP_ID = 5, + CauseRadioNetwork_unknown_old_eNB_UE_X2AP_ID = 6, + CauseRadioNetwork_unknown_pair_of_UE_X2AP_ID = 7, + CauseRadioNetwork_ho_target_not_allowed = 8, + CauseRadioNetwork_tx2relocoverall_expiry = 9, + CauseRadioNetwork_trelocprep_expiry = 10, + CauseRadioNetwork_cell_not_available = 11, + CauseRadioNetwork_no_radio_resources_available_in_target_cell = 12, + CauseRadioNetwork_invalid_MME_GroupID = 13, + CauseRadioNetwork_unknown_MME_Code = 14, + CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported = 15, + CauseRadioNetwork_reportCharacteristicsEmpty = 16, + CauseRadioNetwork_noReportPeriodicity = 17, + CauseRadioNetwork_existingMeasurementID = 18, + CauseRadioNetwork_unknown_eNB_Measurement_ID = 19, + CauseRadioNetwork_measurement_temporarily_not_available = 20, + CauseRadioNetwork_unspecified = 21, + /* + * Enumeration is extensible + */ + CauseRadioNetwork_load_balancing = 22, + CauseRadioNetwork_handover_optimisation = 23, + CauseRadioNetwork_value_out_of_allowed_range = 24, + CauseRadioNetwork_multiple_E_RAB_ID_instances = 25, + CauseRadioNetwork_switch_off_ongoing = 26, + CauseRadioNetwork_not_supported_QCI_value = 27, + CauseRadioNetwork_measurement_not_supported_for_the_object = 28, + CauseRadioNetwork_tDCoverall_expiry = 29, + CauseRadioNetwork_tDCprep_expiry = 30, + CauseRadioNetwork_action_desirable_for_radio_reasons = 31, + CauseRadioNetwork_reduce_load = 32, + CauseRadioNetwork_resource_optimisation = 33, + CauseRadioNetwork_time_critical_action = 34, + CauseRadioNetwork_target_not_allowed = 35, + CauseRadioNetwork_no_radio_resources_available = 36, + CauseRadioNetwork_invalid_QoS_combination = 37, + CauseRadioNetwork_encryption_algorithms_not_aupported = 38, + CauseRadioNetwork_procedure_cancelled = 39, + CauseRadioNetwork_rRM_purpose = 40, + CauseRadioNetwork_improve_user_bit_rate = 41, + CauseRadioNetwork_user_inactivity = 42, + CauseRadioNetwork_radio_connection_with_UE_lost = 43, + CauseRadioNetwork_failure_in_the_radio_interface_procedure = 44, + CauseRadioNetwork_bearer_option_not_supported = 45, + CauseRadioNetwork_mCG_Mobility = 46, + CauseRadioNetwork_sCG_Mobility = 47, + CauseRadioNetwork_count_reaches_max_value = 48, + CauseRadioNetwork_unknown_old_en_gNB_UE_X2AP_ID = 49, + CauseRadioNetwork_pDCP_Overload = 50 +} e_CauseRadioNetwork; + +/* CauseRadioNetwork */ +typedef long CauseRadioNetwork_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRadioNetwork_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRadioNetwork; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRadioNetwork_specs_1; +asn_struct_free_f CauseRadioNetwork_free; +asn_struct_print_f CauseRadioNetwork_print; +asn_constr_check_f CauseRadioNetwork_constraint; +ber_type_decoder_f CauseRadioNetwork_decode_ber; +der_type_encoder_f CauseRadioNetwork_encode_der; +xer_type_decoder_f CauseRadioNetwork_decode_xer; +xer_type_encoder_f CauseRadioNetwork_encode_xer; +per_type_decoder_f CauseRadioNetwork_decode_uper; +per_type_encoder_f CauseRadioNetwork_encode_uper; +per_type_decoder_f CauseRadioNetwork_decode_aper; +per_type_encoder_f CauseRadioNetwork_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRadioNetwork_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseTransport.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseTransport.c new file mode 100644 index 0000000..801062e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseTransport.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CauseTransport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { + { 0, 30, "transport-resource-unavailable" }, + { 1, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { + 0, /* transport-resource-unavailable(0) */ + 1 /* unspecified(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { + asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseTransport = { + "CauseTransport", + "CauseTransport", + &asn_OP_NativeEnumerated, + asn_DEF_CauseTransport_tags_1, + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseTransport.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseTransport.h new file mode 100644 index 0000000..0311531 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CauseTransport.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CauseTransport_H_ +#define _CauseTransport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseTransport { + CauseTransport_transport_resource_unavailable = 0, + CauseTransport_unspecified = 1 + /* + * Enumeration is extensible + */ +} e_CauseTransport; + +/* CauseTransport */ +typedef long CauseTransport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; +extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseTransport_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cell-Size.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cell-Size.c new file mode 100644 index 0000000..78649ba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cell-Size.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Cell-Size.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Cell_Size_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Cell_Size_value2enum_1[] = { + { 0, 9, "verysmall" }, + { 1, 5, "small" }, + { 2, 6, "medium" }, + { 3, 5, "large" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Cell_Size_enum2value_1[] = { + 3, /* large(3) */ + 2, /* medium(2) */ + 1, /* small(1) */ + 0 /* verysmall(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Cell_Size_specs_1 = { + asn_MAP_Cell_Size_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Cell_Size_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Cell_Size_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Cell_Size = { + "Cell-Size", + "Cell-Size", + &asn_OP_NativeEnumerated, + asn_DEF_Cell_Size_tags_1, + sizeof(asn_DEF_Cell_Size_tags_1) + /sizeof(asn_DEF_Cell_Size_tags_1[0]), /* 1 */ + asn_DEF_Cell_Size_tags_1, /* Same as above */ + sizeof(asn_DEF_Cell_Size_tags_1) + /sizeof(asn_DEF_Cell_Size_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Cell_Size_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Cell_Size_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cell-Size.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cell-Size.h new file mode 100644 index 0000000..2fa0c9e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Cell-Size.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Cell_Size_H_ +#define _Cell_Size_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cell_Size { + Cell_Size_verysmall = 0, + Cell_Size_small = 1, + Cell_Size_medium = 2, + Cell_Size_large = 3 + /* + * Enumeration is extensible + */ +} e_Cell_Size; + +/* Cell-Size */ +typedef long Cell_Size_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Cell_Size_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Cell_Size; +extern const asn_INTEGER_specifics_t asn_SPC_Cell_Size_specs_1; +asn_struct_free_f Cell_Size_free; +asn_struct_print_f Cell_Size_print; +asn_constr_check_f Cell_Size_constraint; +ber_type_decoder_f Cell_Size_decode_ber; +der_type_encoder_f Cell_Size_encode_der; +xer_type_decoder_f Cell_Size_decode_xer; +xer_type_encoder_f Cell_Size_encode_xer; +per_type_decoder_f Cell_Size_decode_uper; +per_type_encoder_f Cell_Size_encode_uper; +per_type_decoder_f Cell_Size_decode_aper; +per_type_encoder_f Cell_Size_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cell_Size_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationFailure.c new file mode 100644 index 0000000..a7ac544 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellActivationFailure.h" + +static asn_TYPE_member_t asn_MBR_CellActivationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellActivationFailure_specs_1 = { + sizeof(struct CellActivationFailure), + offsetof(struct CellActivationFailure, _asn_ctx), + asn_MAP_CellActivationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationFailure = { + "CellActivationFailure", + "CellActivationFailure", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationFailure_tags_1, + sizeof(asn_DEF_CellActivationFailure_tags_1) + /sizeof(asn_DEF_CellActivationFailure_tags_1[0]), /* 1 */ + asn_DEF_CellActivationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_CellActivationFailure_tags_1) + /sizeof(asn_DEF_CellActivationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationFailure_1, + 1, /* Elements count */ + &asn_SPC_CellActivationFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationFailure.h new file mode 100644 index 0000000..f02f5e8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellActivationFailure_H_ +#define _CellActivationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellActivationFailure */ +typedef struct CellActivationFailure { + ProtocolIE_Container_119P41_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellActivationFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellActivationFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationRequest.c new file mode 100644 index 0000000..052b88a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellActivationRequest.h" + +static asn_TYPE_member_t asn_MBR_CellActivationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellActivationRequest_specs_1 = { + sizeof(struct CellActivationRequest), + offsetof(struct CellActivationRequest, _asn_ctx), + asn_MAP_CellActivationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationRequest = { + "CellActivationRequest", + "CellActivationRequest", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationRequest_tags_1, + sizeof(asn_DEF_CellActivationRequest_tags_1) + /sizeof(asn_DEF_CellActivationRequest_tags_1[0]), /* 1 */ + asn_DEF_CellActivationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_CellActivationRequest_tags_1) + /sizeof(asn_DEF_CellActivationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationRequest_1, + 1, /* Elements count */ + &asn_SPC_CellActivationRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationRequest.h new file mode 100644 index 0000000..eddd0bd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellActivationRequest_H_ +#define _CellActivationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellActivationRequest */ +typedef struct CellActivationRequest { + ProtocolIE_Container_119P39_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellActivationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellActivationRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationResponse.c new file mode 100644 index 0000000..99fcfab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellActivationResponse.h" + +static asn_TYPE_member_t asn_MBR_CellActivationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellActivationResponse_specs_1 = { + sizeof(struct CellActivationResponse), + offsetof(struct CellActivationResponse, _asn_ctx), + asn_MAP_CellActivationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationResponse = { + "CellActivationResponse", + "CellActivationResponse", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationResponse_tags_1, + sizeof(asn_DEF_CellActivationResponse_tags_1) + /sizeof(asn_DEF_CellActivationResponse_tags_1[0]), /* 1 */ + asn_DEF_CellActivationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_CellActivationResponse_tags_1) + /sizeof(asn_DEF_CellActivationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationResponse_1, + 1, /* Elements count */ + &asn_SPC_CellActivationResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationResponse.h new file mode 100644 index 0000000..fbc0b3d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellActivationResponse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellActivationResponse_H_ +#define _CellActivationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellActivationResponse */ +typedef struct CellActivationResponse { + ProtocolIE_Container_119P40_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellActivationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellActivationResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellAssistanceInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellAssistanceInformation.c new file mode 100644 index 0000000..7895223 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellAssistanceInformation.c @@ -0,0 +1,132 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellAssistanceInformation.h" + +#include "Limited-list.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_full_list_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_CellAssistanceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_full_list_value2enum_3[] = { + { 0, 16, "allServedNRcells" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_full_list_enum2value_3[] = { + 0 /* allServedNRcells(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_full_list_specs_3 = { + asn_MAP_full_list_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_full_list_enum2value_3, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_full_list_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_full_list_3 = { + "full-list", + "full-list", + &asn_OP_NativeEnumerated, + asn_DEF_full_list_tags_3, + sizeof(asn_DEF_full_list_tags_3) + /sizeof(asn_DEF_full_list_tags_3[0]) - 1, /* 1 */ + asn_DEF_full_list_tags_3, /* Same as above */ + sizeof(asn_DEF_full_list_tags_3) + /sizeof(asn_DEF_full_list_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_full_list_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_full_list_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_CellAssistanceInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct CellAssistanceInformation, choice.limited_list), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Limited_list, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "limited-list" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellAssistanceInformation, choice.full_list), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_full_list_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-list" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_CellAssistanceInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* limited-list */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* full-list */ +}; +static asn_CHOICE_specifics_t asn_SPC_CellAssistanceInformation_specs_1 = { + sizeof(struct CellAssistanceInformation), + offsetof(struct CellAssistanceInformation, _asn_ctx), + offsetof(struct CellAssistanceInformation, present), + sizeof(((struct CellAssistanceInformation *)0)->present), + asn_MAP_CellAssistanceInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_CellAssistanceInformation = { + "CellAssistanceInformation", + "CellAssistanceInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_CellAssistanceInformation_constr_1, CHOICE_constraint }, + asn_MBR_CellAssistanceInformation_1, + 2, /* Elements count */ + &asn_SPC_CellAssistanceInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellAssistanceInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellAssistanceInformation.h new file mode 100644 index 0000000..fc607b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellAssistanceInformation.h @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellAssistanceInformation_H_ +#define _CellAssistanceInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CellAssistanceInformation_PR { + CellAssistanceInformation_PR_NOTHING, /* No components present */ + CellAssistanceInformation_PR_limited_list, + CellAssistanceInformation_PR_full_list + /* Extensions may appear below */ + +} CellAssistanceInformation_PR; +typedef enum CellAssistanceInformation__full_list { + CellAssistanceInformation__full_list_allServedNRcells = 0 + /* + * Enumeration is extensible + */ +} e_CellAssistanceInformation__full_list; + +/* Forward declarations */ +struct Limited_list; + +/* CellAssistanceInformation */ +typedef struct CellAssistanceInformation { + CellAssistanceInformation_PR present; + union CellAssistanceInformation_u { + struct Limited_list *limited_list; + long full_list; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellAssistanceInformation_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_full_list_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_CellAssistanceInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellAssistanceInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedMDT.c new file mode 100644 index 0000000..0aa97dd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedMDT.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellBasedMDT.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellBasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT, cellIdListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIdListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct CellBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P112, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellBasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellBasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_specs_1 = { + sizeof(struct CellBasedMDT), + offsetof(struct CellBasedMDT, _asn_ctx), + asn_MAP_CellBasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellBasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedMDT = { + "CellBasedMDT", + "CellBasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedMDT_tags_1, + sizeof(asn_DEF_CellBasedMDT_tags_1) + /sizeof(asn_DEF_CellBasedMDT_tags_1[0]), /* 1 */ + asn_DEF_CellBasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_CellBasedMDT_tags_1) + /sizeof(asn_DEF_CellBasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_CellBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedMDT.h new file mode 100644 index 0000000..4365545 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedMDT.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellBasedMDT_H_ +#define _CellBasedMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CellIdListforMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellBasedMDT */ +typedef struct CellBasedMDT { + CellIdListforMDT_t cellIdListforMDT; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellBasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellBasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_CellBasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellBasedMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedQMC.c new file mode 100644 index 0000000..199dff6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedQMC.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellBasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellBasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC, cellIdListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellIdListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellIdListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct CellBasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P113, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellBasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellBasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_specs_1 = { + sizeof(struct CellBasedQMC), + offsetof(struct CellBasedQMC, _asn_ctx), + asn_MAP_CellBasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellBasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedQMC = { + "CellBasedQMC", + "CellBasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedQMC_tags_1, + sizeof(asn_DEF_CellBasedQMC_tags_1) + /sizeof(asn_DEF_CellBasedQMC_tags_1[0]), /* 1 */ + asn_DEF_CellBasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_CellBasedQMC_tags_1) + /sizeof(asn_DEF_CellBasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedQMC_1, + 2, /* Elements count */ + &asn_SPC_CellBasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedQMC.h new file mode 100644 index 0000000..623817c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellBasedQMC.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellBasedQMC_H_ +#define _CellBasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CellIdListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellBasedQMC */ +typedef struct CellBasedQMC { + CellIdListforQMC_t cellIdListforQMC; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellBasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellBasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_CellBasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellBasedQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellCapacityClassValue.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellCapacityClassValue.c new file mode 100644 index 0000000..2ca23c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellCapacityClassValue.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellCapacityClassValue.h" + +int +CellCapacityClassValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CellCapacityClassValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 100 } /* (1..100,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_CellCapacityClassValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellCapacityClassValue = { + "CellCapacityClassValue", + "CellCapacityClassValue", + &asn_OP_NativeInteger, + asn_DEF_CellCapacityClassValue_tags_1, + sizeof(asn_DEF_CellCapacityClassValue_tags_1) + /sizeof(asn_DEF_CellCapacityClassValue_tags_1[0]), /* 1 */ + asn_DEF_CellCapacityClassValue_tags_1, /* Same as above */ + sizeof(asn_DEF_CellCapacityClassValue_tags_1) + /sizeof(asn_DEF_CellCapacityClassValue_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellCapacityClassValue_constr_1, CellCapacityClassValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellCapacityClassValue.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellCapacityClassValue.h new file mode 100644 index 0000000..3595ee2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellCapacityClassValue.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellCapacityClassValue_H_ +#define _CellCapacityClassValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* CellCapacityClassValue */ +typedef long CellCapacityClassValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CellCapacityClassValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CellCapacityClassValue; +asn_struct_free_f CellCapacityClassValue_free; +asn_struct_print_f CellCapacityClassValue_print; +asn_constr_check_f CellCapacityClassValue_constraint; +ber_type_decoder_f CellCapacityClassValue_decode_ber; +der_type_encoder_f CellCapacityClassValue_encode_der; +xer_type_decoder_f CellCapacityClassValue_decode_xer; +xer_type_encoder_f CellCapacityClassValue_encode_xer; +per_type_decoder_f CellCapacityClassValue_decode_uper; +per_type_encoder_f CellCapacityClassValue_encode_uper; +per_type_decoder_f CellCapacityClassValue_decode_aper; +per_type_encoder_f CellCapacityClassValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellCapacityClassValue_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c new file mode 100644 index 0000000..2923dc9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellDeploymentStatusIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CellDeploymentStatusIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CellDeploymentStatusIndicator_value2enum_1[] = { + { 0, 23, "pre-change-notification" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CellDeploymentStatusIndicator_enum2value_1[] = { + 0 /* pre-change-notification(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CellDeploymentStatusIndicator_specs_1 = { + asn_MAP_CellDeploymentStatusIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CellDeploymentStatusIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CellDeploymentStatusIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellDeploymentStatusIndicator = { + "CellDeploymentStatusIndicator", + "CellDeploymentStatusIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_CellDeploymentStatusIndicator_tags_1, + sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1) + /sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1[0]), /* 1 */ + asn_DEF_CellDeploymentStatusIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1) + /sizeof(asn_DEF_CellDeploymentStatusIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellDeploymentStatusIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CellDeploymentStatusIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h new file mode 100644 index 0000000..b0a1f85 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellDeploymentStatusIndicator.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellDeploymentStatusIndicator_H_ +#define _CellDeploymentStatusIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CellDeploymentStatusIndicator { + CellDeploymentStatusIndicator_pre_change_notification = 0 + /* + * Enumeration is extensible + */ +} e_CellDeploymentStatusIndicator; + +/* CellDeploymentStatusIndicator */ +typedef long CellDeploymentStatusIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CellDeploymentStatusIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CellDeploymentStatusIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_CellDeploymentStatusIndicator_specs_1; +asn_struct_free_f CellDeploymentStatusIndicator_free; +asn_struct_print_f CellDeploymentStatusIndicator_print; +asn_constr_check_f CellDeploymentStatusIndicator_constraint; +ber_type_decoder_f CellDeploymentStatusIndicator_decode_ber; +der_type_encoder_f CellDeploymentStatusIndicator_encode_der; +xer_type_decoder_f CellDeploymentStatusIndicator_decode_xer; +xer_type_encoder_f CellDeploymentStatusIndicator_encode_xer; +per_type_decoder_f CellDeploymentStatusIndicator_decode_uper; +per_type_encoder_f CellDeploymentStatusIndicator_encode_uper; +per_type_decoder_f CellDeploymentStatusIndicator_decode_aper; +per_type_encoder_f CellDeploymentStatusIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellDeploymentStatusIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforMDT.c new file mode 100644 index 0000000..7a317cb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforMDT.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellIdListforMDT.h" + +#include "ECGI.h" +asn_per_constraints_t asn_PER_type_CellIdListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CellIdListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellIdListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CellIdListforMDT_specs_1 = { + sizeof(struct CellIdListforMDT), + offsetof(struct CellIdListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellIdListforMDT = { + "CellIdListforMDT", + "CellIdListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellIdListforMDT_tags_1, + sizeof(asn_DEF_CellIdListforMDT_tags_1) + /sizeof(asn_DEF_CellIdListforMDT_tags_1[0]), /* 1 */ + asn_DEF_CellIdListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_CellIdListforMDT_tags_1) + /sizeof(asn_DEF_CellIdListforMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellIdListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellIdListforMDT_1, + 1, /* Single element */ + &asn_SPC_CellIdListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforMDT.h new file mode 100644 index 0000000..4b05e8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforMDT.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellIdListforMDT_H_ +#define _CellIdListforMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* CellIdListforMDT */ +typedef struct CellIdListforMDT { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellIdListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellIdListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_CellIdListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_CellIdListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_CellIdListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellIdListforMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforQMC.c new file mode 100644 index 0000000..b5670eb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforQMC.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellIdListforQMC.h" + +#include "ECGI.h" +asn_per_constraints_t asn_PER_type_CellIdListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CellIdListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellIdListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CellIdListforQMC_specs_1 = { + sizeof(struct CellIdListforQMC), + offsetof(struct CellIdListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellIdListforQMC = { + "CellIdListforQMC", + "CellIdListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellIdListforQMC_tags_1, + sizeof(asn_DEF_CellIdListforQMC_tags_1) + /sizeof(asn_DEF_CellIdListforQMC_tags_1[0]), /* 1 */ + asn_DEF_CellIdListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_CellIdListforQMC_tags_1) + /sizeof(asn_DEF_CellIdListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellIdListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellIdListforQMC_1, + 1, /* Single element */ + &asn_SPC_CellIdListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforQMC.h new file mode 100644 index 0000000..a4f1314 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellIdListforQMC.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellIdListforQMC_H_ +#define _CellIdListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* CellIdListforQMC */ +typedef struct CellIdListforQMC { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellIdListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellIdListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_CellIdListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_CellIdListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_CellIdListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellIdListforQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-Item.c new file mode 100644 index 0000000..afba336 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-Item.c @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellInformation-Item.h" + +#include "UL-InterferenceOverloadIndication.h" +#include "UL-HighInterferenceIndicationInfo.h" +#include "RelativeNarrowbandTxPower.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CellInformation_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 4, offsetof(struct CellInformation_Item, ul_InterferenceOverloadIndication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_InterferenceOverloadIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-InterferenceOverloadIndication" + }, + { ATF_POINTER, 3, offsetof(struct CellInformation_Item, ul_HighInterferenceIndicationInfo), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_HighInterferenceIndicationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-HighInterferenceIndicationInfo" + }, + { ATF_POINTER, 2, offsetof(struct CellInformation_Item, relativeNarrowbandTxPower), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RelativeNarrowbandTxPower, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "relativeNarrowbandTxPower" + }, + { ATF_POINTER, 1, offsetof(struct CellInformation_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellInformation_Item_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CellInformation_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellInformation_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ul-InterferenceOverloadIndication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-HighInterferenceIndicationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* relativeNarrowbandTxPower */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_specs_1 = { + sizeof(struct CellInformation_Item), + offsetof(struct CellInformation_Item, _asn_ctx), + asn_MAP_CellInformation_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CellInformation_Item_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_Item = { + "CellInformation-Item", + "CellInformation-Item", + &asn_OP_SEQUENCE, + asn_DEF_CellInformation_Item_tags_1, + sizeof(asn_DEF_CellInformation_Item_tags_1) + /sizeof(asn_DEF_CellInformation_Item_tags_1[0]), /* 1 */ + asn_DEF_CellInformation_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CellInformation_Item_tags_1) + /sizeof(asn_DEF_CellInformation_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_Item_1, + 5, /* Elements count */ + &asn_SPC_CellInformation_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-Item.h new file mode 100644 index 0000000..2334d2c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-Item.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellInformation_Item_H_ +#define _CellInformation_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UL_InterferenceOverloadIndication; +struct UL_HighInterferenceIndicationInfo; +struct RelativeNarrowbandTxPower; +struct ProtocolExtensionContainer; + +/* CellInformation-Item */ +typedef struct CellInformation_Item { + ECGI_t cell_ID; + struct UL_InterferenceOverloadIndication *ul_InterferenceOverloadIndication; /* OPTIONAL */ + struct UL_HighInterferenceIndicationInfo *ul_HighInterferenceIndicationInfo; /* OPTIONAL */ + struct RelativeNarrowbandTxPower *relativeNarrowbandTxPower; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellInformation_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-List.c new file mode 100644 index 0000000..6b63e18 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellInformation-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CellInformation_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CellInformation_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellInformation_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CellInformation_List_specs_1 = { + sizeof(struct CellInformation_List), + offsetof(struct CellInformation_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_List = { + "CellInformation-List", + "CellInformation-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellInformation_List_tags_1, + sizeof(asn_DEF_CellInformation_List_tags_1) + /sizeof(asn_DEF_CellInformation_List_tags_1[0]), /* 1 */ + asn_DEF_CellInformation_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CellInformation_List_tags_1) + /sizeof(asn_DEF_CellInformation_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellInformation_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellInformation_List_1, + 1, /* Single element */ + &asn_SPC_CellInformation_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-List.h new file mode 100644 index 0000000..d1a9bb8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellInformation-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellInformation_List_H_ +#define _CellInformation_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CellInformation-List */ +typedef struct CellInformation_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellInformation_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-Item.c new file mode 100644 index 0000000..cd52a3a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-Item.c @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellMeasurementResult-Item.h" + +#include "HWLoadIndicator.h" +#include "S1TNLLoadIndicator.h" +#include "RadioResourceStatus.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 4, offsetof(struct CellMeasurementResult_Item, hWLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HWLoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "hWLoadIndicator" + }, + { ATF_POINTER, 3, offsetof(struct CellMeasurementResult_Item, s1TNLLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_S1TNLLoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1TNLLoadIndicator" + }, + { ATF_POINTER, 2, offsetof(struct CellMeasurementResult_Item, radioResourceStatus), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadioResourceStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioResourceStatus" + }, + { ATF_POINTER, 1, offsetof(struct CellMeasurementResult_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellMeasurementResult_Item_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellMeasurementResult_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* hWLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* s1TNLLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* radioResourceStatus */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_specs_1 = { + sizeof(struct CellMeasurementResult_Item), + offsetof(struct CellMeasurementResult_Item, _asn_ctx), + asn_MAP_CellMeasurementResult_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CellMeasurementResult_Item_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item = { + "CellMeasurementResult-Item", + "CellMeasurementResult-Item", + &asn_OP_SEQUENCE, + asn_DEF_CellMeasurementResult_Item_tags_1, + sizeof(asn_DEF_CellMeasurementResult_Item_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_Item_tags_1[0]), /* 1 */ + asn_DEF_CellMeasurementResult_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_Item_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_Item_1, + 5, /* Elements count */ + &asn_SPC_CellMeasurementResult_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-Item.h new file mode 100644 index 0000000..2bd6a19 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-Item.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellMeasurementResult_Item_H_ +#define _CellMeasurementResult_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HWLoadIndicator; +struct S1TNLLoadIndicator; +struct RadioResourceStatus; +struct ProtocolExtensionContainer; + +/* CellMeasurementResult-Item */ +typedef struct CellMeasurementResult_Item { + ECGI_t cell_ID; + struct HWLoadIndicator *hWLoadIndicator; /* OPTIONAL */ + struct S1TNLLoadIndicator *s1TNLLoadIndicator; /* OPTIONAL */ + struct RadioResourceStatus *radioResourceStatus; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellMeasurementResult_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-List.c new file mode 100644 index 0000000..1a81dcd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellMeasurementResult-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CellMeasurementResult_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CellMeasurementResult_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CellMeasurementResult_List_specs_1 = { + sizeof(struct CellMeasurementResult_List), + offsetof(struct CellMeasurementResult_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_List = { + "CellMeasurementResult-List", + "CellMeasurementResult-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellMeasurementResult_List_tags_1, + sizeof(asn_DEF_CellMeasurementResult_List_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_List_tags_1[0]), /* 1 */ + asn_DEF_CellMeasurementResult_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_List_tags_1) + /sizeof(asn_DEF_CellMeasurementResult_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellMeasurementResult_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellMeasurementResult_List_1, + 1, /* Single element */ + &asn_SPC_CellMeasurementResult_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-List.h new file mode 100644 index 0000000..29ae9f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellMeasurementResult-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellMeasurementResult_List_H_ +#define _CellMeasurementResult_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CellMeasurementResult-List */ +typedef struct CellMeasurementResult_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellMeasurementResult_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReplacingInfo.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReplacingInfo.c new file mode 100644 index 0000000..ce2e0c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReplacingInfo.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellReplacingInfo.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellReplacingInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo, replacingCellsList), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReplacingCellsList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "replacingCellsList" + }, + { ATF_POINTER, 1, offsetof(struct CellReplacingInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P114, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellReplacingInfo_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellReplacingInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellReplacingInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* replacingCellsList */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_specs_1 = { + sizeof(struct CellReplacingInfo), + offsetof(struct CellReplacingInfo, _asn_ctx), + asn_MAP_CellReplacingInfo_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellReplacingInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo = { + "CellReplacingInfo", + "CellReplacingInfo", + &asn_OP_SEQUENCE, + asn_DEF_CellReplacingInfo_tags_1, + sizeof(asn_DEF_CellReplacingInfo_tags_1) + /sizeof(asn_DEF_CellReplacingInfo_tags_1[0]), /* 1 */ + asn_DEF_CellReplacingInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_CellReplacingInfo_tags_1) + /sizeof(asn_DEF_CellReplacingInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellReplacingInfo_1, + 2, /* Elements count */ + &asn_SPC_CellReplacingInfo_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReplacingInfo.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReplacingInfo.h new file mode 100644 index 0000000..e25e102 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReplacingInfo.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellReplacingInfo_H_ +#define _CellReplacingInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ReplacingCellsList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellReplacingInfo */ +typedef struct CellReplacingInfo { + ReplacingCellsList_t replacingCellsList; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellReplacingInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_CellReplacingInfo_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellReplacingInfo_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReportingIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReportingIndicator.c new file mode 100644 index 0000000..5e3d6c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReportingIndicator.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellReportingIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CellReportingIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CellReportingIndicator_value2enum_1[] = { + { 0, 12, "stop-request" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CellReportingIndicator_enum2value_1[] = { + 0 /* stop-request(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CellReportingIndicator_specs_1 = { + asn_MAP_CellReportingIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CellReportingIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CellReportingIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CellReportingIndicator = { + "CellReportingIndicator", + "CellReportingIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_CellReportingIndicator_tags_1, + sizeof(asn_DEF_CellReportingIndicator_tags_1) + /sizeof(asn_DEF_CellReportingIndicator_tags_1[0]), /* 1 */ + asn_DEF_CellReportingIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_CellReportingIndicator_tags_1) + /sizeof(asn_DEF_CellReportingIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellReportingIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CellReportingIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReportingIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReportingIndicator.h new file mode 100644 index 0000000..0ff4295 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellReportingIndicator.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellReportingIndicator_H_ +#define _CellReportingIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CellReportingIndicator { + CellReportingIndicator_stop_request = 0 + /* + * Enumeration is extensible + */ +} e_CellReportingIndicator; + +/* CellReportingIndicator */ +typedef long CellReportingIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CellReportingIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CellReportingIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_CellReportingIndicator_specs_1; +asn_struct_free_f CellReportingIndicator_free; +asn_struct_print_f CellReportingIndicator_print; +asn_constr_check_f CellReportingIndicator_constraint; +ber_type_decoder_f CellReportingIndicator_decode_ber; +der_type_encoder_f CellReportingIndicator_encode_der; +xer_type_decoder_f CellReportingIndicator_decode_xer; +xer_type_encoder_f CellReportingIndicator_encode_xer; +per_type_decoder_f CellReportingIndicator_decode_uper; +per_type_encoder_f CellReportingIndicator_encode_uper; +per_type_decoder_f CellReportingIndicator_decode_aper; +per_type_encoder_f CellReportingIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellReportingIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-Item.c new file mode 100644 index 0000000..6911d62 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-Item.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellToReport-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CellToReport_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 1, offsetof(struct CellToReport_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellToReport_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellToReport_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellToReport_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_specs_1 = { + sizeof(struct CellToReport_Item), + offsetof(struct CellToReport_Item, _asn_ctx), + asn_MAP_CellToReport_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellToReport_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_Item = { + "CellToReport-Item", + "CellToReport-Item", + &asn_OP_SEQUENCE, + asn_DEF_CellToReport_Item_tags_1, + sizeof(asn_DEF_CellToReport_Item_tags_1) + /sizeof(asn_DEF_CellToReport_Item_tags_1[0]), /* 1 */ + asn_DEF_CellToReport_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CellToReport_Item_tags_1) + /sizeof(asn_DEF_CellToReport_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_Item_1, + 2, /* Elements count */ + &asn_SPC_CellToReport_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-Item.h new file mode 100644 index 0000000..6c4abc5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-Item.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellToReport_Item_H_ +#define _CellToReport_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellToReport-Item */ +typedef struct CellToReport_Item { + ECGI_t cell_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellToReport_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-List.c new file mode 100644 index 0000000..ecb1ad8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellToReport-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CellToReport_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CellToReport_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellToReport_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CellToReport_List_specs_1 = { + sizeof(struct CellToReport_List), + offsetof(struct CellToReport_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_List = { + "CellToReport-List", + "CellToReport-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CellToReport_List_tags_1, + sizeof(asn_DEF_CellToReport_List_tags_1) + /sizeof(asn_DEF_CellToReport_List_tags_1[0]), /* 1 */ + asn_DEF_CellToReport_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CellToReport_List_tags_1) + /sizeof(asn_DEF_CellToReport_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CellToReport_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CellToReport_List_1, + 1, /* Single element */ + &asn_SPC_CellToReport_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-List.h new file mode 100644 index 0000000..0d3ca62 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellToReport-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellToReport_List_H_ +#define _CellToReport_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CellToReport-List */ +typedef struct CellToReport_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellToReport_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellType.c new file mode 100644 index 0000000..5542833 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellType.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CellType.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CellType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellType, cell_Size), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Cell_Size, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-Size" + }, + { ATF_POINTER, 1, offsetof(struct CellType, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P115, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CellType_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_CellType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-Size */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellType_specs_1 = { + sizeof(struct CellType), + offsetof(struct CellType, _asn_ctx), + asn_MAP_CellType_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_CellType_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellType = { + "CellType", + "CellType", + &asn_OP_SEQUENCE, + asn_DEF_CellType_tags_1, + sizeof(asn_DEF_CellType_tags_1) + /sizeof(asn_DEF_CellType_tags_1[0]), /* 1 */ + asn_DEF_CellType_tags_1, /* Same as above */ + sizeof(asn_DEF_CellType_tags_1) + /sizeof(asn_DEF_CellType_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellType_1, + 2, /* Elements count */ + &asn_SPC_CellType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellType.h new file mode 100644 index 0000000..6854c30 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CellType.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CellType_H_ +#define _CellType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Cell-Size.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CellType */ +typedef struct CellType { + Cell_Size_t cell_Size; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CellType; +extern asn_SEQUENCE_specifics_t asn_SPC_CellType_specs_1; +extern asn_TYPE_member_t asn_MBR_CellType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CellType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSet.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSet.c new file mode 100644 index 0000000..e95590e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSet.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPHypothesisSet.h" + +#include "CoMPHypothesisSetItem.h" +asn_per_constraints_t asn_PER_type_CoMPHypothesisSet_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoMPHypothesisSet_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPHypothesisSetItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPHypothesisSet_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoMPHypothesisSet_specs_1 = { + sizeof(struct CoMPHypothesisSet), + offsetof(struct CoMPHypothesisSet, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSet = { + "CoMPHypothesisSet", + "CoMPHypothesisSet", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoMPHypothesisSet_tags_1, + sizeof(asn_DEF_CoMPHypothesisSet_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSet_tags_1[0]), /* 1 */ + asn_DEF_CoMPHypothesisSet_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPHypothesisSet_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSet_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoMPHypothesisSet_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoMPHypothesisSet_1, + 1, /* Single element */ + &asn_SPC_CoMPHypothesisSet_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSet.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSet.h new file mode 100644 index 0000000..49f0fe5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSet.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPHypothesisSet_H_ +#define _CoMPHypothesisSet_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CoMPHypothesisSetItem; + +/* CoMPHypothesisSet */ +typedef struct CoMPHypothesisSet { + A_SEQUENCE_OF(struct CoMPHypothesisSetItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPHypothesisSet_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSet; +extern asn_SET_OF_specifics_t asn_SPC_CoMPHypothesisSet_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSet_1[1]; +extern asn_per_constraints_t asn_PER_type_CoMPHypothesisSet_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPHypothesisSet_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c new file mode 100644 index 0000000..38f9414 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSetItem.c @@ -0,0 +1,132 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPHypothesisSetItem.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_coMPHypothesis_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_coMPHypothesis_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem, coMPCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem, coMPHypothesis), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_coMPHypothesis_constr_3, memb_coMPHypothesis_constraint_1 }, + 0, 0, /* No default value */ + "coMPHypothesis" + }, + { ATF_POINTER, 1, offsetof(struct CoMPHypothesisSetItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P117, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CoMPHypothesisSetItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CoMPHypothesisSetItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPHypothesisSetItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coMPCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* coMPHypothesis */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_specs_1 = { + sizeof(struct CoMPHypothesisSetItem), + offsetof(struct CoMPHypothesisSetItem, _asn_ctx), + asn_MAP_CoMPHypothesisSetItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CoMPHypothesisSetItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem = { + "CoMPHypothesisSetItem", + "CoMPHypothesisSetItem", + &asn_OP_SEQUENCE, + asn_DEF_CoMPHypothesisSetItem_tags_1, + sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1[0]), /* 1 */ + asn_DEF_CoMPHypothesisSetItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1) + /sizeof(asn_DEF_CoMPHypothesisSetItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPHypothesisSetItem_1, + 3, /* Elements count */ + &asn_SPC_CoMPHypothesisSetItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h new file mode 100644 index 0000000..b984558 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPHypothesisSetItem.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPHypothesisSetItem_H_ +#define _CoMPHypothesisSetItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CoMPHypothesisSetItem */ +typedef struct CoMPHypothesisSetItem { + ECGI_t coMPCellID; + BIT_STRING_t coMPHypothesis; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPHypothesisSetItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPHypothesisSetItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformation.c new file mode 100644 index 0000000..1695dd1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformation.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CoMPInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation, coMPInformationItem), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoMPInformationItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPInformationItem" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation, coMPInformationStartTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoMPInformationStartTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPInformationStartTime" + }, + { ATF_POINTER, 1, offsetof(struct CoMPInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P118, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CoMPInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CoMPInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coMPInformationItem */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* coMPInformationStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_specs_1 = { + sizeof(struct CoMPInformation), + offsetof(struct CoMPInformation, _asn_ctx), + asn_MAP_CoMPInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CoMPInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformation = { + "CoMPInformation", + "CoMPInformation", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformation_tags_1, + sizeof(asn_DEF_CoMPInformation_tags_1) + /sizeof(asn_DEF_CoMPInformation_tags_1[0]), /* 1 */ + asn_DEF_CoMPInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPInformation_tags_1) + /sizeof(asn_DEF_CoMPInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformation_1, + 3, /* Elements count */ + &asn_SPC_CoMPInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformation.h new file mode 100644 index 0000000..1654dc2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformation.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPInformation_H_ +#define _CoMPInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CoMPInformationItem.h" +#include "CoMPInformationStartTime.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CoMPInformation */ +typedef struct CoMPInformation { + CoMPInformationItem_t coMPInformationItem; + CoMPInformationStartTime_t coMPInformationStartTime; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationItem.c new file mode 100644 index 0000000..00ce137 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationItem.c @@ -0,0 +1,137 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPInformationItem.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_CoMPInformationItem_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem__Member, coMPHypothesisSet), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CoMPHypothesisSet, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "coMPHypothesisSet" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem__Member, benefitMetric), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BenefitMetric, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "benefitMetric" + }, + { ATF_POINTER, 1, offsetof(struct CoMPInformationItem__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P119, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* coMPHypothesisSet */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* benefitMetric */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CoMPInformationItem__Member), + offsetof(struct CoMPInformationItem__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationItem_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoMPInformationItem_specs_1 = { + sizeof(struct CoMPInformationItem), + offsetof(struct CoMPInformationItem, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem = { + "CoMPInformationItem", + "CoMPInformationItem", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoMPInformationItem_tags_1, + sizeof(asn_DEF_CoMPInformationItem_tags_1) + /sizeof(asn_DEF_CoMPInformationItem_tags_1[0]), /* 1 */ + asn_DEF_CoMPInformationItem_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPInformationItem_tags_1) + /sizeof(asn_DEF_CoMPInformationItem_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoMPInformationItem_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoMPInformationItem_1, + 1, /* Single element */ + &asn_SPC_CoMPInformationItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationItem.h new file mode 100644 index 0000000..3e0fbe6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationItem.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPInformationItem_H_ +#define _CoMPInformationItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "CoMPHypothesisSet.h" +#include "BenefitMetric.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CoMPInformationItem__Member { + CoMPHypothesisSet_t coMPHypothesisSet; + BenefitMetric_t benefitMetric; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationItem__Member; + +/* CoMPInformationItem */ +typedef struct CoMPInformationItem { + A_SEQUENCE_OF(CoMPInformationItem__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem; +extern asn_SET_OF_specifics_t asn_SPC_CoMPInformationItem_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPInformationItem_1[1]; +extern asn_per_constraints_t asn_PER_type_CoMPInformationItem_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPInformationItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationStartTime.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationStartTime.c new file mode 100644 index 0000000..43d8312 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationStartTime.c @@ -0,0 +1,197 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoMPInformationStartTime.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_startSFN_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_startSubframeNumber_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 9)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_startSFN_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 0, 1023 } /* (0..1023,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_startSubframeNumber_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_CoMPInformationStartTime_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (SIZE(0..1)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime__Member, startSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSFN_constr_3, memb_startSFN_constraint_2 }, + 0, 0, /* No default value */ + "startSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime__Member, startSubframeNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSubframeNumber_constr_4, memb_startSubframeNumber_constraint_2 }, + 0, 0, /* No default value */ + "startSubframeNumber" + }, + { ATF_POINTER, 1, offsetof(struct CoMPInformationStartTime__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P120, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startSubframeNumber */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CoMPInformationStartTime__Member), + offsetof(struct CoMPInformationStartTime__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationStartTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoMPInformationStartTime_specs_1 = { + sizeof(struct CoMPInformationStartTime), + offsetof(struct CoMPInformationStartTime, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime = { + "CoMPInformationStartTime", + "CoMPInformationStartTime", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoMPInformationStartTime_tags_1, + sizeof(asn_DEF_CoMPInformationStartTime_tags_1) + /sizeof(asn_DEF_CoMPInformationStartTime_tags_1[0]), /* 1 */ + asn_DEF_CoMPInformationStartTime_tags_1, /* Same as above */ + sizeof(asn_DEF_CoMPInformationStartTime_tags_1) + /sizeof(asn_DEF_CoMPInformationStartTime_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoMPInformationStartTime_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoMPInformationStartTime_1, + 1, /* Single element */ + &asn_SPC_CoMPInformationStartTime_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationStartTime.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationStartTime.h new file mode 100644 index 0000000..1f41b50 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoMPInformationStartTime.h @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoMPInformationStartTime_H_ +#define _CoMPInformationStartTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CoMPInformationStartTime__Member { + long startSFN; + long startSubframeNumber; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationStartTime__Member; + +/* CoMPInformationStartTime */ +typedef struct CoMPInformationStartTime { + A_SEQUENCE_OF(CoMPInformationStartTime__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationStartTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime; +extern asn_SET_OF_specifics_t asn_SPC_CoMPInformationStartTime_specs_1; +extern asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_1[1]; +extern asn_per_constraints_t asn_PER_type_CoMPInformationStartTime_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoMPInformationStartTime_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c new file mode 100644 index 0000000..e95f094 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompleteFailureCauseInformation-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item, measurementFailureCause_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementFailureCause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementFailureCause-List" + }, + { ATF_POINTER, 1, offsetof(struct CompleteFailureCauseInformation_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CompleteFailureCauseInformation_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompleteFailureCauseInformation_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measurementFailureCause-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_specs_1 = { + sizeof(struct CompleteFailureCauseInformation_Item), + offsetof(struct CompleteFailureCauseInformation_Item, _asn_ctx), + asn_MAP_CompleteFailureCauseInformation_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CompleteFailureCauseInformation_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item = { + "CompleteFailureCauseInformation-Item", + "CompleteFailureCauseInformation-Item", + &asn_OP_SEQUENCE, + asn_DEF_CompleteFailureCauseInformation_Item_tags_1, + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_Item_1, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h new file mode 100644 index 0000000..af20ea2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompleteFailureCauseInformation_Item_H_ +#define _CompleteFailureCauseInformation_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "MeasurementFailureCause-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CompleteFailureCauseInformation-Item */ +typedef struct CompleteFailureCauseInformation_Item { + ECGI_t cell_ID; + MeasurementFailureCause_List_t measurementFailureCause_List; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompleteFailureCauseInformation_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c new file mode 100644 index 0000000..7359bbe --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompleteFailureCauseInformation-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_CompleteFailureCauseInformation_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_CompleteFailureCauseInformation_List_specs_1 = { + sizeof(struct CompleteFailureCauseInformation_List), + offsetof(struct CompleteFailureCauseInformation_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_List = { + "CompleteFailureCauseInformation-List", + "CompleteFailureCauseInformation-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CompleteFailureCauseInformation_List_tags_1, + sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1) + /sizeof(asn_DEF_CompleteFailureCauseInformation_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CompleteFailureCauseInformation_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CompleteFailureCauseInformation_List_1, + 1, /* Single element */ + &asn_SPC_CompleteFailureCauseInformation_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h new file mode 100644 index 0000000..23cbea6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompleteFailureCauseInformation-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompleteFailureCauseInformation_List_H_ +#define _CompleteFailureCauseInformation_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* CompleteFailureCauseInformation-List */ +typedef struct CompleteFailureCauseInformation_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompleteFailureCauseInformation_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacity.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacity.c new file mode 100644 index 0000000..d965938 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacity.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompositeAvailableCapacity.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_1[] = { + { ATF_POINTER, 1, offsetof(struct CompositeAvailableCapacity, cellCapacityClassValue), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellCapacityClassValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellCapacityClassValue" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity, capacityValue), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CapacityValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "capacityValue" + }, + { ATF_POINTER, 1, offsetof(struct CompositeAvailableCapacity, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P121, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CompositeAvailableCapacity_oms_1[] = { 0, 2 }; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacity_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellCapacityClassValue */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* capacityValue */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_specs_1 = { + sizeof(struct CompositeAvailableCapacity), + offsetof(struct CompositeAvailableCapacity, _asn_ctx), + asn_MAP_CompositeAvailableCapacity_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CompositeAvailableCapacity_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity = { + "CompositeAvailableCapacity", + "CompositeAvailableCapacity", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacity_tags_1, + sizeof(asn_DEF_CompositeAvailableCapacity_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacity_tags_1[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacity_tags_1, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacity_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacity_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacity_1, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacity_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacity.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacity.h new file mode 100644 index 0000000..4b09e00 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacity.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompositeAvailableCapacity_H_ +#define _CompositeAvailableCapacity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CellCapacityClassValue.h" +#include "CapacityValue.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CompositeAvailableCapacity */ +typedef struct CompositeAvailableCapacity { + CellCapacityClassValue_t *cellCapacityClassValue; /* OPTIONAL */ + CapacityValue_t capacityValue; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompositeAvailableCapacity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_specs_1; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompositeAvailableCapacity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c new file mode 100644 index 0000000..4288985 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CompositeAvailableCapacityGroup.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup, dL_CompositeAvailableCapacity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CompositeAvailableCapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-CompositeAvailableCapacity" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup, uL_CompositeAvailableCapacity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CompositeAvailableCapacity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-CompositeAvailableCapacity" + }, + { ATF_POINTER, 1, offsetof(struct CompositeAvailableCapacityGroup, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P122, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CompositeAvailableCapacityGroup_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacityGroup_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacityGroup_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-CompositeAvailableCapacity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-CompositeAvailableCapacity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_specs_1 = { + sizeof(struct CompositeAvailableCapacityGroup), + offsetof(struct CompositeAvailableCapacityGroup, _asn_ctx), + asn_MAP_CompositeAvailableCapacityGroup_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_CompositeAvailableCapacityGroup_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup = { + "CompositeAvailableCapacityGroup", + "CompositeAvailableCapacityGroup", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacityGroup_tags_1, + sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacityGroup_tags_1, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacityGroup_1, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacityGroup_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h new file mode 100644 index 0000000..8d05282 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CompositeAvailableCapacityGroup.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CompositeAvailableCapacityGroup_H_ +#define _CompositeAvailableCapacityGroup_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CompositeAvailableCapacity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* CompositeAvailableCapacityGroup */ +typedef struct CompositeAvailableCapacityGroup { + CompositeAvailableCapacity_t dL_CompositeAvailableCapacity; + CompositeAvailableCapacity_t uL_CompositeAvailableCapacity; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompositeAvailableCapacityGroup_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_specs_1; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CompositeAvailableCapacityGroup_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Correlation-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Correlation-ID.c new file mode 100644 index 0000000..b6698c3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Correlation-ID.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Correlation-ID.h" + +int +Correlation_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Correlation_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Correlation_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Correlation_ID = { + "Correlation-ID", + "Correlation-ID", + &asn_OP_OCTET_STRING, + asn_DEF_Correlation_ID_tags_1, + sizeof(asn_DEF_Correlation_ID_tags_1) + /sizeof(asn_DEF_Correlation_ID_tags_1[0]), /* 1 */ + asn_DEF_Correlation_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Correlation_ID_tags_1) + /sizeof(asn_DEF_Correlation_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Correlation_ID_constr_1, Correlation_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Correlation-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Correlation-ID.h new file mode 100644 index 0000000..f4f6b9d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Correlation-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Correlation_ID_H_ +#define _Correlation_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Correlation-ID */ +typedef OCTET_STRING_t Correlation_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Correlation_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Correlation_ID; +asn_struct_free_f Correlation_ID_free; +asn_struct_print_f Correlation_ID_print; +asn_constr_check_f Correlation_ID_constraint; +ber_type_decoder_f Correlation_ID_decode_ber; +der_type_encoder_f Correlation_ID_encode_der; +xer_type_decoder_f Correlation_ID_decode_xer; +xer_type_encoder_f Correlation_ID_encode_xer; +per_type_decoder_f Correlation_ID_decode_uper; +per_type_encoder_f Correlation_ID_encode_uper; +per_type_decoder_f Correlation_ID_decode_aper; +per_type_encoder_f Correlation_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Correlation_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModification-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModification-Item.c new file mode 100644 index 0000000..ac63094 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModification-Item.c @@ -0,0 +1,136 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoverageModification-Item.h" + +#include "CellReplacingInfo.h" +static int +memb_coverageState_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_coverageState_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoverageModification_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoverageModification_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoverageModification_Item, coverageState), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_coverageState_constr_3, memb_coverageState_constraint_1 }, + 0, 0, /* No default value */ + "coverageState" + }, + { ATF_POINTER, 2, offsetof(struct CoverageModification_Item, cellDeploymentStatusIndicator), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellDeploymentStatusIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellDeploymentStatusIndicator" + }, + { ATF_POINTER, 1, offsetof(struct CoverageModification_Item, cellReplacingInfo), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellReplacingInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellReplacingInfo" + }, +}; +static const int asn_MAP_CoverageModification_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_CoverageModification_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoverageModification_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* coverageState */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellDeploymentStatusIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* cellReplacingInfo */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoverageModification_Item_specs_1 = { + sizeof(struct CoverageModification_Item), + offsetof(struct CoverageModification_Item, _asn_ctx), + asn_MAP_CoverageModification_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_CoverageModification_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoverageModification_Item = { + "CoverageModification-Item", + "CoverageModification-Item", + &asn_OP_SEQUENCE, + asn_DEF_CoverageModification_Item_tags_1, + sizeof(asn_DEF_CoverageModification_Item_tags_1) + /sizeof(asn_DEF_CoverageModification_Item_tags_1[0]), /* 1 */ + asn_DEF_CoverageModification_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CoverageModification_Item_tags_1) + /sizeof(asn_DEF_CoverageModification_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoverageModification_Item_1, + 4, /* Elements count */ + &asn_SPC_CoverageModification_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModification-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModification-Item.h new file mode 100644 index 0000000..5c23115 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModification-Item.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoverageModification_Item_H_ +#define _CoverageModification_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "NativeInteger.h" +#include "CellDeploymentStatusIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CellReplacingInfo; + +/* CoverageModification-Item */ +typedef struct CoverageModification_Item { + ECGI_t eCGI; + long coverageState; + CellDeploymentStatusIndicator_t *cellDeploymentStatusIndicator; /* OPTIONAL */ + struct CellReplacingInfo *cellReplacingInfo; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoverageModification_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoverageModification_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_CoverageModification_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_CoverageModification_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoverageModification_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModificationList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModificationList.c new file mode 100644 index 0000000..aa2c234 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModificationList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CoverageModificationList.h" + +#include "CoverageModification-Item.h" +asn_per_constraints_t asn_PER_type_CoverageModificationList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CoverageModificationList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoverageModification_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoverageModificationList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CoverageModificationList_specs_1 = { + sizeof(struct CoverageModificationList), + offsetof(struct CoverageModificationList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CoverageModificationList = { + "CoverageModificationList", + "CoverageModificationList", + &asn_OP_SEQUENCE_OF, + asn_DEF_CoverageModificationList_tags_1, + sizeof(asn_DEF_CoverageModificationList_tags_1) + /sizeof(asn_DEF_CoverageModificationList_tags_1[0]), /* 1 */ + asn_DEF_CoverageModificationList_tags_1, /* Same as above */ + sizeof(asn_DEF_CoverageModificationList_tags_1) + /sizeof(asn_DEF_CoverageModificationList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CoverageModificationList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CoverageModificationList_1, + 1, /* Single element */ + &asn_SPC_CoverageModificationList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModificationList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModificationList.h new file mode 100644 index 0000000..7e82084 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CoverageModificationList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CoverageModificationList_H_ +#define _CoverageModificationList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CoverageModification_Item; + +/* CoverageModificationList */ +typedef struct CoverageModificationList { + A_SEQUENCE_OF(struct CoverageModification_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoverageModificationList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CoverageModificationList; +extern asn_SET_OF_specifics_t asn_SPC_CoverageModificationList_specs_1; +extern asn_TYPE_member_t asn_MBR_CoverageModificationList_1[1]; +extern asn_per_constraints_t asn_PER_type_CoverageModificationList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CoverageModificationList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Criticality.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Criticality.c new file mode 100644 index 0000000..13513de --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Criticality.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Criticality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { + asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Criticality = { + "Criticality", + "Criticality", + &asn_OP_NativeEnumerated, + asn_DEF_Criticality_tags_1, + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + asn_DEF_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Criticality.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Criticality.h new file mode 100644 index 0000000..663f195 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Criticality.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Criticality_H_ +#define _Criticality_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Criticality { + Criticality_reject = 0, + Criticality_ignore = 1, + Criticality_notify = 2 +} e_Criticality; + +/* Criticality */ +typedef long Criticality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Criticality; +extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Criticality_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000..522f219 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.c @@ -0,0 +1,147 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics-IE-List.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List__Member, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List__Member, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List__Member, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfError, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfError" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics_IE_List__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P127, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* typeOfError */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct CriticalityDiagnostics_IE_List__Member), + offsetof(struct CriticalityDiagnostics_IE_List__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_List), + offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000..ff439a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics-IE-List.h @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_IE_List_H_ +#define _CriticalityDiagnostics_IE_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "Criticality.h" +#include "ProtocolIE-ID.h" +#include "TypeOfError.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct CriticalityDiagnostics_IE_List__Member { + Criticality_t iECriticality; + ProtocolIE_ID_t iE_ID; + TypeOfError_t typeOfError; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List__Member; + +/* CriticalityDiagnostics-IE-List */ +typedef struct CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(CriticalityDiagnostics_IE_List__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; +extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; +extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics.c new file mode 100644 index 0000000..c085e68 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics.c @@ -0,0 +1,117 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CriticalityDiagnostics.h" + +#include "CriticalityDiagnostics-IE-List.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TriggeringMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CriticalityDiagnostics_IE_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iEsCriticalityDiagnostics" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P126, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* iEsCriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { + sizeof(struct CriticalityDiagnostics), + offsetof(struct CriticalityDiagnostics, _asn_ctx), + asn_MAP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics.h new file mode 100644 index 0000000..2df952f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CriticalityDiagnostics.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CriticalityDiagnostics_H_ +#define _CriticalityDiagnostics_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TriggeringMessage.h" +#include "Criticality.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CriticalityDiagnostics_IE_List; +struct ProtocolExtensionContainer; + +/* CriticalityDiagnostics */ +typedef struct CriticalityDiagnostics { + ProcedureCode_t *procedureCode; /* OPTIONAL */ + TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ + Criticality_t *procedureCriticality; /* OPTIONAL */ + struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixDL.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixDL.c new file mode 100644 index 0000000..3baf719 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixDL.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CyclicPrefixDL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CyclicPrefixDL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CyclicPrefixDL_value2enum_1[] = { + { 0, 6, "normal" }, + { 1, 8, "extended" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CyclicPrefixDL_enum2value_1[] = { + 1, /* extended(1) */ + 0 /* normal(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixDL_specs_1 = { + asn_MAP_CyclicPrefixDL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CyclicPrefixDL_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CyclicPrefixDL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CyclicPrefixDL = { + "CyclicPrefixDL", + "CyclicPrefixDL", + &asn_OP_NativeEnumerated, + asn_DEF_CyclicPrefixDL_tags_1, + sizeof(asn_DEF_CyclicPrefixDL_tags_1) + /sizeof(asn_DEF_CyclicPrefixDL_tags_1[0]), /* 1 */ + asn_DEF_CyclicPrefixDL_tags_1, /* Same as above */ + sizeof(asn_DEF_CyclicPrefixDL_tags_1) + /sizeof(asn_DEF_CyclicPrefixDL_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CyclicPrefixDL_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CyclicPrefixDL_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixDL.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixDL.h new file mode 100644 index 0000000..9a932e4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixDL.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CyclicPrefixDL_H_ +#define _CyclicPrefixDL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CyclicPrefixDL { + CyclicPrefixDL_normal = 0, + CyclicPrefixDL_extended = 1 + /* + * Enumeration is extensible + */ +} e_CyclicPrefixDL; + +/* CyclicPrefixDL */ +typedef long CyclicPrefixDL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CyclicPrefixDL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CyclicPrefixDL; +extern const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixDL_specs_1; +asn_struct_free_f CyclicPrefixDL_free; +asn_struct_print_f CyclicPrefixDL_print; +asn_constr_check_f CyclicPrefixDL_constraint; +ber_type_decoder_f CyclicPrefixDL_decode_ber; +der_type_encoder_f CyclicPrefixDL_encode_der; +xer_type_decoder_f CyclicPrefixDL_decode_xer; +xer_type_encoder_f CyclicPrefixDL_encode_xer; +per_type_decoder_f CyclicPrefixDL_decode_uper; +per_type_encoder_f CyclicPrefixDL_encode_uper; +per_type_decoder_f CyclicPrefixDL_decode_aper; +per_type_encoder_f CyclicPrefixDL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CyclicPrefixDL_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixUL.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixUL.c new file mode 100644 index 0000000..a51ae53 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixUL.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "CyclicPrefixUL.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CyclicPrefixUL_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CyclicPrefixUL_value2enum_1[] = { + { 0, 6, "normal" }, + { 1, 8, "extended" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CyclicPrefixUL_enum2value_1[] = { + 1, /* extended(1) */ + 0 /* normal(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixUL_specs_1 = { + asn_MAP_CyclicPrefixUL_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CyclicPrefixUL_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CyclicPrefixUL_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CyclicPrefixUL = { + "CyclicPrefixUL", + "CyclicPrefixUL", + &asn_OP_NativeEnumerated, + asn_DEF_CyclicPrefixUL_tags_1, + sizeof(asn_DEF_CyclicPrefixUL_tags_1) + /sizeof(asn_DEF_CyclicPrefixUL_tags_1[0]), /* 1 */ + asn_DEF_CyclicPrefixUL_tags_1, /* Same as above */ + sizeof(asn_DEF_CyclicPrefixUL_tags_1) + /sizeof(asn_DEF_CyclicPrefixUL_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CyclicPrefixUL_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CyclicPrefixUL_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixUL.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixUL.h new file mode 100644 index 0000000..d7aaf4e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/CyclicPrefixUL.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _CyclicPrefixUL_H_ +#define _CyclicPrefixUL_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CyclicPrefixUL { + CyclicPrefixUL_normal = 0, + CyclicPrefixUL_extended = 1 + /* + * Enumeration is extensible + */ +} e_CyclicPrefixUL; + +/* CyclicPrefixUL */ +typedef long CyclicPrefixUL_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CyclicPrefixUL_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CyclicPrefixUL; +extern const asn_INTEGER_specifics_t asn_SPC_CyclicPrefixUL_specs_1; +asn_struct_free_f CyclicPrefixUL_free; +asn_struct_print_f CyclicPrefixUL_print; +asn_constr_check_f CyclicPrefixUL_constraint; +ber_type_decoder_f CyclicPrefixUL_decode_ber; +der_type_encoder_f CyclicPrefixUL_encode_der; +xer_type_decoder_f CyclicPrefixUL_decode_xer; +xer_type_encoder_f CyclicPrefixUL_encode_xer; +per_type_decoder_f CyclicPrefixUL_decode_uper; +per_type_encoder_f CyclicPrefixUL_encode_uper; +per_type_decoder_f CyclicPrefixUL_decode_aper; +per_type_encoder_f CyclicPrefixUL_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CyclicPrefixUL_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-ABS-status.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-ABS-status.c new file mode 100644 index 0000000..d23bb32 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-ABS-status.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-ABS-status.h" + +int +DL_ABS_status_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_ABS_status_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_ABS_status_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_ABS_status = { + "DL-ABS-status", + "DL-ABS-status", + &asn_OP_NativeInteger, + asn_DEF_DL_ABS_status_tags_1, + sizeof(asn_DEF_DL_ABS_status_tags_1) + /sizeof(asn_DEF_DL_ABS_status_tags_1[0]), /* 1 */ + asn_DEF_DL_ABS_status_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_ABS_status_tags_1) + /sizeof(asn_DEF_DL_ABS_status_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_ABS_status_constr_1, DL_ABS_status_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-ABS-status.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-ABS-status.h new file mode 100644 index 0000000..145d63c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-ABS-status.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_ABS_status_H_ +#define _DL_ABS_status_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-ABS-status */ +typedef long DL_ABS_status_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_ABS_status_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_ABS_status; +asn_struct_free_f DL_ABS_status_free; +asn_struct_print_f DL_ABS_status_print; +asn_constr_check_f DL_ABS_status_constraint; +ber_type_decoder_f DL_ABS_status_decode_ber; +der_type_encoder_f DL_ABS_status_encode_der; +xer_type_decoder_f DL_ABS_status_decode_xer; +xer_type_encoder_f DL_ABS_status_encode_xer; +per_type_decoder_f DL_ABS_status_decode_uper; +per_type_encoder_f DL_ABS_status_encode_uper; +per_type_decoder_f DL_ABS_status_decode_aper; +per_type_encoder_f DL_ABS_status_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_ABS_status_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Forwarding.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Forwarding.c new file mode 100644 index 0000000..c283654 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Forwarding.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-Forwarding.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_Forwarding_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_DL_Forwarding_value2enum_1[] = { + { 0, 21, "dL-forwardingProposed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_DL_Forwarding_enum2value_1[] = { + 0 /* dL-forwardingProposed(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_DL_Forwarding_specs_1 = { + asn_MAP_DL_Forwarding_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DL_Forwarding_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DL_Forwarding_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_Forwarding = { + "DL-Forwarding", + "DL-Forwarding", + &asn_OP_NativeEnumerated, + asn_DEF_DL_Forwarding_tags_1, + sizeof(asn_DEF_DL_Forwarding_tags_1) + /sizeof(asn_DEF_DL_Forwarding_tags_1[0]), /* 1 */ + asn_DEF_DL_Forwarding_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_Forwarding_tags_1) + /sizeof(asn_DEF_DL_Forwarding_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_Forwarding_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DL_Forwarding_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Forwarding.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Forwarding.h new file mode 100644 index 0000000..17dda9f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Forwarding.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_Forwarding_H_ +#define _DL_Forwarding_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DL_Forwarding { + DL_Forwarding_dL_forwardingProposed = 0 + /* + * Enumeration is extensible + */ +} e_DL_Forwarding; + +/* DL-Forwarding */ +typedef long DL_Forwarding_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_Forwarding_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_Forwarding; +extern const asn_INTEGER_specifics_t asn_SPC_DL_Forwarding_specs_1; +asn_struct_free_f DL_Forwarding_free; +asn_struct_print_f DL_Forwarding_print; +asn_constr_check_f DL_Forwarding_constraint; +ber_type_decoder_f DL_Forwarding_decode_ber; +der_type_encoder_f DL_Forwarding_encode_der; +xer_type_decoder_f DL_Forwarding_decode_xer; +xer_type_encoder_f DL_Forwarding_encode_xer; +per_type_decoder_f DL_Forwarding_decode_uper; +per_type_encoder_f DL_Forwarding_encode_uper; +per_type_decoder_f DL_Forwarding_decode_aper; +per_type_encoder_f DL_Forwarding_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_Forwarding_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c new file mode 100644 index 0000000..1e5557c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-GBR-PRB-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-GBR-PRB-usage.h" + +int +DL_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_GBR_PRB_usage = { + "DL-GBR-PRB-usage", + "DL-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_GBR_PRB_usage_constr_1, DL_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h new file mode 100644 index 0000000..0691b49 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-GBR-PRB-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_GBR_PRB_usage_H_ +#define _DL_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-GBR-PRB-usage */ +typedef long DL_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_GBR_PRB_usage; +asn_struct_free_f DL_GBR_PRB_usage_free; +asn_struct_print_f DL_GBR_PRB_usage_print; +asn_constr_check_f DL_GBR_PRB_usage_constraint; +ber_type_decoder_f DL_GBR_PRB_usage_decode_ber; +der_type_encoder_f DL_GBR_PRB_usage_encode_der; +xer_type_decoder_f DL_GBR_PRB_usage_decode_xer; +xer_type_encoder_f DL_GBR_PRB_usage_encode_xer; +per_type_decoder_f DL_GBR_PRB_usage_decode_uper; +per_type_encoder_f DL_GBR_PRB_usage_encode_uper; +per_type_decoder_f DL_GBR_PRB_usage_decode_aper; +per_type_encoder_f DL_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Total-PRB-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Total-PRB-usage.c new file mode 100644 index 0000000..cce63b0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Total-PRB-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-Total-PRB-usage.h" + +int +DL_Total_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_Total_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_Total_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_Total_PRB_usage = { + "DL-Total-PRB-usage", + "DL-Total-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_Total_PRB_usage_tags_1, + sizeof(asn_DEF_DL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_Total_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_Total_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_Total_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_Total_PRB_usage_constr_1, DL_Total_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Total-PRB-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Total-PRB-usage.h new file mode 100644 index 0000000..e91e4cf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-Total-PRB-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_Total_PRB_usage_H_ +#define _DL_Total_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-Total-PRB-usage */ +typedef long DL_Total_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_Total_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_Total_PRB_usage; +asn_struct_free_f DL_Total_PRB_usage_free; +asn_struct_print_f DL_Total_PRB_usage_print; +asn_constr_check_f DL_Total_PRB_usage_constraint; +ber_type_decoder_f DL_Total_PRB_usage_decode_ber; +der_type_encoder_f DL_Total_PRB_usage_encode_der; +xer_type_decoder_f DL_Total_PRB_usage_decode_xer; +xer_type_encoder_f DL_Total_PRB_usage_encode_xer; +per_type_decoder_f DL_Total_PRB_usage_decode_uper; +per_type_encoder_f DL_Total_PRB_usage_encode_uper; +per_type_decoder_f DL_Total_PRB_usage_decode_aper; +per_type_encoder_f DL_Total_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_Total_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c new file mode 100644 index 0000000..a88926a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-non-GBR-PRB-usage.h" + +int +DL_non_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_non_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_non_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_non_GBR_PRB_usage = { + "DL-non-GBR-PRB-usage", + "DL-non-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_non_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_non_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_DL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_non_GBR_PRB_usage_constr_1, DL_non_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h new file mode 100644 index 0000000..68e3d78 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-non-GBR-PRB-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_non_GBR_PRB_usage_H_ +#define _DL_non_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-non-GBR-PRB-usage */ +typedef long DL_non_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_non_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_non_GBR_PRB_usage; +asn_struct_free_f DL_non_GBR_PRB_usage_free; +asn_struct_print_f DL_non_GBR_PRB_usage_print; +asn_constr_check_f DL_non_GBR_PRB_usage_constraint; +ber_type_decoder_f DL_non_GBR_PRB_usage_decode_ber; +der_type_encoder_f DL_non_GBR_PRB_usage_encode_der; +xer_type_decoder_f DL_non_GBR_PRB_usage_decode_xer; +xer_type_encoder_f DL_non_GBR_PRB_usage_encode_xer; +per_type_decoder_f DL_non_GBR_PRB_usage_decode_uper; +per_type_encoder_f DL_non_GBR_PRB_usage_encode_uper; +per_type_decoder_f DL_non_GBR_PRB_usage_decode_aper; +per_type_encoder_f DL_non_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_non_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c new file mode 100644 index 0000000..e46c684 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DL-scheduling-PDCCH-CCE-usage.h" + +int +DL_scheduling_PDCCH_CCE_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DL_scheduling_PDCCH_CCE_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DL_scheduling_PDCCH_CCE_usage = { + "DL-scheduling-PDCCH-CCE-usage", + "DL-scheduling-PDCCH-CCE-usage", + &asn_OP_NativeInteger, + asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1, + sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_DL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DL_scheduling_PDCCH_CCE_usage_constr_1, DL_scheduling_PDCCH_CCE_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h new file mode 100644 index 0000000..78569f7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DL-scheduling-PDCCH-CCE-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DL_scheduling_PDCCH_CCE_usage_H_ +#define _DL_scheduling_PDCCH_CCE_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DL-scheduling-PDCCH-CCE-usage */ +typedef long DL_scheduling_PDCCH_CCE_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DL_scheduling_PDCCH_CCE_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DL_scheduling_PDCCH_CCE_usage; +asn_struct_free_f DL_scheduling_PDCCH_CCE_usage_free; +asn_struct_print_f DL_scheduling_PDCCH_CCE_usage_print; +asn_constr_check_f DL_scheduling_PDCCH_CCE_usage_constraint; +ber_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_ber; +der_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_der; +xer_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_xer; +xer_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_xer; +per_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_uper; +per_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_uper; +per_type_decoder_f DL_scheduling_PDCCH_CCE_usage_decode_aper; +per_type_encoder_f DL_scheduling_PDCCH_CCE_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DL_scheduling_PDCCH_CCE_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c new file mode 100644 index 0000000..d010801 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DLResourceBitmapULandDLSharing.h" + +int +DLResourceBitmapULandDLSharing_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const DataTrafficResources_t *st = (const DataTrafficResources_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 17600)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using DataTrafficResources, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DLResourceBitmapULandDLSharing_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 6, 17600 } /* (SIZE(6..17600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DLResourceBitmapULandDLSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DLResourceBitmapULandDLSharing = { + "DLResourceBitmapULandDLSharing", + "DLResourceBitmapULandDLSharing", + &asn_OP_BIT_STRING, + asn_DEF_DLResourceBitmapULandDLSharing_tags_1, + sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + asn_DEF_DLResourceBitmapULandDLSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_DLResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DLResourceBitmapULandDLSharing_constr_1, DLResourceBitmapULandDLSharing_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h new file mode 100644 index 0000000..ef0a4af --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourceBitmapULandDLSharing.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DLResourceBitmapULandDLSharing_H_ +#define _DLResourceBitmapULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DataTrafficResources.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DLResourceBitmapULandDLSharing */ +typedef DataTrafficResources_t DLResourceBitmapULandDLSharing_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DLResourceBitmapULandDLSharing_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DLResourceBitmapULandDLSharing; +asn_struct_free_f DLResourceBitmapULandDLSharing_free; +asn_struct_print_f DLResourceBitmapULandDLSharing_print; +asn_constr_check_f DLResourceBitmapULandDLSharing_constraint; +ber_type_decoder_f DLResourceBitmapULandDLSharing_decode_ber; +der_type_encoder_f DLResourceBitmapULandDLSharing_encode_der; +xer_type_decoder_f DLResourceBitmapULandDLSharing_decode_xer; +xer_type_encoder_f DLResourceBitmapULandDLSharing_encode_xer; +per_type_decoder_f DLResourceBitmapULandDLSharing_decode_uper; +per_type_encoder_f DLResourceBitmapULandDLSharing_encode_uper; +per_type_decoder_f DLResourceBitmapULandDLSharing_decode_aper; +per_type_encoder_f DLResourceBitmapULandDLSharing_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DLResourceBitmapULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c new file mode 100644 index 0000000..93d4c0b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourcesULandDLSharing.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DLResourcesULandDLSharing.h" + +asn_per_constraints_t asn_PER_type_DLResourcesULandDLSharing_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DLResourcesULandDLSharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DLResourcesULandDLSharing, choice.unchanged), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unchanged" + }, + { ATF_NOFLAGS, 0, offsetof(struct DLResourcesULandDLSharing, choice.changed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DLResourceBitmapULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "changed" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_DLResourcesULandDLSharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* unchanged */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* changed */ +}; +asn_CHOICE_specifics_t asn_SPC_DLResourcesULandDLSharing_specs_1 = { + sizeof(struct DLResourcesULandDLSharing), + offsetof(struct DLResourcesULandDLSharing, _asn_ctx), + offsetof(struct DLResourcesULandDLSharing, present), + sizeof(((struct DLResourcesULandDLSharing *)0)->present), + asn_MAP_DLResourcesULandDLSharing_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_DLResourcesULandDLSharing = { + "DLResourcesULandDLSharing", + "DLResourcesULandDLSharing", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_DLResourcesULandDLSharing_constr_1, CHOICE_constraint }, + asn_MBR_DLResourcesULandDLSharing_1, + 2, /* Elements count */ + &asn_SPC_DLResourcesULandDLSharing_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h new file mode 100644 index 0000000..485ae66 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DLResourcesULandDLSharing.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DLResourcesULandDLSharing_H_ +#define _DLResourcesULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "DLResourceBitmapULandDLSharing.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DLResourcesULandDLSharing_PR { + DLResourcesULandDLSharing_PR_NOTHING, /* No components present */ + DLResourcesULandDLSharing_PR_unchanged, + DLResourcesULandDLSharing_PR_changed + /* Extensions may appear below */ + +} DLResourcesULandDLSharing_PR; + +/* DLResourcesULandDLSharing */ +typedef struct DLResourcesULandDLSharing { + DLResourcesULandDLSharing_PR present; + union DLResourcesULandDLSharing_u { + NULL_t unchanged; + DLResourceBitmapULandDLSharing_t changed; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DLResourcesULandDLSharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DLResourcesULandDLSharing; +extern asn_CHOICE_specifics_t asn_SPC_DLResourcesULandDLSharing_specs_1; +extern asn_TYPE_member_t asn_MBR_DLResourcesULandDLSharing_1[2]; +extern asn_per_constraints_t asn_PER_type_DLResourcesULandDLSharing_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _DLResourcesULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DRB-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DRB-ID.c new file mode 100644 index 0000000..338f1a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DRB-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DRB-ID.h" + +int +DRB_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DRB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (1..32) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DRB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DRB_ID = { + "DRB-ID", + "DRB-ID", + &asn_OP_NativeInteger, + asn_DEF_DRB_ID_tags_1, + sizeof(asn_DEF_DRB_ID_tags_1) + /sizeof(asn_DEF_DRB_ID_tags_1[0]), /* 1 */ + asn_DEF_DRB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_DRB_ID_tags_1) + /sizeof(asn_DEF_DRB_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DRB_ID_constr_1, DRB_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DRB-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DRB-ID.h new file mode 100644 index 0000000..e796eef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DRB-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DRB_ID_H_ +#define _DRB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DRB-ID */ +typedef long DRB_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DRB_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DRB_ID; +asn_struct_free_f DRB_ID_free; +asn_struct_print_f DRB_ID_print; +asn_constr_check_f DRB_ID_constraint; +ber_type_decoder_f DRB_ID_decode_ber; +der_type_encoder_f DRB_ID_encode_der; +xer_type_decoder_f DRB_ID_decode_xer; +xer_type_encoder_f DRB_ID_encode_xer; +per_type_decoder_f DRB_ID_decode_uper; +per_type_encoder_f DRB_ID_encode_uper; +per_type_decoder_f DRB_ID_decode_aper; +per_type_encoder_f DRB_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DRB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataForwardingAddressIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataForwardingAddressIndication.c new file mode 100644 index 0000000..aad69a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataForwardingAddressIndication.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DataForwardingAddressIndication.h" + +static asn_TYPE_member_t asn_MBR_DataForwardingAddressIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P118, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_DataForwardingAddressIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataForwardingAddressIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_DataForwardingAddressIndication_specs_1 = { + sizeof(struct DataForwardingAddressIndication), + offsetof(struct DataForwardingAddressIndication, _asn_ctx), + asn_MAP_DataForwardingAddressIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication = { + "DataForwardingAddressIndication", + "DataForwardingAddressIndication", + &asn_OP_SEQUENCE, + asn_DEF_DataForwardingAddressIndication_tags_1, + sizeof(asn_DEF_DataForwardingAddressIndication_tags_1) + /sizeof(asn_DEF_DataForwardingAddressIndication_tags_1[0]), /* 1 */ + asn_DEF_DataForwardingAddressIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_DataForwardingAddressIndication_tags_1) + /sizeof(asn_DEF_DataForwardingAddressIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataForwardingAddressIndication_1, + 1, /* Elements count */ + &asn_SPC_DataForwardingAddressIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataForwardingAddressIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataForwardingAddressIndication.h new file mode 100644 index 0000000..78fed11 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataForwardingAddressIndication.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DataForwardingAddressIndication_H_ +#define _DataForwardingAddressIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DataForwardingAddressIndication */ +typedef struct DataForwardingAddressIndication { + ProtocolIE_Container_119P118_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataForwardingAddressIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataForwardingAddressIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResourceIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResourceIndication.c new file mode 100644 index 0000000..062aa77 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResourceIndication.c @@ -0,0 +1,137 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DataTrafficResourceIndication.h" + +#include "ReservedSubframePattern.h" +#include "ProtocolExtensionContainer.h" +static int +memb_activationSFN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_activationSFN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication, activationSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_activationSFN_constr_2, memb_activationSFN_constraint_1 }, + 0, 0, /* No default value */ + "activationSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication, sharedResourceType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SharedResourceType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sharedResourceType" + }, + { ATF_POINTER, 2, offsetof(struct DataTrafficResourceIndication, reservedSubframePattern), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReservedSubframePattern, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reservedSubframePattern" + }, + { ATF_POINTER, 1, offsetof(struct DataTrafficResourceIndication, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P131, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_DataTrafficResourceIndication_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_DataTrafficResourceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataTrafficResourceIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* activationSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sharedResourceType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reservedSubframePattern */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_specs_1 = { + sizeof(struct DataTrafficResourceIndication), + offsetof(struct DataTrafficResourceIndication, _asn_ctx), + asn_MAP_DataTrafficResourceIndication_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DataTrafficResourceIndication_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication = { + "DataTrafficResourceIndication", + "DataTrafficResourceIndication", + &asn_OP_SEQUENCE, + asn_DEF_DataTrafficResourceIndication_tags_1, + sizeof(asn_DEF_DataTrafficResourceIndication_tags_1) + /sizeof(asn_DEF_DataTrafficResourceIndication_tags_1[0]), /* 1 */ + asn_DEF_DataTrafficResourceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_DataTrafficResourceIndication_tags_1) + /sizeof(asn_DEF_DataTrafficResourceIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataTrafficResourceIndication_1, + 4, /* Elements count */ + &asn_SPC_DataTrafficResourceIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResourceIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResourceIndication.h new file mode 100644 index 0000000..13063f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResourceIndication.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DataTrafficResourceIndication_H_ +#define _DataTrafficResourceIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "SharedResourceType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ReservedSubframePattern; +struct ProtocolExtensionContainer; + +/* DataTrafficResourceIndication */ +typedef struct DataTrafficResourceIndication { + long activationSFN; + SharedResourceType_t sharedResourceType; + struct ReservedSubframePattern *reservedSubframePattern; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataTrafficResourceIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataTrafficResourceIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResources.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResources.c new file mode 100644 index 0000000..80274f9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResources.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DataTrafficResources.h" + +int +DataTrafficResources_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 17600)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DataTrafficResources_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 6, 17600 } /* (SIZE(6..17600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_DataTrafficResources_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DataTrafficResources = { + "DataTrafficResources", + "DataTrafficResources", + &asn_OP_BIT_STRING, + asn_DEF_DataTrafficResources_tags_1, + sizeof(asn_DEF_DataTrafficResources_tags_1) + /sizeof(asn_DEF_DataTrafficResources_tags_1[0]), /* 1 */ + asn_DEF_DataTrafficResources_tags_1, /* Same as above */ + sizeof(asn_DEF_DataTrafficResources_tags_1) + /sizeof(asn_DEF_DataTrafficResources_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DataTrafficResources_constr_1, DataTrafficResources_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResources.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResources.h new file mode 100644 index 0000000..a20198d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DataTrafficResources.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DataTrafficResources_H_ +#define _DataTrafficResources_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DataTrafficResources */ +typedef BIT_STRING_t DataTrafficResources_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DataTrafficResources_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DataTrafficResources; +asn_struct_free_f DataTrafficResources_free; +asn_struct_print_f DataTrafficResources_print; +asn_constr_check_f DataTrafficResources_constraint; +ber_type_decoder_f DataTrafficResources_decode_ber; +der_type_encoder_f DataTrafficResources_encode_der; +xer_type_decoder_f DataTrafficResources_decode_xer; +xer_type_encoder_f DataTrafficResources_encode_xer; +per_type_decoder_f DataTrafficResources_decode_uper; +per_type_encoder_f DataTrafficResources_encode_uper; +per_type_decoder_f DataTrafficResources_decode_aper; +per_type_encoder_f DataTrafficResources_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DataTrafficResources_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeactivationIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeactivationIndication.c new file mode 100644 index 0000000..cc28511 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeactivationIndication.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DeactivationIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DeactivationIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_DeactivationIndication_value2enum_1[] = { + { 0, 11, "deactivated" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_DeactivationIndication_enum2value_1[] = { + 0 /* deactivated(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_DeactivationIndication_specs_1 = { + asn_MAP_DeactivationIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DeactivationIndication_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DeactivationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DeactivationIndication = { + "DeactivationIndication", + "DeactivationIndication", + &asn_OP_NativeEnumerated, + asn_DEF_DeactivationIndication_tags_1, + sizeof(asn_DEF_DeactivationIndication_tags_1) + /sizeof(asn_DEF_DeactivationIndication_tags_1[0]), /* 1 */ + asn_DEF_DeactivationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_DeactivationIndication_tags_1) + /sizeof(asn_DEF_DeactivationIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DeactivationIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DeactivationIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeactivationIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeactivationIndication.h new file mode 100644 index 0000000..d84b841 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeactivationIndication.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DeactivationIndication_H_ +#define _DeactivationIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DeactivationIndication { + DeactivationIndication_deactivated = 0 + /* + * Enumeration is extensible + */ +} e_DeactivationIndication; + +/* DeactivationIndication */ +typedef long DeactivationIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DeactivationIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DeactivationIndication; +extern const asn_INTEGER_specifics_t asn_SPC_DeactivationIndication_specs_1; +asn_struct_free_f DeactivationIndication_free; +asn_struct_print_f DeactivationIndication_print; +asn_constr_check_f DeactivationIndication_constraint; +ber_type_decoder_f DeactivationIndication_decode_ber; +der_type_encoder_f DeactivationIndication_encode_der; +xer_type_decoder_f DeactivationIndication_decode_xer; +xer_type_encoder_f DeactivationIndication_encode_xer; +per_type_decoder_f DeactivationIndication_decode_uper; +per_type_encoder_f DeactivationIndication_encode_uper; +per_type_decoder_f DeactivationIndication_decode_aper; +per_type_encoder_f DeactivationIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeactivationIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeliveryStatus.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeliveryStatus.c new file mode 100644 index 0000000..491f32f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeliveryStatus.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DeliveryStatus.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_highestSuccessDeliveredPDCPSN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_highestSuccessDeliveredPDCPSN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DeliveryStatus_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus, highestSuccessDeliveredPDCPSN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_highestSuccessDeliveredPDCPSN_constr_2, memb_highestSuccessDeliveredPDCPSN_constraint_1 }, + 0, 0, /* No default value */ + "highestSuccessDeliveredPDCPSN" + }, + { ATF_POINTER, 1, offsetof(struct DeliveryStatus, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P132, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_DeliveryStatus_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_DeliveryStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DeliveryStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* highestSuccessDeliveredPDCPSN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_specs_1 = { + sizeof(struct DeliveryStatus), + offsetof(struct DeliveryStatus, _asn_ctx), + asn_MAP_DeliveryStatus_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_DeliveryStatus_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DeliveryStatus = { + "DeliveryStatus", + "DeliveryStatus", + &asn_OP_SEQUENCE, + asn_DEF_DeliveryStatus_tags_1, + sizeof(asn_DEF_DeliveryStatus_tags_1) + /sizeof(asn_DEF_DeliveryStatus_tags_1[0]), /* 1 */ + asn_DEF_DeliveryStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_DeliveryStatus_tags_1) + /sizeof(asn_DEF_DeliveryStatus_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DeliveryStatus_1, + 2, /* Elements count */ + &asn_SPC_DeliveryStatus_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeliveryStatus.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeliveryStatus.h new file mode 100644 index 0000000..512ad30 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DeliveryStatus.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DeliveryStatus_H_ +#define _DeliveryStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* DeliveryStatus */ +typedef struct DeliveryStatus { + long highestSuccessDeliveredPDCPSN; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DeliveryStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DeliveryStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_DeliveryStatus_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DeliveryStatus_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DuplicationActivation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DuplicationActivation.c new file mode 100644 index 0000000..8884f1e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DuplicationActivation.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DuplicationActivation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_DuplicationActivation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_DuplicationActivation_value2enum_1[] = { + { 0, 6, "active" }, + { 1, 8, "inactive" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_DuplicationActivation_enum2value_1[] = { + 0, /* active(0) */ + 1 /* inactive(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_DuplicationActivation_specs_1 = { + asn_MAP_DuplicationActivation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_DuplicationActivation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_DuplicationActivation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_DuplicationActivation = { + "DuplicationActivation", + "DuplicationActivation", + &asn_OP_NativeEnumerated, + asn_DEF_DuplicationActivation_tags_1, + sizeof(asn_DEF_DuplicationActivation_tags_1) + /sizeof(asn_DEF_DuplicationActivation_tags_1[0]), /* 1 */ + asn_DEF_DuplicationActivation_tags_1, /* Same as above */ + sizeof(asn_DEF_DuplicationActivation_tags_1) + /sizeof(asn_DEF_DuplicationActivation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_DuplicationActivation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_DuplicationActivation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DuplicationActivation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DuplicationActivation.h new file mode 100644 index 0000000..3626570 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DuplicationActivation.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DuplicationActivation_H_ +#define _DuplicationActivation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DuplicationActivation { + DuplicationActivation_active = 0, + DuplicationActivation_inactive = 1 + /* + * Enumeration is extensible + */ +} e_DuplicationActivation; + +/* DuplicationActivation */ +typedef long DuplicationActivation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_DuplicationActivation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_DuplicationActivation; +extern const asn_INTEGER_specifics_t asn_SPC_DuplicationActivation_specs_1; +asn_struct_free_f DuplicationActivation_free; +asn_struct_print_f DuplicationActivation_print; +asn_constr_check_f DuplicationActivation_constraint; +ber_type_decoder_f DuplicationActivation_decode_ber; +der_type_encoder_f DuplicationActivation_encode_der; +xer_type_decoder_f DuplicationActivation_decode_xer; +xer_type_encoder_f DuplicationActivation_encode_xer; +per_type_decoder_f DuplicationActivation_decode_uper; +per_type_encoder_f DuplicationActivation_encode_uper; +per_type_decoder_f DuplicationActivation_decode_aper; +per_type_encoder_f DuplicationActivation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _DuplicationActivation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c new file mode 100644 index 0000000..17bb886 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DynamicDLTransmissionInformation.h" + +#include "DynamicNAICSInformation.h" +asn_per_constraints_t asn_PER_type_DynamicDLTransmissionInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_DynamicDLTransmissionInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct DynamicDLTransmissionInformation, choice.naics_active), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DynamicNAICSInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "naics-active" + }, + { ATF_NOFLAGS, 0, offsetof(struct DynamicDLTransmissionInformation, choice.naics_inactive), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "naics-inactive" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_DynamicDLTransmissionInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* naics-active */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* naics-inactive */ +}; +asn_CHOICE_specifics_t asn_SPC_DynamicDLTransmissionInformation_specs_1 = { + sizeof(struct DynamicDLTransmissionInformation), + offsetof(struct DynamicDLTransmissionInformation, _asn_ctx), + offsetof(struct DynamicDLTransmissionInformation, present), + sizeof(((struct DynamicDLTransmissionInformation *)0)->present), + asn_MAP_DynamicDLTransmissionInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_DynamicDLTransmissionInformation = { + "DynamicDLTransmissionInformation", + "DynamicDLTransmissionInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_DynamicDLTransmissionInformation_constr_1, CHOICE_constraint }, + asn_MBR_DynamicDLTransmissionInformation_1, + 2, /* Elements count */ + &asn_SPC_DynamicDLTransmissionInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h new file mode 100644 index 0000000..50561bf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicDLTransmissionInformation.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DynamicDLTransmissionInformation_H_ +#define _DynamicDLTransmissionInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum DynamicDLTransmissionInformation_PR { + DynamicDLTransmissionInformation_PR_NOTHING, /* No components present */ + DynamicDLTransmissionInformation_PR_naics_active, + DynamicDLTransmissionInformation_PR_naics_inactive + /* Extensions may appear below */ + +} DynamicDLTransmissionInformation_PR; + +/* Forward declarations */ +struct DynamicNAICSInformation; + +/* DynamicDLTransmissionInformation */ +typedef struct DynamicDLTransmissionInformation { + DynamicDLTransmissionInformation_PR present; + union DynamicDLTransmissionInformation_u { + struct DynamicNAICSInformation *naics_active; + NULL_t naics_inactive; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DynamicDLTransmissionInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DynamicDLTransmissionInformation; +extern asn_CHOICE_specifics_t asn_SPC_DynamicDLTransmissionInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_DynamicDLTransmissionInformation_1[2]; +extern asn_per_constraints_t asn_PER_type_DynamicDLTransmissionInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _DynamicDLTransmissionInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicNAICSInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicNAICSInformation.c new file mode 100644 index 0000000..0d83f8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicNAICSInformation.c @@ -0,0 +1,245 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "DynamicNAICSInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_transmissionModes_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_pB_information_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_pA_list_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 3)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_pA_list_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (SIZE(0..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_transmissionModes_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pB_information_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pA_list_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (SIZE(0..3)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_pA_list_4[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PA_Values, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_pA_list_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_pA_list_specs_4 = { + sizeof(struct DynamicNAICSInformation__pA_list), + offsetof(struct DynamicNAICSInformation__pA_list, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_pA_list_4 = { + "pA-list", + "pA-list", + &asn_OP_SEQUENCE_OF, + asn_DEF_pA_list_tags_4, + sizeof(asn_DEF_pA_list_tags_4) + /sizeof(asn_DEF_pA_list_tags_4[0]) - 1, /* 1 */ + asn_DEF_pA_list_tags_4, /* Same as above */ + sizeof(asn_DEF_pA_list_tags_4) + /sizeof(asn_DEF_pA_list_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_pA_list_constr_4, SEQUENCE_OF_constraint }, + asn_MBR_pA_list_4, + 1, /* Single element */ + &asn_SPC_pA_list_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_1[] = { + { ATF_POINTER, 2, offsetof(struct DynamicNAICSInformation, transmissionModes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_transmissionModes_constr_2, memb_transmissionModes_constraint_1 }, + 0, 0, /* No default value */ + "transmissionModes" + }, + { ATF_POINTER, 1, offsetof(struct DynamicNAICSInformation, pB_information), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_pB_information_constr_3, memb_pB_information_constraint_1 }, + 0, 0, /* No default value */ + "pB-information" + }, + { ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation, pA_list), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + 0, + &asn_DEF_pA_list_4, + 0, + { 0, &asn_PER_memb_pA_list_constr_4, memb_pA_list_constraint_1 }, + 0, 0, /* No default value */ + "pA-list" + }, + { ATF_POINTER, 1, offsetof(struct DynamicNAICSInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P133, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_DynamicNAICSInformation_oms_1[] = { 0, 1, 3 }; +static const ber_tlv_tag_t asn_DEF_DynamicNAICSInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DynamicNAICSInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transmissionModes */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pB-information */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pA-list */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_specs_1 = { + sizeof(struct DynamicNAICSInformation), + offsetof(struct DynamicNAICSInformation, _asn_ctx), + asn_MAP_DynamicNAICSInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_DynamicNAICSInformation_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation = { + "DynamicNAICSInformation", + "DynamicNAICSInformation", + &asn_OP_SEQUENCE, + asn_DEF_DynamicNAICSInformation_tags_1, + sizeof(asn_DEF_DynamicNAICSInformation_tags_1) + /sizeof(asn_DEF_DynamicNAICSInformation_tags_1[0]), /* 1 */ + asn_DEF_DynamicNAICSInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_DynamicNAICSInformation_tags_1) + /sizeof(asn_DEF_DynamicNAICSInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DynamicNAICSInformation_1, + 4, /* Elements count */ + &asn_SPC_DynamicNAICSInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicNAICSInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicNAICSInformation.h new file mode 100644 index 0000000..367f03e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/DynamicNAICSInformation.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _DynamicNAICSInformation_H_ +#define _DynamicNAICSInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeInteger.h" +#include "PA-Values.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* DynamicNAICSInformation */ +typedef struct DynamicNAICSInformation { + BIT_STRING_t *transmissionModes; /* OPTIONAL */ + long *pB_information; /* OPTIONAL */ + struct DynamicNAICSInformation__pA_list { + A_SEQUENCE_OF(PA_Values_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } pA_list; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DynamicNAICSInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _DynamicNAICSInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-ID.c new file mode 100644 index 0000000..d605d37 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-ID.h" + +int +E_RAB_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_E_RAB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_ID = { + "E-RAB-ID", + "E-RAB-ID", + &asn_OP_NativeInteger, + asn_DEF_E_RAB_ID_tags_1, + sizeof(asn_DEF_E_RAB_ID_tags_1) + /sizeof(asn_DEF_E_RAB_ID_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_ID_tags_1) + /sizeof(asn_DEF_E_RAB_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RAB_ID_constr_1, E_RAB_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-ID.h new file mode 100644 index 0000000..eccdb57 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_ID_H_ +#define _E_RAB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E-RAB-ID */ +typedef long E_RAB_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_E_RAB_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_ID; +asn_struct_free_f E_RAB_ID_free; +asn_struct_print_f E_RAB_ID_print; +asn_constr_check_f E_RAB_ID_constraint; +ber_type_decoder_f E_RAB_ID_decode_ber; +der_type_encoder_f E_RAB_ID_encode_der; +xer_type_decoder_f E_RAB_ID_decode_xer; +xer_type_encoder_f E_RAB_ID_encode_xer; +per_type_decoder_f E_RAB_ID_decode_uper; +per_type_encoder_f E_RAB_ID_encode_uper; +per_type_decoder_f E_RAB_ID_decode_aper; +per_type_encoder_f E_RAB_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Item.c new file mode 100644 index 0000000..bd86b5d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RAB_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct E_RAB_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P140, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RAB_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RAB_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_specs_1 = { + sizeof(struct E_RAB_Item), + offsetof(struct E_RAB_Item, _asn_ctx), + asn_MAP_E_RAB_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RAB_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Item = { + "E-RAB-Item", + "E-RAB-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Item_tags_1, + sizeof(asn_DEF_E_RAB_Item_tags_1) + /sizeof(asn_DEF_E_RAB_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_Item_tags_1) + /sizeof(asn_DEF_E_RAB_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RAB_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Item.h new file mode 100644 index 0000000..a0085dd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_Item_H_ +#define _E_RAB_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RAB-Item */ +typedef struct E_RAB_Item { + E_RAB_ID_t e_RAB_ID; + Cause_t cause; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RAB_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c new file mode 100644 index 0000000..600e0b5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-Level-QoS-Parameters.h" + +#include "GBR-QosInformation.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters, qCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_QCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "qCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters, allocationAndRetentionPriority), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AllocationAndRetentionPriority, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "allocationAndRetentionPriority" + }, + { ATF_POINTER, 2, offsetof(struct E_RAB_Level_QoS_Parameters, gbrQosInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gbrQosInformation" + }, + { ATF_POINTER, 1, offsetof(struct E_RAB_Level_QoS_Parameters, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P139, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RAB_Level_QoS_Parameters_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RAB_Level_QoS_Parameters_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Level_QoS_Parameters_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* qCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* allocationAndRetentionPriority */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gbrQosInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_specs_1 = { + sizeof(struct E_RAB_Level_QoS_Parameters), + offsetof(struct E_RAB_Level_QoS_Parameters, _asn_ctx), + asn_MAP_E_RAB_Level_QoS_Parameters_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RAB_Level_QoS_Parameters_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters = { + "E-RAB-Level-QoS-Parameters", + "E-RAB-Level-QoS-Parameters", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Level_QoS_Parameters_tags_1, + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_Level_QoS_Parameters_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Level_QoS_Parameters_1, + 4, /* Elements count */ + &asn_SPC_E_RAB_Level_QoS_Parameters_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h new file mode 100644 index 0000000..8ea1f2b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-Level-QoS-Parameters.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_Level_QoS_Parameters_H_ +#define _E_RAB_Level_QoS_Parameters_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "QCI.h" +#include "AllocationAndRetentionPriority.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GBR_QosInformation; +struct ProtocolExtensionContainer; + +/* E-RAB-Level-QoS-Parameters */ +typedef struct E_RAB_Level_QoS_Parameters { + QCI_t qCI; + AllocationAndRetentionPriority_t allocationAndRetentionPriority; + struct GBR_QosInformation *gbrQosInformation; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_Level_QoS_Parameters_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_Level_QoS_Parameters_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-List.c new file mode 100644 index 0000000..866fcfb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RAB-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RAB_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RAB_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RAB_List_specs_1 = { + sizeof(struct E_RAB_List), + offsetof(struct E_RAB_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_List = { + "E-RAB-List", + "E-RAB-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RAB_List_tags_1, + sizeof(asn_DEF_E_RAB_List_tags_1) + /sizeof(asn_DEF_E_RAB_List_tags_1[0]), /* 1 */ + asn_DEF_E_RAB_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RAB_List_tags_1) + /sizeof(asn_DEF_E_RAB_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RAB_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RAB_List_1, + 1, /* Single element */ + &asn_SPC_E_RAB_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-List.h new file mode 100644 index 0000000..f8e5061 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RAB-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RAB_List_H_ +#define _E_RAB_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RAB-List */ +typedef struct E_RAB_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RAB_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RAB_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RAB_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RAB_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReport-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReport-Item.c new file mode 100644 index 0000000..92101c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReport-Item.c @@ -0,0 +1,320 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABUsageReport-Item.h" + +#include "ProtocolExtensionContainer.h" +static int +usageCountUL_4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +usageCountDL_5_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_startTimeStamp_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_endTimeStamp_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_usageCountUL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static int +memb_usageCountDL_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static asn_per_constraints_t asn_PER_type_usageCountUL_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_usageCountDL_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_startTimeStamp_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_endTimeStamp_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_usageCountUL_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_usageCountDL_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_specifics_t asn_SPC_usageCountUL_specs_4 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_usageCountUL_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_usageCountUL_4 = { + "usageCountUL", + "usageCountUL", + &asn_OP_NativeInteger, + asn_DEF_usageCountUL_tags_4, + sizeof(asn_DEF_usageCountUL_tags_4) + /sizeof(asn_DEF_usageCountUL_tags_4[0]) - 1, /* 1 */ + asn_DEF_usageCountUL_tags_4, /* Same as above */ + sizeof(asn_DEF_usageCountUL_tags_4) + /sizeof(asn_DEF_usageCountUL_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_usageCountUL_constr_4, usageCountUL_4_constraint }, + 0, 0, /* No members */ + &asn_SPC_usageCountUL_specs_4 /* Additional specs */ +}; + +static const asn_INTEGER_specifics_t asn_SPC_usageCountDL_specs_5 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_usageCountDL_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_usageCountDL_5 = { + "usageCountDL", + "usageCountDL", + &asn_OP_NativeInteger, + asn_DEF_usageCountDL_tags_5, + sizeof(asn_DEF_usageCountDL_tags_5) + /sizeof(asn_DEF_usageCountDL_tags_5[0]) - 1, /* 1 */ + asn_DEF_usageCountDL_tags_5, /* Same as above */ + sizeof(asn_DEF_usageCountDL_tags_5) + /sizeof(asn_DEF_usageCountDL_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_usageCountDL_constr_5, usageCountDL_5_constraint }, + 0, 0, /* No members */ + &asn_SPC_usageCountDL_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, startTimeStamp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, &asn_PER_memb_startTimeStamp_constr_2, memb_startTimeStamp_constraint_1 }, + 0, 0, /* No default value */ + "startTimeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, endTimeStamp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, &asn_PER_memb_endTimeStamp_constr_3, memb_endTimeStamp_constraint_1 }, + 0, 0, /* No default value */ + "endTimeStamp" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, usageCountUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_usageCountUL_4, + 0, + { 0, &asn_PER_memb_usageCountUL_constr_4, memb_usageCountUL_constraint_1 }, + 0, 0, /* No default value */ + "usageCountUL" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item, usageCountDL), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_usageCountDL_5, + 0, + { 0, &asn_PER_memb_usageCountDL_constr_5, memb_usageCountDL_constraint_1 }, + 0, 0, /* No default value */ + "usageCountDL" + }, + { ATF_POINTER, 1, offsetof(struct E_RABUsageReport_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P141, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABUsageReport_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReport_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABUsageReport_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startTimeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* endTimeStamp */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* usageCountUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* usageCountDL */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_specs_1 = { + sizeof(struct E_RABUsageReport_Item), + offsetof(struct E_RABUsageReport_Item, _asn_ctx), + asn_MAP_E_RABUsageReport_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABUsageReport_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item = { + "E-RABUsageReport-Item", + "E-RABUsageReport-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABUsageReport_Item_tags_1, + sizeof(asn_DEF_E_RABUsageReport_Item_tags_1) + /sizeof(asn_DEF_E_RABUsageReport_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABUsageReport_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReport_Item_tags_1) + /sizeof(asn_DEF_E_RABUsageReport_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABUsageReport_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReport-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReport-Item.h new file mode 100644 index 0000000..d979ca3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReport-Item.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABUsageReport_Item_H_ +#define _E_RABUsageReport_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABUsageReport-Item */ +typedef struct E_RABUsageReport_Item { + OCTET_STRING_t startTimeStamp; + OCTET_STRING_t endTimeStamp; + unsigned long usageCountUL; + unsigned long usageCountDL; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReport_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_usageCountUL_4; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_usageCountDL_5; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABUsageReport_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReportList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReportList.c new file mode 100644 index 0000000..ff6d912 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReportList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABUsageReportList.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABUsageReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 1, 1, 1, 2 } /* (SIZE(1..2)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABUsageReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABUsageReportList_specs_1 = { + sizeof(struct E_RABUsageReportList), + offsetof(struct E_RABUsageReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportList = { + "E-RABUsageReportList", + "E-RABUsageReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABUsageReportList_tags_1, + sizeof(asn_DEF_E_RABUsageReportList_tags_1) + /sizeof(asn_DEF_E_RABUsageReportList_tags_1[0]), /* 1 */ + asn_DEF_E_RABUsageReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReportList_tags_1) + /sizeof(asn_DEF_E_RABUsageReportList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABUsageReportList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABUsageReportList_1, + 1, /* Single element */ + &asn_SPC_E_RABUsageReportList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReportList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReportList.h new file mode 100644 index 0000000..2189bcb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABUsageReportList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABUsageReportList_H_ +#define _E_RABUsageReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABUsageReportList */ +typedef struct E_RABUsageReportList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportList; +extern asn_SET_OF_specifics_t asn_SPC_E_RABUsageReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABUsageReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABUsageReportList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c new file mode 100644 index 0000000..7fb6681 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-Item.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-Item.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_Item, uL_GTP_TunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTP-TunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_Item, dL_GTP_TunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTP-TunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_Item_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-GTP-TunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-GTP-TunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_Item), + offsetof(struct E_RABs_Admitted_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item = { + "E-RABs-Admitted-Item", + "E-RABs-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h new file mode 100644 index 0000000..b56c1e0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-Item.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_Item_H_ +#define _E_RABs_Admitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-Item */ +typedef struct E_RABs_Admitted_Item { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *uL_GTP_TunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTP_TunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-List.c new file mode 100644 index 0000000..8cdd596 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_List_specs_1 = { + sizeof(struct E_RABs_Admitted_List), + offsetof(struct E_RABs_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_List = { + "E-RABs-Admitted-List", + "E-RABs-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_List_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-List.h new file mode 100644 index 0000000..393786f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_List_H_ +#define _E_RABs_Admitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-List */ +typedef struct E_RABs_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c new file mode 100644 index 0000000..8ce9126 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c @@ -0,0 +1,117 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer = { + "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer", + "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h new file mode 100644 index 0000000..3adcab1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c new file mode 100644 index 0000000..8ef5fca --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, seNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer = { + "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer", + "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h new file mode 100644 index 0000000..8ffc333 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-Item-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_Item_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c new file mode 100644 index 0000000..d826ba2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-Item.h" + +#include "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_Item *)0)->present), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item = { + "E-RABs-Admitted-ToBeAdded-Item", + "E-RABs-Admitted-ToBeAdded-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_Item_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h new file mode 100644 index 0000000..358d70a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-Item.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_Item_H_ +#define _E_RABs_Admitted_ToBeAdded_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_Item_PR { + E_RABs_Admitted_ToBeAdded_Item_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_Item_PR_sCG_Bearer, + E_RABs_Admitted_ToBeAdded_Item_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_Item_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer; +struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer; + +/* E-RABs-Admitted-ToBeAdded-Item */ +typedef struct E_RABs_Admitted_ToBeAdded_Item { + E_RABs_Admitted_ToBeAdded_Item_PR present; + union E_RABs_Admitted_ToBeAdded_Item_u { + struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c new file mode 100644 index 0000000..f0806de --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_List_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_List), + offsetof(struct E_RABs_Admitted_ToBeAdded_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_List = { + "E-RABs-Admitted-ToBeAdded-List", + "E-RABs-Admitted-ToBeAdded-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h new file mode 100644 index 0000000..54dc69b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_List_H_ +#define _E_RABs_Admitted_ToBeAdded_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-List */ +typedef struct E_RABs_Admitted_ToBeAdded_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c new file mode 100644 index 0000000..9516b04 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c @@ -0,0 +1,117 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer", + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h new file mode 100644 index 0000000..2268a40 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c new file mode 100644 index 0000000..3c43c5a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, seNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer", + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h new file mode 100644 index 0000000..1295483 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t seNB_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c new file mode 100644 index 0000000..5ddcc2f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem.h" + +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItem *)0)->present), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem = { + "E-RABs-Admitted-ToBeAdded-ModAckItem", + "E-RABs-Admitted-ToBeAdded-ModAckItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h new file mode 100644 index 0000000..e78a9e7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckItem_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItem_PR { + E_RABs_Admitted_ToBeAdded_ModAckItem_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_ModAckItem_PR_sCG_Bearer, + E_RABs_Admitted_ToBeAdded_ModAckItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_ModAckItem_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer; +struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer; + +/* E-RABs-Admitted-ToBeAdded-ModAckItem */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem { + E_RABs_Admitted_ToBeAdded_ModAckItem_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItem_u { + struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c new file mode 100644 index 0000000..80014cf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-ModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckList), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList = { + "E-RABs-Admitted-ToBeAdded-ModAckList", + "E-RABs-Admitted-ToBeAdded-ModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_ModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h new file mode 100644 index 0000000..f6c40b9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-ModAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_ModAckList_H_ +#define _E_RABs_Admitted_ToBeAdded_ModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-ModAckList */ +typedef struct E_RABs_Admitted_ToBeAdded_ModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_ModAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..e763245 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, secondary_sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P49, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondary-sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..bf5429c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent { + GTPtunnelEndpoint_t sgNB_DL_GTP_TEIDatSCG; + struct GTPtunnelEndpoint *secondary_sgNB_DL_GTP_TEIDatSCG; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..67ac9d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,149 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 7, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 6, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 5, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, mCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 4, 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* mCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_1, + 8, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..a7ac657 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent { + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t *rlc_Mode; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct E_RAB_Level_QoS_Parameters *mCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c new file mode 100644 index 0000000..80b2b9b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h new file mode 100644 index 0000000..dd1aaad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c new file mode 100644 index 0000000..1ade81b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h new file mode 100644 index 0000000..766bb2f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..4385840 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, secondary_sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P64, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondary-sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..bb8f6e0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent { + GTPtunnelEndpoint_t sgNB_DL_GTP_TEIDatSCG; + struct GTPtunnelEndpoint *secondary_sgNB_DL_GTP_TEIDatSCG; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..9923a67 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,149 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 7, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 6, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 5, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, mCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P63, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 4, 5, 6, 7 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* mCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_1, + 8, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..fba49ec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent { + GTPtunnelEndpoint_t s1_DL_GTPtunnelEndpoint; + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t *rlc_Mode; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct E_RAB_Level_QoS_Parameters *mCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c new file mode 100644 index 0000000..bafd6cb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P62, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h new file mode 100644 index 0000000..ea0d2ef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c new file mode 100644 index 0000000..0752153 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeAdded-SgNBModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAckList), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList = { + "E-RABs-Admitted-ToBeAdded-SgNBModAckList", + "E-RABs-Admitted-ToBeAdded-SgNBModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeAdded_SgNBModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h new file mode 100644 index 0000000..1833ddc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeAdded-SgNBModAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeAdded_SgNBModAckList_H_ +#define _E_RABs_Admitted_ToBeAdded_SgNBModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeAdded-SgNBModAckList */ +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeAdded_SgNBModAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c new file mode 100644 index 0000000..0d60fd4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer = { + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer", + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h new file mode 100644 index 0000000..7a1c83a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *s1_DL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c new file mode 100644 index 0000000..1c71e8b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, seNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer = { + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer", + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h new file mode 100644 index 0000000..8436904 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *seNB_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c new file mode 100644 index 0000000..524bd6b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckItem.h" + +#include "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItem *)0)->present), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem = { + "E-RABs-Admitted-ToBeModified-ModAckItem", + "E-RABs-Admitted-ToBeModified-ModAckItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h new file mode 100644 index 0000000..a848d3d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckItem_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeModified_ModAckItem_PR { + E_RABs_Admitted_ToBeModified_ModAckItem_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_ModAckItem_PR_sCG_Bearer, + E_RABs_Admitted_ToBeModified_ModAckItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeModified_ModAckItem_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer; +struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer; + +/* E-RABs-Admitted-ToBeModified-ModAckItem */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem { + E_RABs_Admitted_ToBeModified_ModAckItem_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItem_u { + struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c new file mode 100644 index 0000000..88f0e8d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-ModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckList), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList = { + "E-RABs-Admitted-ToBeModified-ModAckList", + "E-RABs-Admitted-ToBeModified-ModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeModified_ModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h new file mode 100644 index 0000000..fc71d39 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-ModAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_ModAckList_H_ +#define _E_RABs_Admitted_ToBeModified_ModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeModified-ModAckList */ +typedef struct E_RABs_Admitted_ToBeModified_ModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_ModAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..cd1b8ef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P67, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..b095cd0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent { + struct GTPtunnelEndpoint *sgNB_DL_GTP_TEIDatSCG; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..51e67b4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 5, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, s1_DL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, mCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P66, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s1-DL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..dc5f2da --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *s1_DL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct E_RAB_Level_QoS_Parameters *mCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c new file mode 100644 index 0000000..f6360f9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P65, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h new file mode 100644 index 0000000..322495a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToBeModified-SgNBModAck-Item */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAck_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c new file mode 100644 index 0000000..153f7c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeModified-SgNBModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeModified_SgNBModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAckList), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList = { + "E-RABs-Admitted-ToBeModified-SgNBModAckList", + "E-RABs-Admitted-ToBeModified-SgNBModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeModified_SgNBModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h new file mode 100644 index 0000000..40d4450 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeModified-SgNBModAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeModified_SgNBModAckList_H_ +#define _E_RABs_Admitted_ToBeModified_SgNBModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeModified-SgNBModAckList */ +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeModified_SgNBModAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c new file mode 100644 index 0000000..e2574a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer", + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h new file mode 100644 index 0000000..27c4243 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_H_ +#define _E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer */ +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c new file mode 100644 index 0000000..b81e0d6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer", + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h new file mode 100644 index 0000000..8bb3822 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_H_ +#define _E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer */ +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c new file mode 100644 index 0000000..e85a78a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-ModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeReleased_ModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckList), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList = { + "E-RABs-Admitted-ToBeReleased-ModAckList", + "E-RABs-Admitted-ToBeReleased-ModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeReleased_ModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h new file mode 100644 index 0000000..adc16b7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-ModAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_ModAckList_H_ +#define _E_RABs_Admitted_ToBeReleased_ModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeReleased-ModAckList */ +typedef struct E_RABs_Admitted_ToBeReleased_ModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_ModAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..28036de --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P70, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..d98fdae --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..96715a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P69, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..d090d85 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c new file mode 100644 index 0000000..eb708c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBModAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBModAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAckList), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList = { + "E-RABs-Admitted-ToBeReleased-SgNBModAckList", + "E-RABs-Admitted-ToBeReleased-SgNBModAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBModAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h new file mode 100644 index 0000000..1e68236 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBModAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBModAckList_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBModAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeReleased-SgNBModAckList */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBModAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c new file mode 100644 index 0000000..c94b5a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, rlc_Mode_transferred), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode-transferred" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P81, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rlc-Mode-transferred */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h new file mode 100644 index 0000000..3c2fd79 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item { + E_RAB_ID_t e_RAB_ID; + RLCMode_t rlc_Mode_transferred; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c new file mode 100644 index 0000000..44134ae --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_specs_1 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h new file mode 100644 index 0000000..2a24474 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_H_ +#define _E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList */ +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c new file mode 100644 index 0000000..56f2d16 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToReleased-ModAckItem.h" + +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h" +#include "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_Admitted_ToReleased_ModAckItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToReleased_ModAckItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToReleased_ModAckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_Admitted_ToReleased_ModAckItem_specs_1 = { + sizeof(struct E_RABs_Admitted_ToReleased_ModAckItem), + offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToReleased_ModAckItem, present), + sizeof(((struct E_RABs_Admitted_ToReleased_ModAckItem *)0)->present), + asn_MAP_E_RABs_Admitted_ToReleased_ModAckItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem = { + "E-RABs-Admitted-ToReleased-ModAckItem", + "E-RABs-Admitted-ToReleased-ModAckItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_Admitted_ToReleased_ModAckItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_Admitted_ToReleased_ModAckItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToReleased_ModAckItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h new file mode 100644 index 0000000..4334d07 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-ModAckItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToReleased_ModAckItem_H_ +#define _E_RABs_Admitted_ToReleased_ModAckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToReleased_ModAckItem_PR { + E_RABs_Admitted_ToReleased_ModAckItem_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToReleased_ModAckItem_PR_sCG_Bearer, + E_RABs_Admitted_ToReleased_ModAckItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_Admitted_ToReleased_ModAckItem_PR; + +/* Forward declarations */ +struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer; +struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer; + +/* E-RABs-Admitted-ToReleased-ModAckItem */ +typedef struct E_RABs_Admitted_ToReleased_ModAckItem { + E_RABs_Admitted_ToReleased_ModAckItem_PR present; + union E_RABs_Admitted_ToReleased_ModAckItem_u { + struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToReleased_ModAckItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToReleased_ModAckItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c new file mode 100644 index 0000000..9aade08 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-Admitted-ToReleased-SgNBModAck-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration), + offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration, present), + sizeof(((struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToReleased_SgNBModAck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P68, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToReleased_SgNBModAck_Item_specs_1 = { + sizeof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item), + offsetof(struct E_RABs_Admitted_ToReleased_SgNBModAck_Item, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_Admitted_ToReleased_SgNBModAck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item = { + "E-RABs-Admitted-ToReleased-SgNBModAck-Item", + "E-RABs-Admitted-ToReleased-SgNBModAck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1, + sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToReleased_SgNBModAck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToReleased_SgNBModAck_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h new file mode 100644 index 0000000..bfaf1a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-Admitted-ToReleased-SgNBModAck-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_Admitted_ToReleased_SgNBModAck_Item_H_ +#define _E_RABs_Admitted_ToReleased_SgNBModAck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR { + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent; + +/* E-RABs-Admitted-ToReleased-SgNBModAck-Item */ +typedef struct E_RABs_Admitted_ToReleased_SgNBModAck_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration { + E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_PR present; + union E_RABs_Admitted_ToReleased_SgNBModAck_Item__resource_configuration_u { + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToReleased_SgNBModAck_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_Admitted_ToReleased_SgNBModAck_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..8a0ff67 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 2, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, secondary_meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P77, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* secondary-meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..2e20229 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent { + struct GTPtunnelEndpoint *secondary_meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..0ef23a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P76, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..24c2e33 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c new file mode 100644 index 0000000..a7cffd2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P75, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h new file mode 100644 index 0000000..488c750 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConf-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConf_Item_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConf_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent; + +/* E-RABs-AdmittedToBeModified-SgNBModConf-Item */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration { + E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_Item__resource_configuration_u { + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConf_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c new file mode 100644 index 0000000..4b39aa3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-AdmittedToBeModified-SgNBModConfList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_AdmittedToBeModified_SgNBModConfList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConfList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConfList_specs_1 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConfList), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConfList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList = { + "E-RABs-AdmittedToBeModified-SgNBModConfList", + "E-RABs-AdmittedToBeModified-SgNBModConfList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_AdmittedToBeModified_SgNBModConfList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConfList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConfList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h new file mode 100644 index 0000000..633782f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-AdmittedToBeModified-SgNBModConfList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_AdmittedToBeModified_SgNBModConfList_H_ +#define _E_RABs_AdmittedToBeModified_SgNBModConfList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-AdmittedToBeModified-SgNBModConfList */ +typedef struct E_RABs_AdmittedToBeModified_SgNBModConfList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConfList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_AdmittedToBeModified_SgNBModConfList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c new file mode 100644 index 0000000..0e17712 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-DataForwardingAddress-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_Item, dl_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_DataForwardingAddress_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P103, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_DataForwardingAddress_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_DataForwardingAddress_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_Item_specs_1 = { + sizeof(struct E_RABs_DataForwardingAddress_Item), + offsetof(struct E_RABs_DataForwardingAddress_Item, _asn_ctx), + asn_MAP_E_RABs_DataForwardingAddress_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_DataForwardingAddress_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_Item = { + "E-RABs-DataForwardingAddress-Item", + "E-RABs-DataForwardingAddress-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h new file mode 100644 index 0000000..edea052 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_DataForwardingAddress_Item_H_ +#define _E_RABs_DataForwardingAddress_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-DataForwardingAddress-Item */ +typedef struct E_RABs_DataForwardingAddress_Item { + E_RAB_ID_t e_RAB_ID; + GTPtunnelEndpoint_t dl_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_DataForwardingAddress_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c new file mode 100644 index 0000000..4be41db --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-DataForwardingAddress-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_DataForwardingAddress_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_DataForwardingAddress_List_specs_1 = { + sizeof(struct E_RABs_DataForwardingAddress_List), + offsetof(struct E_RABs_DataForwardingAddress_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_List = { + "E-RABs-DataForwardingAddress-List", + "E-RABs-DataForwardingAddress-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_DataForwardingAddress_List_tags_1, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_DataForwardingAddress_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_DataForwardingAddress_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h new file mode 100644 index 0000000..8012dc4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-DataForwardingAddress-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_DataForwardingAddress_List_H_ +#define _E_RABs_DataForwardingAddress_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-DataForwardingAddress-List */ +typedef struct E_RABs_DataForwardingAddress_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_DataForwardingAddress_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c new file mode 100644 index 0000000..1781154 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToCounterCheck-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_SubjectToCounterCheck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_SubjectToCounterCheck_List_specs_1 = { + sizeof(struct E_RABs_SubjectToCounterCheck_List), + offsetof(struct E_RABs_SubjectToCounterCheck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheck_List = { + "E-RABs-SubjectToCounterCheck-List", + "E-RABs-SubjectToCounterCheck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheck_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_SubjectToCounterCheck_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheck_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_SubjectToCounterCheck_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h new file mode 100644 index 0000000..aef1c5c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheck-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToCounterCheck_List_H_ +#define _E_RABs_SubjectToCounterCheck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-SubjectToCounterCheck-List */ +typedef struct E_RABs_SubjectToCounterCheck_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheck_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToCounterCheck_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c new file mode 100644 index 0000000..ba8906b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.c @@ -0,0 +1,248 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToCounterCheckItem.h" + +#include "ProtocolExtensionContainer.h" +static int +uL_Count_3_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +dL_Count_4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_uL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static int +memb_dL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static asn_per_constraints_t asn_PER_type_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_specifics_t asn_SPC_uL_Count_specs_3 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_uL_Count_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_uL_Count_3 = { + "uL-Count", + "uL-Count", + &asn_OP_NativeInteger, + asn_DEF_uL_Count_tags_3, + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]) - 1, /* 1 */ + asn_DEF_uL_Count_tags_3, /* Same as above */ + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_uL_Count_constr_3, uL_Count_3_constraint }, + 0, 0, /* No members */ + &asn_SPC_uL_Count_specs_3 /* Additional specs */ +}; + +static const asn_INTEGER_specifics_t asn_SPC_dL_Count_specs_4 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_dL_Count_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_dL_Count_4 = { + "dL-Count", + "dL-Count", + &asn_OP_NativeInteger, + asn_DEF_dL_Count_tags_4, + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]) - 1, /* 1 */ + asn_DEF_dL_Count_tags_4, /* Same as above */ + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_dL_Count_constr_4, dL_Count_4_constraint }, + 0, 0, /* No members */ + &asn_SPC_dL_Count_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItem, uL_Count), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_uL_Count_3, + 0, + { 0, &asn_PER_memb_uL_Count_constr_3, memb_uL_Count_constraint_1 }, + 0, 0, /* No default value */ + "uL-Count" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItem, dL_Count), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_dL_Count_4, + 0, + { 0, &asn_PER_memb_dL_Count_constr_4, memb_dL_Count_constraint_1 }, + 0, 0, /* No default value */ + "dL-Count" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToCounterCheckItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_SubjectToCounterCheckItem_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToCounterCheckItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItem_specs_1 = { + sizeof(struct E_RABs_SubjectToCounterCheckItem), + offsetof(struct E_RABs_SubjectToCounterCheckItem, _asn_ctx), + asn_MAP_E_RABs_SubjectToCounterCheckItem_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_SubjectToCounterCheckItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItem = { + "E-RABs-SubjectToCounterCheckItem", + "E-RABs-SubjectToCounterCheckItem", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItem_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h new file mode 100644 index 0000000..434ac97 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToCounterCheckItem.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToCounterCheckItem_H_ +#define _E_RABs_SubjectToCounterCheckItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-SubjectToCounterCheckItem */ +typedef struct E_RABs_SubjectToCounterCheckItem { + E_RAB_ID_t e_RAB_ID; + unsigned long uL_Count; + unsigned long dL_Count; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheckItem_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_uL_Count_3; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_dL_Count_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToCounterCheckItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c new file mode 100644 index 0000000..c5f60dd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.c @@ -0,0 +1,248 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToSgNBCounterCheck-Item.h" + +#include "ProtocolExtensionContainer.h" +static int +uL_Count_3_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +dL_Count_4_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static int +memb_uL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static int +memb_dL_Count_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +static asn_per_constraints_t asn_PER_type_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_uL_Count_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dL_Count_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_specifics_t asn_SPC_uL_Count_specs_3 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_uL_Count_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_uL_Count_3 = { + "uL-Count", + "uL-Count", + &asn_OP_NativeInteger, + asn_DEF_uL_Count_tags_3, + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]) - 1, /* 1 */ + asn_DEF_uL_Count_tags_3, /* Same as above */ + sizeof(asn_DEF_uL_Count_tags_3) + /sizeof(asn_DEF_uL_Count_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_uL_Count_constr_3, uL_Count_3_constraint }, + 0, 0, /* No members */ + &asn_SPC_uL_Count_specs_3 /* Additional specs */ +}; + +static const asn_INTEGER_specifics_t asn_SPC_dL_Count_specs_4 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_dL_Count_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_dL_Count_4 = { + "dL-Count", + "dL-Count", + &asn_OP_NativeInteger, + asn_DEF_dL_Count_tags_4, + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]) - 1, /* 1 */ + asn_DEF_dL_Count_tags_4, /* Same as above */ + sizeof(asn_DEF_dL_Count_tags_4) + /sizeof(asn_DEF_dL_Count_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_dL_Count_constr_4, dL_Count_4_constraint }, + 0, 0, /* No members */ + &asn_SPC_dL_Count_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, uL_Count), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_uL_Count_3, + 0, + { 0, &asn_PER_memb_uL_Count_constr_3, memb_uL_Count_constraint_1 }, + 0, 0, /* No default value */ + "uL-Count" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, dL_Count), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_dL_Count_4, + 0, + { 0, &asn_PER_memb_dL_Count_constr_4, memb_dL_Count_constraint_1 }, + 0, 0, /* No default value */ + "dL-Count" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P86, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Count */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_Item_specs_1 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_Item), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_Item, _asn_ctx), + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item = { + "E-RABs-SubjectToSgNBCounterCheck-Item", + "E-RABs-SubjectToSgNBCounterCheck-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h new file mode 100644 index 0000000..9a6973f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-Item.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToSgNBCounterCheck_Item_H_ +#define _E_RABs_SubjectToSgNBCounterCheck_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-SubjectToSgNBCounterCheck-Item */ +typedef struct E_RABs_SubjectToSgNBCounterCheck_Item { + E_RAB_ID_t e_RAB_ID; + unsigned long uL_Count; + unsigned long dL_Count; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_uL_Count_3; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_dL_Count_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToSgNBCounterCheck_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c new file mode 100644 index 0000000..64b3122 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToSgNBCounterCheck-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_SubjectToSgNBCounterCheck_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_List_specs_1 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_List), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List = { + "E-RABs-SubjectToSgNBCounterCheck-List", + "E-RABs-SubjectToSgNBCounterCheck-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_SubjectToSgNBCounterCheck_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h new file mode 100644 index 0000000..f8071a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToSgNBCounterCheck-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToSgNBCounterCheck_List_H_ +#define _E_RABs_SubjectToSgNBCounterCheck_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-SubjectToSgNBCounterCheck-List */ +typedef struct E_RABs_SubjectToSgNBCounterCheck_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToSgNBCounterCheck_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c new file mode 100644 index 0000000..8d30dad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToStatusTransfer-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, receiveStatusofULPDCPSDUs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReceiveStatusofULPDCPSDUs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "receiveStatusofULPDCPSDUs" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, uL_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_COUNTvalue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-COUNTvalue" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, dL_COUNTvalue), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_COUNTvalue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-COUNTvalue" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_SubjectToStatusTransfer_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_SubjectToStatusTransfer_Item_oms_1[] = { 1, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToStatusTransfer_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* receiveStatusofULPDCPSDUs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-COUNTvalue */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_Item_specs_1 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_Item), + offsetof(struct E_RABs_SubjectToStatusTransfer_Item, _asn_ctx), + asn_MAP_E_RABs_SubjectToStatusTransfer_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_SubjectToStatusTransfer_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_Item = { + "E-RABs-SubjectToStatusTransfer-Item", + "E-RABs-SubjectToStatusTransfer-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h new file mode 100644 index 0000000..d5f2cbf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-Item.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToStatusTransfer_Item_H_ +#define _E_RABs_SubjectToStatusTransfer_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "ReceiveStatusofULPDCPSDUs.h" +#include "COUNTvalue.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-SubjectToStatusTransfer-Item */ +typedef struct E_RABs_SubjectToStatusTransfer_Item { + E_RAB_ID_t e_RAB_ID; + ReceiveStatusofULPDCPSDUs_t *receiveStatusofULPDCPSDUs; /* OPTIONAL */ + COUNTvalue_t uL_COUNTvalue; + COUNTvalue_t dL_COUNTvalue; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToStatusTransfer_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c new file mode 100644 index 0000000..be2b7f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-SubjectToStatusTransfer-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_SubjectToStatusTransfer_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_List_specs_1 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_List), + offsetof(struct E_RABs_SubjectToStatusTransfer_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_List = { + "E-RABs-SubjectToStatusTransfer-List", + "E-RABs-SubjectToStatusTransfer-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_SubjectToStatusTransfer_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h new file mode 100644 index 0000000..7c161df --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-SubjectToStatusTransfer-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_SubjectToStatusTransfer_List_H_ +#define _E_RABs_SubjectToStatusTransfer_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-SubjectToStatusTransfer-List */ +typedef struct E_RABs_SubjectToStatusTransfer_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_SubjectToStatusTransfer_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c new file mode 100644 index 0000000..fab32f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-Item-SCG-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_oms_1[] = { 2, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_Item_SCG_Bearer), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_Item_SCG_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer = { + "E-RABs-ToBeAdded-Item-SCG-Bearer", + "E-RABs-ToBeAdded-Item-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h new file mode 100644 index 0000000..2e98459 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-SCG-Bearer.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_Item_SCG_Bearer_H_ +#define _E_RABs_ToBeAdded_Item_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-Item-SCG-Bearer */ +typedef struct E_RABs_ToBeAdded_Item_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_Item_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c new file mode 100644 index 0000000..ad3ccf1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-Item-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, meNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_Item_Split_Bearer), + offsetof(struct E_RABs_ToBeAdded_Item_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_Item_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer = { + "E-RABs-ToBeAdded-Item-Split-Bearer", + "E-RABs-ToBeAdded-Item-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_Split_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h new file mode 100644 index 0000000..dcae2ad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item-Split-Bearer.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_Item_Split_Bearer_H_ +#define _E_RABs_ToBeAdded_Item_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-Item-Split-Bearer */ +typedef struct E_RABs_ToBeAdded_Item_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_Item_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c new file mode 100644 index 0000000..1721c50 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-Item.h" + +#include "E-RABs-ToBeAdded-Item-SCG-Bearer.h" +#include "E-RABs-ToBeAdded-Item-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_Item, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_Item_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_Item, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_Item_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_Item), + offsetof(struct E_RABs_ToBeAdded_Item, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_Item, present), + sizeof(((struct E_RABs_ToBeAdded_Item *)0)->present), + asn_MAP_E_RABs_ToBeAdded_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item = { + "E-RABs-ToBeAdded-Item", + "E-RABs-ToBeAdded-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_Item_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h new file mode 100644 index 0000000..c4ca889 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-Item.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_Item_H_ +#define _E_RABs_ToBeAdded_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_Item_PR { + E_RABs_ToBeAdded_Item_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_Item_PR_sCG_Bearer, + E_RABs_ToBeAdded_Item_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_Item_PR; + +/* Forward declarations */ +struct E_RABs_ToBeAdded_Item_SCG_Bearer; +struct E_RABs_ToBeAdded_Item_Split_Bearer; + +/* E-RABs-ToBeAdded-Item */ +typedef struct E_RABs_ToBeAdded_Item { + E_RABs_ToBeAdded_Item_PR present; + union E_RABs_ToBeAdded_Item_u { + struct E_RABs_ToBeAdded_Item_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeAdded_Item_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c new file mode 100644 index 0000000..3d87065 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-List-ModReq.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_List_ModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_List_ModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_List_ModReq_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_List_ModReq), + offsetof(struct E_RABs_ToBeAdded_List_ModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List_ModReq = { + "E-RABs-ToBeAdded-List-ModReq", + "E-RABs-ToBeAdded-List-ModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_ModReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_List_ModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_List_ModReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_List_ModReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h new file mode 100644 index 0000000..081b286 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List-ModReq.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_List_ModReq_H_ +#define _E_RABs_ToBeAdded_List_ModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-List-ModReq */ +typedef struct E_RABs_ToBeAdded_List_ModReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_List_ModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List_ModReq; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_List_ModReq_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_List_ModReq_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_List_ModReq_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_List_ModReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c new file mode 100644 index 0000000..4251ffa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_List_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_List), + offsetof(struct E_RABs_ToBeAdded_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List = { + "E-RABs-ToBeAdded-List", + "E-RABs-ToBeAdded-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h new file mode 100644 index 0000000..e63ab4a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_List_H_ +#define _E_RABs_ToBeAdded_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-List */ +typedef struct E_RABs_ToBeAdded_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c new file mode 100644 index 0000000..1c40484 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_oms_1[] = { 2, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer = { + "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer", + "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h new file mode 100644 index 0000000..6aee5a7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-ModReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_ModReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c new file mode 100644 index 0000000..e4b950c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, meNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer = { + "E-RABs-ToBeAdded-ModReqItem-Split-Bearer", + "E-RABs-ToBeAdded-ModReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h new file mode 100644 index 0000000..cd1753e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_ModReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeAdded_ModReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-ModReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_ModReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c new file mode 100644 index 0000000..a50bbe0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-ModReqItem.h" + +#include "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_ModReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem), + offsetof(struct E_RABs_ToBeAdded_ModReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItem, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItem *)0)->present), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem = { + "E-RABs-ToBeAdded-ModReqItem", + "E-RABs-ToBeAdded-ModReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_ModReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h new file mode 100644 index 0000000..37ebe95 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-ModReqItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_ModReqItem_H_ +#define _E_RABs_ToBeAdded_ModReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_ModReqItem_PR { + E_RABs_ToBeAdded_ModReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ModReqItem_PR_sCG_Bearer, + E_RABs_ToBeAdded_ModReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_ModReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer; +struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer; + +/* E-RABs-ToBeAdded-ModReqItem */ +typedef struct E_RABs_ToBeAdded_ModReqItem { + E_RABs_ToBeAdded_ModReqItem_PR present; + union E_RABs_ToBeAdded_ModReqItem_u { + struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_ModReqItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..fd713c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,128 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, requested_SCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-SCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, secondary_meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_oms_1[] = { 2, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* secondary-meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..707b5aa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent { + E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_UL_GTP_TEIDatPDCP; + struct GTPtunnelEndpoint *secondary_meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t rlc_Mode; + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..6154860 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,128 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h" + +#include "GBR-QosInformation.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, full_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, max_MCG_admit_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "max-MCG-admit-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, meNB_DL_GTP_TEIDatMCG), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-DL-GTP-TEIDatMCG" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* full-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* max-MCG-admit-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* meNB-DL-GTP-TEIDatMCG */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..b86a5a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GBR_QosInformation; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent { + E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; + struct GBR_QosInformation *max_MCG_admit_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_DL_GTP_TEIDatMCG; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c new file mode 100644 index 0000000..90b099f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.c @@ -0,0 +1,172 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_5[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_5 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_5, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_5 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_5, CHOICE_constraint }, + asn_MBR_resource_configuration_5, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, drb_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DRB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "drb-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* drb-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item = { + "E-RABs-ToBeAdded-SgNBAddReq-Item", + "E-RABs-ToBeAdded-SgNBAddReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h new file mode 100644 index 0000000..0e946ee --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReq-Item.h @@ -0,0 +1,99 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReq_Item_H_ +#define _E_RABs_ToBeAdded_SgNBAddReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "DRB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR { + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeAdded-SgNBAddReq-Item */ +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item { + E_RAB_ID_t e_RAB_ID; + DRB_ID_t drb_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration { + E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_Item__resource_configuration_u { + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReq_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c new file mode 100644 index 0000000..b7d7f3f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBAddReqList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_SgNBAddReqList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReqList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReqList_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReqList), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList = { + "E-RABs-ToBeAdded-SgNBAddReqList", + "E-RABs-ToBeAdded-SgNBAddReqList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_SgNBAddReqList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReqList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReqList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h new file mode 100644 index 0000000..d8656bd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBAddReqList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBAddReqList_H_ +#define _E_RABs_ToBeAdded_SgNBAddReqList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-SgNBAddReqList */ +typedef struct E_RABs_ToBeAdded_SgNBAddReqList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReqList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBAddReqList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..f438270 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,128 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, requested_SCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-SCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, secondary_meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, rlc_Mode), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P55, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1[] = { 2, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* secondary-meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rlc-Mode */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..3a40e1e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent { + E_RAB_Level_QoS_Parameters_t requested_SCG_E_RAB_Level_QoS_Parameters; + GTPtunnelEndpoint_t meNB_UL_GTP_TEIDatPDCP; + struct GTPtunnelEndpoint *secondary_meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + RLCMode_t rlc_Mode; + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..bf0e74a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,128 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h" + +#include "GBR-QosInformation.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, full_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, max_MN_admit_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "max-MN-admit-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, meNB_DL_GTP_TEIDatMCG), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-DL-GTP-TEIDatMCG" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P54, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_oms_1[] = { 1, 2, 3, 5 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* full-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* max-MN-admit-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* meNB-DL-GTP-TEIDatMCG */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_1, + 6, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..47aac7e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GBR_QosInformation; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent { + E_RAB_Level_QoS_Parameters_t full_E_RAB_Level_QoS_Parameters; + struct GBR_QosInformation *max_MN_admit_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_DL_GTP_TEIDatMCG; /* OPTIONAL */ + GTPtunnelEndpoint_t s1_UL_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c new file mode 100644 index 0000000..343b68f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.c @@ -0,0 +1,172 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_5[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_5 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_5, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_5 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_5, CHOICE_constraint }, + asn_MBR_resource_configuration_5, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, drb_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DRB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "drb-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P53, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* drb-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item = { + "E-RABs-ToBeAdded-SgNBModReq-Item", + "E-RABs-ToBeAdded-SgNBModReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h new file mode 100644 index 0000000..b57c6d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-Item.h @@ -0,0 +1,99 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_Item_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "DRB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR { + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeAdded-SgNBModReq-Item */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item { + E_RAB_ID_t e_RAB_ID; + DRB_ID_t drb_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration { + E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_PR present; + union E_RABs_ToBeAdded_SgNBModReq_Item__resource_configuration_u { + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c new file mode 100644 index 0000000..168f161 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeAdded-SgNBModReq-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_SgNBModReq_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_List_specs_1 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_List), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List = { + "E-RABs-ToBeAdded-SgNBModReq-List", + "E-RABs-ToBeAdded-SgNBModReq-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeAdded_SgNBModReq_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h new file mode 100644 index 0000000..0c96858 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeAdded-SgNBModReq-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeAdded_SgNBModReq_List_H_ +#define _E_RABs_ToBeAdded_SgNBModReq_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeAdded-SgNBModReq-List */ +typedef struct E_RABs_ToBeAdded_SgNBModReq_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeAdded_SgNBModReq_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeAdded_SgNBModReq_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c new file mode 100644 index 0000000..4a59f90 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-List-ModReq.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_List_ModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_List_ModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_List_ModReq_specs_1 = { + sizeof(struct E_RABs_ToBeModified_List_ModReq), + offsetof(struct E_RABs_ToBeModified_List_ModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_List_ModReq = { + "E-RABs-ToBeModified-List-ModReq", + "E-RABs-ToBeModified-List-ModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_List_ModReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeModified_List_ModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeModified_List_ModReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeModified_List_ModReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h new file mode 100644 index 0000000..1dd50a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-List-ModReq.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_List_ModReq_H_ +#define _E_RABs_ToBeModified_List_ModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeModified-List-ModReq */ +typedef struct E_RABs_ToBeModified_List_ModReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_List_ModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_List_ModReq; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_List_ModReq_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_List_ModReq_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_List_ModReq_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_List_ModReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c new file mode 100644 index 0000000..4924450 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c @@ -0,0 +1,108 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer = { + "E-RABs-ToBeModified-ModReqItem-SCG-Bearer", + "E-RABs-ToBeModified-ModReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h new file mode 100644 index 0000000..fc47010 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_ModReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeModified_ModReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-ModReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct E_RAB_Level_QoS_Parameters *e_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *s1_UL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_ModReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c new file mode 100644 index 0000000..a3b0809 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.c @@ -0,0 +1,108 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-ModReqItem-Split-Bearer.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, meNB_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer = { + "E-RABs-ToBeModified-ModReqItem-Split-Bearer", + "E-RABs-ToBeModified-ModReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h new file mode 100644 index 0000000..414843b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem-Split-Bearer.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_ModReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeModified_ModReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-ModReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeModified_ModReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct E_RAB_Level_QoS_Parameters *e_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_ModReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c new file mode 100644 index 0000000..4d7721c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-ModReqItem.h" + +#include "E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeModified-ModReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_ModReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem), + offsetof(struct E_RABs_ToBeModified_ModReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItem, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItem *)0)->present), + asn_MAP_E_RABs_ToBeModified_ModReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem = { + "E-RABs-ToBeModified-ModReqItem", + "E-RABs-ToBeModified-ModReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeModified_ModReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h new file mode 100644 index 0000000..8a3f9a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-ModReqItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_ModReqItem_H_ +#define _E_RABs_ToBeModified_ModReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeModified_ModReqItem_PR { + E_RABs_ToBeModified_ModReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_ModReqItem_PR_sCG_Bearer, + E_RABs_ToBeModified_ModReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeModified_ModReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer; +struct E_RABs_ToBeModified_ModReqItem_Split_Bearer; + +/* E-RABs-ToBeModified-ModReqItem */ +typedef struct E_RABs_ToBeModified_ModReqItem { + E_RABs_ToBeModified_ModReqItem_PR present; + union E_RABs_ToBeModified_ModReqItem_u { + struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeModified_ModReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_ModReqItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..aee46b3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,109 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GTPtunnelEndpoint.h" +#include "ULConfiguration.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 4, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, requested_SCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-SCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, meNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P58, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..cf2c603 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GTPtunnelEndpoint; +struct ULConfiguration; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent { + struct E_RAB_Level_QoS_Parameters *requested_SCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..6dd3e6f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "GBR-QosInformation.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 5, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, full_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "full-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, max_MN_admit_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GBR_QosInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "max-MN-admit-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, meNB_DL_GTP_TEIDatMCG), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-DL-GTP-TEIDatMCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, s1_UL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-UL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P57, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* full-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* max-MN-admit-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* meNB-DL-GTP-TEIDatMCG */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-UL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..0d0edee --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct GBR_QosInformation; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent { + struct E_RAB_Level_QoS_Parameters *full_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GBR_QosInformation *max_MN_admit_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct GTPtunnelEndpoint *meNB_DL_GTP_TEIDatMCG; /* OPTIONAL */ + struct GTPtunnelEndpoint *s1_UL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c new file mode 100644 index 0000000..10b3f32 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P56, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item = { + "E-RABs-ToBeModified-SgNBModReq-Item", + "E-RABs-ToBeModified-SgNBModReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h new file mode 100644 index 0000000..d00d138 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_Item_H_ +#define _E_RABs_ToBeModified_SgNBModReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR { + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeModified-SgNBModReq-Item */ +typedef struct E_RABs_ToBeModified_SgNBModReq_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration { + E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_PR present; + union E_RABs_ToBeModified_SgNBModReq_Item__resource_configuration_u { + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c new file mode 100644 index 0000000..9f42580 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReq-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_SgNBModReq_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_List_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_List), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_List = { + "E-RABs-ToBeModified-SgNBModReq-List", + "E-RABs-ToBeModified-SgNBModReq-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeModified_SgNBModReq_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h new file mode 100644 index 0000000..c29b7d1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReq-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReq_List_H_ +#define _E_RABs_ToBeModified_SgNBModReq_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeModified-SgNBModReq-List */ +typedef struct E_RABs_ToBeModified_SgNBModReq_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_SgNBModReq_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReq_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..cf29b12 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, secondary_sgNB_DL_GTP_TEIDatSCG), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondary-sgNB-DL-GTP-TEIDatSCG" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P74, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondary-sgNB-DL-GTP-TEIDatSCG */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..d8bbeaf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent { + struct GTPtunnelEndpoint *sgNB_DL_GTP_TEIDatSCG; /* OPTIONAL */ + struct GTPtunnelEndpoint *secondary_sgNB_DL_GTP_TEIDatSCG; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..80259da --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h" + +#include "E-RAB-Level-QoS-Parameters.h" +#include "ULConfiguration.h" +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 5, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, requested_MCG_E_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "requested-MCG-E-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 4, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, uL_Configuration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Configuration" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, sgNB_UL_GTP_TEIDatPDCP), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UL-GTP-TEIDatPDCP" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, s1_DL_GTP_TEIDatSgNB), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "s1-DL-GTP-TEIDatSgNB" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P73, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-MCG-E-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Configuration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sgNB-UL-GTP-TEIDatPDCP */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s1-DL-GTP-TEIDatSgNB */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..3eb7ce1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct E_RAB_Level_QoS_Parameters; +struct ULConfiguration; +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent { + struct E_RAB_Level_QoS_Parameters *requested_MCG_E_RAB_Level_QoS_Parameters; /* OPTIONAL */ + struct ULConfiguration *uL_Configuration; /* OPTIONAL */ + struct GTPtunnelEndpoint *sgNB_UL_GTP_TEIDatPDCP; /* OPTIONAL */ + struct GTPtunnelEndpoint *s1_DL_GTP_TEIDatSgNB; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c new file mode 100644 index 0000000..dd9372e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqd-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P72, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item = { + "E-RABs-ToBeModified-SgNBModReqd-Item", + "E-RABs-ToBeModified-SgNBModReqd-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h new file mode 100644 index 0000000..64bbb5f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqd-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqd_Item_H_ +#define _E_RABs_ToBeModified_SgNBModReqd_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR { + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeModified-SgNBModReqd-Item */ +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration { + E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_PR present; + union E_RABs_ToBeModified_SgNBModReqd_Item__resource_configuration_u { + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqd_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c new file mode 100644 index 0000000..c3f94b3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeModified-SgNBModReqdList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeModified_SgNBModReqdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqdList_specs_1 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqdList), + offsetof(struct E_RABs_ToBeModified_SgNBModReqdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqdList = { + "E-RABs-ToBeModified-SgNBModReqdList", + "E-RABs-ToBeModified-SgNBModReqdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeModified_SgNBModReqdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqdList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqdList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h new file mode 100644 index 0000000..3e31603 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeModified-SgNBModReqdList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeModified_SgNBModReqdList_H_ +#define _E_RABs_ToBeModified_SgNBModReqdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeModified-SgNBModReqdList */ +typedef struct E_RABs_ToBeModified_SgNBModReqdList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeModified_SgNBModReqdList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c new file mode 100644 index 0000000..2eb984d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-List-ModReq.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_ModReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_ModReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_ModReq_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_List_ModReq), + offsetof(struct E_RABs_ToBeReleased_List_ModReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_ModReq = { + "E-RABs-ToBeReleased-List-ModReq", + "E-RABs-ToBeReleased-List-ModReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_ModReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_List_ModReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_List_ModReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_List_ModReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h new file mode 100644 index 0000000..92096f5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-ModReq.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_List_ModReq_H_ +#define _E_RABs_ToBeReleased_List_ModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-List-ModReq */ +typedef struct E_RABs_ToBeReleased_List_ModReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_List_ModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_ModReq; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_ModReq_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_ModReq_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_ModReq_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_List_ModReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c new file mode 100644 index 0000000..addfb9a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-List-RelConf.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_RelConf_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_RelConf_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_RelConf_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_List_RelConf), + offsetof(struct E_RABs_ToBeReleased_List_RelConf, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelConf = { + "E-RABs-ToBeReleased-List-RelConf", + "E-RABs-ToBeReleased-List-RelConf", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelConf_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_List_RelConf_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_List_RelConf_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_List_RelConf_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h new file mode 100644 index 0000000..c419ae1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelConf.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_List_RelConf_H_ +#define _E_RABs_ToBeReleased_List_RelConf_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-List-RelConf */ +typedef struct E_RABs_ToBeReleased_List_RelConf { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_List_RelConf_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelConf; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_List_RelConf_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c new file mode 100644 index 0000000..8024145 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-List-RelReq.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_List_RelReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_List_RelReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_List_RelReq_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_List_RelReq), + offsetof(struct E_RABs_ToBeReleased_List_RelReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelReq = { + "E-RABs-ToBeReleased-List-RelReq", + "E-RABs-ToBeReleased-List-RelReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_List_RelReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_List_RelReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_List_RelReq_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_List_RelReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h new file mode 100644 index 0000000..95df651 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-List-RelReq.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_List_RelReq_H_ +#define _E_RABs_ToBeReleased_List_RelReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-List-RelReq */ +typedef struct E_RABs_ToBeReleased_List_RelReq { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_List_RelReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_List_RelReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_List_RelReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c new file mode 100644 index 0000000..3e7feee --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer = { + "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer", + "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h new file mode 100644 index 0000000..0d954f0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-ModReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c new file mode 100644 index 0000000..b3863d1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer = { + "E-RABs-ToBeReleased-ModReqItem-Split-Bearer", + "E-RABs-ToBeReleased-ModReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h new file mode 100644 index 0000000..b790de9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeReleased_ModReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-ModReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c new file mode 100644 index 0000000..084b253 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqItem.h" + +#include "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_ModReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem), + offsetof(struct E_RABs_ToBeReleased_ModReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItem, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItem *)0)->present), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem = { + "E-RABs-ToBeReleased-ModReqItem", + "E-RABs-ToBeReleased-ModReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_ModReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h new file mode 100644 index 0000000..551ba7f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqItem_H_ +#define _E_RABs_ToBeReleased_ModReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_ModReqItem_PR { + E_RABs_ToBeReleased_ModReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_ModReqItem_PR_sCG_Bearer, + E_RABs_ToBeReleased_ModReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_ModReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer; +struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer; + +/* E-RABs-ToBeReleased-ModReqItem */ +typedef struct E_RABs_ToBeReleased_ModReqItem { + E_RABs_ToBeReleased_ModReqItem_PR present; + union E_RABs_ToBeReleased_ModReqItem_u { + struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c new file mode 100644 index 0000000..0c67e12 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqd.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_ModReqd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqd_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqd_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqd), + offsetof(struct E_RABs_ToBeReleased_ModReqd, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqd = { + "E-RABs-ToBeReleased-ModReqd", + "E-RABs-ToBeReleased-ModReqd", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqd_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_ModReqd_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqd_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_ModReqd_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h new file mode 100644 index 0000000..5d458ef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqd.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqd_H_ +#define _E_RABs_ToBeReleased_ModReqd_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-ModReqd */ +typedef struct E_RABs_ToBeReleased_ModReqd { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqd; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqd_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c new file mode 100644 index 0000000..b52ab51 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-ModReqdItem.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItem, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_ModReqdItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_ModReqdItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqdItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItem), + offsetof(struct E_RABs_ToBeReleased_ModReqdItem, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqdItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_ModReqdItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItem = { + "E-RABs-ToBeReleased-ModReqdItem", + "E-RABs-ToBeReleased-ModReqdItem", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItem_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h new file mode 100644 index 0000000..0471084 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-ModReqdItem.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_ModReqdItem_H_ +#define _E_RABs_ToBeReleased_ModReqdItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-ModReqdItem */ +typedef struct E_RABs_ToBeReleased_ModReqdItem { + E_RAB_ID_t e_RAB_ID; + Cause_t cause; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqdItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_ModReqdItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c new file mode 100644 index 0000000..4243ec4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer = { + "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer", + "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h new file mode 100644 index 0000000..bb241a6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_H_ +#define _E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelConfItem-SCG-Bearer */ +typedef struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelConfItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c new file mode 100644 index 0000000..0f9a8cc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P40, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer = { + "E-RABs-ToBeReleased-RelConfItem-Split-Bearer", + "E-RABs-ToBeReleased-RelConfItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h new file mode 100644 index 0000000..041a5b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelConfItem_Split_Bearer_H_ +#define _E_RABs_ToBeReleased_RelConfItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelConfItem-Split-Bearer */ +typedef struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelConfItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c new file mode 100644 index 0000000..5ebf4f2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelConfItem.h" + +#include "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h" +#include "E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_RelConfItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem), + offsetof(struct E_RABs_ToBeReleased_RelConfItem, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItem, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItem *)0)->present), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem = { + "E-RABs-ToBeReleased-RelConfItem", + "E-RABs-ToBeReleased-RelConfItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_RelConfItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h new file mode 100644 index 0000000..9a66006 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelConfItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelConfItem_H_ +#define _E_RABs_ToBeReleased_RelConfItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_RelConfItem_PR { + E_RABs_ToBeReleased_RelConfItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelConfItem_PR_sCG_Bearer, + E_RABs_ToBeReleased_RelConfItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_RelConfItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer; +struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer; + +/* E-RABs-ToBeReleased-RelConfItem */ +typedef struct E_RABs_ToBeReleased_RelConfItem { + E_RABs_ToBeReleased_RelConfItem_PR present; + union E_RABs_ToBeReleased_RelConfItem_u { + struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelConfItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c new file mode 100644 index 0000000..62cfc0c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, uL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer = { + "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer", + "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h new file mode 100644 index 0000000..20aa56e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_H_ +#define _E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelReqItem-SCG-Bearer */ +typedef struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *uL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelReqItem_SCG_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c new file mode 100644 index 0000000..714f8cc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, dL_Forwarding_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-Forwarding-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer = { + "E-RABs-ToBeReleased-RelReqItem-Split-Bearer", + "E-RABs-ToBeReleased-RelReqItem-Split-Bearer", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h new file mode 100644 index 0000000..102e7f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelReqItem_Split_Bearer_H_ +#define _E_RABs_ToBeReleased_RelReqItem_Split_Bearer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-RelReqItem-Split-Bearer */ +typedef struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer { + E_RAB_ID_t e_RAB_ID; + struct GTPtunnelEndpoint *dL_Forwarding_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_Split_Bearer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_Bearer_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelReqItem_Split_Bearer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c new file mode 100644 index 0000000..c50a195 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-RelReqItem.h" + +#include "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h" +#include "E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_RelReqItem_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_1[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem, choice.sCG_Bearer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCG-Bearer" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem, choice.split_Bearer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_Bearer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "split-Bearer" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem), + offsetof(struct E_RABs_ToBeReleased_RelReqItem, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItem, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItem *)0)->present), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem = { + "E-RABs-ToBeReleased-RelReqItem", + "E-RABs-ToBeReleased-RelReqItem", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_RelReqItem_constr_1, CHOICE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_1, + 2, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h new file mode 100644 index 0000000..e1c694b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-RelReqItem.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_RelReqItem_H_ +#define _E_RABs_ToBeReleased_RelReqItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_RelReqItem_PR { + E_RABs_ToBeReleased_RelReqItem_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelReqItem_PR_sCG_Bearer, + E_RABs_ToBeReleased_RelReqItem_PR_split_Bearer + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_RelReqItem_PR; + +/* Forward declarations */ +struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer; +struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer; + +/* E-RABs-ToBeReleased-RelReqItem */ +typedef struct E_RABs_ToBeReleased_RelReqItem { + E_RABs_ToBeReleased_RelReqItem_PR present; + union E_RABs_ToBeReleased_RelReqItem_u { + struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer *sCG_Bearer; + struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer *split_Bearer; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_RelReqItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..ef1f7cf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P89, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..b1364fa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..3f269d7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P88, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..668ea8d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c new file mode 100644 index 0000000..76d8067 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConf-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P87, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item = { + "E-RABs-ToBeReleased-SgNBChaConf-Item", + "E-RABs-ToBeReleased-SgNBChaConf-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h new file mode 100644 index 0000000..84911e9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConf-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConf_Item_H_ +#define _E_RABs_ToBeReleased_SgNBChaConf_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBChaConf-Item */ +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConf_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c new file mode 100644 index 0000000..756301d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBChaConfList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBChaConfList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConfList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConfList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConfList), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConfList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList = { + "E-RABs-ToBeReleased-SgNBChaConfList", + "E-RABs-ToBeReleased-SgNBChaConfList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBChaConfList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConfList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConfList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h new file mode 100644 index 0000000..a0b8b9e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBChaConfList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBChaConfList_H_ +#define _E_RABs_ToBeReleased_SgNBChaConfList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBChaConfList */ +typedef struct E_RABs_ToBeReleased_SgNBChaConfList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConfList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBChaConfList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..7643916 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P61, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..74c5266 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..a4c5042 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P60, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..a667158 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c new file mode 100644 index 0000000..ec0eef0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P59, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item = { + "E-RABs-ToBeReleased-SgNBModReq-Item", + "E-RABs-ToBeReleased-SgNBModReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h new file mode 100644 index 0000000..e2df4c8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_Item_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBModReq-Item */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBModReq_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c new file mode 100644 index 0000000..32adc58 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReq-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBModReq_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_List_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_List), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List = { + "E-RABs-ToBeReleased-SgNBModReq-List", + "E-RABs-ToBeReleased-SgNBModReq-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBModReq_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h new file mode 100644 index 0000000..ab85e32 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReq-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReq_List_H_ +#define _E_RABs_ToBeReleased_SgNBModReq_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBModReq-List */ +typedef struct E_RABs_ToBeReleased_SgNBModReq_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBModReq_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReq_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c new file mode 100644 index 0000000..05851c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReqd-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P71, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item = { + "E-RABs-ToBeReleased-SgNBModReqd-Item", + "E-RABs-ToBeReleased-SgNBModReqd-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h new file mode 100644 index 0000000..f08a700 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqd-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReqd_Item_H_ +#define _E_RABs_ToBeReleased_SgNBModReqd_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBModReqd-Item */ +typedef struct E_RABs_ToBeReleased_SgNBModReqd_Item { + E_RAB_ID_t e_RAB_ID; + Cause_t cause; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqd_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReqd_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c new file mode 100644 index 0000000..15c1871 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBModReqdList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBModReqdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqdList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqdList), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList = { + "E-RABs-ToBeReleased-SgNBModReqdList", + "E-RABs-ToBeReleased-SgNBModReqdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBModReqdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqdList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqdList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h new file mode 100644 index 0000000..14b1f60 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBModReqdList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBModReqdList_H_ +#define _E_RABs_ToBeReleased_SgNBModReqdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBModReqdList */ +typedef struct E_RABs_ToBeReleased_SgNBModReqdList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBModReqdList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..2accb2e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P85, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..8bde702 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..60fc2b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P84, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..6e9dd99 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c new file mode 100644 index 0000000..1c483d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConf-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P83, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item = { + "E-RABs-ToBeReleased-SgNBRelConf-Item", + "E-RABs-ToBeReleased-SgNBRelConf-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h new file mode 100644 index 0000000..cc729f0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConf-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConf_Item_H_ +#define _E_RABs_ToBeReleased_SgNBRelConf_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBRelConf-Item */ +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConf_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c new file mode 100644 index 0000000..a8bbd66 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelConfList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBRelConfList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConfList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConfList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConfList), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConfList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList = { + "E-RABs-ToBeReleased-SgNBRelConfList", + "E-RABs-ToBeReleased-SgNBRelConfList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBRelConfList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConfList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConfList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h new file mode 100644 index 0000000..2956652 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelConfList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelConfList_H_ +#define _E_RABs_ToBeReleased_SgNBRelConfList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBRelConfList */ +typedef struct E_RABs_ToBeReleased_SgNBRelConfList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConfList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelConfList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c new file mode 100644 index 0000000..905fe3d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_1[] = { + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P80, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_1, + 1, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h new file mode 100644 index 0000000..2cbad80 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent { + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c new file mode 100644 index 0000000..f8bbfe3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h" + +#include "GTPtunnelEndpoint.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_1[] = { + { ATF_POINTER, 3, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, dL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P79, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h new file mode 100644 index 0000000..6aadf05 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_H_ +#define _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GTPtunnelEndpoint; +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent */ +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent { + struct GTPtunnelEndpoint *uL_GTPtunnelEndpoint; /* OPTIONAL */ + struct GTPtunnelEndpoint *dL_GTPtunnelEndpoint; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c new file mode 100644 index 0000000..4dd037b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.c @@ -0,0 +1,162 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReq-Item.h" + +#include "ProtocolExtensionContainer.h" +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h" +#include "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h" +static asn_per_constraints_t asn_PER_type_resource_configuration_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_resource_configuration_4[] = { + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, choice.sgNBPDCPpresent), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPpresent" + }, + { ATF_POINTER, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, choice.sgNBPDCPnotpresent), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBPDCPnotpresent" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_resource_configuration_tag2el_4[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sgNBPDCPpresent */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sgNBPDCPnotpresent */ +}; +static asn_CHOICE_specifics_t asn_SPC_resource_configuration_specs_4 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration *)0)->present), + asn_MAP_resource_configuration_tag2el_4, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_resource_configuration_4 = { + "resource-configuration", + "resource-configuration", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_resource_configuration_constr_4, CHOICE_constraint }, + asn_MBR_resource_configuration_4, + 2, /* Elements count */ + &asn_SPC_resource_configuration_specs_4 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, en_DC_ResourceConfiguration), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EN_DC_ResourceConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-DC-ResourceConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, resource_configuration), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_resource_configuration_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resource-configuration" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P78, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-DC-ResourceConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resource-configuration */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item = { + "E-RABs-ToBeReleased-SgNBRelReq-Item", + "E-RABs-ToBeReleased-SgNBRelReq-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h new file mode 100644 index 0000000..8f72932 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReq-Item.h @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReq_Item_H_ +#define _E_RABs_ToBeReleased_SgNBRelReq_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "EN-DC-ResourceConfiguration.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR { + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR_sgNBPDCPpresent, + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR_sgNBPDCPnotpresent + /* Extensions may appear below */ + +} E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent; + +/* E-RABs-ToBeReleased-SgNBRelReq-Item */ +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item { + E_RAB_ID_t e_RAB_ID; + EN_DC_ResourceConfiguration_t en_DC_ResourceConfiguration; + struct E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration { + E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_Item__resource_configuration_u { + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent *sgNBPDCPpresent; + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent *sgNBPDCPnotpresent; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } resource_configuration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReq_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c new file mode 100644 index 0000000..53e4be1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReqList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P39, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqList), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList = { + "E-RABs-ToBeReleased-SgNBRelReqList", + "E-RABs-ToBeReleased-SgNBRelReqList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h new file mode 100644 index 0000000..6d48c93 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReqList_H_ +#define _E_RABs_ToBeReleased_SgNBRelReqList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBRelReqList */ +typedef struct E_RABs_ToBeReleased_SgNBRelReqList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReqList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c new file mode 100644 index 0000000..55c14e4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReqd-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, rlc_Mode_transferred), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rlc-Mode-transferred" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P82, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rlc-Mode-transferred */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_Item_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item = { + "E-RABs-ToBeReleased-SgNBRelReqd-Item", + "E-RABs-ToBeReleased-SgNBRelReqd-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_Item_1, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h new file mode 100644 index 0000000..61f0f7f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqd-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReqd_Item_H_ +#define _E_RABs_ToBeReleased_SgNBRelReqd_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "RLCMode.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeReleased-SgNBRelReqd-Item */ +typedef struct E_RABs_ToBeReleased_SgNBRelReqd_Item { + E_RAB_ID_t e_RAB_ID; + RLCMode_t rlc_Mode_transferred; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqd_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReqd_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c new file mode 100644 index 0000000..52e6d91 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeReleased-SgNBRelReqdList.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P41, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqdList_specs_1 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqdList), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList = { + "E-RABs-ToBeReleased-SgNBRelReqdList", + "E-RABs-ToBeReleased-SgNBRelReqdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeReleased_SgNBRelReqdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqdList_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqdList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h new file mode 100644 index 0000000..e6e3b14 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeReleased-SgNBRelReqdList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeReleased_SgNBRelReqdList_H_ +#define _E_RABs_ToBeReleased_SgNBRelReqdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeReleased-SgNBRelReqdList */ +typedef struct E_RABs_ToBeReleased_SgNBRelReqdList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeReleased_SgNBRelReqdList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c new file mode 100644 index 0000000..4578dfc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetup-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_Item, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeSetup_Item, dL_Forwarding), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Forwarding" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_Item, uL_GTPtunnelEndpoint), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GTPtunnelEndpoint" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeSetup_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeSetup_Item_oms_1[] = { 2, 4 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-Forwarding */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_Item_specs_1 = { + sizeof(struct E_RABs_ToBeSetup_Item), + offsetof(struct E_RABs_ToBeSetup_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeSetup_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_Item = { + "E-RABs-ToBeSetup-Item", + "E-RABs-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_Item_1, + 5, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h new file mode 100644 index 0000000..dcc10cb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-Item.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetup_Item_H_ +#define _E_RABs_ToBeSetup_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "DL-Forwarding.h" +#include "GTPtunnelEndpoint.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeSetup-Item */ +typedef struct E_RABs_ToBeSetup_Item { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + DL_Forwarding_t *dL_Forwarding; /* OPTIONAL */ + GTPtunnelEndpoint_t uL_GTPtunnelEndpoint; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetup_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c new file mode 100644 index 0000000..ce81f8e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetup-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_List_specs_1 = { + sizeof(struct E_RABs_ToBeSetup_List), + offsetof(struct E_RABs_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_List = { + "E-RABs-ToBeSetup-List", + "E-RABs-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeSetup_List_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h new file mode 100644 index 0000000..23c64b7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetup_List_H_ +#define _E_RABs_ToBeSetup_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeSetup-List */ +typedef struct E_RABs_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetup_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c new file mode 100644 index 0000000..2cef032 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetup-ListRetrieve.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_ListRetrieve_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ListRetrieve_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_ListRetrieve_specs_1 = { + sizeof(struct E_RABs_ToBeSetup_ListRetrieve), + offsetof(struct E_RABs_ToBeSetup_ListRetrieve, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ListRetrieve = { + "E-RABs-ToBeSetup-ListRetrieve", + "E-RABs-ToBeSetup-ListRetrieve", + &asn_OP_SEQUENCE_OF, + asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ListRetrieve_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_E_RABs_ToBeSetup_ListRetrieve_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_E_RABs_ToBeSetup_ListRetrieve_1, + 1, /* Single element */ + &asn_SPC_E_RABs_ToBeSetup_ListRetrieve_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h new file mode 100644 index 0000000..72252d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetup-ListRetrieve.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetup_ListRetrieve_H_ +#define _E_RABs_ToBeSetup_ListRetrieve_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* E-RABs-ToBeSetup-ListRetrieve */ +typedef struct E_RABs_ToBeSetup_ListRetrieve { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_ListRetrieve_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ListRetrieve; +extern asn_SET_OF_specifics_t asn_SPC_E_RABs_ToBeSetup_ListRetrieve_specs_1; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ListRetrieve_1[1]; +extern asn_per_constraints_t asn_PER_type_E_RABs_ToBeSetup_ListRetrieve_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetup_ListRetrieve_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c new file mode 100644 index 0000000..4f3ea3d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E-RABs-ToBeSetupRetrieve-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, e_RAB_Level_QoS_Parameters), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_Level_QoS_Parameters, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-Level-QoS-Parameters" + }, + { ATF_POINTER, 2, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, bearerType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "bearerType" + }, + { ATF_POINTER, 1, offsetof(struct E_RABs_ToBeSetupRetrieve_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_E_RABs_ToBeSetupRetrieve_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetupRetrieve_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-Level-QoS-Parameters */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bearerType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_Item_specs_1 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_Item), + offsetof(struct E_RABs_ToBeSetupRetrieve_Item, _asn_ctx), + asn_MAP_E_RABs_ToBeSetupRetrieve_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E_RABs_ToBeSetupRetrieve_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_Item = { + "E-RABs-ToBeSetupRetrieve-Item", + "E-RABs-ToBeSetupRetrieve-Item", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1, + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_Item_1, + 4, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h new file mode 100644 index 0000000..0b41344 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E-RABs-ToBeSetupRetrieve-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E_RABs_ToBeSetupRetrieve_Item_H_ +#define _E_RABs_ToBeSetupRetrieve_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "E-RAB-Level-QoS-Parameters.h" +#include "BearerType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* E-RABs-ToBeSetupRetrieve-Item */ +typedef struct E_RABs_ToBeSetupRetrieve_Item { + E_RAB_ID_t e_RAB_ID; + E_RAB_Level_QoS_Parameters_t e_RAB_Level_QoS_Parameters; + BearerType_t *bearerType; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetupRetrieve_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _E_RABs_ToBeSetupRetrieve_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2AP-PDU.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2AP-PDU.c new file mode 100644 index 0000000..00e7bda --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2AP-PDU.c @@ -0,0 +1,98 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2AP-PDU.h" + +#include "InitiatingMessage.h" +#include "SuccessfulOutcome.h" +#include "UnsuccessfulOutcome.h" +static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InitiatingMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiatingMessage" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "successfulOutcome" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { + sizeof(struct E2AP_PDU), + offsetof(struct E2AP_PDU, _asn_ctx), + offsetof(struct E2AP_PDU, present), + sizeof(((struct E2AP_PDU *)0)->present), + asn_MAP_E2AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { + "E2AP-PDU", + "E2AP-PDU", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, + asn_MBR_E2AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2AP-PDU.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2AP-PDU.h new file mode 100644 index 0000000..52c8e1e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2AP-PDU.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2AP_PDU_H_ +#define _E2AP_PDU_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2AP_PDU_PR { + E2AP_PDU_PR_NOTHING, /* No components present */ + E2AP_PDU_PR_initiatingMessage, + E2AP_PDU_PR_successfulOutcome, + E2AP_PDU_PR_unsuccessfulOutcome + /* Extensions may appear below */ + +} E2AP_PDU_PR; + +/* Forward declarations */ +struct InitiatingMessage; +struct SuccessfulOutcome; +struct UnsuccessfulOutcome; + +/* E2AP-PDU */ +typedef struct E2AP_PDU { + E2AP_PDU_PR present; + union E2AP_PDU_u { + struct InitiatingMessage *initiatingMessage; + struct SuccessfulOutcome *successfulOutcome; + struct UnsuccessfulOutcome *unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_PDU_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c new file mode 100644 index 0000000..fc90950 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.c @@ -0,0 +1,159 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-actionDefinition.h" + +#include "ActionParameter-Item.h" +static int +memb_actionParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_actionParameter_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_actionParameter_List_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_actionParameter_List_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActionParameter_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_actionParameter_List_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_actionParameter_List_specs_3 = { + sizeof(struct E2SM_gNB_X2_actionDefinition__actionParameter_List), + offsetof(struct E2SM_gNB_X2_actionDefinition__actionParameter_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_actionParameter_List_3 = { + "actionParameter-List", + "actionParameter-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_actionParameter_List_tags_3, + sizeof(asn_DEF_actionParameter_List_tags_3) + /sizeof(asn_DEF_actionParameter_List_tags_3[0]) - 1, /* 1 */ + asn_DEF_actionParameter_List_tags_3, /* Same as above */ + sizeof(asn_DEF_actionParameter_List_tags_3) + /sizeof(asn_DEF_actionParameter_List_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_actionParameter_List_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_actionParameter_List_3, + 1, /* Single element */ + &asn_SPC_actionParameter_List_specs_3 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_actionDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_actionDefinition, style_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Style_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "style-ID" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_X2_actionDefinition, actionParameter_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_actionParameter_List_3, + 0, + { 0, &asn_PER_memb_actionParameter_List_constr_3, memb_actionParameter_List_constraint_1 }, + 0, 0, /* No default value */ + "actionParameter-List" + }, +}; +static const int asn_MAP_E2SM_gNB_X2_actionDefinition_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_actionDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* style-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* actionParameter-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_actionDefinition_specs_1 = { + sizeof(struct E2SM_gNB_X2_actionDefinition), + offsetof(struct E2SM_gNB_X2_actionDefinition, _asn_ctx), + asn_MAP_E2SM_gNB_X2_actionDefinition_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_X2_actionDefinition_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_actionDefinition = { + "E2SM-gNB-X2-actionDefinition", + "E2SM-gNB-X2-actionDefinition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_actionDefinition_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_actionDefinition_1, + 2, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_actionDefinition_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h new file mode 100644 index 0000000..5db6ae9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-actionDefinition.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_actionDefinition_H_ +#define _E2SM_gNB_X2_actionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Style-ID.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ActionParameter_Item; + +/* E2SM-gNB-X2-actionDefinition */ +typedef struct E2SM_gNB_X2_actionDefinition { + Style_ID_t style_ID; + struct E2SM_gNB_X2_actionDefinition__actionParameter_List { + A_SEQUENCE_OF(struct ActionParameter_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *actionParameter_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_actionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_actionDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_actionDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c new file mode 100644 index 0000000..c5f55f0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-callProcessID.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_callProcessID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_callProcessID, callProcess_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CallProcess_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "callProcess-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_callProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_callProcessID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* callProcess-ID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_callProcessID_specs_1 = { + sizeof(struct E2SM_gNB_X2_callProcessID), + offsetof(struct E2SM_gNB_X2_callProcessID, _asn_ctx), + asn_MAP_E2SM_gNB_X2_callProcessID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_callProcessID = { + "E2SM-gNB-X2-callProcessID", + "E2SM-gNB-X2-callProcessID", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_callProcessID_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_callProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_callProcessID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_callProcessID_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_callProcessID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h new file mode 100644 index 0000000..7eaf778 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-callProcessID.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_callProcessID_H_ +#define _E2SM_gNB_X2_callProcessID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CallProcess-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-callProcessID */ +typedef struct E2SM_gNB_X2_callProcessID { + CallProcess_ID_t callProcess_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_callProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_callProcessID; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_callProcessID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c new file mode 100644 index 0000000..74c7942 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-controlHeader.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_controlHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_controlHeader, interface_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Interface_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interface-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_controlHeader, interfaceDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceDirection, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceDirection" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_controlHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_controlHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* interfaceDirection */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_controlHeader_specs_1 = { + sizeof(struct E2SM_gNB_X2_controlHeader), + offsetof(struct E2SM_gNB_X2_controlHeader, _asn_ctx), + asn_MAP_E2SM_gNB_X2_controlHeader_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlHeader = { + "E2SM-gNB-X2-controlHeader", + "E2SM-gNB-X2-controlHeader", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_controlHeader_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_controlHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlHeader_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_controlHeader_1, + 2, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_controlHeader_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h new file mode 100644 index 0000000..0fc2275 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlHeader.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_controlHeader_H_ +#define _E2SM_gNB_X2_controlHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Interface-ID.h" +#include "InterfaceDirection.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-controlHeader */ +typedef struct E2SM_gNB_X2_controlHeader { + Interface_ID_t interface_ID; + InterfaceDirection_t interfaceDirection; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_controlHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_controlHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c new file mode 100644 index 0000000..bca9239 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-controlMessage.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_controlMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_controlMessage, interfaceMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceMessage" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_controlMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_controlMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* interfaceMessage */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_controlMessage_specs_1 = { + sizeof(struct E2SM_gNB_X2_controlMessage), + offsetof(struct E2SM_gNB_X2_controlMessage, _asn_ctx), + asn_MAP_E2SM_gNB_X2_controlMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlMessage = { + "E2SM-gNB-X2-controlMessage", + "E2SM-gNB-X2-controlMessage", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_controlMessage_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_controlMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_controlMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_controlMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_controlMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h new file mode 100644 index 0000000..d06c1f8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-controlMessage.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_controlMessage_H_ +#define _E2SM_gNB_X2_controlMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "InterfaceMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-controlMessage */ +typedef struct E2SM_gNB_X2_controlMessage { + InterfaceMessage_t interfaceMessage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_controlMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_controlMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_controlMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c new file mode 100644 index 0000000..5c9a40d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.c @@ -0,0 +1,179 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-eventTriggerDefinition.h" + +#include "InterfaceProtocolIE-Item.h" +static int +memb_interfaceProtocolIE_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 15)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_interfaceProtocolIE_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_interfaceProtocolIE_List_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_interfaceProtocolIE_List_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_InterfaceProtocolIE_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_interfaceProtocolIE_List_tags_5[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_interfaceProtocolIE_List_specs_5 = { + sizeof(struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List), + offsetof(struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_interfaceProtocolIE_List_5 = { + "interfaceProtocolIE-List", + "interfaceProtocolIE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_interfaceProtocolIE_List_tags_5, + sizeof(asn_DEF_interfaceProtocolIE_List_tags_5) + /sizeof(asn_DEF_interfaceProtocolIE_List_tags_5[0]) - 1, /* 1 */ + asn_DEF_interfaceProtocolIE_List_tags_5, /* Same as above */ + sizeof(asn_DEF_interfaceProtocolIE_List_tags_5) + /sizeof(asn_DEF_interfaceProtocolIE_List_tags_5[0]), /* 2 */ + { 0, &asn_PER_type_interfaceProtocolIE_List_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_interfaceProtocolIE_List_5, + 1, /* Single element */ + &asn_SPC_interfaceProtocolIE_List_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_eventTriggerDefinition_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interface_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Interface_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interface-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interfaceDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceDirection, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceDirection" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interfaceMessageType), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceMessageType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceMessageType" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, interfaceProtocolIE_List), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + 0, + &asn_DEF_interfaceProtocolIE_List_5, + 0, + { 0, &asn_PER_memb_interfaceProtocolIE_List_constr_5, memb_interfaceProtocolIE_List_constraint_1 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-List" + }, +}; +static const int asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* interfaceMessageType */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* interfaceProtocolIE-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_eventTriggerDefinition_specs_1 = { + sizeof(struct E2SM_gNB_X2_eventTriggerDefinition), + offsetof(struct E2SM_gNB_X2_eventTriggerDefinition, _asn_ctx), + asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_X2_eventTriggerDefinition_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition = { + "E2SM-gNB-X2-eventTriggerDefinition", + "E2SM-gNB-X2-eventTriggerDefinition", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_eventTriggerDefinition_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_eventTriggerDefinition_1, + 4, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_eventTriggerDefinition_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h new file mode 100644 index 0000000..396d2ca --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-eventTriggerDefinition.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_eventTriggerDefinition_H_ +#define _E2SM_gNB_X2_eventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Interface-ID.h" +#include "InterfaceDirection.h" +#include "InterfaceMessageType.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct InterfaceProtocolIE_Item; + +/* E2SM-gNB-X2-eventTriggerDefinition */ +typedef struct E2SM_gNB_X2_eventTriggerDefinition { + Interface_ID_t interface_ID; + InterfaceDirection_t interfaceDirection; + InterfaceMessageType_t interfaceMessageType; + struct E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List { + A_SEQUENCE_OF(struct InterfaceProtocolIE_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *interfaceProtocolIE_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_eventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_eventTriggerDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_eventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c new file mode 100644 index 0000000..337a3cb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.c @@ -0,0 +1,95 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-indicationHeader.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_indicationHeader_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_indicationHeader, interface_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Interface_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interface-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_indicationHeader, interfaceDirection), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceDirection, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceDirection" + }, + { ATF_POINTER, 1, offsetof(struct E2SM_gNB_X2_indicationHeader, timestamp), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TimeStamp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "timestamp" + }, +}; +static const int asn_MAP_E2SM_gNB_X2_indicationHeader_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_indicationHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interface-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceDirection */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* timestamp */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_indicationHeader_specs_1 = { + sizeof(struct E2SM_gNB_X2_indicationHeader), + offsetof(struct E2SM_gNB_X2_indicationHeader, _asn_ctx), + asn_MAP_E2SM_gNB_X2_indicationHeader_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_E2SM_gNB_X2_indicationHeader_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationHeader = { + "E2SM-gNB-X2-indicationHeader", + "E2SM-gNB-X2-indicationHeader", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationHeader_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_indicationHeader_1, + 3, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_indicationHeader_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h new file mode 100644 index 0000000..06a1193 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationHeader.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_indicationHeader_H_ +#define _E2SM_gNB_X2_indicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Interface-ID.h" +#include "InterfaceDirection.h" +#include "TimeStamp.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-indicationHeader */ +typedef struct E2SM_gNB_X2_indicationHeader { + Interface_ID_t interface_ID; + InterfaceDirection_t interfaceDirection; + TimeStamp_t *timestamp; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_indicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_indicationHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c new file mode 100644 index 0000000..b3eacc4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "E2SM-gNB-X2-indicationMessage.h" + +static asn_TYPE_member_t asn_MBR_E2SM_gNB_X2_indicationMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_gNB_X2_indicationMessage, interfaceMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceMessage" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_gNB_X2_indicationMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* interfaceMessage */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_E2SM_gNB_X2_indicationMessage_specs_1 = { + sizeof(struct E2SM_gNB_X2_indicationMessage), + offsetof(struct E2SM_gNB_X2_indicationMessage, _asn_ctx), + asn_MAP_E2SM_gNB_X2_indicationMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationMessage = { + "E2SM-gNB-X2-indicationMessage", + "E2SM-gNB-X2-indicationMessage", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1, + sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1[0]), /* 1 */ + asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1) + /sizeof(asn_DEF_E2SM_gNB_X2_indicationMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_gNB_X2_indicationMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_gNB_X2_indicationMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h new file mode 100644 index 0000000..14c2ff8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/E2SM-gNB-X2-indicationMessage.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _E2SM_gNB_X2_indicationMessage_H_ +#define _E2SM_gNB_X2_indicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "InterfaceMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-gNB-X2-indicationMessage */ +typedef struct E2SM_gNB_X2_indicationMessage { + InterfaceMessage_t interfaceMessage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_gNB_X2_indicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_gNB_X2_indicationMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_gNB_X2_indicationMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCN.c new file mode 100644 index 0000000..0ae12af --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCN.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EARFCN.h" + +int +EARFCN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EARFCN = { + "EARFCN", + "EARFCN", + &asn_OP_NativeInteger, + asn_DEF_EARFCN_tags_1, + sizeof(asn_DEF_EARFCN_tags_1) + /sizeof(asn_DEF_EARFCN_tags_1[0]), /* 1 */ + asn_DEF_EARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_EARFCN_tags_1) + /sizeof(asn_DEF_EARFCN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EARFCN_constr_1, EARFCN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCN.h new file mode 100644 index 0000000..222a9ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCN.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EARFCN_H_ +#define _EARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EARFCN */ +typedef long EARFCN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EARFCN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EARFCN; +asn_struct_free_f EARFCN_free; +asn_struct_print_f EARFCN_print; +asn_constr_check_f EARFCN_constraint; +ber_type_decoder_f EARFCN_decode_ber; +der_type_encoder_f EARFCN_encode_der; +xer_type_decoder_f EARFCN_decode_xer; +xer_type_encoder_f EARFCN_encode_xer; +per_type_decoder_f EARFCN_decode_uper; +per_type_encoder_f EARFCN_encode_uper; +per_type_decoder_f EARFCN_decode_aper; +per_type_encoder_f EARFCN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EARFCN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCNExtension.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCNExtension.c new file mode 100644 index 0000000..4a2c41b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCNExtension.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EARFCNExtension.h" + +int +EARFCNExtension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 65536 && value <= 262143)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EARFCNExtension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 18, -1, 65536, 262143 } /* (65536..262143,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EARFCNExtension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EARFCNExtension = { + "EARFCNExtension", + "EARFCNExtension", + &asn_OP_NativeInteger, + asn_DEF_EARFCNExtension_tags_1, + sizeof(asn_DEF_EARFCNExtension_tags_1) + /sizeof(asn_DEF_EARFCNExtension_tags_1[0]), /* 1 */ + asn_DEF_EARFCNExtension_tags_1, /* Same as above */ + sizeof(asn_DEF_EARFCNExtension_tags_1) + /sizeof(asn_DEF_EARFCNExtension_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EARFCNExtension_constr_1, EARFCNExtension_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCNExtension.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCNExtension.h new file mode 100644 index 0000000..d7df99e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EARFCNExtension.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EARFCNExtension_H_ +#define _EARFCNExtension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EARFCNExtension */ +typedef long EARFCNExtension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EARFCNExtension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EARFCNExtension; +asn_struct_free_f EARFCNExtension_free; +asn_struct_print_f EARFCNExtension_print; +asn_constr_check_f EARFCNExtension_constraint; +ber_type_decoder_f EARFCNExtension_decode_ber; +der_type_encoder_f EARFCNExtension_encode_der; +xer_type_decoder_f EARFCNExtension_decode_xer; +xer_type_encoder_f EARFCNExtension_encode_xer; +per_type_decoder_f EARFCNExtension_decode_uper; +per_type_encoder_f EARFCNExtension_encode_uper; +per_type_decoder_f EARFCNExtension_decode_aper; +per_type_encoder_f EARFCNExtension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EARFCNExtension_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ECGI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ECGI.c new file mode 100644 index 0000000..f0f7e33 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ECGI.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ECGI.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ECGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ECGI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ECGI, eUTRANcellIdentifier), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRANCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRANcellIdentifier" + }, + { ATF_POINTER, 1, offsetof(struct ECGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P134, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ECGI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ECGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ECGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eUTRANcellIdentifier */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ECGI_specs_1 = { + sizeof(struct ECGI), + offsetof(struct ECGI, _asn_ctx), + asn_MAP_ECGI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ECGI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ECGI = { + "ECGI", + "ECGI", + &asn_OP_SEQUENCE, + asn_DEF_ECGI_tags_1, + sizeof(asn_DEF_ECGI_tags_1) + /sizeof(asn_DEF_ECGI_tags_1[0]), /* 1 */ + asn_DEF_ECGI_tags_1, /* Same as above */ + sizeof(asn_DEF_ECGI_tags_1) + /sizeof(asn_DEF_ECGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ECGI_1, + 3, /* Elements count */ + &asn_SPC_ECGI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ECGI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ECGI.h new file mode 100644 index 0000000..331ee6e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ECGI.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ECGI_H_ +#define _ECGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "EUTRANCellIdentifier.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ECGI */ +typedef struct ECGI { + PLMN_Identity_t pLMN_Identity; + EUTRANCellIdentifier_t eUTRANcellIdentifier; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ECGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ECGI; +extern asn_SEQUENCE_specifics_t asn_SPC_ECGI_specs_1; +extern asn_TYPE_member_t asn_MBR_ECGI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ECGI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c new file mode 100644 index 0000000..25ec26a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.c @@ -0,0 +1,250 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EN-DC-ResourceConfiguration.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_pDCPatSgNB_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_mCGresources_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_sCGresources_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_pDCPatSgNB_value2enum_2[] = { + { 0, 7, "present" }, + { 1, 11, "not-present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_pDCPatSgNB_enum2value_2[] = { + 1, /* not-present(1) */ + 0 /* present(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_pDCPatSgNB_specs_2 = { + asn_MAP_pDCPatSgNB_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_pDCPatSgNB_enum2value_2, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_pDCPatSgNB_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_pDCPatSgNB_2 = { + "pDCPatSgNB", + "pDCPatSgNB", + &asn_OP_NativeEnumerated, + asn_DEF_pDCPatSgNB_tags_2, + sizeof(asn_DEF_pDCPatSgNB_tags_2) + /sizeof(asn_DEF_pDCPatSgNB_tags_2[0]) - 1, /* 1 */ + asn_DEF_pDCPatSgNB_tags_2, /* Same as above */ + sizeof(asn_DEF_pDCPatSgNB_tags_2) + /sizeof(asn_DEF_pDCPatSgNB_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_pDCPatSgNB_constr_2, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_pDCPatSgNB_specs_2 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_mCGresources_value2enum_6[] = { + { 0, 7, "present" }, + { 1, 11, "not-present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_mCGresources_enum2value_6[] = { + 1, /* not-present(1) */ + 0 /* present(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_mCGresources_specs_6 = { + asn_MAP_mCGresources_value2enum_6, /* "tag" => N; sorted by tag */ + asn_MAP_mCGresources_enum2value_6, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_mCGresources_tags_6[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_mCGresources_6 = { + "mCGresources", + "mCGresources", + &asn_OP_NativeEnumerated, + asn_DEF_mCGresources_tags_6, + sizeof(asn_DEF_mCGresources_tags_6) + /sizeof(asn_DEF_mCGresources_tags_6[0]) - 1, /* 1 */ + asn_DEF_mCGresources_tags_6, /* Same as above */ + sizeof(asn_DEF_mCGresources_tags_6) + /sizeof(asn_DEF_mCGresources_tags_6[0]), /* 2 */ + { 0, &asn_PER_type_mCGresources_constr_6, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_mCGresources_specs_6 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_sCGresources_value2enum_10[] = { + { 0, 7, "present" }, + { 1, 11, "not-present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_sCGresources_enum2value_10[] = { + 1, /* not-present(1) */ + 0 /* present(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_sCGresources_specs_10 = { + asn_MAP_sCGresources_value2enum_10, /* "tag" => N; sorted by tag */ + asn_MAP_sCGresources_enum2value_10, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_sCGresources_tags_10[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_sCGresources_10 = { + "sCGresources", + "sCGresources", + &asn_OP_NativeEnumerated, + asn_DEF_sCGresources_tags_10, + sizeof(asn_DEF_sCGresources_tags_10) + /sizeof(asn_DEF_sCGresources_tags_10[0]) - 1, /* 1 */ + asn_DEF_sCGresources_tags_10, /* Same as above */ + sizeof(asn_DEF_sCGresources_tags_10) + /sizeof(asn_DEF_sCGresources_tags_10[0]), /* 2 */ + { 0, &asn_PER_type_sCGresources_constr_10, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_sCGresources_specs_10 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfiguration, pDCPatSgNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_pDCPatSgNB_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pDCPatSgNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfiguration, mCGresources), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_mCGresources_6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mCGresources" + }, + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfiguration, sCGresources), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_sCGresources_10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sCGresources" + }, + { ATF_POINTER, 1, offsetof(struct EN_DC_ResourceConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P137, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_EN_DC_ResourceConfiguration_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_EN_DC_ResourceConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EN_DC_ResourceConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pDCPatSgNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mCGresources */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sCGresources */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfiguration_specs_1 = { + sizeof(struct EN_DC_ResourceConfiguration), + offsetof(struct EN_DC_ResourceConfiguration, _asn_ctx), + asn_MAP_EN_DC_ResourceConfiguration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_EN_DC_ResourceConfiguration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfiguration = { + "EN-DC-ResourceConfiguration", + "EN-DC-ResourceConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_EN_DC_ResourceConfiguration_tags_1, + sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1) + /sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1[0]), /* 1 */ + asn_DEF_EN_DC_ResourceConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1) + /sizeof(asn_DEF_EN_DC_ResourceConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EN_DC_ResourceConfiguration_1, + 4, /* Elements count */ + &asn_SPC_EN_DC_ResourceConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h new file mode 100644 index 0000000..ab98da2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EN-DC-ResourceConfiguration.h @@ -0,0 +1,99 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EN_DC_ResourceConfiguration_H_ +#define _EN_DC_ResourceConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EN_DC_ResourceConfiguration__pDCPatSgNB { + EN_DC_ResourceConfiguration__pDCPatSgNB_present = 0, + EN_DC_ResourceConfiguration__pDCPatSgNB_not_present = 1 + /* + * Enumeration is extensible + */ +} e_EN_DC_ResourceConfiguration__pDCPatSgNB; +typedef enum EN_DC_ResourceConfiguration__mCGresources { + EN_DC_ResourceConfiguration__mCGresources_present = 0, + EN_DC_ResourceConfiguration__mCGresources_not_present = 1 + /* + * Enumeration is extensible + */ +} e_EN_DC_ResourceConfiguration__mCGresources; +typedef enum EN_DC_ResourceConfiguration__sCGresources { + EN_DC_ResourceConfiguration__sCGresources_present = 0, + EN_DC_ResourceConfiguration__sCGresources_not_present = 1 + /* + * Enumeration is extensible + */ +} e_EN_DC_ResourceConfiguration__sCGresources; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* EN-DC-ResourceConfiguration */ +typedef struct EN_DC_ResourceConfiguration { + long pDCPatSgNB; + long mCGresources; + long sCGresources; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EN_DC_ResourceConfiguration_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_pDCPatSgNB_2; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_mCGresources_6; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_sCGresources_10; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfiguration_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EN_DC_ResourceConfiguration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENB-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENB-ID.c new file mode 100644 index 0000000..408d8d3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENB-ID.c @@ -0,0 +1,249 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENB-ID.h" + +static int +memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "home-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "short-Macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "long-Macro-eNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { + sizeof(struct ENB_ID), + offsetof(struct ENB_ID, _asn_ctx), + offsetof(struct ENB_ID, present), + sizeof(((struct ENB_ID *)0)->present), + asn_MAP_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, + asn_MBR_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENB-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENB-ID.h new file mode 100644 index 0000000..2017d70 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENB-ID.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENB_ID_H_ +#define _ENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_PR { + ENB_ID_PR_NOTHING, /* No components present */ + ENB_ID_PR_macro_eNB_ID, + ENB_ID_PR_home_eNB_ID, + /* Extensions may appear below */ + ENB_ID_PR_short_Macro_eNB_ID, + ENB_ID_PR_long_Macro_eNB_ID +} ENB_ID_PR; + +/* ENB-ID */ +typedef struct ENB_ID { + ENB_ID_PR present; + union ENB_ID_u { + BIT_STRING_t macro_eNB_ID; + BIT_STRING_t home_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_Macro_eNB_ID; + BIT_STRING_t long_Macro_eNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdate.c new file mode 100644 index 0000000..ef733b6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdate.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENBConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P28, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_specs_1 = { + sizeof(struct ENBConfigurationUpdate), + offsetof(struct ENBConfigurationUpdate, _asn_ctx), + asn_MAP_ENBConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate = { + "ENBConfigurationUpdate", + "ENBConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdate_tags_1, + sizeof(asn_DEF_ENBConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_ENBConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdate.h new file mode 100644 index 0000000..14bb1c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENBConfigurationUpdate_H_ +#define _ENBConfigurationUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENBConfigurationUpdate */ +typedef struct ENBConfigurationUpdate { + ProtocolIE_Container_119P28_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENBConfigurationUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000..2de203f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENBConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P29, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct ENBConfigurationUpdateAcknowledge), + offsetof(struct ENBConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_ENBConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge = { + "ENBConfigurationUpdateAcknowledge", + "ENBConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000..8574d8a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateAcknowledge.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENBConfigurationUpdateAcknowledge_H_ +#define _ENBConfigurationUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENBConfigurationUpdateAcknowledge */ +typedef struct ENBConfigurationUpdateAcknowledge { + ProtocolIE_Container_119P29_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENBConfigurationUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c new file mode 100644 index 0000000..2d43783 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENBConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P30, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_specs_1 = { + sizeof(struct ENBConfigurationUpdateFailure), + offsetof(struct ENBConfigurationUpdateFailure, _asn_ctx), + asn_MAP_ENBConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure = { + "ENBConfigurationUpdateFailure", + "ENBConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h new file mode 100644 index 0000000..f7f497d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENBConfigurationUpdateFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENBConfigurationUpdateFailure_H_ +#define _ENBConfigurationUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENBConfigurationUpdateFailure */ +typedef struct ENBConfigurationUpdateFailure { + ProtocolIE_Container_119P30_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENBConfigurationUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationFailure.c new file mode 100644 index 0000000..f3382bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCCellActivationFailure.h" + +static asn_TYPE_member_t asn_MBR_ENDCCellActivationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P100, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationFailure_specs_1 = { + sizeof(struct ENDCCellActivationFailure), + offsetof(struct ENDCCellActivationFailure, _asn_ctx), + asn_MAP_ENDCCellActivationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure = { + "ENDCCellActivationFailure", + "ENDCCellActivationFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationFailure_tags_1, + sizeof(asn_DEF_ENDCCellActivationFailure_tags_1) + /sizeof(asn_DEF_ENDCCellActivationFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCCellActivationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationFailure_tags_1) + /sizeof(asn_DEF_ENDCCellActivationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCCellActivationFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationFailure.h new file mode 100644 index 0000000..0e52088 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCCellActivationFailure_H_ +#define _ENDCCellActivationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCCellActivationFailure */ +typedef struct ENDCCellActivationFailure { + ProtocolIE_Container_119P100_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCCellActivationFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationRequest.c new file mode 100644 index 0000000..572d1dc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCCellActivationRequest.h" + +static asn_TYPE_member_t asn_MBR_ENDCCellActivationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P98, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationRequest_specs_1 = { + sizeof(struct ENDCCellActivationRequest), + offsetof(struct ENDCCellActivationRequest, _asn_ctx), + asn_MAP_ENDCCellActivationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest = { + "ENDCCellActivationRequest", + "ENDCCellActivationRequest", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationRequest_tags_1, + sizeof(asn_DEF_ENDCCellActivationRequest_tags_1) + /sizeof(asn_DEF_ENDCCellActivationRequest_tags_1[0]), /* 1 */ + asn_DEF_ENDCCellActivationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationRequest_tags_1) + /sizeof(asn_DEF_ENDCCellActivationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationRequest_1, + 1, /* Elements count */ + &asn_SPC_ENDCCellActivationRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationRequest.h new file mode 100644 index 0000000..b8b1883 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCCellActivationRequest_H_ +#define _ENDCCellActivationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCCellActivationRequest */ +typedef struct ENDCCellActivationRequest { + ProtocolIE_Container_119P98_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCCellActivationRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationResponse.c new file mode 100644 index 0000000..b541245 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCCellActivationResponse.h" + +static asn_TYPE_member_t asn_MBR_ENDCCellActivationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P99, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationResponse_specs_1 = { + sizeof(struct ENDCCellActivationResponse), + offsetof(struct ENDCCellActivationResponse, _asn_ctx), + asn_MAP_ENDCCellActivationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse = { + "ENDCCellActivationResponse", + "ENDCCellActivationResponse", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationResponse_tags_1, + sizeof(asn_DEF_ENDCCellActivationResponse_tags_1) + /sizeof(asn_DEF_ENDCCellActivationResponse_tags_1[0]), /* 1 */ + asn_DEF_ENDCCellActivationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationResponse_tags_1) + /sizeof(asn_DEF_ENDCCellActivationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationResponse_1, + 1, /* Elements count */ + &asn_SPC_ENDCCellActivationResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationResponse.h new file mode 100644 index 0000000..c2a62b7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCCellActivationResponse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCCellActivationResponse_H_ +#define _ENDCCellActivationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCCellActivationResponse */ +typedef struct ENDCCellActivationResponse { + ProtocolIE_Container_119P99_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCCellActivationResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c new file mode 100644 index 0000000..7a8367a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdate.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCConfigurationUpdate.h" + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P91, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_specs_1 = { + sizeof(struct ENDCConfigurationUpdate), + offsetof(struct ENDCConfigurationUpdate, _asn_ctx), + asn_MAP_ENDCConfigurationUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate = { + "ENDCConfigurationUpdate", + "ENDCConfigurationUpdate", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdate_tags_1, + sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdate_1, + 1, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h new file mode 100644 index 0000000..0a585cd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCConfigurationUpdate_H_ +#define _ENDCConfigurationUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCConfigurationUpdate */ +typedef struct ENDCConfigurationUpdate { + ProtocolIE_Container_119P91_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCConfigurationUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c new file mode 100644 index 0000000..9380e8a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCConfigurationUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P94, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_specs_1 = { + sizeof(struct ENDCConfigurationUpdateAcknowledge), + offsetof(struct ENDCConfigurationUpdateAcknowledge, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge = { + "ENDCConfigurationUpdateAcknowledge", + "ENDCConfigurationUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1, + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h new file mode 100644 index 0000000..1773a0d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateAcknowledge.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCConfigurationUpdateAcknowledge_H_ +#define _ENDCConfigurationUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCConfigurationUpdateAcknowledge */ +typedef struct ENDCConfigurationUpdateAcknowledge { + ProtocolIE_Container_119P94_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCConfigurationUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c new file mode 100644 index 0000000..4073fc0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCConfigurationUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P97, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_specs_1 = { + sizeof(struct ENDCConfigurationUpdateFailure), + offsetof(struct ENDCConfigurationUpdateFailure, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure = { + "ENDCConfigurationUpdateFailure", + "ENDCConfigurationUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateFailure_tags_1, + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h new file mode 100644 index 0000000..6878ddb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCConfigurationUpdateFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCConfigurationUpdateFailure_H_ +#define _ENDCConfigurationUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCConfigurationUpdateFailure */ +typedef struct ENDCConfigurationUpdateFailure { + ProtocolIE_Container_119P97_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCConfigurationUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c new file mode 100644 index 0000000..358fdd1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetConfirm.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCPartialResetConfirm.h" + +static asn_TYPE_member_t asn_MBR_ENDCPartialResetConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P104, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetConfirm_specs_1 = { + sizeof(struct ENDCPartialResetConfirm), + offsetof(struct ENDCPartialResetConfirm, _asn_ctx), + asn_MAP_ENDCPartialResetConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm = { + "ENDCPartialResetConfirm", + "ENDCPartialResetConfirm", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetConfirm_tags_1, + sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1) + /sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1[0]), /* 1 */ + asn_DEF_ENDCPartialResetConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1) + /sizeof(asn_DEF_ENDCPartialResetConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetConfirm_1, + 1, /* Elements count */ + &asn_SPC_ENDCPartialResetConfirm_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h new file mode 100644 index 0000000..9836da9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetConfirm.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCPartialResetConfirm_H_ +#define _ENDCPartialResetConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCPartialResetConfirm */ +typedef struct ENDCPartialResetConfirm { + ProtocolIE_Container_119P104_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCPartialResetConfirm_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetRequired.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetRequired.c new file mode 100644 index 0000000..56df5f7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetRequired.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCPartialResetRequired.h" + +static asn_TYPE_member_t asn_MBR_ENDCPartialResetRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P103, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetRequired_specs_1 = { + sizeof(struct ENDCPartialResetRequired), + offsetof(struct ENDCPartialResetRequired, _asn_ctx), + asn_MAP_ENDCPartialResetRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired = { + "ENDCPartialResetRequired", + "ENDCPartialResetRequired", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetRequired_tags_1, + sizeof(asn_DEF_ENDCPartialResetRequired_tags_1) + /sizeof(asn_DEF_ENDCPartialResetRequired_tags_1[0]), /* 1 */ + asn_DEF_ENDCPartialResetRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetRequired_tags_1) + /sizeof(asn_DEF_ENDCPartialResetRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetRequired_1, + 1, /* Elements count */ + &asn_SPC_ENDCPartialResetRequired_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetRequired.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetRequired.h new file mode 100644 index 0000000..ebe4d54 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCPartialResetRequired.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCPartialResetRequired_H_ +#define _ENDCPartialResetRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCPartialResetRequired */ +typedef struct ENDCPartialResetRequired { + ProtocolIE_Container_119P103_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCPartialResetRequired_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c new file mode 100644 index 0000000..cdc3c37 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2RemovalFailure.h" + +static asn_TYPE_member_t asn_MBR_ENDCX2RemovalFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P117, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalFailure_specs_1 = { + sizeof(struct ENDCX2RemovalFailure), + offsetof(struct ENDCX2RemovalFailure, _asn_ctx), + asn_MAP_ENDCX2RemovalFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure = { + "ENDCX2RemovalFailure", + "ENDCX2RemovalFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalFailure_tags_1, + sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2RemovalFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2RemovalFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h new file mode 100644 index 0000000..e70828c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2RemovalFailure_H_ +#define _ENDCX2RemovalFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2RemovalFailure */ +typedef struct ENDCX2RemovalFailure { + ProtocolIE_Container_119P117_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2RemovalFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c new file mode 100644 index 0000000..38aebeb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2RemovalRequest.h" + +static asn_TYPE_member_t asn_MBR_ENDCX2RemovalRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P111, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalRequest_specs_1 = { + sizeof(struct ENDCX2RemovalRequest), + offsetof(struct ENDCX2RemovalRequest, _asn_ctx), + asn_MAP_ENDCX2RemovalRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest = { + "ENDCX2RemovalRequest", + "ENDCX2RemovalRequest", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalRequest_tags_1, + sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2RemovalRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalRequest_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2RemovalRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h new file mode 100644 index 0000000..2329916 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2RemovalRequest_H_ +#define _ENDCX2RemovalRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2RemovalRequest */ +typedef struct ENDCX2RemovalRequest { + ProtocolIE_Container_119P111_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2RemovalRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c new file mode 100644 index 0000000..02f0b8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2RemovalResponse.h" + +static asn_TYPE_member_t asn_MBR_ENDCX2RemovalResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P114, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalResponse_specs_1 = { + sizeof(struct ENDCX2RemovalResponse), + offsetof(struct ENDCX2RemovalResponse, _asn_ctx), + asn_MAP_ENDCX2RemovalResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse = { + "ENDCX2RemovalResponse", + "ENDCX2RemovalResponse", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalResponse_tags_1, + sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2RemovalResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1) + /sizeof(asn_DEF_ENDCX2RemovalResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalResponse_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2RemovalResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h new file mode 100644 index 0000000..75aff59 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2RemovalResponse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2RemovalResponse_H_ +#define _ENDCX2RemovalResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2RemovalResponse */ +typedef struct ENDCX2RemovalResponse { + ProtocolIE_Container_119P114_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2RemovalResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupFailure.c new file mode 100644 index 0000000..f4a05ff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2SetupFailure.h" + +asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P90, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_specs_1 = { + sizeof(struct ENDCX2SetupFailure), + offsetof(struct ENDCX2SetupFailure, _asn_ctx), + asn_MAP_ENDCX2SetupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure = { + "ENDCX2SetupFailure", + "ENDCX2SetupFailure", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupFailure_tags_1, + sizeof(asn_DEF_ENDCX2SetupFailure_tags_1) + /sizeof(asn_DEF_ENDCX2SetupFailure_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2SetupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupFailure_tags_1) + /sizeof(asn_DEF_ENDCX2SetupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupFailure_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2SetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupFailure.h new file mode 100644 index 0000000..eb8184f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2SetupFailure_H_ +#define _ENDCX2SetupFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2SetupFailure */ +typedef struct ENDCX2SetupFailure { + ProtocolIE_Container_119P90_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2SetupFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupRequest.c new file mode 100644 index 0000000..10f38fc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2SetupRequest.h" + +asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P84, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_specs_1 = { + sizeof(struct ENDCX2SetupRequest), + offsetof(struct ENDCX2SetupRequest, _asn_ctx), + asn_MAP_ENDCX2SetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest = { + "ENDCX2SetupRequest", + "ENDCX2SetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupRequest_tags_1, + sizeof(asn_DEF_ENDCX2SetupRequest_tags_1) + /sizeof(asn_DEF_ENDCX2SetupRequest_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2SetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupRequest_tags_1) + /sizeof(asn_DEF_ENDCX2SetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupRequest_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2SetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupRequest.h new file mode 100644 index 0000000..47263e6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2SetupRequest_H_ +#define _ENDCX2SetupRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2SetupRequest */ +typedef struct ENDCX2SetupRequest { + ProtocolIE_Container_119P84_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2SetupRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupResponse.c new file mode 100644 index 0000000..1774d04 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ENDCX2SetupResponse.h" + +asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P87, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_specs_1 = { + sizeof(struct ENDCX2SetupResponse), + offsetof(struct ENDCX2SetupResponse, _asn_ctx), + asn_MAP_ENDCX2SetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse = { + "ENDCX2SetupResponse", + "ENDCX2SetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupResponse_tags_1, + sizeof(asn_DEF_ENDCX2SetupResponse_tags_1) + /sizeof(asn_DEF_ENDCX2SetupResponse_tags_1[0]), /* 1 */ + asn_DEF_ENDCX2SetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupResponse_tags_1) + /sizeof(asn_DEF_ENDCX2SetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupResponse_1, + 1, /* Elements count */ + &asn_SPC_ENDCX2SetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupResponse.h new file mode 100644 index 0000000..b9e5530 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ENDCX2SetupResponse.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ENDCX2SetupResponse_H_ +#define _ENDCX2SetupResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ENDCX2SetupResponse */ +typedef struct ENDCX2SetupResponse { + ProtocolIE_Container_119P87_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENDCX2SetupResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EPLMNs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EPLMNs.c new file mode 100644 index 0000000..8221774 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EPLMNs.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EPLMNs.h" + +asn_per_constraints_t asn_PER_type_EPLMNs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 15 } /* (SIZE(1..15)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EPLMNs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_EPLMNs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_EPLMNs_specs_1 = { + sizeof(struct EPLMNs), + offsetof(struct EPLMNs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_EPLMNs = { + "EPLMNs", + "EPLMNs", + &asn_OP_SEQUENCE_OF, + asn_DEF_EPLMNs_tags_1, + sizeof(asn_DEF_EPLMNs_tags_1) + /sizeof(asn_DEF_EPLMNs_tags_1[0]), /* 1 */ + asn_DEF_EPLMNs_tags_1, /* Same as above */ + sizeof(asn_DEF_EPLMNs_tags_1) + /sizeof(asn_DEF_EPLMNs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EPLMNs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_EPLMNs_1, + 1, /* Single element */ + &asn_SPC_EPLMNs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EPLMNs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EPLMNs.h new file mode 100644 index 0000000..1afe6a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EPLMNs.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EPLMNs_H_ +#define _EPLMNs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EPLMNs */ +typedef struct EPLMNs { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EPLMNs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EPLMNs; +extern asn_SET_OF_specifics_t asn_SPC_EPLMNs_specs_1; +extern asn_TYPE_member_t asn_MBR_EPLMNs_1[1]; +extern asn_per_constraints_t asn_PER_type_EPLMNs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _EPLMNs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItem.c new file mode 100644 index 0000000..8db2e16 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItem.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ERABActivityNotifyItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem, activityReport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UserPlaneTrafficActivityReport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "activityReport" + }, + { ATF_POINTER, 1, offsetof(struct ERABActivityNotifyItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P138, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ERABActivityNotifyItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ERABActivityNotifyItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ERABActivityNotifyItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* activityReport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_specs_1 = { + sizeof(struct ERABActivityNotifyItem), + offsetof(struct ERABActivityNotifyItem, _asn_ctx), + asn_MAP_ERABActivityNotifyItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ERABActivityNotifyItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem = { + "ERABActivityNotifyItem", + "ERABActivityNotifyItem", + &asn_OP_SEQUENCE, + asn_DEF_ERABActivityNotifyItem_tags_1, + sizeof(asn_DEF_ERABActivityNotifyItem_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItem_tags_1[0]), /* 1 */ + asn_DEF_ERABActivityNotifyItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ERABActivityNotifyItem_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ERABActivityNotifyItem_1, + 3, /* Elements count */ + &asn_SPC_ERABActivityNotifyItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItem.h new file mode 100644 index 0000000..becf29a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItem.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ERABActivityNotifyItem_H_ +#define _ERABActivityNotifyItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "UserPlaneTrafficActivityReport.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ERABActivityNotifyItem */ +typedef struct ERABActivityNotifyItem { + E_RAB_ID_t e_RAB_ID; + UserPlaneTrafficActivityReport_t activityReport; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ERABActivityNotifyItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ERABActivityNotifyItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c new file mode 100644 index 0000000..e995796 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItemList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ERABActivityNotifyItemList.h" + +#include "ERABActivityNotifyItem.h" +asn_per_constraints_t asn_PER_type_ERABActivityNotifyItemList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ERABActivityNotifyItemList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ERABActivityNotifyItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ERABActivityNotifyItemList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ERABActivityNotifyItemList_specs_1 = { + sizeof(struct ERABActivityNotifyItemList), + offsetof(struct ERABActivityNotifyItemList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItemList = { + "ERABActivityNotifyItemList", + "ERABActivityNotifyItemList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ERABActivityNotifyItemList_tags_1, + sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1[0]), /* 1 */ + asn_DEF_ERABActivityNotifyItemList_tags_1, /* Same as above */ + sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1) + /sizeof(asn_DEF_ERABActivityNotifyItemList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ERABActivityNotifyItemList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ERABActivityNotifyItemList_1, + 1, /* Single element */ + &asn_SPC_ERABActivityNotifyItemList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h new file mode 100644 index 0000000..5c89abb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ERABActivityNotifyItemList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ERABActivityNotifyItemList_H_ +#define _ERABActivityNotifyItemList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ERABActivityNotifyItem; + +/* ERABActivityNotifyItemList */ +typedef struct ERABActivityNotifyItemList { + A_SEQUENCE_OF(struct ERABActivityNotifyItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ERABActivityNotifyItemList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItemList; +extern asn_SET_OF_specifics_t asn_SPC_ERABActivityNotifyItemList_specs_1; +extern asn_TYPE_member_t asn_MBR_ERABActivityNotifyItemList_1[1]; +extern asn_per_constraints_t asn_PER_type_ERABActivityNotifyItemList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ERABActivityNotifyItemList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRA-Mode-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRA-Mode-Info.c new file mode 100644 index 0000000..7a5a558 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRA-Mode-Info.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRA-Mode-Info.h" + +#include "FDD-Info.h" +#include "TDD-Info.h" +asn_per_constraints_t asn_PER_type_EUTRA_Mode_Info_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EUTRA_Mode_Info_1[] = { + { ATF_POINTER, 0, offsetof(struct EUTRA_Mode_Info, choice.fDD), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FDD_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fDD" + }, + { ATF_POINTER, 0, offsetof(struct EUTRA_Mode_Info, choice.tDD), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TDD_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tDD" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRA_Mode_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fDD */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tDD */ +}; +asn_CHOICE_specifics_t asn_SPC_EUTRA_Mode_Info_specs_1 = { + sizeof(struct EUTRA_Mode_Info), + offsetof(struct EUTRA_Mode_Info, _asn_ctx), + offsetof(struct EUTRA_Mode_Info, present), + sizeof(((struct EUTRA_Mode_Info *)0)->present), + asn_MAP_EUTRA_Mode_Info_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRA_Mode_Info = { + "EUTRA-Mode-Info", + "EUTRA-Mode-Info", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_EUTRA_Mode_Info_constr_1, CHOICE_constraint }, + asn_MBR_EUTRA_Mode_Info_1, + 2, /* Elements count */ + &asn_SPC_EUTRA_Mode_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRA-Mode-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRA-Mode-Info.h new file mode 100644 index 0000000..ad9599b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRA-Mode-Info.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRA_Mode_Info_H_ +#define _EUTRA_Mode_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EUTRA_Mode_Info_PR { + EUTRA_Mode_Info_PR_NOTHING, /* No components present */ + EUTRA_Mode_Info_PR_fDD, + EUTRA_Mode_Info_PR_tDD + /* Extensions may appear below */ + +} EUTRA_Mode_Info_PR; + +/* Forward declarations */ +struct FDD_Info; +struct TDD_Info; + +/* EUTRA-Mode-Info */ +typedef struct EUTRA_Mode_Info { + EUTRA_Mode_Info_PR present; + union EUTRA_Mode_Info_u { + struct FDD_Info *fDD; + struct TDD_Info *tDD; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRA_Mode_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRA_Mode_Info; +extern asn_CHOICE_specifics_t asn_SPC_EUTRA_Mode_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_EUTRA_Mode_Info_1[2]; +extern asn_per_constraints_t asn_PER_type_EUTRA_Mode_Info_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRA_Mode_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANCellIdentifier.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANCellIdentifier.c new file mode 100644 index 0000000..5e0bb03 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANCellIdentifier.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANCellIdentifier.h" + +int +EUTRANCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EUTRANCellIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EUTRANCellIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANCellIdentifier = { + "EUTRANCellIdentifier", + "EUTRANCellIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_EUTRANCellIdentifier_tags_1, + sizeof(asn_DEF_EUTRANCellIdentifier_tags_1) + /sizeof(asn_DEF_EUTRANCellIdentifier_tags_1[0]), /* 1 */ + asn_DEF_EUTRANCellIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANCellIdentifier_tags_1) + /sizeof(asn_DEF_EUTRANCellIdentifier_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EUTRANCellIdentifier_constr_1, EUTRANCellIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANCellIdentifier.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANCellIdentifier.h new file mode 100644 index 0000000..46008c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANCellIdentifier.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANCellIdentifier_H_ +#define _EUTRANCellIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANCellIdentifier */ +typedef BIT_STRING_t EUTRANCellIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EUTRANCellIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANCellIdentifier; +asn_struct_free_f EUTRANCellIdentifier_free; +asn_struct_print_f EUTRANCellIdentifier_print; +asn_constr_check_f EUTRANCellIdentifier_constraint; +ber_type_decoder_f EUTRANCellIdentifier_decode_ber; +der_type_encoder_f EUTRANCellIdentifier_encode_der; +xer_type_decoder_f EUTRANCellIdentifier_decode_xer; +xer_type_encoder_f EUTRANCellIdentifier_encode_xer; +per_type_decoder_f EUTRANCellIdentifier_decode_uper; +per_type_encoder_f EUTRANCellIdentifier_encode_uper; +per_type_decoder_f EUTRANCellIdentifier_decode_aper; +per_type_encoder_f EUTRANCellIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANCellIdentifier_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c new file mode 100644 index 0000000..a9757ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANRCellResourceCoordinationRequest.h" + +static asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P105, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationRequest_specs_1 = { + sizeof(struct EUTRANRCellResourceCoordinationRequest), + offsetof(struct EUTRANRCellResourceCoordinationRequest, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest = { + "EUTRANRCellResourceCoordinationRequest", + "EUTRANRCellResourceCoordinationRequest", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationRequest_1, + 1, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h new file mode 100644 index 0000000..833d445 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANRCellResourceCoordinationRequest_H_ +#define _EUTRANRCellResourceCoordinationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANRCellResourceCoordinationRequest */ +typedef struct EUTRANRCellResourceCoordinationRequest { + ProtocolIE_Container_119P105_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANRCellResourceCoordinationRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c new file mode 100644 index 0000000..478bbc4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANRCellResourceCoordinationResponse.h" + +static asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P108, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationResponse_specs_1 = { + sizeof(struct EUTRANRCellResourceCoordinationResponse), + offsetof(struct EUTRANRCellResourceCoordinationResponse, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse = { + "EUTRANRCellResourceCoordinationResponse", + "EUTRANRCellResourceCoordinationResponse", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationResponse_1, + 1, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h new file mode 100644 index 0000000..2d08bab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANRCellResourceCoordinationResponse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANRCellResourceCoordinationResponse_H_ +#define _EUTRANRCellResourceCoordinationResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANRCellResourceCoordinationResponse */ +typedef struct EUTRANRCellResourceCoordinationResponse { + ProtocolIE_Container_119P108_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANRCellResourceCoordinationResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANTraceID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANTraceID.c new file mode 100644 index 0000000..8aff8c1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANTraceID.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EUTRANTraceID.h" + +int +EUTRANTraceID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EUTRANTraceID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EUTRANTraceID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANTraceID = { + "EUTRANTraceID", + "EUTRANTraceID", + &asn_OP_OCTET_STRING, + asn_DEF_EUTRANTraceID_tags_1, + sizeof(asn_DEF_EUTRANTraceID_tags_1) + /sizeof(asn_DEF_EUTRANTraceID_tags_1[0]), /* 1 */ + asn_DEF_EUTRANTraceID_tags_1, /* Same as above */ + sizeof(asn_DEF_EUTRANTraceID_tags_1) + /sizeof(asn_DEF_EUTRANTraceID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EUTRANTraceID_constr_1, EUTRANTraceID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANTraceID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANTraceID.h new file mode 100644 index 0000000..0c5e86e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EUTRANTraceID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EUTRANTraceID_H_ +#define _EUTRANTraceID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EUTRANTraceID */ +typedef OCTET_STRING_t EUTRANTraceID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EUTRANTraceID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANTraceID; +asn_struct_free_f EUTRANTraceID_free; +asn_struct_print_f EUTRANTraceID_print; +asn_constr_check_f EUTRANTraceID_constraint; +ber_type_decoder_f EUTRANTraceID_decode_ber; +der_type_encoder_f EUTRANTraceID_encode_der; +xer_type_decoder_f EUTRANTraceID_decode_xer; +xer_type_encoder_f EUTRANTraceID_encode_xer; +per_type_decoder_f EUTRANTraceID_decode_uper; +per_type_encoder_f EUTRANTraceID_encode_uper; +per_type_decoder_f EUTRANTraceID_decode_aper; +per_type_encoder_f EUTRANTraceID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EUTRANTraceID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EncryptionAlgorithms.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EncryptionAlgorithms.c new file mode 100644 index 0000000..40d1df2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EncryptionAlgorithms.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EncryptionAlgorithms.h" + +int +EncryptionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EncryptionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_EncryptionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EncryptionAlgorithms = { + "EncryptionAlgorithms", + "EncryptionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_EncryptionAlgorithms_tags_1, + sizeof(asn_DEF_EncryptionAlgorithms_tags_1) + /sizeof(asn_DEF_EncryptionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_EncryptionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_EncryptionAlgorithms_tags_1) + /sizeof(asn_DEF_EncryptionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EncryptionAlgorithms_constr_1, EncryptionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EncryptionAlgorithms.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EncryptionAlgorithms.h new file mode 100644 index 0000000..780bd26 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EncryptionAlgorithms.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EncryptionAlgorithms_H_ +#define _EncryptionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* EncryptionAlgorithms */ +typedef BIT_STRING_t EncryptionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EncryptionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EncryptionAlgorithms; +asn_struct_free_f EncryptionAlgorithms_free; +asn_struct_print_f EncryptionAlgorithms_print; +asn_constr_check_f EncryptionAlgorithms_constraint; +ber_type_decoder_f EncryptionAlgorithms_decode_ber; +der_type_encoder_f EncryptionAlgorithms_encode_der; +xer_type_decoder_f EncryptionAlgorithms_decode_xer; +xer_type_encoder_f EncryptionAlgorithms_encode_xer; +per_type_decoder_f EncryptionAlgorithms_decode_uper; +per_type_encoder_f EncryptionAlgorithms_encode_uper; +per_type_decoder_f EncryptionAlgorithms_decode_aper; +per_type_encoder_f EncryptionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EncryptionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTP.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTP.c new file mode 100644 index 0000000..b1d974b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTP.c @@ -0,0 +1,143 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EnhancedRNTP.h" + +#include "EnhancedRNTPStartTime.h" +#include "ProtocolExtensionContainer.h" +static int +memb_enhancedRNTPBitmap_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 12 && size <= 8800)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_enhancedRNTPBitmap_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 14, 14, 12, 8800 } /* (SIZE(12..8800,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EnhancedRNTP_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP, enhancedRNTPBitmap), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enhancedRNTPBitmap_constr_2, memb_enhancedRNTPBitmap_constraint_1 }, + 0, 0, /* No default value */ + "enhancedRNTPBitmap" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP, rNTP_High_Power_Threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RNTP_Threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rNTP-High-Power-Threshold" + }, + { ATF_POINTER, 2, offsetof(struct EnhancedRNTP, enhancedRNTPStartTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EnhancedRNTPStartTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "enhancedRNTPStartTime" + }, + { ATF_POINTER, 1, offsetof(struct EnhancedRNTP, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P135, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_EnhancedRNTP_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTP_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enhancedRNTPBitmap */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rNTP-High-Power-Threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* enhancedRNTPStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_specs_1 = { + sizeof(struct EnhancedRNTP), + offsetof(struct EnhancedRNTP, _asn_ctx), + asn_MAP_EnhancedRNTP_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_EnhancedRNTP_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP = { + "EnhancedRNTP", + "EnhancedRNTP", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTP_tags_1, + sizeof(asn_DEF_EnhancedRNTP_tags_1) + /sizeof(asn_DEF_EnhancedRNTP_tags_1[0]), /* 1 */ + asn_DEF_EnhancedRNTP_tags_1, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTP_tags_1) + /sizeof(asn_DEF_EnhancedRNTP_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTP_1, + 4, /* Elements count */ + &asn_SPC_EnhancedRNTP_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTP.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTP.h new file mode 100644 index 0000000..1d82da1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTP.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EnhancedRNTP_H_ +#define _EnhancedRNTP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "RNTP-Threshold.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EnhancedRNTPStartTime; +struct ProtocolExtensionContainer; + +/* EnhancedRNTP */ +typedef struct EnhancedRNTP { + BIT_STRING_t enhancedRNTPBitmap; + RNTP_Threshold_t rNTP_High_Power_Threshold; + struct EnhancedRNTPStartTime *enhancedRNTPStartTime; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnhancedRNTP_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_specs_1; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTP_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EnhancedRNTP_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c new file mode 100644 index 0000000..39a49a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTPStartTime.c @@ -0,0 +1,156 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EnhancedRNTPStartTime.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_startSFN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_startSubframeNumber_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 9)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_startSFN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 0, 1023 } /* (0..1023,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_startSubframeNumber_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 9 } /* (0..9,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime, startSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSFN_constr_2, memb_startSFN_constraint_1 }, + 0, 0, /* No default value */ + "startSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime, startSubframeNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_startSubframeNumber_constr_3, memb_startSubframeNumber_constraint_1 }, + 0, 0, /* No default value */ + "startSubframeNumber" + }, + { ATF_POINTER, 1, offsetof(struct EnhancedRNTPStartTime, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P136, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_EnhancedRNTPStartTime_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTPStartTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTPStartTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startSubframeNumber */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_specs_1 = { + sizeof(struct EnhancedRNTPStartTime), + offsetof(struct EnhancedRNTPStartTime, _asn_ctx), + asn_MAP_EnhancedRNTPStartTime_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_EnhancedRNTPStartTime_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime = { + "EnhancedRNTPStartTime", + "EnhancedRNTPStartTime", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTPStartTime_tags_1, + sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1) + /sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1[0]), /* 1 */ + asn_DEF_EnhancedRNTPStartTime_tags_1, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1) + /sizeof(asn_DEF_EnhancedRNTPStartTime_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTPStartTime_1, + 3, /* Elements count */ + &asn_SPC_EnhancedRNTPStartTime_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h new file mode 100644 index 0000000..76c7ff4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EnhancedRNTPStartTime.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EnhancedRNTPStartTime_H_ +#define _EnhancedRNTPStartTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* EnhancedRNTPStartTime */ +typedef struct EnhancedRNTPStartTime { + long startSFN; + long startSubframeNumber; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnhancedRNTPStartTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_specs_1; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _EnhancedRNTPStartTime_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ErrorIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ErrorIndication.c new file mode 100644 index 0000000..b2050f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ErrorIndication.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ErrorIndication.h" + +asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { + sizeof(struct ErrorIndication), + offsetof(struct ErrorIndication, _asn_ctx), + asn_MAP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_tags_1, + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ErrorIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ErrorIndication.h new file mode 100644 index 0000000..f6cd779 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ErrorIndication.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ErrorIndication_H_ +#define _ErrorIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ErrorIndication */ +typedef struct ErrorIndication { + ProtocolIE_Container_119P21_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ErrorIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EventType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EventType.c new file mode 100644 index 0000000..ac94148 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EventType.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "EventType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_EventType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_EventType_value2enum_1[] = { + { 0, 22, "change-of-serving-cell" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_EventType_enum2value_1[] = { + 0 /* change-of-serving-cell(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_EventType_specs_1 = { + asn_MAP_EventType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_EventType_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_EventType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_EventType = { + "EventType", + "EventType", + &asn_OP_NativeEnumerated, + asn_DEF_EventType_tags_1, + sizeof(asn_DEF_EventType_tags_1) + /sizeof(asn_DEF_EventType_tags_1[0]), /* 1 */ + asn_DEF_EventType_tags_1, /* Same as above */ + sizeof(asn_DEF_EventType_tags_1) + /sizeof(asn_DEF_EventType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_EventType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_EventType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EventType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EventType.h new file mode 100644 index 0000000..d62c322 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/EventType.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _EventType_H_ +#define _EventType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum EventType { + EventType_change_of_serving_cell = 0 + /* + * Enumeration is extensible + */ +} e_EventType; + +/* EventType */ +typedef long EventType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_EventType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_EventType; +extern const asn_INTEGER_specifics_t asn_SPC_EventType_specs_1; +asn_struct_free_f EventType_free; +asn_struct_print_f EventType_print; +asn_constr_check_f EventType_constraint; +ber_type_decoder_f EventType_decode_ber; +der_type_encoder_f EventType_encode_der; +xer_type_decoder_f EventType_decode_xer; +xer_type_encoder_f EventType_encode_xer; +per_type_decoder_f EventType_decode_uper; +per_type_encoder_f EventType_encode_uper; +per_type_decoder_f EventType_decode_aper; +per_type_encoder_f EventType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _EventType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedActivityPeriod.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedActivityPeriod.c new file mode 100644 index 0000000..d66ca4c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedActivityPeriod.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedActivityPeriod.h" + +int +ExpectedActivityPeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value >= 1 && value <= 30) || (value == 40) || (value == 50) || (value == 60) || (value == 80) || (value == 100) || (value == 120) || (value == 150) || (value >= 180 && value <= 181))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExpectedActivityPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 181 } /* (1..181,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ExpectedActivityPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedActivityPeriod = { + "ExpectedActivityPeriod", + "ExpectedActivityPeriod", + &asn_OP_NativeInteger, + asn_DEF_ExpectedActivityPeriod_tags_1, + sizeof(asn_DEF_ExpectedActivityPeriod_tags_1) + /sizeof(asn_DEF_ExpectedActivityPeriod_tags_1[0]), /* 1 */ + asn_DEF_ExpectedActivityPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedActivityPeriod_tags_1) + /sizeof(asn_DEF_ExpectedActivityPeriod_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExpectedActivityPeriod_constr_1, ExpectedActivityPeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedActivityPeriod.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedActivityPeriod.h new file mode 100644 index 0000000..ed7c871 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedActivityPeriod.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedActivityPeriod_H_ +#define _ExpectedActivityPeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ExpectedActivityPeriod */ +typedef long ExpectedActivityPeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExpectedActivityPeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedActivityPeriod; +asn_struct_free_f ExpectedActivityPeriod_free; +asn_struct_print_f ExpectedActivityPeriod_print; +asn_constr_check_f ExpectedActivityPeriod_constraint; +ber_type_decoder_f ExpectedActivityPeriod_decode_ber; +der_type_encoder_f ExpectedActivityPeriod_encode_der; +xer_type_decoder_f ExpectedActivityPeriod_decode_xer; +xer_type_encoder_f ExpectedActivityPeriod_encode_xer; +per_type_decoder_f ExpectedActivityPeriod_decode_uper; +per_type_encoder_f ExpectedActivityPeriod_encode_uper; +per_type_decoder_f ExpectedActivityPeriod_decode_aper; +per_type_encoder_f ExpectedActivityPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedActivityPeriod_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedHOInterval.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedHOInterval.c new file mode 100644 index 0000000..9228607 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedHOInterval.c @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedHOInterval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExpectedHOInterval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ExpectedHOInterval_value2enum_1[] = { + { 0, 5, "sec15" }, + { 1, 5, "sec30" }, + { 2, 5, "sec60" }, + { 3, 5, "sec90" }, + { 4, 6, "sec120" }, + { 5, 6, "sec180" }, + { 6, 9, "long-time" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ExpectedHOInterval_enum2value_1[] = { + 6, /* long-time(6) */ + 4, /* sec120(4) */ + 0, /* sec15(0) */ + 5, /* sec180(5) */ + 1, /* sec30(1) */ + 2, /* sec60(2) */ + 3 /* sec90(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ExpectedHOInterval_specs_1 = { + asn_MAP_ExpectedHOInterval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ExpectedHOInterval_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ExpectedHOInterval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedHOInterval = { + "ExpectedHOInterval", + "ExpectedHOInterval", + &asn_OP_NativeEnumerated, + asn_DEF_ExpectedHOInterval_tags_1, + sizeof(asn_DEF_ExpectedHOInterval_tags_1) + /sizeof(asn_DEF_ExpectedHOInterval_tags_1[0]), /* 1 */ + asn_DEF_ExpectedHOInterval_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedHOInterval_tags_1) + /sizeof(asn_DEF_ExpectedHOInterval_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExpectedHOInterval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ExpectedHOInterval_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedHOInterval.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedHOInterval.h new file mode 100644 index 0000000..5db0d0a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedHOInterval.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedHOInterval_H_ +#define _ExpectedHOInterval_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ExpectedHOInterval { + ExpectedHOInterval_sec15 = 0, + ExpectedHOInterval_sec30 = 1, + ExpectedHOInterval_sec60 = 2, + ExpectedHOInterval_sec90 = 3, + ExpectedHOInterval_sec120 = 4, + ExpectedHOInterval_sec180 = 5, + ExpectedHOInterval_long_time = 6 + /* + * Enumeration is extensible + */ +} e_ExpectedHOInterval; + +/* ExpectedHOInterval */ +typedef long ExpectedHOInterval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExpectedHOInterval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedHOInterval; +extern const asn_INTEGER_specifics_t asn_SPC_ExpectedHOInterval_specs_1; +asn_struct_free_f ExpectedHOInterval_free; +asn_struct_print_f ExpectedHOInterval_print; +asn_constr_check_f ExpectedHOInterval_constraint; +ber_type_decoder_f ExpectedHOInterval_decode_ber; +der_type_encoder_f ExpectedHOInterval_encode_der; +xer_type_decoder_f ExpectedHOInterval_decode_xer; +xer_type_encoder_f ExpectedHOInterval_encode_xer; +per_type_decoder_f ExpectedHOInterval_decode_uper; +per_type_encoder_f ExpectedHOInterval_encode_uper; +per_type_decoder_f ExpectedHOInterval_decode_aper; +per_type_encoder_f ExpectedHOInterval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedHOInterval_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedIdlePeriod.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedIdlePeriod.c new file mode 100644 index 0000000..b5a132a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedIdlePeriod.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedIdlePeriod.h" + +int +ExpectedIdlePeriod_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if(((value >= 1 && value <= 30) || (value == 40) || (value == 50) || (value == 60) || (value == 80) || (value == 100) || (value == 120) || (value == 150) || (value >= 180 && value <= 181))) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExpectedIdlePeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 181 } /* (1..181,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ExpectedIdlePeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedIdlePeriod = { + "ExpectedIdlePeriod", + "ExpectedIdlePeriod", + &asn_OP_NativeInteger, + asn_DEF_ExpectedIdlePeriod_tags_1, + sizeof(asn_DEF_ExpectedIdlePeriod_tags_1) + /sizeof(asn_DEF_ExpectedIdlePeriod_tags_1[0]), /* 1 */ + asn_DEF_ExpectedIdlePeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedIdlePeriod_tags_1) + /sizeof(asn_DEF_ExpectedIdlePeriod_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExpectedIdlePeriod_constr_1, ExpectedIdlePeriod_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedIdlePeriod.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedIdlePeriod.h new file mode 100644 index 0000000..5bac0e7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedIdlePeriod.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedIdlePeriod_H_ +#define _ExpectedIdlePeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ExpectedIdlePeriod */ +typedef long ExpectedIdlePeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExpectedIdlePeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedIdlePeriod; +asn_struct_free_f ExpectedIdlePeriod_free; +asn_struct_print_f ExpectedIdlePeriod_print; +asn_constr_check_f ExpectedIdlePeriod_constraint; +ber_type_decoder_f ExpectedIdlePeriod_decode_ber; +der_type_encoder_f ExpectedIdlePeriod_encode_der; +xer_type_decoder_f ExpectedIdlePeriod_decode_xer; +xer_type_encoder_f ExpectedIdlePeriod_encode_xer; +per_type_decoder_f ExpectedIdlePeriod_decode_uper; +per_type_encoder_f ExpectedIdlePeriod_encode_uper; +per_type_decoder_f ExpectedIdlePeriod_decode_aper; +per_type_encoder_f ExpectedIdlePeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedIdlePeriod_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c new file mode 100644 index 0000000..29def0c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedUEActivityBehaviour.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_1[] = { + { ATF_POINTER, 4, offsetof(struct ExpectedUEActivityBehaviour, expectedActivityPeriod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedActivityPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedActivityPeriod" + }, + { ATF_POINTER, 3, offsetof(struct ExpectedUEActivityBehaviour, expectedIdlePeriod), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedIdlePeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedIdlePeriod" + }, + { ATF_POINTER, 2, offsetof(struct ExpectedUEActivityBehaviour, sourceofUEActivityBehaviourInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SourceOfUEActivityBehaviourInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sourceofUEActivityBehaviourInformation" + }, + { ATF_POINTER, 1, offsetof(struct ExpectedUEActivityBehaviour, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P143, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ExpectedUEActivityBehaviour_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ExpectedUEActivityBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEActivityBehaviour_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* expectedActivityPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expectedIdlePeriod */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sourceofUEActivityBehaviourInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_specs_1 = { + sizeof(struct ExpectedUEActivityBehaviour), + offsetof(struct ExpectedUEActivityBehaviour, _asn_ctx), + asn_MAP_ExpectedUEActivityBehaviour_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ExpectedUEActivityBehaviour_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour = { + "ExpectedUEActivityBehaviour", + "ExpectedUEActivityBehaviour", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEActivityBehaviour_tags_1, + sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1[0]), /* 1 */ + asn_DEF_ExpectedUEActivityBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEActivityBehaviour_1, + 4, /* Elements count */ + &asn_SPC_ExpectedUEActivityBehaviour_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h new file mode 100644 index 0000000..e74620d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEActivityBehaviour.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedUEActivityBehaviour_H_ +#define _ExpectedUEActivityBehaviour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ExpectedActivityPeriod.h" +#include "ExpectedIdlePeriod.h" +#include "SourceOfUEActivityBehaviourInformation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ExpectedUEActivityBehaviour */ +typedef struct ExpectedUEActivityBehaviour { + ExpectedActivityPeriod_t *expectedActivityPeriod; /* OPTIONAL */ + ExpectedIdlePeriod_t *expectedIdlePeriod; /* OPTIONAL */ + SourceOfUEActivityBehaviourInformation_t *sourceofUEActivityBehaviourInformation; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExpectedUEActivityBehaviour_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_specs_1; +extern asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedUEActivityBehaviour_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEBehaviour.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEBehaviour.c new file mode 100644 index 0000000..ffa2fdc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEBehaviour.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExpectedUEBehaviour.h" + +#include "ExpectedUEActivityBehaviour.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_1[] = { + { ATF_POINTER, 3, offsetof(struct ExpectedUEBehaviour, expectedActivity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedUEActivityBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedActivity" + }, + { ATF_POINTER, 2, offsetof(struct ExpectedUEBehaviour, expectedHOInterval), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ExpectedHOInterval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "expectedHOInterval" + }, + { ATF_POINTER, 1, offsetof(struct ExpectedUEBehaviour, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P142, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ExpectedUEBehaviour_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ExpectedUEBehaviour_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEBehaviour_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* expectedActivity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* expectedHOInterval */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_specs_1 = { + sizeof(struct ExpectedUEBehaviour), + offsetof(struct ExpectedUEBehaviour, _asn_ctx), + asn_MAP_ExpectedUEBehaviour_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ExpectedUEBehaviour_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour = { + "ExpectedUEBehaviour", + "ExpectedUEBehaviour", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEBehaviour_tags_1, + sizeof(asn_DEF_ExpectedUEBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEBehaviour_tags_1[0]), /* 1 */ + asn_DEF_ExpectedUEBehaviour_tags_1, /* Same as above */ + sizeof(asn_DEF_ExpectedUEBehaviour_tags_1) + /sizeof(asn_DEF_ExpectedUEBehaviour_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEBehaviour_1, + 3, /* Elements count */ + &asn_SPC_ExpectedUEBehaviour_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEBehaviour.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEBehaviour.h new file mode 100644 index 0000000..4079716 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExpectedUEBehaviour.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExpectedUEBehaviour_H_ +#define _ExpectedUEBehaviour_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ExpectedHOInterval.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ExpectedUEActivityBehaviour; +struct ProtocolExtensionContainer; + +/* ExpectedUEBehaviour */ +typedef struct ExpectedUEBehaviour { + struct ExpectedUEActivityBehaviour *expectedActivity; /* OPTIONAL */ + ExpectedHOInterval_t *expectedHOInterval; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExpectedUEBehaviour_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_specs_1; +extern asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExpectedUEBehaviour_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedBitRate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedBitRate.c new file mode 100644 index 0000000..421dda7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedBitRate.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExtendedBitRate.h" + +int +ExtendedBitRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 10000000001 && value <= 4000000000000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ExtendedBitRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 42, -1, 10000000001, 4000000000000 } /* (10000000001..4000000000000,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ExtendedBitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ExtendedBitRate = { + "ExtendedBitRate", + "ExtendedBitRate", + &asn_OP_INTEGER, + asn_DEF_ExtendedBitRate_tags_1, + sizeof(asn_DEF_ExtendedBitRate_tags_1) + /sizeof(asn_DEF_ExtendedBitRate_tags_1[0]), /* 1 */ + asn_DEF_ExtendedBitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_ExtendedBitRate_tags_1) + /sizeof(asn_DEF_ExtendedBitRate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ExtendedBitRate_constr_1, ExtendedBitRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedBitRate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedBitRate.h new file mode 100644 index 0000000..0d8f486 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedBitRate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExtendedBitRate_H_ +#define _ExtendedBitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "INTEGER.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ExtendedBitRate */ +typedef INTEGER_t ExtendedBitRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ExtendedBitRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ExtendedBitRate; +asn_struct_free_f ExtendedBitRate_free; +asn_struct_print_f ExtendedBitRate_print; +asn_constr_check_f ExtendedBitRate_constraint; +ber_type_decoder_f ExtendedBitRate_decode_ber; +der_type_encoder_f ExtendedBitRate_encode_der; +xer_type_decoder_f ExtendedBitRate_decode_xer; +xer_type_encoder_f ExtendedBitRate_encode_xer; +per_type_decoder_f ExtendedBitRate_decode_uper; +per_type_encoder_f ExtendedBitRate_encode_uper; +per_type_decoder_f ExtendedBitRate_decode_aper; +per_type_encoder_f ExtendedBitRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExtendedBitRate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c new file mode 100644 index 0000000..dc52230 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.c @@ -0,0 +1,132 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ExtendedULInterferenceOverloadInfo.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_associatedSubframes_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 5)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_associatedSubframes_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 5, 5 } /* (SIZE(5..5)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo, associatedSubframes), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_associatedSubframes_constr_2, memb_associatedSubframes_constraint_1 }, + 0, 0, /* No default value */ + "associatedSubframes" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo, extended_ul_InterferenceOverloadIndication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_InterferenceOverloadIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "extended-ul-InterferenceOverloadIndication" + }, + { ATF_POINTER, 1, offsetof(struct ExtendedULInterferenceOverloadInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P144, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ExtendedULInterferenceOverloadInfo_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExtendedULInterferenceOverloadInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* associatedSubframes */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* extended-ul-InterferenceOverloadIndication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_specs_1 = { + sizeof(struct ExtendedULInterferenceOverloadInfo), + offsetof(struct ExtendedULInterferenceOverloadInfo, _asn_ctx), + asn_MAP_ExtendedULInterferenceOverloadInfo_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ExtendedULInterferenceOverloadInfo_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo = { + "ExtendedULInterferenceOverloadInfo", + "ExtendedULInterferenceOverloadInfo", + &asn_OP_SEQUENCE, + asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1, + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1[0]), /* 1 */ + asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExtendedULInterferenceOverloadInfo_1, + 3, /* Elements count */ + &asn_SPC_ExtendedULInterferenceOverloadInfo_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h new file mode 100644 index 0000000..9fbf85a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ExtendedULInterferenceOverloadInfo.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ExtendedULInterferenceOverloadInfo_H_ +#define _ExtendedULInterferenceOverloadInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "UL-InterferenceOverloadIndication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ExtendedULInterferenceOverloadInfo */ +typedef struct ExtendedULInterferenceOverloadInfo { + BIT_STRING_t associatedSubframes; + UL_InterferenceOverloadIndication_t extended_ul_InterferenceOverloadIndication; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExtendedULInterferenceOverloadInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ExtendedULInterferenceOverloadInfo_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-Info.c new file mode 100644 index 0000000..755368e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-Info.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FDD-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_FDD_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, uL_EARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-EARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, dL_EARFCN), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-EARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, uL_Transmission_Bandwidth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Transmission_Bandwidth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Transmission-Bandwidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info, dL_Transmission_Bandwidth), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Transmission_Bandwidth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Transmission-Bandwidth" + }, + { ATF_POINTER, 1, offsetof(struct FDD_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P145, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FDD_Info_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_FDD_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-EARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dL-EARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uL-Transmission-Bandwidth */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dL-Transmission-Bandwidth */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_specs_1 = { + sizeof(struct FDD_Info), + offsetof(struct FDD_Info, _asn_ctx), + asn_MAP_FDD_Info_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_FDD_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_Info = { + "FDD-Info", + "FDD-Info", + &asn_OP_SEQUENCE, + asn_DEF_FDD_Info_tags_1, + sizeof(asn_DEF_FDD_Info_tags_1) + /sizeof(asn_DEF_FDD_Info_tags_1[0]), /* 1 */ + asn_DEF_FDD_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_FDD_Info_tags_1) + /sizeof(asn_DEF_FDD_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_Info_1, + 5, /* Elements count */ + &asn_SPC_FDD_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-Info.h new file mode 100644 index 0000000..cdc6e37 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-Info.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FDD_Info_H_ +#define _FDD_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EARFCN.h" +#include "Transmission-Bandwidth.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* FDD-Info */ +typedef struct FDD_Info { + EARFCN_t uL_EARFCN; + EARFCN_t dL_EARFCN; + Transmission_Bandwidth_t uL_Transmission_Bandwidth; + Transmission_Bandwidth_t dL_Transmission_Bandwidth; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FDD_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_FDD_Info_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FDD_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c new file mode 100644 index 0000000..4daed7c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FDD-InfoNeighbourServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information, ul_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information, dl_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NRFreqInfo" + }, + { ATF_POINTER, 1, offsetof(struct FDD_InfoNeighbourServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P94, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FDD_InfoNeighbourServedNRCell_Information_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoNeighbourServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_specs_1 = { + sizeof(struct FDD_InfoNeighbourServedNRCell_Information), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information, _asn_ctx), + asn_MAP_FDD_InfoNeighbourServedNRCell_Information_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_FDD_InfoNeighbourServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information = { + "FDD-InfoNeighbourServedNRCell-Information", + "FDD-InfoNeighbourServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1, + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoNeighbourServedNRCell_Information_1, + 3, /* Elements count */ + &asn_SPC_FDD_InfoNeighbourServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h new file mode 100644 index 0000000..674659f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoNeighbourServedNRCell-Information.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FDD_InfoNeighbourServedNRCell_Information_H_ +#define _FDD_InfoNeighbourServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* FDD-InfoNeighbourServedNRCell-Information */ +typedef struct FDD_InfoNeighbourServedNRCell_Information { + NRFreqInfo_t ul_NRFreqInfo; + NRFreqInfo_t dl_NRFreqInfo; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_InfoNeighbourServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FDD_InfoNeighbourServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c new file mode 100644 index 0000000..3bccd52 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FDD-InfoServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, ul_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, dl_NRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, ul_NR_TxBW), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-NR-TxBW" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information, dl_NR_TxBW), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dl-NR-TxBW" + }, + { ATF_POINTER, 1, offsetof(struct FDD_InfoServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P93, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FDD_InfoServedNRCell_Information_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_FDD_InfoServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dl-NRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ul-NR-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dl-NR-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_specs_1 = { + sizeof(struct FDD_InfoServedNRCell_Information), + offsetof(struct FDD_InfoServedNRCell_Information, _asn_ctx), + asn_MAP_FDD_InfoServedNRCell_Information_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_FDD_InfoServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information = { + "FDD-InfoServedNRCell-Information", + "FDD-InfoServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoServedNRCell_Information_tags_1, + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_FDD_InfoServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoServedNRCell_Information_1, + 5, /* Elements count */ + &asn_SPC_FDD_InfoServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h new file mode 100644 index 0000000..679d048 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FDD-InfoServedNRCell-Information.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FDD_InfoServedNRCell_Information_H_ +#define _FDD_InfoServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "NR-TxBW.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* FDD-InfoServedNRCell-Information */ +typedef struct FDD_InfoServedNRCell_Information { + NRFreqInfo_t ul_NRFreqInfo; + NRFreqInfo_t dl_NRFreqInfo; + NR_TxBW_t ul_NR_TxBW; + NR_TxBW_t dl_NR_TxBW; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_InfoServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FDD_InfoServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FiveGS-TAC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FiveGS-TAC.c new file mode 100644 index 0000000..b9aa93b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FiveGS-TAC.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FiveGS-TAC.h" + +int +FiveGS_TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_FiveGS_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_FiveGS_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC = { + "FiveGS-TAC", + "FiveGS-TAC", + &asn_OP_OCTET_STRING, + asn_DEF_FiveGS_TAC_tags_1, + sizeof(asn_DEF_FiveGS_TAC_tags_1) + /sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */ + asn_DEF_FiveGS_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_FiveGS_TAC_tags_1) + /sizeof(asn_DEF_FiveGS_TAC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_FiveGS_TAC_constr_1, FiveGS_TAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FiveGS-TAC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FiveGS-TAC.h new file mode 100644 index 0000000..4feeedb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FiveGS-TAC.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FiveGS_TAC_H_ +#define _FiveGS_TAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FiveGS-TAC */ +typedef OCTET_STRING_t FiveGS_TAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FiveGS_TAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FiveGS_TAC; +asn_struct_free_f FiveGS_TAC_free; +asn_struct_print_f FiveGS_TAC_print; +asn_constr_check_f FiveGS_TAC_constraint; +ber_type_decoder_f FiveGS_TAC_decode_ber; +der_type_encoder_f FiveGS_TAC_encode_der; +xer_type_decoder_f FiveGS_TAC_decode_xer; +xer_type_encoder_f FiveGS_TAC_encode_xer; +per_type_decoder_f FiveGS_TAC_decode_uper; +per_type_encoder_f FiveGS_TAC_encode_uper; +per_type_decoder_f FiveGS_TAC_decode_aper; +per_type_encoder_f FiveGS_TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FiveGS_TAC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenInterRATs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenInterRATs.c new file mode 100644 index 0000000..951c39b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenInterRATs.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenInterRATs.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ForbiddenInterRATs_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ForbiddenInterRATs_value2enum_1[] = { + { 0, 3, "all" }, + { 1, 5, "geran" }, + { 2, 5, "utran" }, + { 3, 8, "cdma2000" }, + { 4, 13, "geranandutran" }, + { 5, 16, "cdma2000andutran" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ForbiddenInterRATs_enum2value_1[] = { + 0, /* all(0) */ + 3, /* cdma2000(3) */ + 5, /* cdma2000andutran(5) */ + 1, /* geran(1) */ + 4, /* geranandutran(4) */ + 2 /* utran(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ForbiddenInterRATs_specs_1 = { + asn_MAP_ForbiddenInterRATs_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ForbiddenInterRATs_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenInterRATs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenInterRATs = { + "ForbiddenInterRATs", + "ForbiddenInterRATs", + &asn_OP_NativeEnumerated, + asn_DEF_ForbiddenInterRATs_tags_1, + sizeof(asn_DEF_ForbiddenInterRATs_tags_1) + /sizeof(asn_DEF_ForbiddenInterRATs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenInterRATs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenInterRATs_tags_1) + /sizeof(asn_DEF_ForbiddenInterRATs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenInterRATs_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ForbiddenInterRATs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenInterRATs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenInterRATs.h new file mode 100644 index 0000000..70257a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenInterRATs.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenInterRATs_H_ +#define _ForbiddenInterRATs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ForbiddenInterRATs { + ForbiddenInterRATs_all = 0, + ForbiddenInterRATs_geran = 1, + ForbiddenInterRATs_utran = 2, + ForbiddenInterRATs_cdma2000 = 3, + /* + * Enumeration is extensible + */ + ForbiddenInterRATs_geranandutran = 4, + ForbiddenInterRATs_cdma2000andutran = 5 +} e_ForbiddenInterRATs; + +/* ForbiddenInterRATs */ +typedef long ForbiddenInterRATs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ForbiddenInterRATs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenInterRATs; +extern const asn_INTEGER_specifics_t asn_SPC_ForbiddenInterRATs_specs_1; +asn_struct_free_f ForbiddenInterRATs_free; +asn_struct_print_f ForbiddenInterRATs_print; +asn_constr_check_f ForbiddenInterRATs_constraint; +ber_type_decoder_f ForbiddenInterRATs_decode_ber; +der_type_encoder_f ForbiddenInterRATs_encode_der; +xer_type_decoder_f ForbiddenInterRATs_decode_xer; +xer_type_encoder_f ForbiddenInterRATs_encode_xer; +per_type_decoder_f ForbiddenInterRATs_decode_uper; +per_type_encoder_f ForbiddenInterRATs_encode_uper; +per_type_decoder_f ForbiddenInterRATs_decode_aper; +per_type_encoder_f ForbiddenInterRATs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenInterRATs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLACs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLACs.c new file mode 100644 index 0000000..c964f6b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLACs.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenLACs.h" + +asn_per_constraints_t asn_PER_type_ForbiddenLACs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenLACs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_LAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenLACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenLACs_specs_1 = { + sizeof(struct ForbiddenLACs), + offsetof(struct ForbiddenLACs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLACs = { + "ForbiddenLACs", + "ForbiddenLACs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenLACs_tags_1, + sizeof(asn_DEF_ForbiddenLACs_tags_1) + /sizeof(asn_DEF_ForbiddenLACs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenLACs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenLACs_tags_1) + /sizeof(asn_DEF_ForbiddenLACs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenLACs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenLACs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenLACs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLACs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLACs.h new file mode 100644 index 0000000..de44e76 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLACs.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenLACs_H_ +#define _ForbiddenLACs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ForbiddenLACs */ +typedef struct ForbiddenLACs { + A_SEQUENCE_OF(LAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLACs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLACs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenLACs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenLACs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenLACs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenLACs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs-Item.c new file mode 100644 index 0000000..b48326b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenLAs-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item, forbiddenLACs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenLACs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenLACs" + }, + { ATF_POINTER, 1, offsetof(struct ForbiddenLAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P147, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ForbiddenLAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ForbiddenLAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenLAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* forbiddenLACs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_specs_1 = { + sizeof(struct ForbiddenLAs_Item), + offsetof(struct ForbiddenLAs_Item, _asn_ctx), + asn_MAP_ForbiddenLAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ForbiddenLAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item = { + "ForbiddenLAs-Item", + "ForbiddenLAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenLAs_Item_tags_1, + sizeof(asn_DEF_ForbiddenLAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_Item_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenLAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenLAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenLAs_Item_1, + 3, /* Elements count */ + &asn_SPC_ForbiddenLAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs-Item.h new file mode 100644 index 0000000..e648254 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenLAs_Item_H_ +#define _ForbiddenLAs_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ForbiddenLACs.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ForbiddenLAs-Item */ +typedef struct ForbiddenLAs_Item { + PLMN_Identity_t pLMN_Identity; + ForbiddenLACs_t forbiddenLACs; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenLAs_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs.c new file mode 100644 index 0000000..61e8e58 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenLAs.h" + +#include "ForbiddenLAs-Item.h" +asn_per_constraints_t asn_PER_type_ForbiddenLAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenLAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenLAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenLAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenLAs_specs_1 = { + sizeof(struct ForbiddenLAs), + offsetof(struct ForbiddenLAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs = { + "ForbiddenLAs", + "ForbiddenLAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenLAs_tags_1, + sizeof(asn_DEF_ForbiddenLAs_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenLAs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenLAs_tags_1) + /sizeof(asn_DEF_ForbiddenLAs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenLAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenLAs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenLAs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs.h new file mode 100644 index 0000000..13fbb72 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenLAs.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenLAs_H_ +#define _ForbiddenLAs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ForbiddenLAs_Item; + +/* ForbiddenLAs */ +typedef struct ForbiddenLAs { + A_SEQUENCE_OF(struct ForbiddenLAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenLAs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenLAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenLAs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTACs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTACs.c new file mode 100644 index 0000000..723a68e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTACs.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenTACs.h" + +asn_per_constraints_t asn_PER_type_ForbiddenTACs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 12, 12, 1, 4096 } /* (SIZE(1..4096)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenTACs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenTACs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenTACs_specs_1 = { + sizeof(struct ForbiddenTACs), + offsetof(struct ForbiddenTACs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTACs = { + "ForbiddenTACs", + "ForbiddenTACs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenTACs_tags_1, + sizeof(asn_DEF_ForbiddenTACs_tags_1) + /sizeof(asn_DEF_ForbiddenTACs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenTACs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenTACs_tags_1) + /sizeof(asn_DEF_ForbiddenTACs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenTACs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenTACs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenTACs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTACs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTACs.h new file mode 100644 index 0000000..b5bc93e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTACs.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenTACs_H_ +#define _ForbiddenTACs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ForbiddenTACs */ +typedef struct ForbiddenTACs { + A_SEQUENCE_OF(TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTACs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTACs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenTACs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenTACs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenTACs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenTACs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs-Item.c new file mode 100644 index 0000000..e873e44 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenTAs-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item, forbiddenTACs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenTACs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenTACs" + }, + { ATF_POINTER, 1, offsetof(struct ForbiddenTAs_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P146, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ForbiddenTAs_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ForbiddenTAs_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenTAs_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* forbiddenTACs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_specs_1 = { + sizeof(struct ForbiddenTAs_Item), + offsetof(struct ForbiddenTAs_Item, _asn_ctx), + asn_MAP_ForbiddenTAs_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ForbiddenTAs_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item = { + "ForbiddenTAs-Item", + "ForbiddenTAs-Item", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenTAs_Item_tags_1, + sizeof(asn_DEF_ForbiddenTAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_Item_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenTAs_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenTAs_Item_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenTAs_Item_1, + 3, /* Elements count */ + &asn_SPC_ForbiddenTAs_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs-Item.h new file mode 100644 index 0000000..b20e197 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenTAs_Item_H_ +#define _ForbiddenTAs_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ForbiddenTACs.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ForbiddenTAs-Item */ +typedef struct ForbiddenTAs_Item { + PLMN_Identity_t pLMN_Identity; + ForbiddenTACs_t forbiddenTACs; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTAs_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenTAs_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs.c new file mode 100644 index 0000000..86cb02b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ForbiddenTAs.h" + +#include "ForbiddenTAs-Item.h" +asn_per_constraints_t asn_PER_type_ForbiddenTAs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ForbiddenTAs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenTAs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenTAs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ForbiddenTAs_specs_1 = { + sizeof(struct ForbiddenTAs), + offsetof(struct ForbiddenTAs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs = { + "ForbiddenTAs", + "ForbiddenTAs", + &asn_OP_SEQUENCE_OF, + asn_DEF_ForbiddenTAs_tags_1, + sizeof(asn_DEF_ForbiddenTAs_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_tags_1[0]), /* 1 */ + asn_DEF_ForbiddenTAs_tags_1, /* Same as above */ + sizeof(asn_DEF_ForbiddenTAs_tags_1) + /sizeof(asn_DEF_ForbiddenTAs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ForbiddenTAs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ForbiddenTAs_1, + 1, /* Single element */ + &asn_SPC_ForbiddenTAs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs.h new file mode 100644 index 0000000..ec42515 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ForbiddenTAs.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ForbiddenTAs_H_ +#define _ForbiddenTAs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ForbiddenTAs_Item; + +/* ForbiddenTAs */ +typedef struct ForbiddenTAs { + A_SEQUENCE_OF(struct ForbiddenTAs_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTAs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs; +extern asn_SET_OF_specifics_t asn_SPC_ForbiddenTAs_specs_1; +extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_1[1]; +extern asn_per_constraints_t asn_PER_type_ForbiddenTAs_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ForbiddenTAs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Fourframes.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Fourframes.c new file mode 100644 index 0000000..be56560 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Fourframes.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Fourframes.h" + +int +Fourframes_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Fourframes_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24, 24 } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Fourframes_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Fourframes = { + "Fourframes", + "Fourframes", + &asn_OP_BIT_STRING, + asn_DEF_Fourframes_tags_1, + sizeof(asn_DEF_Fourframes_tags_1) + /sizeof(asn_DEF_Fourframes_tags_1[0]), /* 1 */ + asn_DEF_Fourframes_tags_1, /* Same as above */ + sizeof(asn_DEF_Fourframes_tags_1) + /sizeof(asn_DEF_Fourframes_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Fourframes_constr_1, Fourframes_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Fourframes.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Fourframes.h new file mode 100644 index 0000000..3be1665 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Fourframes.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Fourframes_H_ +#define _Fourframes_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Fourframes */ +typedef BIT_STRING_t Fourframes_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Fourframes_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Fourframes; +asn_struct_free_f Fourframes_free; +asn_struct_print_f Fourframes_print; +asn_constr_check_f Fourframes_constraint; +ber_type_decoder_f Fourframes_decode_ber; +der_type_encoder_f Fourframes_encode_der; +xer_type_decoder_f Fourframes_decode_xer; +xer_type_encoder_f Fourframes_encode_xer; +per_type_decoder_f Fourframes_decode_uper; +per_type_encoder_f Fourframes_encode_uper; +per_type_decoder_f Fourframes_decode_aper; +per_type_encoder_f Fourframes_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Fourframes_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicator.c new file mode 100644 index 0000000..e944aeb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicator.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FreqBandIndicator.h" + +int +FreqBandIndicator_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_FreqBandIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 256 } /* (1..256,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_FreqBandIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandIndicator = { + "FreqBandIndicator", + "FreqBandIndicator", + &asn_OP_NativeInteger, + asn_DEF_FreqBandIndicator_tags_1, + sizeof(asn_DEF_FreqBandIndicator_tags_1) + /sizeof(asn_DEF_FreqBandIndicator_tags_1[0]), /* 1 */ + asn_DEF_FreqBandIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandIndicator_tags_1) + /sizeof(asn_DEF_FreqBandIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_FreqBandIndicator_constr_1, FreqBandIndicator_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicator.h new file mode 100644 index 0000000..012c954 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicator.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FreqBandIndicator_H_ +#define _FreqBandIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* FreqBandIndicator */ +typedef long FreqBandIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FreqBandIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicator; +asn_struct_free_f FreqBandIndicator_free; +asn_struct_print_f FreqBandIndicator_print; +asn_constr_check_f FreqBandIndicator_constraint; +ber_type_decoder_f FreqBandIndicator_decode_ber; +der_type_encoder_f FreqBandIndicator_encode_der; +xer_type_decoder_f FreqBandIndicator_decode_xer; +xer_type_encoder_f FreqBandIndicator_encode_xer; +per_type_decoder_f FreqBandIndicator_decode_uper; +per_type_encoder_f FreqBandIndicator_encode_uper; +per_type_decoder_f FreqBandIndicator_decode_aper; +per_type_encoder_f FreqBandIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c new file mode 100644 index 0000000..642839f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicatorPriority.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FreqBandIndicatorPriority.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_FreqBandIndicatorPriority_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_FreqBandIndicatorPriority_value2enum_1[] = { + { 0, 15, "not-broadcasted" }, + { 1, 11, "broadcasted" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_FreqBandIndicatorPriority_enum2value_1[] = { + 1, /* broadcasted(1) */ + 0 /* not-broadcasted(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_FreqBandIndicatorPriority_specs_1 = { + asn_MAP_FreqBandIndicatorPriority_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_FreqBandIndicatorPriority_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_FreqBandIndicatorPriority_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorPriority = { + "FreqBandIndicatorPriority", + "FreqBandIndicatorPriority", + &asn_OP_NativeEnumerated, + asn_DEF_FreqBandIndicatorPriority_tags_1, + sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1) + /sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1[0]), /* 1 */ + asn_DEF_FreqBandIndicatorPriority_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1) + /sizeof(asn_DEF_FreqBandIndicatorPriority_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_FreqBandIndicatorPriority_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_FreqBandIndicatorPriority_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h new file mode 100644 index 0000000..dac3c3f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandIndicatorPriority.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FreqBandIndicatorPriority_H_ +#define _FreqBandIndicatorPriority_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum FreqBandIndicatorPriority { + FreqBandIndicatorPriority_not_broadcasted = 0, + FreqBandIndicatorPriority_broadcasted = 1 + /* + * Enumeration is extensible + */ +} e_FreqBandIndicatorPriority; + +/* FreqBandIndicatorPriority */ +typedef long FreqBandIndicatorPriority_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_FreqBandIndicatorPriority_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorPriority; +extern const asn_INTEGER_specifics_t asn_SPC_FreqBandIndicatorPriority_specs_1; +asn_struct_free_f FreqBandIndicatorPriority_free; +asn_struct_print_f FreqBandIndicatorPriority_print; +asn_constr_check_f FreqBandIndicatorPriority_constraint; +ber_type_decoder_f FreqBandIndicatorPriority_decode_ber; +der_type_encoder_f FreqBandIndicatorPriority_encode_der; +xer_type_decoder_f FreqBandIndicatorPriority_decode_xer; +xer_type_encoder_f FreqBandIndicatorPriority_encode_xer; +per_type_decoder_f FreqBandIndicatorPriority_decode_uper; +per_type_encoder_f FreqBandIndicatorPriority_encode_uper; +per_type_decoder_f FreqBandIndicatorPriority_decode_aper; +per_type_encoder_f FreqBandIndicatorPriority_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandIndicatorPriority_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandNrItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandNrItem.c new file mode 100644 index 0000000..a071420 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandNrItem.c @@ -0,0 +1,200 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "FreqBandNrItem.h" + +#include "ProtocolExtensionContainer.h" +#include "SupportedSULFreqBandItem.h" +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1024)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_supportedSULBandList_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size <= 32)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_supportedSULBandList_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_supportedSULBandList_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 6, 6, 0, 32 } /* (SIZE(0..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_supportedSULBandList_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SupportedSULFreqBandItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_supportedSULBandList_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_supportedSULBandList_specs_3 = { + sizeof(struct FreqBandNrItem__supportedSULBandList), + offsetof(struct FreqBandNrItem__supportedSULBandList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_supportedSULBandList_3 = { + "supportedSULBandList", + "supportedSULBandList", + &asn_OP_SEQUENCE_OF, + asn_DEF_supportedSULBandList_tags_3, + sizeof(asn_DEF_supportedSULBandList_tags_3) + /sizeof(asn_DEF_supportedSULBandList_tags_3[0]) - 1, /* 1 */ + asn_DEF_supportedSULBandList_tags_3, /* Same as above */ + sizeof(asn_DEF_supportedSULBandList_tags_3) + /sizeof(asn_DEF_supportedSULBandList_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_supportedSULBandList_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_supportedSULBandList_3, + 1, /* Single element */ + &asn_SPC_supportedSULBandList_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FreqBandNrItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_freqBandIndicatorNr_constr_2, memb_freqBandIndicatorNr_constraint_1 }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem, supportedSULBandList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_supportedSULBandList_3, + 0, + { 0, &asn_PER_memb_supportedSULBandList_constr_3, memb_supportedSULBandList_constraint_1 }, + 0, 0, /* No default value */ + "supportedSULBandList" + }, + { ATF_POINTER, 1, offsetof(struct FreqBandNrItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P148, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_FreqBandNrItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_FreqBandNrItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FreqBandNrItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNr */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* supportedSULBandList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_specs_1 = { + sizeof(struct FreqBandNrItem), + offsetof(struct FreqBandNrItem, _asn_ctx), + asn_MAP_FreqBandNrItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_FreqBandNrItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem = { + "FreqBandNrItem", + "FreqBandNrItem", + &asn_OP_SEQUENCE, + asn_DEF_FreqBandNrItem_tags_1, + sizeof(asn_DEF_FreqBandNrItem_tags_1) + /sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */ + asn_DEF_FreqBandNrItem_tags_1, /* Same as above */ + sizeof(asn_DEF_FreqBandNrItem_tags_1) + /sizeof(asn_DEF_FreqBandNrItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FreqBandNrItem_1, + 3, /* Elements count */ + &asn_SPC_FreqBandNrItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandNrItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandNrItem.h new file mode 100644 index 0000000..c07613d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/FreqBandNrItem.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _FreqBandNrItem_H_ +#define _FreqBandNrItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct SupportedSULFreqBandItem; + +/* FreqBandNrItem */ +typedef struct FreqBandNrItem { + long freqBandIndicatorNr; + struct FreqBandNrItem__supportedSULBandList { + A_SEQUENCE_OF(struct SupportedSULFreqBandItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } supportedSULBandList; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FreqBandNrItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem; +extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_specs_1; +extern asn_TYPE_member_t asn_MBR_FreqBandNrItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _FreqBandNrItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GBR-QosInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GBR-QosInformation.c new file mode 100644 index 0000000..bd0db23 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GBR-QosInformation.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GBR-QosInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GBR_QosInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_MaximumBitrateDL), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-MaximumBitrateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_MaximumBitrateUL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-MaximumBitrateUL" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_GuaranteedBitrateDL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-GuaranteedBitrateDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation, e_RAB_GuaranteedBitrateUL), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-GuaranteedBitrateUL" + }, + { ATF_POINTER, 1, offsetof(struct GBR_QosInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P149, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GBR_QosInformation_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_GBR_QosInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GBR_QosInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-MaximumBitrateDL */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* e-RAB-MaximumBitrateUL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e-RAB-GuaranteedBitrateDL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RAB-GuaranteedBitrateUL */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_specs_1 = { + sizeof(struct GBR_QosInformation), + offsetof(struct GBR_QosInformation, _asn_ctx), + asn_MAP_GBR_QosInformation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_GBR_QosInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation = { + "GBR-QosInformation", + "GBR-QosInformation", + &asn_OP_SEQUENCE, + asn_DEF_GBR_QosInformation_tags_1, + sizeof(asn_DEF_GBR_QosInformation_tags_1) + /sizeof(asn_DEF_GBR_QosInformation_tags_1[0]), /* 1 */ + asn_DEF_GBR_QosInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_GBR_QosInformation_tags_1) + /sizeof(asn_DEF_GBR_QosInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GBR_QosInformation_1, + 5, /* Elements count */ + &asn_SPC_GBR_QosInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GBR-QosInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GBR-QosInformation.h new file mode 100644 index 0000000..27c4b4d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GBR-QosInformation.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GBR_QosInformation_H_ +#define _GBR_QosInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BitRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GBR-QosInformation */ +typedef struct GBR_QosInformation { + BitRate_t e_RAB_MaximumBitrateDL; + BitRate_t e_RAB_MaximumBitrateUL; + BitRate_t e_RAB_GuaranteedBitrateDL; + BitRate_t e_RAB_GuaranteedBitrateUL; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GBR_QosInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_GBR_QosInformation_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GBR_QosInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNB-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNB-ID.c new file mode 100644 index 0000000..01bb767 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNB-ID.c @@ -0,0 +1,111 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNB-ID.h" + +static int +memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_GNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_GNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNB_ID, choice.gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1 = { + sizeof(struct GNB_ID), + offsetof(struct GNB_ID, _asn_ctx), + offsetof(struct GNB_ID, present), + sizeof(((struct GNB_ID *)0)->present), + asn_MAP_GNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GNB_ID = { + "GNB-ID", + "GNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_GNB_ID_constr_1, CHOICE_constraint }, + asn_MBR_GNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNB-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNB-ID.h new file mode 100644 index 0000000..6a87cbf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNB-ID.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNB_ID_H_ +#define _GNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNB_ID_PR { + GNB_ID_PR_NOTHING, /* No components present */ + GNB_ID_PR_gNB_ID + /* Extensions may appear below */ + +} GNB_ID_PR; + +/* GNB-ID */ +typedef struct GNB_ID { + GNB_ID_PR present; + union GNB_ID_u { + BIT_STRING_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_GNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBOverloadInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBOverloadInformation.c new file mode 100644 index 0000000..ec102c6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBOverloadInformation.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNBOverloadInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GNBOverloadInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_GNBOverloadInformation_value2enum_1[] = { + { 0, 10, "overloaded" }, + { 1, 14, "not-overloaded" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_GNBOverloadInformation_enum2value_1[] = { + 1, /* not-overloaded(1) */ + 0 /* overloaded(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_GNBOverloadInformation_specs_1 = { + asn_MAP_GNBOverloadInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_GNBOverloadInformation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_GNBOverloadInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNBOverloadInformation = { + "GNBOverloadInformation", + "GNBOverloadInformation", + &asn_OP_NativeEnumerated, + asn_DEF_GNBOverloadInformation_tags_1, + sizeof(asn_DEF_GNBOverloadInformation_tags_1) + /sizeof(asn_DEF_GNBOverloadInformation_tags_1[0]), /* 1 */ + asn_DEF_GNBOverloadInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_GNBOverloadInformation_tags_1) + /sizeof(asn_DEF_GNBOverloadInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GNBOverloadInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_GNBOverloadInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBOverloadInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBOverloadInformation.h new file mode 100644 index 0000000..5a5e442 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBOverloadInformation.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNBOverloadInformation_H_ +#define _GNBOverloadInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNBOverloadInformation { + GNBOverloadInformation_overloaded = 0, + GNBOverloadInformation_not_overloaded = 1 + /* + * Enumeration is extensible + */ +} e_GNBOverloadInformation; + +/* GNBOverloadInformation */ +typedef long GNBOverloadInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNBOverloadInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNBOverloadInformation; +extern const asn_INTEGER_specifics_t asn_SPC_GNBOverloadInformation_specs_1; +asn_struct_free_f GNBOverloadInformation_free; +asn_struct_print_f GNBOverloadInformation_print; +asn_constr_check_f GNBOverloadInformation_constraint; +ber_type_decoder_f GNBOverloadInformation_decode_ber; +der_type_encoder_f GNBOverloadInformation_encode_der; +xer_type_decoder_f GNBOverloadInformation_decode_xer; +xer_type_encoder_f GNBOverloadInformation_encode_xer; +per_type_decoder_f GNBOverloadInformation_decode_uper; +per_type_encoder_f GNBOverloadInformation_encode_uper; +per_type_decoder_f GNBOverloadInformation_decode_aper; +per_type_encoder_f GNBOverloadInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNBOverloadInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBStatusIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBStatusIndication.c new file mode 100644 index 0000000..7275441 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBStatusIndication.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GNBStatusIndication.h" + +asn_TYPE_member_t asn_MBR_GNBStatusIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P119, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_GNBStatusIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GNBStatusIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndication_specs_1 = { + sizeof(struct GNBStatusIndication), + offsetof(struct GNBStatusIndication, _asn_ctx), + asn_MAP_GNBStatusIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GNBStatusIndication = { + "GNBStatusIndication", + "GNBStatusIndication", + &asn_OP_SEQUENCE, + asn_DEF_GNBStatusIndication_tags_1, + sizeof(asn_DEF_GNBStatusIndication_tags_1) + /sizeof(asn_DEF_GNBStatusIndication_tags_1[0]), /* 1 */ + asn_DEF_GNBStatusIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_GNBStatusIndication_tags_1) + /sizeof(asn_DEF_GNBStatusIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GNBStatusIndication_1, + 1, /* Elements count */ + &asn_SPC_GNBStatusIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBStatusIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBStatusIndication.h new file mode 100644 index 0000000..db8de79 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GNBStatusIndication.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GNBStatusIndication_H_ +#define _GNBStatusIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNBStatusIndication */ +typedef struct GNBStatusIndication { + ProtocolIE_Container_119P119_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNBStatusIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNBStatusIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_GNBStatusIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNBStatusIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTP-TEI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTP-TEI.c new file mode 100644 index 0000000..8a382a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTP-TEI.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GTP-TEI.h" + +int +GTP_TEI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GTP_TEI_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4, 4 } /* (SIZE(4..4)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GTP_TEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GTP_TEI = { + "GTP-TEI", + "GTP-TEI", + &asn_OP_OCTET_STRING, + asn_DEF_GTP_TEI_tags_1, + sizeof(asn_DEF_GTP_TEI_tags_1) + /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */ + asn_DEF_GTP_TEI_tags_1, /* Same as above */ + sizeof(asn_DEF_GTP_TEI_tags_1) + /sizeof(asn_DEF_GTP_TEI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GTP_TEI_constr_1, GTP_TEI_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTP-TEI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTP-TEI.h new file mode 100644 index 0000000..d1f1890 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTP-TEI.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GTP_TEI_H_ +#define _GTP_TEI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* GTP-TEI */ +typedef OCTET_STRING_t GTP_TEI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GTP_TEI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GTP_TEI; +asn_struct_free_f GTP_TEI_free; +asn_struct_print_f GTP_TEI_print; +asn_constr_check_f GTP_TEI_constraint; +ber_type_decoder_f GTP_TEI_decode_ber; +der_type_encoder_f GTP_TEI_encode_der; +xer_type_decoder_f GTP_TEI_decode_xer; +xer_type_encoder_f GTP_TEI_encode_xer; +per_type_decoder_f GTP_TEI_decode_uper; +per_type_encoder_f GTP_TEI_encode_uper; +per_type_decoder_f GTP_TEI_decode_aper; +per_type_encoder_f GTP_TEI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GTP_TEI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTPtunnelEndpoint.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTPtunnelEndpoint.c new file mode 100644 index 0000000..60201e3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTPtunnelEndpoint.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GTPtunnelEndpoint.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint, gTP_TEID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GTP_TEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gTP-TEID" + }, + { ATF_POINTER, 1, offsetof(struct GTPtunnelEndpoint, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P152, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GTPtunnelEndpoint_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GTPtunnelEndpoint_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GTPtunnelEndpoint_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gTP-TEID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_specs_1 = { + sizeof(struct GTPtunnelEndpoint), + offsetof(struct GTPtunnelEndpoint, _asn_ctx), + asn_MAP_GTPtunnelEndpoint_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GTPtunnelEndpoint_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint = { + "GTPtunnelEndpoint", + "GTPtunnelEndpoint", + &asn_OP_SEQUENCE, + asn_DEF_GTPtunnelEndpoint_tags_1, + sizeof(asn_DEF_GTPtunnelEndpoint_tags_1) + /sizeof(asn_DEF_GTPtunnelEndpoint_tags_1[0]), /* 1 */ + asn_DEF_GTPtunnelEndpoint_tags_1, /* Same as above */ + sizeof(asn_DEF_GTPtunnelEndpoint_tags_1) + /sizeof(asn_DEF_GTPtunnelEndpoint_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GTPtunnelEndpoint_1, + 3, /* Elements count */ + &asn_SPC_GTPtunnelEndpoint_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTPtunnelEndpoint.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTPtunnelEndpoint.h new file mode 100644 index 0000000..ce96b92 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GTPtunnelEndpoint.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GTPtunnelEndpoint_H_ +#define _GTPtunnelEndpoint_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TransportLayerAddress.h" +#include "GTP-TEI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GTPtunnelEndpoint */ +typedef struct GTPtunnelEndpoint { + TransportLayerAddress_t transportLayerAddress; + GTP_TEI_t gTP_TEID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GTPtunnelEndpoint_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint; +extern asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_specs_1; +extern asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GTPtunnelEndpoint_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GU-Group-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GU-Group-ID.c new file mode 100644 index 0000000..2412e72 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GU-Group-ID.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GU-Group-ID.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GU_Group_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID, mME_Group_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-Group-ID" + }, + { ATF_POINTER, 1, offsetof(struct GU_Group_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P153, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GU_Group_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GU_Group_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GU_Group_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Group-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_specs_1 = { + sizeof(struct GU_Group_ID), + offsetof(struct GU_Group_ID, _asn_ctx), + asn_MAP_GU_Group_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GU_Group_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GU_Group_ID = { + "GU-Group-ID", + "GU-Group-ID", + &asn_OP_SEQUENCE, + asn_DEF_GU_Group_ID_tags_1, + sizeof(asn_DEF_GU_Group_ID_tags_1) + /sizeof(asn_DEF_GU_Group_ID_tags_1[0]), /* 1 */ + asn_DEF_GU_Group_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GU_Group_ID_tags_1) + /sizeof(asn_DEF_GU_Group_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GU_Group_ID_1, + 3, /* Elements count */ + &asn_SPC_GU_Group_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GU-Group-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GU-Group-ID.h new file mode 100644 index 0000000..b23a38c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GU-Group-ID.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GU_Group_ID_H_ +#define _GU_Group_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "MME-Group-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GU-Group-ID */ +typedef struct GU_Group_ID { + PLMN_Identity_t pLMN_Identity; + MME_Group_ID_t mME_Group_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GU_Group_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GU_Group_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GU_Group_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GU_Group_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUGroupIDList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUGroupIDList.c new file mode 100644 index 0000000..7c59cab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUGroupIDList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GUGroupIDList.h" + +#include "GU-Group-ID.h" +asn_per_constraints_t asn_PER_type_GUGroupIDList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_GUGroupIDList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GU_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_GUGroupIDList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_GUGroupIDList_specs_1 = { + sizeof(struct GUGroupIDList), + offsetof(struct GUGroupIDList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_GUGroupIDList = { + "GUGroupIDList", + "GUGroupIDList", + &asn_OP_SEQUENCE_OF, + asn_DEF_GUGroupIDList_tags_1, + sizeof(asn_DEF_GUGroupIDList_tags_1) + /sizeof(asn_DEF_GUGroupIDList_tags_1[0]), /* 1 */ + asn_DEF_GUGroupIDList_tags_1, /* Same as above */ + sizeof(asn_DEF_GUGroupIDList_tags_1) + /sizeof(asn_DEF_GUGroupIDList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GUGroupIDList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_GUGroupIDList_1, + 1, /* Single element */ + &asn_SPC_GUGroupIDList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUGroupIDList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUGroupIDList.h new file mode 100644 index 0000000..c5d342f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUGroupIDList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GUGroupIDList_H_ +#define _GUGroupIDList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GU_Group_ID; + +/* GUGroupIDList */ +typedef struct GUGroupIDList { + A_SEQUENCE_OF(struct GU_Group_ID) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUGroupIDList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GUGroupIDList; +extern asn_SET_OF_specifics_t asn_SPC_GUGroupIDList_specs_1; +extern asn_TYPE_member_t asn_MBR_GUGroupIDList_1[1]; +extern asn_per_constraints_t asn_PER_type_GUGroupIDList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GUGroupIDList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUMMEI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUMMEI.c new file mode 100644 index 0000000..da9b19b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUMMEI.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GUMMEI.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GUMMEI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, gU_Group_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GU_Group_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gU-Group-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI, mME_Code), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MME_Code, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-Code" + }, + { ATF_POINTER, 1, offsetof(struct GUMMEI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P154, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GUMMEI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GUMMEI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gU-Group-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mME-Code */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1 = { + sizeof(struct GUMMEI), + offsetof(struct GUMMEI, _asn_ctx), + asn_MAP_GUMMEI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GUMMEI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GUMMEI = { + "GUMMEI", + "GUMMEI", + &asn_OP_SEQUENCE, + asn_DEF_GUMMEI_tags_1, + sizeof(asn_DEF_GUMMEI_tags_1) + /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */ + asn_DEF_GUMMEI_tags_1, /* Same as above */ + sizeof(asn_DEF_GUMMEI_tags_1) + /sizeof(asn_DEF_GUMMEI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GUMMEI_1, + 3, /* Elements count */ + &asn_SPC_GUMMEI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUMMEI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUMMEI.h new file mode 100644 index 0000000..cbae7d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GUMMEI.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GUMMEI_H_ +#define _GUMMEI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GU-Group-ID.h" +#include "MME-Code.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GUMMEI */ +typedef struct GUMMEI { + GU_Group_ID_t gU_Group_ID; + MME_Code_t mME_Code; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUMMEI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GUMMEI; +extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_specs_1; +extern asn_TYPE_member_t asn_MBR_GUMMEI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GUMMEI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalENB-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalENB-ID.c new file mode 100644 index 0000000..1506047 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalENB-ID.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalENB-ID.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalENB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P150, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GlobalENB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { + sizeof(struct GlobalENB_ID), + offsetof(struct GlobalENB_ID, _asn_ctx), + asn_MAP_GlobalENB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalENB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { + "GlobalENB-ID", + "GlobalENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalENB_ID_tags_1, + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalENB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalENB-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalENB-ID.h new file mode 100644 index 0000000..e11dd57 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalENB-ID.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalENB_ID_H_ +#define _GlobalENB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GlobalENB-ID */ +typedef struct GlobalENB_ID { + PLMN_Identity_t pLMN_Identity; + ENB_ID_t eNB_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalENB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalGNB-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalGNB-ID.c new file mode 100644 index 0000000..8079632 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalGNB-ID.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "GlobalGNB-ID.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID, gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalGNB_ID, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P151, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_GlobalGNB_ID_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1 = { + sizeof(struct GlobalGNB_ID), + offsetof(struct GlobalGNB_ID, _asn_ctx), + asn_MAP_GlobalGNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalGNB_ID_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID = { + "GlobalGNB-ID", + "GlobalGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalGNB_ID_tags_1, + sizeof(asn_DEF_GlobalGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalGNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalGNB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalGNB-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalGNB-ID.h new file mode 100644 index 0000000..f66a7bd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/GlobalGNB-ID.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _GlobalGNB_ID_H_ +#define _GlobalGNB_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "GNB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* GlobalGNB-ID */ +typedef struct GlobalGNB_ID { + PLMN_Identity_t pLMN_Identity; + GNB_ID_t gNB_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalGNB_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFN.c new file mode 100644 index 0000000..73cf2c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFN.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HFN.h" + +int +HFN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1048575)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HFN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 20, -1, 0, 1048575 } /* (0..1048575) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HFN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HFN = { + "HFN", + "HFN", + &asn_OP_NativeInteger, + asn_DEF_HFN_tags_1, + sizeof(asn_DEF_HFN_tags_1) + /sizeof(asn_DEF_HFN_tags_1[0]), /* 1 */ + asn_DEF_HFN_tags_1, /* Same as above */ + sizeof(asn_DEF_HFN_tags_1) + /sizeof(asn_DEF_HFN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HFN_constr_1, HFN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFN.h new file mode 100644 index 0000000..53e2812 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFN.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HFN_H_ +#define _HFN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HFN */ +typedef long HFN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HFN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HFN; +asn_struct_free_f HFN_free; +asn_struct_print_f HFN_print; +asn_constr_check_f HFN_constraint; +ber_type_decoder_f HFN_decode_ber; +der_type_encoder_f HFN_encode_der; +xer_type_decoder_f HFN_decode_xer; +xer_type_encoder_f HFN_encode_xer; +per_type_decoder_f HFN_decode_uper; +per_type_encoder_f HFN_encode_uper; +per_type_decoder_f HFN_decode_aper; +per_type_encoder_f HFN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HFN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNModified.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNModified.c new file mode 100644 index 0000000..0aab57f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNModified.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HFNModified.h" + +int +HFNModified_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 131071)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HFNModified_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 17, -1, 0, 131071 } /* (0..131071) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HFNModified_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HFNModified = { + "HFNModified", + "HFNModified", + &asn_OP_NativeInteger, + asn_DEF_HFNModified_tags_1, + sizeof(asn_DEF_HFNModified_tags_1) + /sizeof(asn_DEF_HFNModified_tags_1[0]), /* 1 */ + asn_DEF_HFNModified_tags_1, /* Same as above */ + sizeof(asn_DEF_HFNModified_tags_1) + /sizeof(asn_DEF_HFNModified_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HFNModified_constr_1, HFNModified_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNModified.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNModified.h new file mode 100644 index 0000000..d68100f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNModified.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HFNModified_H_ +#define _HFNModified_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HFNModified */ +typedef long HFNModified_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HFNModified_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HFNModified; +asn_struct_free_f HFNModified_free; +asn_struct_print_f HFNModified_print; +asn_constr_check_f HFNModified_constraint; +ber_type_decoder_f HFNModified_decode_ber; +der_type_encoder_f HFNModified_encode_der; +xer_type_decoder_f HFNModified_decode_xer; +xer_type_encoder_f HFNModified_encode_xer; +per_type_decoder_f HFNModified_decode_uper; +per_type_encoder_f HFNModified_encode_uper; +per_type_decoder_f HFNModified_decode_aper; +per_type_encoder_f HFNModified_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HFNModified_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c new file mode 100644 index 0000000..5d85745 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HFNforPDCP-SNlength18.h" + +int +HFNforPDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 16383)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HFNforPDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 14, 14, 0, 16383 } /* (0..16383) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_HFNforPDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HFNforPDCP_SNlength18 = { + "HFNforPDCP-SNlength18", + "HFNforPDCP-SNlength18", + &asn_OP_NativeInteger, + asn_DEF_HFNforPDCP_SNlength18_tags_1, + sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_HFNforPDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_HFNforPDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HFNforPDCP_SNlength18_constr_1, HFNforPDCP_SNlength18_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h new file mode 100644 index 0000000..3761b72 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HFNforPDCP-SNlength18.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HFNforPDCP_SNlength18_H_ +#define _HFNforPDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HFNforPDCP-SNlength18 */ +typedef long HFNforPDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HFNforPDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HFNforPDCP_SNlength18; +asn_struct_free_f HFNforPDCP_SNlength18_free; +asn_struct_print_f HFNforPDCP_SNlength18_print; +asn_constr_check_f HFNforPDCP_SNlength18_constraint; +ber_type_decoder_f HFNforPDCP_SNlength18_decode_ber; +der_type_encoder_f HFNforPDCP_SNlength18_encode_der; +xer_type_decoder_f HFNforPDCP_SNlength18_decode_xer; +xer_type_encoder_f HFNforPDCP_SNlength18_encode_xer; +per_type_decoder_f HFNforPDCP_SNlength18_decode_uper; +per_type_encoder_f HFNforPDCP_SNlength18_encode_uper; +per_type_decoder_f HFNforPDCP_SNlength18_decode_aper; +per_type_encoder_f HFNforPDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HFNforPDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HWLoadIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HWLoadIndicator.c new file mode 100644 index 0000000..34e43fc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HWLoadIndicator.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HWLoadIndicator.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_HWLoadIndicator_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator, dLHWLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dLHWLoadIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator, uLHWLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLHWLoadIndicator" + }, + { ATF_POINTER, 1, offsetof(struct HWLoadIndicator, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P156, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_HWLoadIndicator_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_HWLoadIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HWLoadIndicator_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dLHWLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLHWLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_specs_1 = { + sizeof(struct HWLoadIndicator), + offsetof(struct HWLoadIndicator, _asn_ctx), + asn_MAP_HWLoadIndicator_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_HWLoadIndicator_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator = { + "HWLoadIndicator", + "HWLoadIndicator", + &asn_OP_SEQUENCE, + asn_DEF_HWLoadIndicator_tags_1, + sizeof(asn_DEF_HWLoadIndicator_tags_1) + /sizeof(asn_DEF_HWLoadIndicator_tags_1[0]), /* 1 */ + asn_DEF_HWLoadIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_HWLoadIndicator_tags_1) + /sizeof(asn_DEF_HWLoadIndicator_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HWLoadIndicator_1, + 3, /* Elements count */ + &asn_SPC_HWLoadIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HWLoadIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HWLoadIndicator.h new file mode 100644 index 0000000..06d19b5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HWLoadIndicator.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HWLoadIndicator_H_ +#define _HWLoadIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LoadIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* HWLoadIndicator */ +typedef struct HWLoadIndicator { + LoadIndicator_t dLHWLoadIndicator; + LoadIndicator_t uLHWLoadIndicator; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HWLoadIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator; +extern asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_specs_1; +extern asn_TYPE_member_t asn_MBR_HWLoadIndicator_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _HWLoadIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverCancel.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverCancel.c new file mode 100644 index 0000000..8428fb8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverCancel.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverCancel.h" + +static asn_TYPE_member_t asn_MBR_HandoverCancel_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P20, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverCancel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverCancel_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverCancel_specs_1 = { + sizeof(struct HandoverCancel), + offsetof(struct HandoverCancel, _asn_ctx), + asn_MAP_HandoverCancel_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverCancel = { + "HandoverCancel", + "HandoverCancel", + &asn_OP_SEQUENCE, + asn_DEF_HandoverCancel_tags_1, + sizeof(asn_DEF_HandoverCancel_tags_1) + /sizeof(asn_DEF_HandoverCancel_tags_1[0]), /* 1 */ + asn_DEF_HandoverCancel_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverCancel_tags_1) + /sizeof(asn_DEF_HandoverCancel_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverCancel_1, + 1, /* Elements count */ + &asn_SPC_HandoverCancel_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverCancel.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverCancel.h new file mode 100644 index 0000000..e9240b8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverCancel.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverCancel_H_ +#define _HandoverCancel_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverCancel */ +typedef struct HandoverCancel { + ProtocolIE_Container_119P20_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverCancel_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverCancel; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverCancel_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverPreparationFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverPreparationFailure.c new file mode 100644 index 0000000..b1ffaaf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverPreparationFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverPreparationFailure.h" + +static asn_TYPE_member_t asn_MBR_HandoverPreparationFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverPreparationFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverPreparationFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailure_specs_1 = { + sizeof(struct HandoverPreparationFailure), + offsetof(struct HandoverPreparationFailure, _asn_ctx), + asn_MAP_HandoverPreparationFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure = { + "HandoverPreparationFailure", + "HandoverPreparationFailure", + &asn_OP_SEQUENCE, + asn_DEF_HandoverPreparationFailure_tags_1, + sizeof(asn_DEF_HandoverPreparationFailure_tags_1) + /sizeof(asn_DEF_HandoverPreparationFailure_tags_1[0]), /* 1 */ + asn_DEF_HandoverPreparationFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverPreparationFailure_tags_1) + /sizeof(asn_DEF_HandoverPreparationFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverPreparationFailure_1, + 1, /* Elements count */ + &asn_SPC_HandoverPreparationFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverPreparationFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverPreparationFailure.h new file mode 100644 index 0000000..c528770 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverPreparationFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverPreparationFailure_H_ +#define _HandoverPreparationFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverPreparationFailure */ +typedef struct HandoverPreparationFailure { + ProtocolIE_Container_119P16_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverPreparationFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverPreparationFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReport.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReport.c new file mode 100644 index 0000000..0d57a31 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReport.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverReport.h" + +static asn_TYPE_member_t asn_MBR_HandoverReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverReport_specs_1 = { + sizeof(struct HandoverReport), + offsetof(struct HandoverReport, _asn_ctx), + asn_MAP_HandoverReport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverReport = { + "HandoverReport", + "HandoverReport", + &asn_OP_SEQUENCE, + asn_DEF_HandoverReport_tags_1, + sizeof(asn_DEF_HandoverReport_tags_1) + /sizeof(asn_DEF_HandoverReport_tags_1[0]), /* 1 */ + asn_DEF_HandoverReport_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverReport_tags_1) + /sizeof(asn_DEF_HandoverReport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverReport_1, + 1, /* Elements count */ + &asn_SPC_HandoverReport_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReport.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReport.h new file mode 100644 index 0000000..ea8c4c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReport.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverReport_H_ +#define _HandoverReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverReport */ +typedef struct HandoverReport { + ProtocolIE_Container_119P17_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverReport; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverReport_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReportType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReportType.c new file mode 100644 index 0000000..e0557d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReportType.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverReportType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HandoverReportType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_HandoverReportType_value2enum_1[] = { + { 0, 10, "hoTooEarly" }, + { 1, 13, "hoToWrongCell" }, + { 2, 16, "interRATpingpong" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_HandoverReportType_enum2value_1[] = { + 1, /* hoToWrongCell(1) */ + 0, /* hoTooEarly(0) */ + 2 /* interRATpingpong(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_HandoverReportType_specs_1 = { + asn_MAP_HandoverReportType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HandoverReportType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HandoverReportType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HandoverReportType = { + "HandoverReportType", + "HandoverReportType", + &asn_OP_NativeEnumerated, + asn_DEF_HandoverReportType_tags_1, + sizeof(asn_DEF_HandoverReportType_tags_1) + /sizeof(asn_DEF_HandoverReportType_tags_1[0]), /* 1 */ + asn_DEF_HandoverReportType_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverReportType_tags_1) + /sizeof(asn_DEF_HandoverReportType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HandoverReportType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HandoverReportType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReportType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReportType.h new file mode 100644 index 0000000..b77b37f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverReportType.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverReportType_H_ +#define _HandoverReportType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HandoverReportType { + HandoverReportType_hoTooEarly = 0, + HandoverReportType_hoToWrongCell = 1, + /* + * Enumeration is extensible + */ + HandoverReportType_interRATpingpong = 2 +} e_HandoverReportType; + +/* HandoverReportType */ +typedef long HandoverReportType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HandoverReportType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HandoverReportType; +extern const asn_INTEGER_specifics_t asn_SPC_HandoverReportType_specs_1; +asn_struct_free_f HandoverReportType_free; +asn_struct_print_f HandoverReportType_print; +asn_constr_check_f HandoverReportType_constraint; +ber_type_decoder_f HandoverReportType_decode_ber; +der_type_encoder_f HandoverReportType_encode_der; +xer_type_decoder_f HandoverReportType_decode_xer; +xer_type_encoder_f HandoverReportType_encode_xer; +per_type_decoder_f HandoverReportType_decode_uper; +per_type_encoder_f HandoverReportType_encode_uper; +per_type_decoder_f HandoverReportType_decode_aper; +per_type_encoder_f HandoverReportType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverReportType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequest.c new file mode 100644 index 0000000..4a84cfb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverRequest.h" + +static asn_TYPE_member_t asn_MBR_HandoverRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverRequest_specs_1 = { + sizeof(struct HandoverRequest), + offsetof(struct HandoverRequest, _asn_ctx), + asn_MAP_HandoverRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequest = { + "HandoverRequest", + "HandoverRequest", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequest_tags_1, + sizeof(asn_DEF_HandoverRequest_tags_1) + /sizeof(asn_DEF_HandoverRequest_tags_1[0]), /* 1 */ + asn_DEF_HandoverRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverRequest_tags_1) + /sizeof(asn_DEF_HandoverRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequest_1, + 1, /* Elements count */ + &asn_SPC_HandoverRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequest.h new file mode 100644 index 0000000..4f60a1c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverRequest_H_ +#define _HandoverRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverRequest */ +typedef struct HandoverRequest { + ProtocolIE_Container_119P14_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c new file mode 100644 index 0000000..9ff1dbe --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequestAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledge_specs_1 = { + sizeof(struct HandoverRequestAcknowledge), + offsetof(struct HandoverRequestAcknowledge, _asn_ctx), + asn_MAP_HandoverRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge = { + "HandoverRequestAcknowledge", + "HandoverRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequestAcknowledge_tags_1, + sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1) + /sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_HandoverRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1) + /sizeof(asn_DEF_HandoverRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_HandoverRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h new file mode 100644 index 0000000..9b91081 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRequestAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverRequestAcknowledge_H_ +#define _HandoverRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* HandoverRequestAcknowledge */ +typedef struct HandoverRequestAcknowledge { + ProtocolIE_Container_119P15_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRestrictionList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRestrictionList.c new file mode 100644 index 0000000..36f1831 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRestrictionList.c @@ -0,0 +1,129 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "HandoverRestrictionList.h" + +#include "EPLMNs.h" +#include "ForbiddenTAs.h" +#include "ForbiddenLAs.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_HandoverRestrictionList_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList, servingPLMN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servingPLMN" + }, + { ATF_POINTER, 5, offsetof(struct HandoverRestrictionList, equivalentPLMNs), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EPLMNs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "equivalentPLMNs" + }, + { ATF_POINTER, 4, offsetof(struct HandoverRestrictionList, forbiddenTAs), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenTAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenTAs" + }, + { ATF_POINTER, 3, offsetof(struct HandoverRestrictionList, forbiddenLAs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenLAs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenLAs" + }, + { ATF_POINTER, 2, offsetof(struct HandoverRestrictionList, forbiddenInterRATs), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ForbiddenInterRATs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "forbiddenInterRATs" + }, + { ATF_POINTER, 1, offsetof(struct HandoverRestrictionList, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P155, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_HandoverRestrictionList_oms_1[] = { 1, 2, 3, 4, 5 }; +static const ber_tlv_tag_t asn_DEF_HandoverRestrictionList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRestrictionList_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servingPLMN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* equivalentPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* forbiddenTAs */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* forbiddenLAs */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* forbiddenInterRATs */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_specs_1 = { + sizeof(struct HandoverRestrictionList), + offsetof(struct HandoverRestrictionList, _asn_ctx), + asn_MAP_HandoverRestrictionList_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_HandoverRestrictionList_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList = { + "HandoverRestrictionList", + "HandoverRestrictionList", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRestrictionList_tags_1, + sizeof(asn_DEF_HandoverRestrictionList_tags_1) + /sizeof(asn_DEF_HandoverRestrictionList_tags_1[0]), /* 1 */ + asn_DEF_HandoverRestrictionList_tags_1, /* Same as above */ + sizeof(asn_DEF_HandoverRestrictionList_tags_1) + /sizeof(asn_DEF_HandoverRestrictionList_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRestrictionList_1, + 6, /* Elements count */ + &asn_SPC_HandoverRestrictionList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRestrictionList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRestrictionList.h new file mode 100644 index 0000000..64d9472 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/HandoverRestrictionList.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _HandoverRestrictionList_H_ +#define _HandoverRestrictionList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ForbiddenInterRATs.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct EPLMNs; +struct ForbiddenTAs; +struct ForbiddenLAs; +struct ProtocolExtensionContainer; + +/* HandoverRestrictionList */ +typedef struct HandoverRestrictionList { + PLMN_Identity_t servingPLMN; + struct EPLMNs *equivalentPLMNs; /* OPTIONAL */ + struct ForbiddenTAs *forbiddenTAs; /* OPTIONAL */ + struct ForbiddenLAs *forbiddenLAs; /* OPTIONAL */ + ForbiddenInterRATs_t *forbiddenInterRATs; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRestrictionList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_specs_1; +extern asn_TYPE_member_t asn_MBR_HandoverRestrictionList_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _HandoverRestrictionList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/INTEGER.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/INTEGER.c new file mode 100644 index 0000000..1baaa8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/INTEGER.c @@ -0,0 +1,1736 @@ + +/*- + * Copyright (c) 2003-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* Encoder and decoder of a primitive type */ +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, + INTEGER_print, + INTEGER_compare, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + INTEGER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( + const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop); + +/* + * INTEGER specific human-readable output. + */ +static ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long uvalue = 0; + long svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_long_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_long2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + if(specs && specs->field_unsigned) { + if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) + || ((unsigned long)value < (unsigned long)ct->lower_bound)) + || ((unsigned long)value > (unsigned long)ct->upper_bound) + ) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = (unsigned long)value - (unsigned long)ct->lower_bound; + } else { + if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + if (ct->range_bits < 8) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, + 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = aper_put_length(po, -1, end - buf); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + +#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) + const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; + intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; +#undef ASN1_INTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + +#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) + const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; + uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; +#undef ASN1_UINTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/INTEGER.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/INTEGER.h new file mode 100644 index 0000000..baa8307 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/INTEGER.h @@ -0,0 +1,109 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free +#define INTEGER_decode_ber ber_decode_primitive +#define INTEGER_constraint asn_generic_no_constraint +asn_struct_print_f INTEGER_print; +asn_struct_compare_f INTEGER_compare; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +asn_random_fill_f INTEGER_random_fill; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingMessage.c new file mode 100644 index 0000000..e830a84 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingMessage.c @@ -0,0 +1,531 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingMessage.h" + +static const long asn_VAL_1_id_ricSubscription = 201; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_ricSubscriptionDelete = 202; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_ricServiceUpdate = 203; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_ricControl = 204; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_x2Setup = 6; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_endcX2Setup = 36; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_resourceStatusReportingInitiation = 9; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_eNBConfigurationUpdate = 8; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_endcConfigurationUpdate = 37; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_reset = 7; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_ricIndication = 205; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_12_id_ricServiceQuery = 206; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_13_id_loadIndication = 2; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_gNBStatusIndication = 45; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_resourceStatusReporting = 10; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_errorIndication = 3; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_ricSubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_ricSubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_ricServiceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_ricControl }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_X2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_X2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_X2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_x2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCX2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_endcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_resourceStatusReportingInitiation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_eNBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_endcConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ricIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_ricServiceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_LoadInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_loadIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_GNBStatusIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_gNBStatusIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusUpdate }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_resourceStatusReporting }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_errorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 0; /* &InitiatingMessage */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.X2SetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2SetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ENDCX2SetupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCX2SetupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResourceStatusRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ENBConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ENDCConfigurationUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCConfigurationUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.LoadInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LoadInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LoadInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.GNBStatusIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GNBStatusIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GNBStatusIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResourceStatusUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ErrorIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 15 }, /* RICsubscriptionRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 14 }, /* RICsubscriptionDeleteRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 13 }, /* RICserviceUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 12 }, /* RICcontrolRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 11 }, /* X2SetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 10 }, /* ENDCX2SetupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 9 }, /* ResourceStatusRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 8 }, /* ENBConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 7 }, /* ENDCConfigurationUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 6 }, /* ResetRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -10, 5 }, /* RICindication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 11, -11, 4 }, /* RICserviceQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -12, 3 }, /* LoadInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -13, 2 }, /* GNBStatusIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -14, 1 }, /* ResourceStatusUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -15, 0 } /* ErrorIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct InitiatingMessage__value), + offsetof(struct InitiatingMessage__value, _asn_ctx), + offsetof(struct InitiatingMessage__value, present), + sizeof(((struct InitiatingMessage__value *)0)->present), + asn_MAP_value_tag2el_4, + 16, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 16, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_InitiatingMessage_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_InitiatingMessage_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { + sizeof(struct InitiatingMessage), + offsetof(struct InitiatingMessage, _asn_ctx), + asn_MAP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + &asn_OP_SEQUENCE, + asn_DEF_InitiatingMessage_tags_1, + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingMessage.h new file mode 100644 index 0000000..5f068e6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingMessage.h @@ -0,0 +1,149 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingMessage_H_ +#define _InitiatingMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "X2SetupRequest.h" +#include "X2SetupResponse.h" +#include "X2SetupFailure.h" +#include "ENDCX2SetupRequest.h" +#include "ENDCX2SetupResponse.h" +#include "ENDCX2SetupFailure.h" +#include "ResourceStatusRequest.h" +#include "ResourceStatusResponse.h" +#include "ResourceStatusFailure.h" +#include "ENBConfigurationUpdate.h" +#include "ENBConfigurationUpdateAcknowledge.h" +#include "ENBConfigurationUpdateFailure.h" +#include "ENDCConfigurationUpdate.h" +#include "ENDCConfigurationUpdateAcknowledge.h" +#include "ENDCConfigurationUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "LoadInformation.h" +#include "GNBStatusIndication.h" +#include "ResourceStatusUpdate.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingMessage__value_PR { + InitiatingMessage__value_PR_NOTHING, /* No components present */ + InitiatingMessage__value_PR_RICsubscriptionRequest, + InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, + InitiatingMessage__value_PR_RICserviceUpdate, + InitiatingMessage__value_PR_RICcontrolRequest, + InitiatingMessage__value_PR_X2SetupRequest, + InitiatingMessage__value_PR_ENDCX2SetupRequest, + InitiatingMessage__value_PR_ResourceStatusRequest, + InitiatingMessage__value_PR_ENBConfigurationUpdate, + InitiatingMessage__value_PR_ENDCConfigurationUpdate, + InitiatingMessage__value_PR_ResetRequest, + InitiatingMessage__value_PR_RICindication, + InitiatingMessage__value_PR_RICserviceQuery, + InitiatingMessage__value_PR_LoadInformation, + InitiatingMessage__value_PR_GNBStatusIndication, + InitiatingMessage__value_PR_ResourceStatusUpdate, + InitiatingMessage__value_PR_ErrorIndication +} InitiatingMessage__value_PR; + +/* InitiatingMessage */ +typedef struct InitiatingMessage { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct InitiatingMessage__value { + InitiatingMessage__value_PR present; + union InitiatingMessage__value_u { + RICsubscriptionRequest_t RICsubscriptionRequest; + RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; + RICserviceUpdate_t RICserviceUpdate; + RICcontrolRequest_t RICcontrolRequest; + X2SetupRequest_t X2SetupRequest; + ENDCX2SetupRequest_t ENDCX2SetupRequest; + ResourceStatusRequest_t ResourceStatusRequest; + ENBConfigurationUpdate_t ENBConfigurationUpdate; + ENDCConfigurationUpdate_t ENDCConfigurationUpdate; + ResetRequest_t ResetRequest; + RICindication_t RICindication; + RICserviceQuery_t RICserviceQuery; + LoadInformation_t LoadInformation; + GNBStatusIndication_t GNBStatusIndication; + ResourceStatusUpdate_t ResourceStatusUpdate; + ErrorIndication_t ErrorIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c new file mode 100644 index 0000000..9484b6c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EndcConfigUpdate.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EndcConfigUpdate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EndcConfigUpdate_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcConfigUpdate, choice.init_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P92, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcConfigUpdate, choice.init_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P93, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EndcConfigUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EndcConfigUpdate_specs_1 = { + sizeof(struct InitiatingNodeType_EndcConfigUpdate), + offsetof(struct InitiatingNodeType_EndcConfigUpdate, _asn_ctx), + offsetof(struct InitiatingNodeType_EndcConfigUpdate, present), + sizeof(((struct InitiatingNodeType_EndcConfigUpdate *)0)->present), + asn_MAP_InitiatingNodeType_EndcConfigUpdate_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcConfigUpdate = { + "InitiatingNodeType-EndcConfigUpdate", + "InitiatingNodeType-EndcConfigUpdate", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EndcConfigUpdate_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EndcConfigUpdate_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EndcConfigUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h new file mode 100644 index 0000000..e69e399 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcConfigUpdate.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EndcConfigUpdate_H_ +#define _InitiatingNodeType_EndcConfigUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EndcConfigUpdate_PR { + InitiatingNodeType_EndcConfigUpdate_PR_NOTHING, /* No components present */ + InitiatingNodeType_EndcConfigUpdate_PR_init_eNB, + InitiatingNodeType_EndcConfigUpdate_PR_init_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EndcConfigUpdate_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EndcConfigUpdate */ +typedef struct InitiatingNodeType_EndcConfigUpdate { + InitiatingNodeType_EndcConfigUpdate_PR present; + union InitiatingNodeType_EndcConfigUpdate_u { + struct ProtocolIE_Container *init_eNB; + struct ProtocolIE_Container *init_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EndcConfigUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcConfigUpdate; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EndcConfigUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c new file mode 100644 index 0000000..5b8e0bf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EndcX2Removal.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EndcX2Removal_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EndcX2Removal_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Removal, choice.init_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P112, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Removal, choice.init_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P113, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EndcX2Removal_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EndcX2Removal_specs_1 = { + sizeof(struct InitiatingNodeType_EndcX2Removal), + offsetof(struct InitiatingNodeType_EndcX2Removal, _asn_ctx), + offsetof(struct InitiatingNodeType_EndcX2Removal, present), + sizeof(((struct InitiatingNodeType_EndcX2Removal *)0)->present), + asn_MAP_InitiatingNodeType_EndcX2Removal_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Removal = { + "InitiatingNodeType-EndcX2Removal", + "InitiatingNodeType-EndcX2Removal", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EndcX2Removal_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EndcX2Removal_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EndcX2Removal_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h new file mode 100644 index 0000000..5e3f4c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Removal.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EndcX2Removal_H_ +#define _InitiatingNodeType_EndcX2Removal_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EndcX2Removal_PR { + InitiatingNodeType_EndcX2Removal_PR_NOTHING, /* No components present */ + InitiatingNodeType_EndcX2Removal_PR_init_eNB, + InitiatingNodeType_EndcX2Removal_PR_init_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EndcX2Removal_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EndcX2Removal */ +typedef struct InitiatingNodeType_EndcX2Removal { + InitiatingNodeType_EndcX2Removal_PR present; + union InitiatingNodeType_EndcX2Removal_u { + struct ProtocolIE_Container *init_eNB; + struct ProtocolIE_Container *init_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EndcX2Removal_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Removal; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EndcX2Removal_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c new file mode 100644 index 0000000..614d897 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EndcX2Setup.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EndcX2Setup_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EndcX2Setup_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Setup, choice.init_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P85, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EndcX2Setup, choice.init_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P86, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "init-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EndcX2Setup_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EndcX2Setup_specs_1 = { + sizeof(struct InitiatingNodeType_EndcX2Setup), + offsetof(struct InitiatingNodeType_EndcX2Setup, _asn_ctx), + offsetof(struct InitiatingNodeType_EndcX2Setup, present), + sizeof(((struct InitiatingNodeType_EndcX2Setup *)0)->present), + asn_MAP_InitiatingNodeType_EndcX2Setup_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Setup = { + "InitiatingNodeType-EndcX2Setup", + "InitiatingNodeType-EndcX2Setup", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EndcX2Setup_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EndcX2Setup_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EndcX2Setup_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h new file mode 100644 index 0000000..3af3683 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EndcX2Setup.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EndcX2Setup_H_ +#define _InitiatingNodeType_EndcX2Setup_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EndcX2Setup_PR { + InitiatingNodeType_EndcX2Setup_PR_NOTHING, /* No components present */ + InitiatingNodeType_EndcX2Setup_PR_init_eNB, + InitiatingNodeType_EndcX2Setup_PR_init_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EndcX2Setup_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EndcX2Setup */ +typedef struct InitiatingNodeType_EndcX2Setup { + InitiatingNodeType_EndcX2Setup_PR present; + union InitiatingNodeType_EndcX2Setup_u { + struct ProtocolIE_Container *init_eNB; + struct ProtocolIE_Container *init_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EndcX2Setup_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EndcX2Setup; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EndcX2Setup_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c new file mode 100644 index 0000000..67fab96 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InitiatingNodeType-EutranrCellResourceCoordination.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_InitiatingNodeType_EutranrCellResourceCoordination_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_InitiatingNodeType_EutranrCellResourceCoordination_1[] = { + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, choice.initiate_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P106, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiate-eNB" + }, + { ATF_POINTER, 0, offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, choice.initiate_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P107, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiate-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingNodeType_EutranrCellResourceCoordination_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiate-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* initiate-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_InitiatingNodeType_EutranrCellResourceCoordination_specs_1 = { + sizeof(struct InitiatingNodeType_EutranrCellResourceCoordination), + offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, _asn_ctx), + offsetof(struct InitiatingNodeType_EutranrCellResourceCoordination, present), + sizeof(((struct InitiatingNodeType_EutranrCellResourceCoordination *)0)->present), + asn_MAP_InitiatingNodeType_EutranrCellResourceCoordination_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination = { + "InitiatingNodeType-EutranrCellResourceCoordination", + "InitiatingNodeType-EutranrCellResourceCoordination", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InitiatingNodeType_EutranrCellResourceCoordination_constr_1, CHOICE_constraint }, + asn_MBR_InitiatingNodeType_EutranrCellResourceCoordination_1, + 2, /* Elements count */ + &asn_SPC_InitiatingNodeType_EutranrCellResourceCoordination_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h new file mode 100644 index 0000000..60a828a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InitiatingNodeType-EutranrCellResourceCoordination.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InitiatingNodeType_EutranrCellResourceCoordination_H_ +#define _InitiatingNodeType_EutranrCellResourceCoordination_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingNodeType_EutranrCellResourceCoordination_PR { + InitiatingNodeType_EutranrCellResourceCoordination_PR_NOTHING, /* No components present */ + InitiatingNodeType_EutranrCellResourceCoordination_PR_initiate_eNB, + InitiatingNodeType_EutranrCellResourceCoordination_PR_initiate_en_gNB + /* Extensions may appear below */ + +} InitiatingNodeType_EutranrCellResourceCoordination_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* InitiatingNodeType-EutranrCellResourceCoordination */ +typedef struct InitiatingNodeType_EutranrCellResourceCoordination { + InitiatingNodeType_EutranrCellResourceCoordination_PR present; + union InitiatingNodeType_EutranrCellResourceCoordination_u { + struct ProtocolIE_Container *initiate_eNB; + struct ProtocolIE_Container *initiate_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingNodeType_EutranrCellResourceCoordination_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingNodeType_EutranrCellResourceCoordination_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c new file mode 100644 index 0000000..69ad963 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "IntegrityProtectionAlgorithms.h" + +int +IntegrityProtectionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_IntegrityProtectionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_IntegrityProtectionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_IntegrityProtectionAlgorithms = { + "IntegrityProtectionAlgorithms", + "IntegrityProtectionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_IntegrityProtectionAlgorithms_tags_1, + sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_IntegrityProtectionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_IntegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_IntegrityProtectionAlgorithms_constr_1, IntegrityProtectionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h new file mode 100644 index 0000000..8065c45 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/IntegrityProtectionAlgorithms.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _IntegrityProtectionAlgorithms_H_ +#define _IntegrityProtectionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* IntegrityProtectionAlgorithms */ +typedef BIT_STRING_t IntegrityProtectionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_IntegrityProtectionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_IntegrityProtectionAlgorithms; +asn_struct_free_f IntegrityProtectionAlgorithms_free; +asn_struct_print_f IntegrityProtectionAlgorithms_print; +asn_constr_check_f IntegrityProtectionAlgorithms_constraint; +ber_type_decoder_f IntegrityProtectionAlgorithms_decode_ber; +der_type_encoder_f IntegrityProtectionAlgorithms_encode_der; +xer_type_decoder_f IntegrityProtectionAlgorithms_decode_xer; +xer_type_encoder_f IntegrityProtectionAlgorithms_encode_xer; +per_type_decoder_f IntegrityProtectionAlgorithms_decode_uper; +per_type_encoder_f IntegrityProtectionAlgorithms_encode_uper; +per_type_decoder_f IntegrityProtectionAlgorithms_decode_aper; +per_type_encoder_f IntegrityProtectionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _IntegrityProtectionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Interface-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Interface-ID.c new file mode 100644 index 0000000..0583cfc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Interface-ID.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Interface-ID.h" + +#include "GlobalENB-ID.h" +#include "GlobalGNB-ID.h" +asn_per_constraints_t asn_PER_type_Interface_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_Interface_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct Interface_ID, choice.global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, + { ATF_POINTER, 0, offsetof(struct Interface_ID, choice.global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Interface_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global-gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_Interface_ID_specs_1 = { + sizeof(struct Interface_ID), + offsetof(struct Interface_ID, _asn_ctx), + offsetof(struct Interface_ID, present), + sizeof(((struct Interface_ID *)0)->present), + asn_MAP_Interface_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Interface_ID = { + "Interface-ID", + "Interface-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_Interface_ID_constr_1, CHOICE_constraint }, + asn_MBR_Interface_ID_1, + 2, /* Elements count */ + &asn_SPC_Interface_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Interface-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Interface-ID.h new file mode 100644 index 0000000..0417853 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Interface-ID.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Interface_ID_H_ +#define _Interface_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Interface_ID_PR { + Interface_ID_PR_NOTHING, /* No components present */ + Interface_ID_PR_global_eNB_ID, + Interface_ID_PR_global_gNB_ID + /* Extensions may appear below */ + +} Interface_ID_PR; + +/* Forward declarations */ +struct GlobalENB_ID; +struct GlobalGNB_ID; + +/* Interface-ID */ +typedef struct Interface_ID { + Interface_ID_PR present; + union Interface_ID_u { + struct GlobalENB_ID *global_eNB_ID; + struct GlobalGNB_ID *global_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Interface_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Interface_ID; +extern asn_CHOICE_specifics_t asn_SPC_Interface_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_Interface_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_Interface_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Interface_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceDirection.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceDirection.c new file mode 100644 index 0000000..ed1558a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceDirection.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceDirection.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfaceDirection_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_InterfaceDirection_value2enum_1[] = { + { 0, 8, "incoming" }, + { 1, 8, "outgoing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InterfaceDirection_enum2value_1[] = { + 0, /* incoming(0) */ + 1 /* outgoing(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InterfaceDirection_specs_1 = { + asn_MAP_InterfaceDirection_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InterfaceDirection_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_InterfaceDirection_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceDirection = { + "InterfaceDirection", + "InterfaceDirection", + &asn_OP_NativeEnumerated, + asn_DEF_InterfaceDirection_tags_1, + sizeof(asn_DEF_InterfaceDirection_tags_1) + /sizeof(asn_DEF_InterfaceDirection_tags_1[0]), /* 1 */ + asn_DEF_InterfaceDirection_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceDirection_tags_1) + /sizeof(asn_DEF_InterfaceDirection_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfaceDirection_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InterfaceDirection_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceDirection.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceDirection.h new file mode 100644 index 0000000..74dd3ef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceDirection.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceDirection_H_ +#define _InterfaceDirection_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceDirection { + InterfaceDirection_incoming = 0, + InterfaceDirection_outgoing = 1 + /* + * Enumeration is extensible + */ +} e_InterfaceDirection; + +/* InterfaceDirection */ +typedef long InterfaceDirection_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfaceDirection_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfaceDirection; +extern const asn_INTEGER_specifics_t asn_SPC_InterfaceDirection_specs_1; +asn_struct_free_f InterfaceDirection_free; +asn_struct_print_f InterfaceDirection_print; +asn_constr_check_f InterfaceDirection_constraint; +ber_type_decoder_f InterfaceDirection_decode_ber; +der_type_encoder_f InterfaceDirection_encode_der; +xer_type_decoder_f InterfaceDirection_decode_xer; +xer_type_encoder_f InterfaceDirection_encode_xer; +per_type_decoder_f InterfaceDirection_decode_uper; +per_type_encoder_f InterfaceDirection_encode_uper; +per_type_decoder_f InterfaceDirection_decode_aper; +per_type_encoder_f InterfaceDirection_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceDirection_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessage.c new file mode 100644 index 0000000..da77684 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessage.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_InterfaceMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceMessage = { + "InterfaceMessage", + "InterfaceMessage", + &asn_OP_OCTET_STRING, + asn_DEF_InterfaceMessage_tags_1, + sizeof(asn_DEF_InterfaceMessage_tags_1) + /sizeof(asn_DEF_InterfaceMessage_tags_1[0]), /* 1 */ + asn_DEF_InterfaceMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceMessage_tags_1) + /sizeof(asn_DEF_InterfaceMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessage.h new file mode 100644 index 0000000..2b051b7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessage.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceMessage_H_ +#define _InterfaceMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceMessage */ +typedef OCTET_STRING_t InterfaceMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceMessage; +asn_struct_free_f InterfaceMessage_free; +asn_struct_print_f InterfaceMessage_print; +asn_constr_check_f InterfaceMessage_constraint; +ber_type_decoder_f InterfaceMessage_decode_ber; +der_type_encoder_f InterfaceMessage_encode_der; +xer_type_decoder_f InterfaceMessage_decode_xer; +xer_type_encoder_f InterfaceMessage_encode_xer; +per_type_decoder_f InterfaceMessage_decode_uper; +per_type_encoder_f InterfaceMessage_encode_uper; +per_type_decoder_f InterfaceMessage_decode_aper; +per_type_encoder_f InterfaceMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessageType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessageType.c new file mode 100644 index 0000000..72c99e1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessageType.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceMessageType.h" + +asn_TYPE_member_t asn_MBR_InterfaceMessageType_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceMessageType, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceMessageType, typeOfMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfMessage" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceMessageType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceMessageType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeOfMessage */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceMessageType_specs_1 = { + sizeof(struct InterfaceMessageType), + offsetof(struct InterfaceMessageType, _asn_ctx), + asn_MAP_InterfaceMessageType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceMessageType = { + "InterfaceMessageType", + "InterfaceMessageType", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceMessageType_tags_1, + sizeof(asn_DEF_InterfaceMessageType_tags_1) + /sizeof(asn_DEF_InterfaceMessageType_tags_1[0]), /* 1 */ + asn_DEF_InterfaceMessageType_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceMessageType_tags_1) + /sizeof(asn_DEF_InterfaceMessageType_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InterfaceMessageType_1, + 2, /* Elements count */ + &asn_SPC_InterfaceMessageType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessageType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessageType.h new file mode 100644 index 0000000..cffcd8c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceMessageType.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceMessageType_H_ +#define _InterfaceMessageType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TypeOfMessage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceMessageType */ +typedef struct InterfaceMessageType { + ProcedureCode_t procedureCode; + TypeOfMessage_t typeOfMessage; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceMessageType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceMessageType; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceMessageType_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceMessageType_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceMessageType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c new file mode 100644 index 0000000..2227d5e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-ID.h" + +int +InterfaceProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using ProtocolIE_ID, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_InterfaceProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_ID = { + "InterfaceProtocolIE-ID", + "InterfaceProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_InterfaceProtocolIE_ID_tags_1, + sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_InterfaceProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfaceProtocolIE_ID_constr_1, InterfaceProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h new file mode 100644 index 0000000..ddcafef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_ID_H_ +#define _InterfaceProtocolIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceProtocolIE-ID */ +typedef ProtocolIE_ID_t InterfaceProtocolIE_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_ID; +asn_struct_free_f InterfaceProtocolIE_ID_free; +asn_struct_print_f InterfaceProtocolIE_ID_print; +asn_constr_check_f InterfaceProtocolIE_ID_constraint; +ber_type_decoder_f InterfaceProtocolIE_ID_decode_ber; +der_type_encoder_f InterfaceProtocolIE_ID_encode_der; +xer_type_decoder_f InterfaceProtocolIE_ID_decode_xer; +xer_type_encoder_f InterfaceProtocolIE_ID_encode_xer; +per_type_decoder_f InterfaceProtocolIE_ID_decode_uper; +per_type_encoder_f InterfaceProtocolIE_ID_encode_uper; +per_type_decoder_f InterfaceProtocolIE_ID_decode_aper; +per_type_encoder_f InterfaceProtocolIE_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c new file mode 100644 index 0000000..022cf37 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.c @@ -0,0 +1,93 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-Item.h" + +asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Item, interfaceProtocolIE_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Item, interfaceProtocolIE_Test), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfaceProtocolIE_Test, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-Test" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Item, interfaceProtocolIE_Value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_InterfaceProtocolIE_Value, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfaceProtocolIE-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InterfaceProtocolIE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceProtocolIE_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interfaceProtocolIE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfaceProtocolIE-Test */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* interfaceProtocolIE-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InterfaceProtocolIE_Item_specs_1 = { + sizeof(struct InterfaceProtocolIE_Item), + offsetof(struct InterfaceProtocolIE_Item, _asn_ctx), + asn_MAP_InterfaceProtocolIE_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Item = { + "InterfaceProtocolIE-Item", + "InterfaceProtocolIE-Item", + &asn_OP_SEQUENCE, + asn_DEF_InterfaceProtocolIE_Item_tags_1, + sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1[0]), /* 1 */ + asn_DEF_InterfaceProtocolIE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InterfaceProtocolIE_Item_1, + 3, /* Elements count */ + &asn_SPC_InterfaceProtocolIE_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h new file mode 100644 index 0000000..21dfd4d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_Item_H_ +#define _InterfaceProtocolIE_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "InterfaceProtocolIE-ID.h" +#include "InterfaceProtocolIE-Test.h" +#include "InterfaceProtocolIE-Value.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfaceProtocolIE-Item */ +typedef struct InterfaceProtocolIE_Item { + InterfaceProtocolIE_ID_t interfaceProtocolIE_ID; + InterfaceProtocolIE_Test_t interfaceProtocolIE_Test; + InterfaceProtocolIE_Value_t interfaceProtocolIE_Value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceProtocolIE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_InterfaceProtocolIE_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c new file mode 100644 index 0000000..e276b8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-Test.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Test_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_InterfaceProtocolIE_Test_value2enum_1[] = { + { 0, 5, "equal" }, + { 1, 11, "greaterthan" }, + { 2, 8, "lessthan" }, + { 3, 8, "contains" }, + { 4, 7, "present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InterfaceProtocolIE_Test_enum2value_1[] = { + 3, /* contains(3) */ + 0, /* equal(0) */ + 1, /* greaterthan(1) */ + 2, /* lessthan(2) */ + 4 /* present(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InterfaceProtocolIE_Test_specs_1 = { + asn_MAP_InterfaceProtocolIE_Test_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InterfaceProtocolIE_Test_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_InterfaceProtocolIE_Test_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Test = { + "InterfaceProtocolIE-Test", + "InterfaceProtocolIE-Test", + &asn_OP_NativeEnumerated, + asn_DEF_InterfaceProtocolIE_Test_tags_1, + sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1[0]), /* 1 */ + asn_DEF_InterfaceProtocolIE_Test_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1) + /sizeof(asn_DEF_InterfaceProtocolIE_Test_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfaceProtocolIE_Test_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InterfaceProtocolIE_Test_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h new file mode 100644 index 0000000..14ef7d6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Test.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_Test_H_ +#define _InterfaceProtocolIE_Test_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceProtocolIE_Test { + InterfaceProtocolIE_Test_equal = 0, + InterfaceProtocolIE_Test_greaterthan = 1, + InterfaceProtocolIE_Test_lessthan = 2, + InterfaceProtocolIE_Test_contains = 3, + InterfaceProtocolIE_Test_present = 4 + /* + * Enumeration is extensible + */ +} e_InterfaceProtocolIE_Test; + +/* InterfaceProtocolIE-Test */ +typedef long InterfaceProtocolIE_Test_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Test_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Test; +extern const asn_INTEGER_specifics_t asn_SPC_InterfaceProtocolIE_Test_specs_1; +asn_struct_free_f InterfaceProtocolIE_Test_free; +asn_struct_print_f InterfaceProtocolIE_Test_print; +asn_constr_check_f InterfaceProtocolIE_Test_constraint; +ber_type_decoder_f InterfaceProtocolIE_Test_decode_ber; +der_type_encoder_f InterfaceProtocolIE_Test_encode_der; +xer_type_decoder_f InterfaceProtocolIE_Test_decode_xer; +xer_type_encoder_f InterfaceProtocolIE_Test_encode_xer; +per_type_decoder_f InterfaceProtocolIE_Test_decode_uper; +per_type_encoder_f InterfaceProtocolIE_Test_encode_uper; +per_type_decoder_f InterfaceProtocolIE_Test_decode_aper; +per_type_encoder_f InterfaceProtocolIE_Test_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_Test_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c new file mode 100644 index 0000000..a0e6823 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.c @@ -0,0 +1,115 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfaceProtocolIE-Value.h" + +asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Value_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Value_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueInt), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueInt" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueEnum), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueEnum" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueBool), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBool" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueBitS), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueBitS" + }, + { ATF_NOFLAGS, 0, offsetof(struct InterfaceProtocolIE_Value, choice.valueOctS), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "valueOctS" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_InterfaceProtocolIE_Value_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* valueInt */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueEnum */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* valueBool */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* valueBitS */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* valueOctS */ +}; +asn_CHOICE_specifics_t asn_SPC_InterfaceProtocolIE_Value_specs_1 = { + sizeof(struct InterfaceProtocolIE_Value), + offsetof(struct InterfaceProtocolIE_Value, _asn_ctx), + offsetof(struct InterfaceProtocolIE_Value, present), + sizeof(((struct InterfaceProtocolIE_Value *)0)->present), + asn_MAP_InterfaceProtocolIE_Value_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Value = { + "InterfaceProtocolIE-Value", + "InterfaceProtocolIE-Value", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_InterfaceProtocolIE_Value_constr_1, CHOICE_constraint }, + asn_MBR_InterfaceProtocolIE_Value_1, + 5, /* Elements count */ + &asn_SPC_InterfaceProtocolIE_Value_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h new file mode 100644 index 0000000..610e01f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfaceProtocolIE-Value.h @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfaceProtocolIE_Value_H_ +#define _InterfaceProtocolIE_Value_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "BIT_STRING.h" +#include "OCTET_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InterfaceProtocolIE_Value_PR { + InterfaceProtocolIE_Value_PR_NOTHING, /* No components present */ + InterfaceProtocolIE_Value_PR_valueInt, + InterfaceProtocolIE_Value_PR_valueEnum, + InterfaceProtocolIE_Value_PR_valueBool, + InterfaceProtocolIE_Value_PR_valueBitS, + InterfaceProtocolIE_Value_PR_valueOctS + /* Extensions may appear below */ + +} InterfaceProtocolIE_Value_PR; + +/* InterfaceProtocolIE-Value */ +typedef struct InterfaceProtocolIE_Value { + InterfaceProtocolIE_Value_PR present; + union InterfaceProtocolIE_Value_u { + long valueInt; + long valueEnum; + BOOLEAN_t valueBool; + BIT_STRING_t valueBitS; + OCTET_STRING_t valueOctS; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InterfaceProtocolIE_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InterfaceProtocolIE_Value; +extern asn_CHOICE_specifics_t asn_SPC_InterfaceProtocolIE_Value_specs_1; +extern asn_TYPE_member_t asn_MBR_InterfaceProtocolIE_Value_1[5]; +extern asn_per_constraints_t asn_PER_type_InterfaceProtocolIE_Value_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfaceProtocolIE_Value_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfacesToTrace.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfacesToTrace.c new file mode 100644 index 0000000..363d94e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfacesToTrace.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InterfacesToTrace.h" + +int +InterfacesToTrace_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InterfacesToTrace_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_InterfacesToTrace_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InterfacesToTrace = { + "InterfacesToTrace", + "InterfacesToTrace", + &asn_OP_BIT_STRING, + asn_DEF_InterfacesToTrace_tags_1, + sizeof(asn_DEF_InterfacesToTrace_tags_1) + /sizeof(asn_DEF_InterfacesToTrace_tags_1[0]), /* 1 */ + asn_DEF_InterfacesToTrace_tags_1, /* Same as above */ + sizeof(asn_DEF_InterfacesToTrace_tags_1) + /sizeof(asn_DEF_InterfacesToTrace_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InterfacesToTrace_constr_1, InterfacesToTrace_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfacesToTrace.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfacesToTrace.h new file mode 100644 index 0000000..2417744 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InterfacesToTrace.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InterfacesToTrace_H_ +#define _InterfacesToTrace_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* InterfacesToTrace */ +typedef BIT_STRING_t InterfacesToTrace_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InterfacesToTrace_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InterfacesToTrace; +asn_struct_free_f InterfacesToTrace_free; +asn_struct_print_f InterfacesToTrace_print; +asn_constr_check_f InterfacesToTrace_constraint; +ber_type_decoder_f InterfacesToTrace_decode_ber; +der_type_encoder_f InterfacesToTrace_encode_der; +xer_type_decoder_f InterfacesToTrace_decode_xer; +xer_type_encoder_f InterfacesToTrace_encode_xer; +per_type_decoder_f InterfacesToTrace_decode_uper; +per_type_encoder_f InterfacesToTrace_encode_uper; +per_type_decoder_f InterfacesToTrace_decode_aper; +per_type_encoder_f InterfacesToTrace_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InterfacesToTrace_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InvokeIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InvokeIndication.c new file mode 100644 index 0000000..ff09b85 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InvokeIndication.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "InvokeIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_InvokeIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_InvokeIndication_value2enum_1[] = { + { 0, 15, "abs-information" }, + { 1, 23, "naics-information-start" }, + { 2, 22, "naics-information-stop" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_InvokeIndication_enum2value_1[] = { + 0, /* abs-information(0) */ + 1, /* naics-information-start(1) */ + 2 /* naics-information-stop(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_InvokeIndication_specs_1 = { + asn_MAP_InvokeIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_InvokeIndication_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_InvokeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_InvokeIndication = { + "InvokeIndication", + "InvokeIndication", + &asn_OP_NativeEnumerated, + asn_DEF_InvokeIndication_tags_1, + sizeof(asn_DEF_InvokeIndication_tags_1) + /sizeof(asn_DEF_InvokeIndication_tags_1[0]), /* 1 */ + asn_DEF_InvokeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_InvokeIndication_tags_1) + /sizeof(asn_DEF_InvokeIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_InvokeIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_InvokeIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InvokeIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InvokeIndication.h new file mode 100644 index 0000000..1ab07bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/InvokeIndication.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _InvokeIndication_H_ +#define _InvokeIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InvokeIndication { + InvokeIndication_abs_information = 0, + /* + * Enumeration is extensible + */ + InvokeIndication_naics_information_start = 1, + InvokeIndication_naics_information_stop = 2 +} e_InvokeIndication; + +/* InvokeIndication */ +typedef long InvokeIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_InvokeIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_InvokeIndication; +extern const asn_INTEGER_specifics_t asn_SPC_InvokeIndication_specs_1; +asn_struct_free_f InvokeIndication_free; +asn_struct_print_f InvokeIndication_print; +asn_constr_check_f InvokeIndication_constraint; +ber_type_decoder_f InvokeIndication_decode_ber; +der_type_encoder_f InvokeIndication_encode_der; +xer_type_decoder_f InvokeIndication_decode_xer; +xer_type_encoder_f InvokeIndication_encode_xer; +per_type_decoder_f InvokeIndication_decode_uper; +per_type_encoder_f InvokeIndication_encode_uper; +per_type_decoder_f InvokeIndication_decode_aper; +per_type_encoder_f InvokeIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _InvokeIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Key-eNodeB-Star.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Key-eNodeB-Star.c new file mode 100644 index 0000000..e02c2e6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Key-eNodeB-Star.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Key-eNodeB-Star.h" + +int +Key_eNodeB_Star_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Key_eNodeB_Star_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Key_eNodeB_Star_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Key_eNodeB_Star = { + "Key-eNodeB-Star", + "Key-eNodeB-Star", + &asn_OP_BIT_STRING, + asn_DEF_Key_eNodeB_Star_tags_1, + sizeof(asn_DEF_Key_eNodeB_Star_tags_1) + /sizeof(asn_DEF_Key_eNodeB_Star_tags_1[0]), /* 1 */ + asn_DEF_Key_eNodeB_Star_tags_1, /* Same as above */ + sizeof(asn_DEF_Key_eNodeB_Star_tags_1) + /sizeof(asn_DEF_Key_eNodeB_Star_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Key_eNodeB_Star_constr_1, Key_eNodeB_Star_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Key-eNodeB-Star.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Key-eNodeB-Star.h new file mode 100644 index 0000000..617b657 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Key-eNodeB-Star.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Key_eNodeB_Star_H_ +#define _Key_eNodeB_Star_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Key-eNodeB-Star */ +typedef BIT_STRING_t Key_eNodeB_Star_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Key_eNodeB_Star_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Key_eNodeB_Star; +asn_struct_free_f Key_eNodeB_Star_free; +asn_struct_print_f Key_eNodeB_Star_print; +asn_constr_check_f Key_eNodeB_Star_constraint; +ber_type_decoder_f Key_eNodeB_Star_decode_ber; +der_type_encoder_f Key_eNodeB_Star_encode_der; +xer_type_decoder_f Key_eNodeB_Star_decode_xer; +xer_type_encoder_f Key_eNodeB_Star_encode_xer; +per_type_decoder_f Key_eNodeB_Star_decode_uper; +per_type_encoder_f Key_eNodeB_Star_encode_uper; +per_type_decoder_f Key_eNodeB_Star_decode_aper; +per_type_encoder_f Key_eNodeB_Star_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Key_eNodeB_Star_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LAC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LAC.c new file mode 100644 index 0000000..6fbdddf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LAC.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LAC.h" + +int +LAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LAC = { + "LAC", + "LAC", + &asn_OP_OCTET_STRING, + asn_DEF_LAC_tags_1, + sizeof(asn_DEF_LAC_tags_1) + /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */ + asn_DEF_LAC_tags_1, /* Same as above */ + sizeof(asn_DEF_LAC_tags_1) + /sizeof(asn_DEF_LAC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LAC_constr_1, LAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LAC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LAC.h new file mode 100644 index 0000000..fabeec5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LAC.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LAC_H_ +#define _LAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LAC */ +typedef OCTET_STRING_t LAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LAC; +asn_struct_free_f LAC_free; +asn_struct_print_f LAC_print; +asn_constr_check_f LAC_constraint; +ber_type_decoder_f LAC_decode_ber; +der_type_encoder_f LAC_encode_der; +xer_type_decoder_f LAC_decode_xer; +xer_type_encoder_f LAC_encode_xer; +per_type_decoder_f LAC_decode_uper; +per_type_encoder_f LAC_encode_uper; +per_type_decoder_f LAC_decode_aper; +per_type_encoder_f LAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LAC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LCID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LCID.c new file mode 100644 index 0000000..5606940 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LCID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LCID.h" + +int +LCID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LCID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 1, 32 } /* (1..32,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LCID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LCID = { + "LCID", + "LCID", + &asn_OP_NativeInteger, + asn_DEF_LCID_tags_1, + sizeof(asn_DEF_LCID_tags_1) + /sizeof(asn_DEF_LCID_tags_1[0]), /* 1 */ + asn_DEF_LCID_tags_1, /* Same as above */ + sizeof(asn_DEF_LCID_tags_1) + /sizeof(asn_DEF_LCID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LCID_constr_1, LCID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LCID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LCID.h new file mode 100644 index 0000000..8149dc5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LCID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LCID_H_ +#define _LCID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LCID */ +typedef long LCID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LCID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LCID; +asn_struct_free_f LCID_free; +asn_struct_print_f LCID_print; +asn_constr_check_f LCID_constraint; +ber_type_decoder_f LCID_decode_ber; +der_type_encoder_f LCID_encode_der; +xer_type_decoder_f LCID_decode_xer; +xer_type_encoder_f LCID_encode_xer; +per_type_decoder_f LCID_decode_uper; +per_type_encoder_f LCID_encode_uper; +per_type_decoder_f LCID_decode_aper; +per_type_encoder_f LCID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LCID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LHN-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LHN-ID.c new file mode 100644 index 0000000..b16accf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LHN-ID.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LHN-ID.h" + +int +LHN_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 32 && size <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LHN_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 32, 256 } /* (SIZE(32..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_LHN_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LHN_ID = { + "LHN-ID", + "LHN-ID", + &asn_OP_OCTET_STRING, + asn_DEF_LHN_ID_tags_1, + sizeof(asn_DEF_LHN_ID_tags_1) + /sizeof(asn_DEF_LHN_ID_tags_1[0]), /* 1 */ + asn_DEF_LHN_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_LHN_ID_tags_1) + /sizeof(asn_DEF_LHN_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LHN_ID_constr_1, LHN_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LHN-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LHN-ID.h new file mode 100644 index 0000000..bd88078 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LHN-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LHN_ID_H_ +#define _LHN_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LHN-ID */ +typedef OCTET_STRING_t LHN_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LHN_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LHN_ID; +asn_struct_free_f LHN_ID_free; +asn_struct_print_f LHN_ID_print; +asn_constr_check_f LHN_ID_constraint; +ber_type_decoder_f LHN_ID_decode_ber; +der_type_encoder_f LHN_ID_encode_der; +xer_type_decoder_f LHN_ID_decode_xer; +xer_type_encoder_f LHN_ID_encode_xer; +per_type_decoder_f LHN_ID_decode_uper; +per_type_encoder_f LHN_ID_encode_uper; +per_type_decoder_f LHN_ID_decode_aper; +per_type_encoder_f LHN_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LHN_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedCell-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedCell-Item.c new file mode 100644 index 0000000..d472dd2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedCell-Item.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedCell-Item.h" + +#include "LastVisitedEUTRANCellInformation.h" +#include "LastVisitedGERANCellInformation.h" +asn_per_constraints_t asn_PER_type_LastVisitedCell_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_LastVisitedCell_Item_1[] = { + { ATF_POINTER, 0, offsetof(struct LastVisitedCell_Item, choice.e_UTRAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LastVisitedEUTRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-UTRAN-Cell" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedCell_Item, choice.uTRAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LastVisitedUTRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uTRAN-Cell" + }, + { ATF_POINTER, 0, offsetof(struct LastVisitedCell_Item, choice.gERAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_LastVisitedGERANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gERAN-Cell" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedCell_Item, choice.nG_RAN_Cell), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LastVisitedNGRANCellInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nG-RAN-Cell" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedCell_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-UTRAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uTRAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* gERAN-Cell */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* nG-RAN-Cell */ +}; +asn_CHOICE_specifics_t asn_SPC_LastVisitedCell_Item_specs_1 = { + sizeof(struct LastVisitedCell_Item), + offsetof(struct LastVisitedCell_Item, _asn_ctx), + offsetof(struct LastVisitedCell_Item, present), + sizeof(((struct LastVisitedCell_Item *)0)->present), + asn_MAP_LastVisitedCell_Item_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedCell_Item = { + "LastVisitedCell-Item", + "LastVisitedCell-Item", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_LastVisitedCell_Item_constr_1, CHOICE_constraint }, + asn_MBR_LastVisitedCell_Item_1, + 4, /* Elements count */ + &asn_SPC_LastVisitedCell_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedCell-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedCell-Item.h new file mode 100644 index 0000000..f5d1b31 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedCell-Item.h @@ -0,0 +1,89 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedCell_Item_H_ +#define _LastVisitedCell_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LastVisitedUTRANCellInformation.h" +#include "LastVisitedNGRANCellInformation.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LastVisitedCell_Item_PR { + LastVisitedCell_Item_PR_NOTHING, /* No components present */ + LastVisitedCell_Item_PR_e_UTRAN_Cell, + LastVisitedCell_Item_PR_uTRAN_Cell, + LastVisitedCell_Item_PR_gERAN_Cell, + /* Extensions may appear below */ + LastVisitedCell_Item_PR_nG_RAN_Cell +} LastVisitedCell_Item_PR; + +/* Forward declarations */ +struct LastVisitedEUTRANCellInformation; +struct LastVisitedGERANCellInformation; + +/* LastVisitedCell-Item */ +typedef struct LastVisitedCell_Item { + LastVisitedCell_Item_PR present; + union LastVisitedCell_Item_u { + struct LastVisitedEUTRANCellInformation *e_UTRAN_Cell; + LastVisitedUTRANCellInformation_t uTRAN_Cell; + struct LastVisitedGERANCellInformation *gERAN_Cell; + /* + * This type is extensible, + * possible extensions are below. + */ + LastVisitedNGRANCellInformation_t nG_RAN_Cell; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LastVisitedCell_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedCell_Item; +extern asn_CHOICE_specifics_t asn_SPC_LastVisitedCell_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_LastVisitedCell_Item_1[4]; +extern asn_per_constraints_t asn_PER_type_LastVisitedCell_Item_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedCell_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c new file mode 100644 index 0000000..4fa3fec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedEUTRANCellInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation, global_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation, cellType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CellType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellType" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation, time_UE_StayedInCell), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Time_UE_StayedInCell, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "time-UE-StayedInCell" + }, + { ATF_POINTER, 1, offsetof(struct LastVisitedEUTRANCellInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P157, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_LastVisitedEUTRANCellInformation_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_LastVisitedEUTRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedEUTRANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* time-UE-StayedInCell */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_specs_1 = { + sizeof(struct LastVisitedEUTRANCellInformation), + offsetof(struct LastVisitedEUTRANCellInformation, _asn_ctx), + asn_MAP_LastVisitedEUTRANCellInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_LastVisitedEUTRANCellInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation = { + "LastVisitedEUTRANCellInformation", + "LastVisitedEUTRANCellInformation", + &asn_OP_SEQUENCE, + asn_DEF_LastVisitedEUTRANCellInformation_tags_1, + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_LastVisitedEUTRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LastVisitedEUTRANCellInformation_1, + 4, /* Elements count */ + &asn_SPC_LastVisitedEUTRANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h new file mode 100644 index 0000000..22cf6a7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedEUTRANCellInformation.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedEUTRANCellInformation_H_ +#define _LastVisitedEUTRANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "CellType.h" +#include "Time-UE-StayedInCell.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* LastVisitedEUTRANCellInformation */ +typedef struct LastVisitedEUTRANCellInformation { + ECGI_t global_Cell_ID; + CellType_t cellType; + Time_UE_StayedInCell_t time_UE_StayedInCell; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LastVisitedEUTRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedEUTRANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c new file mode 100644 index 0000000..1de49e6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.c @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedGERANCellInformation.h" + +asn_per_constraints_t asn_PER_type_LastVisitedGERANCellInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_LastVisitedGERANCellInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedGERANCellInformation, choice.undefined), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "undefined" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedGERANCellInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* undefined */ +}; +asn_CHOICE_specifics_t asn_SPC_LastVisitedGERANCellInformation_specs_1 = { + sizeof(struct LastVisitedGERANCellInformation), + offsetof(struct LastVisitedGERANCellInformation, _asn_ctx), + offsetof(struct LastVisitedGERANCellInformation, present), + sizeof(((struct LastVisitedGERANCellInformation *)0)->present), + asn_MAP_LastVisitedGERANCellInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedGERANCellInformation = { + "LastVisitedGERANCellInformation", + "LastVisitedGERANCellInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_LastVisitedGERANCellInformation_constr_1, CHOICE_constraint }, + asn_MBR_LastVisitedGERANCellInformation_1, + 1, /* Elements count */ + &asn_SPC_LastVisitedGERANCellInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h new file mode 100644 index 0000000..2988dab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedGERANCellInformation.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedGERANCellInformation_H_ +#define _LastVisitedGERANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LastVisitedGERANCellInformation_PR { + LastVisitedGERANCellInformation_PR_NOTHING, /* No components present */ + LastVisitedGERANCellInformation_PR_undefined + /* Extensions may appear below */ + +} LastVisitedGERANCellInformation_PR; + +/* LastVisitedGERANCellInformation */ +typedef struct LastVisitedGERANCellInformation { + LastVisitedGERANCellInformation_PR present; + union LastVisitedGERANCellInformation_u { + NULL_t undefined; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LastVisitedGERANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedGERANCellInformation; +extern asn_CHOICE_specifics_t asn_SPC_LastVisitedGERANCellInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LastVisitedGERANCellInformation_1[1]; +extern asn_per_constraints_t asn_PER_type_LastVisitedGERANCellInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedGERANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c new file mode 100644 index 0000000..fbe5139 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedNGRANCellInformation.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_LastVisitedNGRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedNGRANCellInformation = { + "LastVisitedNGRANCellInformation", + "LastVisitedNGRANCellInformation", + &asn_OP_OCTET_STRING, + asn_DEF_LastVisitedNGRANCellInformation_tags_1, + sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_LastVisitedNGRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedNGRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h new file mode 100644 index 0000000..4f3989d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedNGRANCellInformation.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedNGRANCellInformation_H_ +#define _LastVisitedNGRANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LastVisitedNGRANCellInformation */ +typedef OCTET_STRING_t LastVisitedNGRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedNGRANCellInformation; +asn_struct_free_f LastVisitedNGRANCellInformation_free; +asn_struct_print_f LastVisitedNGRANCellInformation_print; +asn_constr_check_f LastVisitedNGRANCellInformation_constraint; +ber_type_decoder_f LastVisitedNGRANCellInformation_decode_ber; +der_type_encoder_f LastVisitedNGRANCellInformation_encode_der; +xer_type_decoder_f LastVisitedNGRANCellInformation_decode_xer; +xer_type_encoder_f LastVisitedNGRANCellInformation_encode_xer; +per_type_decoder_f LastVisitedNGRANCellInformation_decode_uper; +per_type_encoder_f LastVisitedNGRANCellInformation_encode_uper; +per_type_decoder_f LastVisitedNGRANCellInformation_decode_aper; +per_type_encoder_f LastVisitedNGRANCellInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedNGRANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c new file mode 100644 index 0000000..dfac884 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LastVisitedUTRANCellInformation.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_LastVisitedUTRANCellInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedUTRANCellInformation = { + "LastVisitedUTRANCellInformation", + "LastVisitedUTRANCellInformation", + &asn_OP_OCTET_STRING, + asn_DEF_LastVisitedUTRANCellInformation_tags_1, + sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1[0]), /* 1 */ + asn_DEF_LastVisitedUTRANCellInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1) + /sizeof(asn_DEF_LastVisitedUTRANCellInformation_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h new file mode 100644 index 0000000..232bdde --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LastVisitedUTRANCellInformation.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LastVisitedUTRANCellInformation_H_ +#define _LastVisitedUTRANCellInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LastVisitedUTRANCellInformation */ +typedef OCTET_STRING_t LastVisitedUTRANCellInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedUTRANCellInformation; +asn_struct_free_f LastVisitedUTRANCellInformation_free; +asn_struct_print_f LastVisitedUTRANCellInformation_print; +asn_constr_check_f LastVisitedUTRANCellInformation_constraint; +ber_type_decoder_f LastVisitedUTRANCellInformation_decode_ber; +der_type_encoder_f LastVisitedUTRANCellInformation_encode_der; +xer_type_decoder_f LastVisitedUTRANCellInformation_decode_xer; +xer_type_encoder_f LastVisitedUTRANCellInformation_encode_xer; +per_type_decoder_f LastVisitedUTRANCellInformation_decode_uper; +per_type_encoder_f LastVisitedUTRANCellInformation_encode_uper; +per_type_decoder_f LastVisitedUTRANCellInformation_decode_aper; +per_type_encoder_f LastVisitedUTRANCellInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LastVisitedUTRANCellInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Limited-list.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Limited-list.c new file mode 100644 index 0000000..ad1bb2f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Limited-list.c @@ -0,0 +1,127 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Limited-list.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_Limited_list_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Limited_list__Member, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 1, offsetof(struct Limited_list__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P98, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct Limited_list__Member), + offsetof(struct Limited_list__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 2, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 2, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Limited_list_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Limited_list_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_Limited_list_specs_1 = { + sizeof(struct Limited_list), + offsetof(struct Limited_list, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Limited_list = { + "Limited-list", + "Limited-list", + &asn_OP_SEQUENCE_OF, + asn_DEF_Limited_list_tags_1, + sizeof(asn_DEF_Limited_list_tags_1) + /sizeof(asn_DEF_Limited_list_tags_1[0]), /* 1 */ + asn_DEF_Limited_list_tags_1, /* Same as above */ + sizeof(asn_DEF_Limited_list_tags_1) + /sizeof(asn_DEF_Limited_list_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Limited_list_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_Limited_list_1, + 1, /* Single element */ + &asn_SPC_Limited_list_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Limited-list.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Limited-list.h new file mode 100644 index 0000000..1ad474b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Limited-list.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Limited_list_H_ +#define _Limited_list_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NRCGI.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct Limited_list__Member { + NRCGI_t nrCellID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Limited_list__Member; + +/* Limited-list */ +typedef struct Limited_list { + A_SEQUENCE_OF(Limited_list__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Limited_list_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Limited_list; +extern asn_SET_OF_specifics_t asn_SPC_Limited_list_specs_1; +extern asn_TYPE_member_t asn_MBR_Limited_list_1[1]; +extern asn_per_constraints_t asn_PER_type_Limited_list_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Limited_list_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Links-to-log.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Links-to-log.c new file mode 100644 index 0000000..e568e4a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Links-to-log.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Links-to-log.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Links_to_log_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Links_to_log_value2enum_1[] = { + { 0, 6, "uplink" }, + { 1, 8, "downlink" }, + { 2, 24, "both-uplink-and-downlink" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Links_to_log_enum2value_1[] = { + 2, /* both-uplink-and-downlink(2) */ + 1, /* downlink(1) */ + 0 /* uplink(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Links_to_log_specs_1 = { + asn_MAP_Links_to_log_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Links_to_log_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Links_to_log_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Links_to_log = { + "Links-to-log", + "Links-to-log", + &asn_OP_NativeEnumerated, + asn_DEF_Links_to_log_tags_1, + sizeof(asn_DEF_Links_to_log_tags_1) + /sizeof(asn_DEF_Links_to_log_tags_1[0]), /* 1 */ + asn_DEF_Links_to_log_tags_1, /* Same as above */ + sizeof(asn_DEF_Links_to_log_tags_1) + /sizeof(asn_DEF_Links_to_log_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Links_to_log_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Links_to_log_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Links-to-log.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Links-to-log.h new file mode 100644 index 0000000..afa4c86 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Links-to-log.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Links_to_log_H_ +#define _Links_to_log_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Links_to_log { + Links_to_log_uplink = 0, + Links_to_log_downlink = 1, + Links_to_log_both_uplink_and_downlink = 2 + /* + * Enumeration is extensible + */ +} e_Links_to_log; + +/* Links-to-log */ +typedef long Links_to_log_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Links_to_log_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Links_to_log; +extern const asn_INTEGER_specifics_t asn_SPC_Links_to_log_specs_1; +asn_struct_free_f Links_to_log_free; +asn_struct_print_f Links_to_log_print; +asn_constr_check_f Links_to_log_constraint; +ber_type_decoder_f Links_to_log_decode_ber; +der_type_encoder_f Links_to_log_encode_der; +xer_type_decoder_f Links_to_log_decode_xer; +xer_type_encoder_f Links_to_log_encode_xer; +per_type_decoder_f Links_to_log_decode_uper; +per_type_encoder_f Links_to_log_encode_uper; +per_type_decoder_f Links_to_log_decode_aper; +per_type_encoder_f Links_to_log_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Links_to_log_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c new file mode 100644 index 0000000..a71af64 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofEUTRACellsinEUTRACoordinationReq.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ListofEUTRACellsinEUTRACoordinationReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofEUTRACellsinEUTRACoordinationReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofEUTRACellsinEUTRACoordinationReq_specs_1 = { + sizeof(struct ListofEUTRACellsinEUTRACoordinationReq), + offsetof(struct ListofEUTRACellsinEUTRACoordinationReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationReq = { + "ListofEUTRACellsinEUTRACoordinationReq", + "ListofEUTRACellsinEUTRACoordinationReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1, + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1[0]), /* 1 */ + asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofEUTRACellsinEUTRACoordinationReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofEUTRACellsinEUTRACoordinationReq_1, + 1, /* Single element */ + &asn_SPC_ListofEUTRACellsinEUTRACoordinationReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h new file mode 100644 index 0000000..a55a725 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationReq.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofEUTRACellsinEUTRACoordinationReq_H_ +#define _ListofEUTRACellsinEUTRACoordinationReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ListofEUTRACellsinEUTRACoordinationReq */ +typedef struct ListofEUTRACellsinEUTRACoordinationReq { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofEUTRACellsinEUTRACoordinationReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofEUTRACellsinEUTRACoordinationReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c new file mode 100644 index 0000000..301d312 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofEUTRACellsinEUTRACoordinationResp.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ListofEUTRACellsinEUTRACoordinationResp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofEUTRACellsinEUTRACoordinationResp_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofEUTRACellsinEUTRACoordinationResp_specs_1 = { + sizeof(struct ListofEUTRACellsinEUTRACoordinationResp), + offsetof(struct ListofEUTRACellsinEUTRACoordinationResp, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationResp = { + "ListofEUTRACellsinEUTRACoordinationResp", + "ListofEUTRACellsinEUTRACoordinationResp", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1, + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1[0]), /* 1 */ + asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinEUTRACoordinationResp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofEUTRACellsinEUTRACoordinationResp_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofEUTRACellsinEUTRACoordinationResp_1, + 1, /* Single element */ + &asn_SPC_ListofEUTRACellsinEUTRACoordinationResp_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h new file mode 100644 index 0000000..7bf99d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinEUTRACoordinationResp.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofEUTRACellsinEUTRACoordinationResp_H_ +#define _ListofEUTRACellsinEUTRACoordinationResp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ListofEUTRACellsinEUTRACoordinationResp */ +typedef struct ListofEUTRACellsinEUTRACoordinationResp { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofEUTRACellsinEUTRACoordinationResp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinEUTRACoordinationResp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofEUTRACellsinEUTRACoordinationResp_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c new file mode 100644 index 0000000..e5982e9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofEUTRACellsinNRCoordinationReq.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ListofEUTRACellsinNRCoordinationReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofEUTRACellsinNRCoordinationReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofEUTRACellsinNRCoordinationReq_specs_1 = { + sizeof(struct ListofEUTRACellsinNRCoordinationReq), + offsetof(struct ListofEUTRACellsinNRCoordinationReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinNRCoordinationReq = { + "ListofEUTRACellsinNRCoordinationReq", + "ListofEUTRACellsinNRCoordinationReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1, + sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1[0]), /* 1 */ + asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofEUTRACellsinNRCoordinationReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofEUTRACellsinNRCoordinationReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofEUTRACellsinNRCoordinationReq_1, + 1, /* Single element */ + &asn_SPC_ListofEUTRACellsinNRCoordinationReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h new file mode 100644 index 0000000..80b0572 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofEUTRACellsinNRCoordinationReq.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofEUTRACellsinNRCoordinationReq_H_ +#define _ListofEUTRACellsinNRCoordinationReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ListofEUTRACellsinNRCoordinationReq */ +typedef struct ListofEUTRACellsinNRCoordinationReq { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofEUTRACellsinNRCoordinationReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofEUTRACellsinNRCoordinationReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofEUTRACellsinNRCoordinationReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c new file mode 100644 index 0000000..1dace03 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofNRCellsinNRCoordinationReq.h" + +#include "NRCGI.h" +static asn_per_constraints_t asn_PER_type_ListofNRCellsinNRCoordinationReq_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 0, 64 } /* (SIZE(0..64)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofNRCellsinNRCoordinationReq_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofNRCellsinNRCoordinationReq_specs_1 = { + sizeof(struct ListofNRCellsinNRCoordinationReq), + offsetof(struct ListofNRCellsinNRCoordinationReq, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationReq = { + "ListofNRCellsinNRCoordinationReq", + "ListofNRCellsinNRCoordinationReq", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1, + sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1[0]), /* 1 */ + asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationReq_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofNRCellsinNRCoordinationReq_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofNRCellsinNRCoordinationReq_1, + 1, /* Single element */ + &asn_SPC_ListofNRCellsinNRCoordinationReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h new file mode 100644 index 0000000..d186ce2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationReq.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofNRCellsinNRCoordinationReq_H_ +#define _ListofNRCellsinNRCoordinationReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRCGI; + +/* ListofNRCellsinNRCoordinationReq */ +typedef struct ListofNRCellsinNRCoordinationReq { + A_SEQUENCE_OF(struct NRCGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofNRCellsinNRCoordinationReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofNRCellsinNRCoordinationReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c new file mode 100644 index 0000000..0d94d6f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ListofNRCellsinNRCoordinationResp.h" + +#include "NRCGI.h" +static asn_per_constraints_t asn_PER_type_ListofNRCellsinNRCoordinationResp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 0, 64 } /* (SIZE(0..64)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ListofNRCellsinNRCoordinationResp_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ListofNRCellsinNRCoordinationResp_specs_1 = { + sizeof(struct ListofNRCellsinNRCoordinationResp), + offsetof(struct ListofNRCellsinNRCoordinationResp, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationResp = { + "ListofNRCellsinNRCoordinationResp", + "ListofNRCellsinNRCoordinationResp", + &asn_OP_SEQUENCE_OF, + asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1, + sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1[0]), /* 1 */ + asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1, /* Same as above */ + sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1) + /sizeof(asn_DEF_ListofNRCellsinNRCoordinationResp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ListofNRCellsinNRCoordinationResp_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ListofNRCellsinNRCoordinationResp_1, + 1, /* Single element */ + &asn_SPC_ListofNRCellsinNRCoordinationResp_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h new file mode 100644 index 0000000..db4bda3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ListofNRCellsinNRCoordinationResp.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ListofNRCellsinNRCoordinationResp_H_ +#define _ListofNRCellsinNRCoordinationResp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRCGI; + +/* ListofNRCellsinNRCoordinationResp */ +typedef struct ListofNRCellsinNRCoordinationResp { + A_SEQUENCE_OF(struct NRCGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ListofNRCellsinNRCoordinationResp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ListofNRCellsinNRCoordinationResp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ListofNRCellsinNRCoordinationResp_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadIndicator.c new file mode 100644 index 0000000..985d457 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadIndicator.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LoadIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_LoadIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_LoadIndicator_value2enum_1[] = { + { 0, 7, "lowLoad" }, + { 1, 10, "mediumLoad" }, + { 2, 8, "highLoad" }, + { 3, 8, "overLoad" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_LoadIndicator_enum2value_1[] = { + 2, /* highLoad(2) */ + 0, /* lowLoad(0) */ + 1, /* mediumLoad(1) */ + 3 /* overLoad(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_LoadIndicator_specs_1 = { + asn_MAP_LoadIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_LoadIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_LoadIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_LoadIndicator = { + "LoadIndicator", + "LoadIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_LoadIndicator_tags_1, + sizeof(asn_DEF_LoadIndicator_tags_1) + /sizeof(asn_DEF_LoadIndicator_tags_1[0]), /* 1 */ + asn_DEF_LoadIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_LoadIndicator_tags_1) + /sizeof(asn_DEF_LoadIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_LoadIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_LoadIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadIndicator.h new file mode 100644 index 0000000..d2f5889 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadIndicator.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LoadIndicator_H_ +#define _LoadIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum LoadIndicator { + LoadIndicator_lowLoad = 0, + LoadIndicator_mediumLoad = 1, + LoadIndicator_highLoad = 2, + LoadIndicator_overLoad = 3 + /* + * Enumeration is extensible + */ +} e_LoadIndicator; + +/* LoadIndicator */ +typedef long LoadIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_LoadIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_LoadIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_LoadIndicator_specs_1; +asn_struct_free_f LoadIndicator_free; +asn_struct_print_f LoadIndicator_print; +asn_constr_check_f LoadIndicator_constraint; +ber_type_decoder_f LoadIndicator_decode_ber; +der_type_encoder_f LoadIndicator_encode_der; +xer_type_decoder_f LoadIndicator_decode_xer; +xer_type_encoder_f LoadIndicator_encode_xer; +per_type_decoder_f LoadIndicator_decode_uper; +per_type_encoder_f LoadIndicator_encode_uper; +per_type_decoder_f LoadIndicator_decode_aper; +per_type_encoder_f LoadIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _LoadIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadInformation.c new file mode 100644 index 0000000..953a188 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadInformation.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LoadInformation.h" + +asn_TYPE_member_t asn_MBR_LoadInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P27, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_LoadInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LoadInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_specs_1 = { + sizeof(struct LoadInformation), + offsetof(struct LoadInformation, _asn_ctx), + asn_MAP_LoadInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LoadInformation = { + "LoadInformation", + "LoadInformation", + &asn_OP_SEQUENCE, + asn_DEF_LoadInformation_tags_1, + sizeof(asn_DEF_LoadInformation_tags_1) + /sizeof(asn_DEF_LoadInformation_tags_1[0]), /* 1 */ + asn_DEF_LoadInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LoadInformation_tags_1) + /sizeof(asn_DEF_LoadInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LoadInformation_1, + 1, /* Elements count */ + &asn_SPC_LoadInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadInformation.h new file mode 100644 index 0000000..628b230 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LoadInformation.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LoadInformation_H_ +#define _LoadInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* LoadInformation */ +typedef struct LoadInformation { + ProtocolIE_Container_119P27_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LoadInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LoadInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LoadInformation_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LoadInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LocationReportingInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LocationReportingInformation.c new file mode 100644 index 0000000..a27c4a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LocationReportingInformation.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "LocationReportingInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_LocationReportingInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation, eventType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EventType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eventType" + }, + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation, reportArea), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportArea, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportArea" + }, + { ATF_POINTER, 1, offsetof(struct LocationReportingInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P158, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_LocationReportingInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_LocationReportingInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LocationReportingInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportArea */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_specs_1 = { + sizeof(struct LocationReportingInformation), + offsetof(struct LocationReportingInformation, _asn_ctx), + asn_MAP_LocationReportingInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_LocationReportingInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation = { + "LocationReportingInformation", + "LocationReportingInformation", + &asn_OP_SEQUENCE, + asn_DEF_LocationReportingInformation_tags_1, + sizeof(asn_DEF_LocationReportingInformation_tags_1) + /sizeof(asn_DEF_LocationReportingInformation_tags_1[0]), /* 1 */ + asn_DEF_LocationReportingInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_LocationReportingInformation_tags_1) + /sizeof(asn_DEF_LocationReportingInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LocationReportingInformation_1, + 3, /* Elements count */ + &asn_SPC_LocationReportingInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LocationReportingInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LocationReportingInformation.h new file mode 100644 index 0000000..79eca6c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/LocationReportingInformation.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _LocationReportingInformation_H_ +#define _LocationReportingInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EventType.h" +#include "ReportArea.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* LocationReportingInformation */ +typedef struct LocationReportingInformation { + EventType_t eventType; + ReportArea_t reportArea; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LocationReportingInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_LocationReportingInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _LocationReportingInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1PeriodicReporting.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1PeriodicReporting.c new file mode 100644 index 0000000..699afe5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1PeriodicReporting.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M1PeriodicReporting.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M1PeriodicReporting_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting, reportInterval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportIntervalMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportInterval" + }, + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting, reportAmount), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportAmountMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reportAmount" + }, + { ATF_POINTER, 1, offsetof(struct M1PeriodicReporting, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P159, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M1PeriodicReporting_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M1PeriodicReporting_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1PeriodicReporting_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportInterval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportAmount */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_specs_1 = { + sizeof(struct M1PeriodicReporting), + offsetof(struct M1PeriodicReporting, _asn_ctx), + asn_MAP_M1PeriodicReporting_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M1PeriodicReporting_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting = { + "M1PeriodicReporting", + "M1PeriodicReporting", + &asn_OP_SEQUENCE, + asn_DEF_M1PeriodicReporting_tags_1, + sizeof(asn_DEF_M1PeriodicReporting_tags_1) + /sizeof(asn_DEF_M1PeriodicReporting_tags_1[0]), /* 1 */ + asn_DEF_M1PeriodicReporting_tags_1, /* Same as above */ + sizeof(asn_DEF_M1PeriodicReporting_tags_1) + /sizeof(asn_DEF_M1PeriodicReporting_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1PeriodicReporting_1, + 3, /* Elements count */ + &asn_SPC_M1PeriodicReporting_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1PeriodicReporting.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1PeriodicReporting.h new file mode 100644 index 0000000..527a892 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1PeriodicReporting.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M1PeriodicReporting_H_ +#define _M1PeriodicReporting_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ReportIntervalMDT.h" +#include "ReportAmountMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M1PeriodicReporting */ +typedef struct M1PeriodicReporting { + ReportIntervalMDT_t reportInterval; + ReportAmountMDT_t reportAmount; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M1PeriodicReporting_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting; +extern asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_specs_1; +extern asn_TYPE_member_t asn_MBR_M1PeriodicReporting_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M1PeriodicReporting_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ReportingTrigger.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ReportingTrigger.c new file mode 100644 index 0000000..73c466f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ReportingTrigger.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M1ReportingTrigger.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M1ReportingTrigger_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M1ReportingTrigger_value2enum_1[] = { + { 0, 8, "periodic" }, + { 1, 16, "a2eventtriggered" }, + { 2, 25, "a2eventtriggered-periodic" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M1ReportingTrigger_enum2value_1[] = { + 1, /* a2eventtriggered(1) */ + 2, /* a2eventtriggered-periodic(2) */ + 0 /* periodic(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M1ReportingTrigger_specs_1 = { + asn_MAP_M1ReportingTrigger_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M1ReportingTrigger_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M1ReportingTrigger_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M1ReportingTrigger = { + "M1ReportingTrigger", + "M1ReportingTrigger", + &asn_OP_NativeEnumerated, + asn_DEF_M1ReportingTrigger_tags_1, + sizeof(asn_DEF_M1ReportingTrigger_tags_1) + /sizeof(asn_DEF_M1ReportingTrigger_tags_1[0]), /* 1 */ + asn_DEF_M1ReportingTrigger_tags_1, /* Same as above */ + sizeof(asn_DEF_M1ReportingTrigger_tags_1) + /sizeof(asn_DEF_M1ReportingTrigger_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M1ReportingTrigger_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M1ReportingTrigger_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ReportingTrigger.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ReportingTrigger.h new file mode 100644 index 0000000..e57949c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ReportingTrigger.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M1ReportingTrigger_H_ +#define _M1ReportingTrigger_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M1ReportingTrigger { + M1ReportingTrigger_periodic = 0, + M1ReportingTrigger_a2eventtriggered = 1, + /* + * Enumeration is extensible + */ + M1ReportingTrigger_a2eventtriggered_periodic = 2 +} e_M1ReportingTrigger; + +/* M1ReportingTrigger */ +typedef long M1ReportingTrigger_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M1ReportingTrigger_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M1ReportingTrigger; +extern const asn_INTEGER_specifics_t asn_SPC_M1ReportingTrigger_specs_1; +asn_struct_free_f M1ReportingTrigger_free; +asn_struct_print_f M1ReportingTrigger_print; +asn_constr_check_f M1ReportingTrigger_constraint; +ber_type_decoder_f M1ReportingTrigger_decode_ber; +der_type_encoder_f M1ReportingTrigger_encode_der; +xer_type_decoder_f M1ReportingTrigger_decode_xer; +xer_type_encoder_f M1ReportingTrigger_encode_xer; +per_type_decoder_f M1ReportingTrigger_decode_uper; +per_type_encoder_f M1ReportingTrigger_encode_uper; +per_type_decoder_f M1ReportingTrigger_decode_aper; +per_type_encoder_f M1ReportingTrigger_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M1ReportingTrigger_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ThresholdEventA2.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ThresholdEventA2.c new file mode 100644 index 0000000..e151255 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ThresholdEventA2.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M1ThresholdEventA2.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2, measurementThreshold), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_MeasurementThresholdA2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementThreshold" + }, + { ATF_POINTER, 1, offsetof(struct M1ThresholdEventA2, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P160, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M1ThresholdEventA2_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_M1ThresholdEventA2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1ThresholdEventA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementThreshold */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_specs_1 = { + sizeof(struct M1ThresholdEventA2), + offsetof(struct M1ThresholdEventA2, _asn_ctx), + asn_MAP_M1ThresholdEventA2_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_M1ThresholdEventA2_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2 = { + "M1ThresholdEventA2", + "M1ThresholdEventA2", + &asn_OP_SEQUENCE, + asn_DEF_M1ThresholdEventA2_tags_1, + sizeof(asn_DEF_M1ThresholdEventA2_tags_1) + /sizeof(asn_DEF_M1ThresholdEventA2_tags_1[0]), /* 1 */ + asn_DEF_M1ThresholdEventA2_tags_1, /* Same as above */ + sizeof(asn_DEF_M1ThresholdEventA2_tags_1) + /sizeof(asn_DEF_M1ThresholdEventA2_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1ThresholdEventA2_1, + 2, /* Elements count */ + &asn_SPC_M1ThresholdEventA2_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ThresholdEventA2.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ThresholdEventA2.h new file mode 100644 index 0000000..2e3ab03 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M1ThresholdEventA2.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M1ThresholdEventA2_H_ +#define _M1ThresholdEventA2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeasurementThresholdA2.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M1ThresholdEventA2 */ +typedef struct M1ThresholdEventA2 { + MeasurementThresholdA2_t measurementThreshold; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M1ThresholdEventA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2; +extern asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_specs_1; +extern asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M1ThresholdEventA2_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3Configuration.c new file mode 100644 index 0000000..7427795 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3Configuration.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M3Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M3Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M3Configuration, m3period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M3period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m3period" + }, + { ATF_POINTER, 1, offsetof(struct M3Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P161, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M3Configuration_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_M3Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M3Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m3period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_specs_1 = { + sizeof(struct M3Configuration), + offsetof(struct M3Configuration, _asn_ctx), + asn_MAP_M3Configuration_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_M3Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M3Configuration = { + "M3Configuration", + "M3Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M3Configuration_tags_1, + sizeof(asn_DEF_M3Configuration_tags_1) + /sizeof(asn_DEF_M3Configuration_tags_1[0]), /* 1 */ + asn_DEF_M3Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M3Configuration_tags_1) + /sizeof(asn_DEF_M3Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M3Configuration_1, + 2, /* Elements count */ + &asn_SPC_M3Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3Configuration.h new file mode 100644 index 0000000..b14b0ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3Configuration.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M3Configuration_H_ +#define _M3Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M3period.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M3Configuration */ +typedef struct M3Configuration { + M3period_t m3period; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M3Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M3Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M3Configuration_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M3Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3period.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3period.c new file mode 100644 index 0000000..41bbcc6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3period.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M3period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M3period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M3period_value2enum_1[] = { + { 0, 5, "ms100" }, + { 1, 6, "ms1000" }, + { 2, 7, "ms10000" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M3period_enum2value_1[] = { + 0, /* ms100(0) */ + 1, /* ms1000(1) */ + 2 /* ms10000(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M3period_specs_1 = { + asn_MAP_M3period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M3period_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M3period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M3period = { + "M3period", + "M3period", + &asn_OP_NativeEnumerated, + asn_DEF_M3period_tags_1, + sizeof(asn_DEF_M3period_tags_1) + /sizeof(asn_DEF_M3period_tags_1[0]), /* 1 */ + asn_DEF_M3period_tags_1, /* Same as above */ + sizeof(asn_DEF_M3period_tags_1) + /sizeof(asn_DEF_M3period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M3period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M3period_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3period.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3period.h new file mode 100644 index 0000000..2e1165a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M3period.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M3period_H_ +#define _M3period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M3period { + M3period_ms100 = 0, + M3period_ms1000 = 1, + M3period_ms10000 = 2 + /* + * Enumeration is extensible + */ +} e_M3period; + +/* M3period */ +typedef long M3period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M3period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M3period; +extern const asn_INTEGER_specifics_t asn_SPC_M3period_specs_1; +asn_struct_free_f M3period_free; +asn_struct_print_f M3period_print; +asn_constr_check_f M3period_constraint; +ber_type_decoder_f M3period_decode_ber; +der_type_encoder_f M3period_encode_der; +xer_type_decoder_f M3period_decode_xer; +xer_type_encoder_f M3period_encode_xer; +per_type_decoder_f M3period_decode_uper; +per_type_encoder_f M3period_encode_uper; +per_type_decoder_f M3period_decode_aper; +per_type_encoder_f M3period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M3period_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4Configuration.c new file mode 100644 index 0000000..c76b9b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4Configuration.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M4Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M4Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration, m4period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M4period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m4period" + }, + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration, m4_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m4-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M4Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P162, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M4Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M4Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M4Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m4period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m4-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_specs_1 = { + sizeof(struct M4Configuration), + offsetof(struct M4Configuration, _asn_ctx), + asn_MAP_M4Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M4Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M4Configuration = { + "M4Configuration", + "M4Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M4Configuration_tags_1, + sizeof(asn_DEF_M4Configuration_tags_1) + /sizeof(asn_DEF_M4Configuration_tags_1[0]), /* 1 */ + asn_DEF_M4Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M4Configuration_tags_1) + /sizeof(asn_DEF_M4Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M4Configuration_1, + 3, /* Elements count */ + &asn_SPC_M4Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4Configuration.h new file mode 100644 index 0000000..c1cd569 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4Configuration.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M4Configuration_H_ +#define _M4Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M4period.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M4Configuration */ +typedef struct M4Configuration { + M4period_t m4period; + Links_to_log_t m4_links_to_log; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M4Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M4Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M4Configuration_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M4Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4period.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4period.c new file mode 100644 index 0000000..511cc85 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4period.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M4period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M4period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M4period_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" }, + { 4, 4, "min1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M4period_enum2value_1[] = { + 4, /* min1(4) */ + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M4period_specs_1 = { + asn_MAP_M4period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M4period_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M4period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M4period = { + "M4period", + "M4period", + &asn_OP_NativeEnumerated, + asn_DEF_M4period_tags_1, + sizeof(asn_DEF_M4period_tags_1) + /sizeof(asn_DEF_M4period_tags_1[0]), /* 1 */ + asn_DEF_M4period_tags_1, /* Same as above */ + sizeof(asn_DEF_M4period_tags_1) + /sizeof(asn_DEF_M4period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M4period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M4period_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4period.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4period.h new file mode 100644 index 0000000..e16c3ba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M4period.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M4period_H_ +#define _M4period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M4period { + M4period_ms1024 = 0, + M4period_ms2048 = 1, + M4period_ms5120 = 2, + M4period_ms10240 = 3, + M4period_min1 = 4 + /* + * Enumeration is extensible + */ +} e_M4period; + +/* M4period */ +typedef long M4period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M4period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M4period; +extern const asn_INTEGER_specifics_t asn_SPC_M4period_specs_1; +asn_struct_free_f M4period_free; +asn_struct_print_f M4period_print; +asn_constr_check_f M4period_constraint; +ber_type_decoder_f M4period_decode_ber; +der_type_encoder_f M4period_encode_der; +xer_type_decoder_f M4period_decode_xer; +xer_type_encoder_f M4period_encode_xer; +per_type_decoder_f M4period_decode_uper; +per_type_encoder_f M4period_encode_uper; +per_type_decoder_f M4period_decode_aper; +per_type_encoder_f M4period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M4period_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5Configuration.c new file mode 100644 index 0000000..5acc7b7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5Configuration.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M5Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M5Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration, m5period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M5period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m5period" + }, + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration, m5_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m5-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M5Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P163, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M5Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M5Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M5Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m5period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m5-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_specs_1 = { + sizeof(struct M5Configuration), + offsetof(struct M5Configuration, _asn_ctx), + asn_MAP_M5Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M5Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M5Configuration = { + "M5Configuration", + "M5Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M5Configuration_tags_1, + sizeof(asn_DEF_M5Configuration_tags_1) + /sizeof(asn_DEF_M5Configuration_tags_1[0]), /* 1 */ + asn_DEF_M5Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M5Configuration_tags_1) + /sizeof(asn_DEF_M5Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M5Configuration_1, + 3, /* Elements count */ + &asn_SPC_M5Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5Configuration.h new file mode 100644 index 0000000..a8db7d8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5Configuration.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M5Configuration_H_ +#define _M5Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M5period.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M5Configuration */ +typedef struct M5Configuration { + M5period_t m5period; + Links_to_log_t m5_links_to_log; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M5Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M5Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M5Configuration_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M5Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5period.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5period.c new file mode 100644 index 0000000..61339d6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5period.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M5period.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M5period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M5period_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" }, + { 4, 4, "min1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M5period_enum2value_1[] = { + 4, /* min1(4) */ + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M5period_specs_1 = { + asn_MAP_M5period_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M5period_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M5period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M5period = { + "M5period", + "M5period", + &asn_OP_NativeEnumerated, + asn_DEF_M5period_tags_1, + sizeof(asn_DEF_M5period_tags_1) + /sizeof(asn_DEF_M5period_tags_1[0]), /* 1 */ + asn_DEF_M5period_tags_1, /* Same as above */ + sizeof(asn_DEF_M5period_tags_1) + /sizeof(asn_DEF_M5period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M5period_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M5period_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5period.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5period.h new file mode 100644 index 0000000..86d65f9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M5period.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M5period_H_ +#define _M5period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M5period { + M5period_ms1024 = 0, + M5period_ms2048 = 1, + M5period_ms5120 = 2, + M5period_ms10240 = 3, + M5period_min1 = 4 + /* + * Enumeration is extensible + */ +} e_M5period; + +/* M5period */ +typedef long M5period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M5period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M5period; +extern const asn_INTEGER_specifics_t asn_SPC_M5period_specs_1; +asn_struct_free_f M5period_free; +asn_struct_print_f M5period_print; +asn_constr_check_f M5period_constraint; +ber_type_decoder_f M5period_decode_ber; +der_type_encoder_f M5period_encode_der; +xer_type_decoder_f M5period_decode_xer; +xer_type_encoder_f M5period_encode_xer; +per_type_decoder_f M5period_decode_uper; +per_type_encoder_f M5period_encode_uper; +per_type_decoder_f M5period_decode_aper; +per_type_encoder_f M5period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M5period_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6Configuration.c new file mode 100644 index 0000000..8ba5e3b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6Configuration.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M6Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M6Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration, m6report_interval), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M6report_interval, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6report-interval" + }, + { ATF_POINTER, 1, offsetof(struct M6Configuration, m6delay_threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M6delay_threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6delay-threshold" + }, + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration, m6_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m6-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M6Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P164, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M6Configuration_oms_1[] = { 1, 3 }; +static const ber_tlv_tag_t asn_DEF_M6Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M6Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m6report-interval */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m6delay-threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* m6-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_specs_1 = { + sizeof(struct M6Configuration), + offsetof(struct M6Configuration, _asn_ctx), + asn_MAP_M6Configuration_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_M6Configuration_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M6Configuration = { + "M6Configuration", + "M6Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M6Configuration_tags_1, + sizeof(asn_DEF_M6Configuration_tags_1) + /sizeof(asn_DEF_M6Configuration_tags_1[0]), /* 1 */ + asn_DEF_M6Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M6Configuration_tags_1) + /sizeof(asn_DEF_M6Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M6Configuration_1, + 4, /* Elements count */ + &asn_SPC_M6Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6Configuration.h new file mode 100644 index 0000000..a04f951 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6Configuration.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M6Configuration_H_ +#define _M6Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M6report-interval.h" +#include "M6delay-threshold.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M6Configuration */ +typedef struct M6Configuration { + M6report_interval_t m6report_interval; + M6delay_threshold_t *m6delay_threshold; /* OPTIONAL */ + Links_to_log_t m6_links_to_log; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M6Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M6Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M6Configuration_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M6Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6delay-threshold.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6delay-threshold.c new file mode 100644 index 0000000..890cf19 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6delay-threshold.c @@ -0,0 +1,98 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M6delay-threshold.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M6delay_threshold_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 11 } /* (0..11,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M6delay_threshold_value2enum_1[] = { + { 0, 4, "ms30" }, + { 1, 4, "ms40" }, + { 2, 4, "ms50" }, + { 3, 4, "ms60" }, + { 4, 4, "ms70" }, + { 5, 4, "ms80" }, + { 6, 4, "ms90" }, + { 7, 5, "ms100" }, + { 8, 5, "ms150" }, + { 9, 5, "ms300" }, + { 10, 5, "ms500" }, + { 11, 5, "ms750" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M6delay_threshold_enum2value_1[] = { + 7, /* ms100(7) */ + 8, /* ms150(8) */ + 0, /* ms30(0) */ + 9, /* ms300(9) */ + 1, /* ms40(1) */ + 2, /* ms50(2) */ + 10, /* ms500(10) */ + 3, /* ms60(3) */ + 4, /* ms70(4) */ + 11, /* ms750(11) */ + 5, /* ms80(5) */ + 6 /* ms90(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M6delay_threshold_specs_1 = { + asn_MAP_M6delay_threshold_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M6delay_threshold_enum2value_1, /* N => "tag"; sorted by N */ + 12, /* Number of elements in the maps */ + 13, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M6delay_threshold_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M6delay_threshold = { + "M6delay-threshold", + "M6delay-threshold", + &asn_OP_NativeEnumerated, + asn_DEF_M6delay_threshold_tags_1, + sizeof(asn_DEF_M6delay_threshold_tags_1) + /sizeof(asn_DEF_M6delay_threshold_tags_1[0]), /* 1 */ + asn_DEF_M6delay_threshold_tags_1, /* Same as above */ + sizeof(asn_DEF_M6delay_threshold_tags_1) + /sizeof(asn_DEF_M6delay_threshold_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M6delay_threshold_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M6delay_threshold_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6delay-threshold.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6delay-threshold.h new file mode 100644 index 0000000..b9e4636 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6delay-threshold.h @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M6delay_threshold_H_ +#define _M6delay_threshold_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M6delay_threshold { + M6delay_threshold_ms30 = 0, + M6delay_threshold_ms40 = 1, + M6delay_threshold_ms50 = 2, + M6delay_threshold_ms60 = 3, + M6delay_threshold_ms70 = 4, + M6delay_threshold_ms80 = 5, + M6delay_threshold_ms90 = 6, + M6delay_threshold_ms100 = 7, + M6delay_threshold_ms150 = 8, + M6delay_threshold_ms300 = 9, + M6delay_threshold_ms500 = 10, + M6delay_threshold_ms750 = 11 + /* + * Enumeration is extensible + */ +} e_M6delay_threshold; + +/* M6delay-threshold */ +typedef long M6delay_threshold_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M6delay_threshold_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M6delay_threshold; +extern const asn_INTEGER_specifics_t asn_SPC_M6delay_threshold_specs_1; +asn_struct_free_f M6delay_threshold_free; +asn_struct_print_f M6delay_threshold_print; +asn_constr_check_f M6delay_threshold_constraint; +ber_type_decoder_f M6delay_threshold_decode_ber; +der_type_encoder_f M6delay_threshold_encode_der; +xer_type_decoder_f M6delay_threshold_decode_xer; +xer_type_encoder_f M6delay_threshold_encode_xer; +per_type_decoder_f M6delay_threshold_decode_uper; +per_type_encoder_f M6delay_threshold_encode_uper; +per_type_decoder_f M6delay_threshold_decode_aper; +per_type_encoder_f M6delay_threshold_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M6delay_threshold_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6report-interval.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6report-interval.c new file mode 100644 index 0000000..361839b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6report-interval.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M6report-interval.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M6report_interval_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_M6report_interval_value2enum_1[] = { + { 0, 6, "ms1024" }, + { 1, 6, "ms2048" }, + { 2, 6, "ms5120" }, + { 3, 7, "ms10240" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_M6report_interval_enum2value_1[] = { + 0, /* ms1024(0) */ + 3, /* ms10240(3) */ + 1, /* ms2048(1) */ + 2 /* ms5120(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_M6report_interval_specs_1 = { + asn_MAP_M6report_interval_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_M6report_interval_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_M6report_interval_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M6report_interval = { + "M6report-interval", + "M6report-interval", + &asn_OP_NativeEnumerated, + asn_DEF_M6report_interval_tags_1, + sizeof(asn_DEF_M6report_interval_tags_1) + /sizeof(asn_DEF_M6report_interval_tags_1[0]), /* 1 */ + asn_DEF_M6report_interval_tags_1, /* Same as above */ + sizeof(asn_DEF_M6report_interval_tags_1) + /sizeof(asn_DEF_M6report_interval_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M6report_interval_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_M6report_interval_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6report-interval.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6report-interval.h new file mode 100644 index 0000000..684ad4c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M6report-interval.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M6report_interval_H_ +#define _M6report_interval_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum M6report_interval { + M6report_interval_ms1024 = 0, + M6report_interval_ms2048 = 1, + M6report_interval_ms5120 = 2, + M6report_interval_ms10240 = 3 + /* + * Enumeration is extensible + */ +} e_M6report_interval; + +/* M6report-interval */ +typedef long M6report_interval_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M6report_interval_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M6report_interval; +extern const asn_INTEGER_specifics_t asn_SPC_M6report_interval_specs_1; +asn_struct_free_f M6report_interval_free; +asn_struct_print_f M6report_interval_print; +asn_constr_check_f M6report_interval_constraint; +ber_type_decoder_f M6report_interval_decode_ber; +der_type_encoder_f M6report_interval_encode_der; +xer_type_decoder_f M6report_interval_decode_xer; +xer_type_encoder_f M6report_interval_encode_xer; +per_type_decoder_f M6report_interval_decode_uper; +per_type_encoder_f M6report_interval_encode_uper; +per_type_decoder_f M6report_interval_decode_aper; +per_type_encoder_f M6report_interval_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M6report_interval_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7Configuration.c new file mode 100644 index 0000000..f4755b1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7Configuration.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M7Configuration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_M7Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration, m7period), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M7period, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m7period" + }, + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration, m7_links_to_log), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Links_to_log, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m7-links-to-log" + }, + { ATF_POINTER, 1, offsetof(struct M7Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P165, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_M7Configuration_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_M7Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M7Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* m7period */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* m7-links-to-log */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_specs_1 = { + sizeof(struct M7Configuration), + offsetof(struct M7Configuration, _asn_ctx), + asn_MAP_M7Configuration_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_M7Configuration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M7Configuration = { + "M7Configuration", + "M7Configuration", + &asn_OP_SEQUENCE, + asn_DEF_M7Configuration_tags_1, + sizeof(asn_DEF_M7Configuration_tags_1) + /sizeof(asn_DEF_M7Configuration_tags_1[0]), /* 1 */ + asn_DEF_M7Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_M7Configuration_tags_1) + /sizeof(asn_DEF_M7Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M7Configuration_1, + 3, /* Elements count */ + &asn_SPC_M7Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7Configuration.h new file mode 100644 index 0000000..f6304df --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7Configuration.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M7Configuration_H_ +#define _M7Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "M7period.h" +#include "Links-to-log.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* M7Configuration */ +typedef struct M7Configuration { + M7period_t m7period; + Links_to_log_t m7_links_to_log; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M7Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_M7Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_M7Configuration_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _M7Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7period.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7period.c new file mode 100644 index 0000000..bc62eb8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7period.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "M7period.h" + +int +M7period_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 60)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_M7period_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 6, 6, 1, 60 } /* (1..60,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_M7period_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_M7period = { + "M7period", + "M7period", + &asn_OP_NativeInteger, + asn_DEF_M7period_tags_1, + sizeof(asn_DEF_M7period_tags_1) + /sizeof(asn_DEF_M7period_tags_1[0]), /* 1 */ + asn_DEF_M7period_tags_1, /* Same as above */ + sizeof(asn_DEF_M7period_tags_1) + /sizeof(asn_DEF_M7period_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_M7period_constr_1, M7period_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7period.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7period.h new file mode 100644 index 0000000..835a61a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/M7period.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _M7period_H_ +#define _M7period_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* M7period */ +typedef long M7period_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_M7period_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_M7period; +asn_struct_free_f M7period_free; +asn_struct_print_f M7period_print; +asn_constr_check_f M7period_constraint; +ber_type_decoder_f M7period_decode_ber; +der_type_encoder_f M7period_encode_der; +xer_type_decoder_f M7period_decode_xer; +xer_type_encoder_f M7period_encode_xer; +per_type_decoder_f M7period_decode_uper; +per_type_encoder_f M7period_encode_uper; +per_type_decoder_f M7period_decode_aper; +per_type_encoder_f M7period_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _M7period_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c new file mode 100644 index 0000000..65a27b9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBMS-Service-Area-Identity-List.h" + +asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MBMS_Service_Area_Identity_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MBMS_Service_Area_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MBMS_Service_Area_Identity_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MBMS_Service_Area_Identity_List_specs_1 = { + sizeof(struct MBMS_Service_Area_Identity_List), + offsetof(struct MBMS_Service_Area_Identity_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity_List = { + "MBMS-Service-Area-Identity-List", + "MBMS-Service-Area-Identity-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MBMS_Service_Area_Identity_List_tags_1, + sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1[0]), /* 1 */ + asn_DEF_MBMS_Service_Area_Identity_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MBMS_Service_Area_Identity_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MBMS_Service_Area_Identity_List_1, + 1, /* Single element */ + &asn_SPC_MBMS_Service_Area_Identity_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h new file mode 100644 index 0000000..676eb88 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity-List.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBMS_Service_Area_Identity_List_H_ +#define _MBMS_Service_Area_Identity_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MBMS-Service-Area-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MBMS-Service-Area-Identity-List */ +typedef struct MBMS_Service_Area_Identity_List { + A_SEQUENCE_OF(MBMS_Service_Area_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBMS_Service_Area_Identity_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity_List; +extern asn_SET_OF_specifics_t asn_SPC_MBMS_Service_Area_Identity_List_specs_1; +extern asn_TYPE_member_t asn_MBR_MBMS_Service_Area_Identity_List_1[1]; +extern asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBMS_Service_Area_Identity_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c new file mode 100644 index 0000000..6b1a7c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBMS-Service-Area-Identity.h" + +int +MBMS_Service_Area_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MBMS_Service_Area_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity = { + "MBMS-Service-Area-Identity", + "MBMS-Service-Area-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_MBMS_Service_Area_Identity_tags_1, + sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1[0]), /* 1 */ + asn_DEF_MBMS_Service_Area_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1) + /sizeof(asn_DEF_MBMS_Service_Area_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MBMS_Service_Area_Identity_constr_1, MBMS_Service_Area_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h new file mode 100644 index 0000000..0ffaa92 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBMS-Service-Area-Identity.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBMS_Service_Area_Identity_H_ +#define _MBMS_Service_Area_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MBMS-Service-Area-Identity */ +typedef OCTET_STRING_t MBMS_Service_Area_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MBMS_Service_Area_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MBMS_Service_Area_Identity; +asn_struct_free_f MBMS_Service_Area_Identity_free; +asn_struct_print_f MBMS_Service_Area_Identity_print; +asn_constr_check_f MBMS_Service_Area_Identity_constraint; +ber_type_decoder_f MBMS_Service_Area_Identity_decode_ber; +der_type_encoder_f MBMS_Service_Area_Identity_encode_der; +xer_type_decoder_f MBMS_Service_Area_Identity_decode_xer; +xer_type_encoder_f MBMS_Service_Area_Identity_encode_xer; +per_type_decoder_f MBMS_Service_Area_Identity_decode_uper; +per_type_encoder_f MBMS_Service_Area_Identity_encode_uper; +per_type_decoder_f MBMS_Service_Area_Identity_decode_aper; +per_type_encoder_f MBMS_Service_Area_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBMS_Service_Area_Identity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c new file mode 100644 index 0000000..578678a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Info.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBSFN-Subframe-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info, radioframeAllocationPeriod), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadioframeAllocationPeriod, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioframeAllocationPeriod" + }, + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info, radioframeAllocationOffset), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RadioframeAllocationOffset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioframeAllocationOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info, subframeAllocation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SubframeAllocation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subframeAllocation" + }, + { ATF_POINTER, 1, offsetof(struct MBSFN_Subframe_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P168, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MBSFN_Subframe_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_MBSFN_Subframe_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MBSFN_Subframe_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioframeAllocationPeriod */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* radioframeAllocationOffset */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subframeAllocation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_specs_1 = { + sizeof(struct MBSFN_Subframe_Info), + offsetof(struct MBSFN_Subframe_Info, _asn_ctx), + asn_MAP_MBSFN_Subframe_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MBSFN_Subframe_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info = { + "MBSFN-Subframe-Info", + "MBSFN-Subframe-Info", + &asn_OP_SEQUENCE, + asn_DEF_MBSFN_Subframe_Info_tags_1, + sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1[0]), /* 1 */ + asn_DEF_MBSFN_Subframe_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MBSFN_Subframe_Info_1, + 4, /* Elements count */ + &asn_SPC_MBSFN_Subframe_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h new file mode 100644 index 0000000..71a4064 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Info.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBSFN_Subframe_Info_H_ +#define _MBSFN_Subframe_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RadioframeAllocationPeriod.h" +#include "RadioframeAllocationOffset.h" +#include "SubframeAllocation.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* MBSFN-Subframe-Info */ +typedef struct MBSFN_Subframe_Info { + RadioframeAllocationPeriod_t radioframeAllocationPeriod; + RadioframeAllocationOffset_t radioframeAllocationOffset; + SubframeAllocation_t subframeAllocation; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBSFN_Subframe_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBSFN_Subframe_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c new file mode 100644 index 0000000..32d1227 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MBSFN-Subframe-Infolist.h" + +#include "MBSFN-Subframe-Info.h" +asn_per_constraints_t asn_PER_type_MBSFN_Subframe_Infolist_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Infolist_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBSFN_Subframe_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MBSFN_Subframe_Infolist_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MBSFN_Subframe_Infolist_specs_1 = { + sizeof(struct MBSFN_Subframe_Infolist), + offsetof(struct MBSFN_Subframe_Infolist, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Infolist = { + "MBSFN-Subframe-Infolist", + "MBSFN-Subframe-Infolist", + &asn_OP_SEQUENCE_OF, + asn_DEF_MBSFN_Subframe_Infolist_tags_1, + sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1[0]), /* 1 */ + asn_DEF_MBSFN_Subframe_Infolist_tags_1, /* Same as above */ + sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1) + /sizeof(asn_DEF_MBSFN_Subframe_Infolist_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MBSFN_Subframe_Infolist_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MBSFN_Subframe_Infolist_1, + 1, /* Single element */ + &asn_SPC_MBSFN_Subframe_Infolist_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h new file mode 100644 index 0000000..d9cd603 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MBSFN-Subframe-Infolist.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MBSFN_Subframe_Infolist_H_ +#define _MBSFN_Subframe_Infolist_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MBSFN_Subframe_Info; + +/* MBSFN-Subframe-Infolist */ +typedef struct MBSFN_Subframe_Infolist { + A_SEQUENCE_OF(struct MBSFN_Subframe_Info) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBSFN_Subframe_Infolist_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Infolist; +extern asn_SET_OF_specifics_t asn_SPC_MBSFN_Subframe_Infolist_specs_1; +extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Infolist_1[1]; +extern asn_per_constraints_t asn_PER_type_MBSFN_Subframe_Infolist_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MBSFN_Subframe_Infolist_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Activation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Activation.c new file mode 100644 index 0000000..120e862 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Activation.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDT-Activation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MDT_Activation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MDT_Activation_value2enum_1[] = { + { 0, 18, "immediate-MDT-only" }, + { 1, 23, "immediate-MDT-and-Trace" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MDT_Activation_enum2value_1[] = { + 1, /* immediate-MDT-and-Trace(1) */ + 0 /* immediate-MDT-only(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MDT_Activation_specs_1 = { + asn_MAP_MDT_Activation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MDT_Activation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MDT_Activation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Activation = { + "MDT-Activation", + "MDT-Activation", + &asn_OP_NativeEnumerated, + asn_DEF_MDT_Activation_tags_1, + sizeof(asn_DEF_MDT_Activation_tags_1) + /sizeof(asn_DEF_MDT_Activation_tags_1[0]), /* 1 */ + asn_DEF_MDT_Activation_tags_1, /* Same as above */ + sizeof(asn_DEF_MDT_Activation_tags_1) + /sizeof(asn_DEF_MDT_Activation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MDT_Activation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MDT_Activation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Activation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Activation.h new file mode 100644 index 0000000..039f82e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Activation.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDT_Activation_H_ +#define _MDT_Activation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MDT_Activation { + MDT_Activation_immediate_MDT_only = 0, + MDT_Activation_immediate_MDT_and_Trace = 1 + /* + * Enumeration is extensible + */ +} e_MDT_Activation; + +/* MDT-Activation */ +typedef long MDT_Activation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MDT_Activation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MDT_Activation; +extern const asn_INTEGER_specifics_t asn_SPC_MDT_Activation_specs_1; +asn_struct_free_f MDT_Activation_free; +asn_struct_print_f MDT_Activation_print; +asn_constr_check_f MDT_Activation_constraint; +ber_type_decoder_f MDT_Activation_decode_ber; +der_type_encoder_f MDT_Activation_encode_der; +xer_type_decoder_f MDT_Activation_decode_xer; +xer_type_encoder_f MDT_Activation_encode_xer; +per_type_decoder_f MDT_Activation_decode_uper; +per_type_encoder_f MDT_Activation_encode_uper; +per_type_decoder_f MDT_Activation_decode_aper; +per_type_encoder_f MDT_Activation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDT_Activation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Configuration.c new file mode 100644 index 0000000..6bdf385 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Configuration.c @@ -0,0 +1,138 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDT-Configuration.h" + +#include "M1ThresholdEventA2.h" +#include "M1PeriodicReporting.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_MDT_Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, mdt_Activation), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MDT_Activation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mdt-Activation" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, areaScopeOfMDT), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_AreaScopeOfMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "areaScopeOfMDT" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, measurementsToActivate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementsToActivate" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration, m1reportingTrigger), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M1ReportingTrigger, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1reportingTrigger" + }, + { ATF_POINTER, 3, offsetof(struct MDT_Configuration, m1thresholdeventA2), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M1ThresholdEventA2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1thresholdeventA2" + }, + { ATF_POINTER, 2, offsetof(struct MDT_Configuration, m1periodicReporting), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_M1PeriodicReporting, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "m1periodicReporting" + }, + { ATF_POINTER, 1, offsetof(struct MDT_Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P166, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MDT_Configuration_oms_1[] = { 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_MDT_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MDT_Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mdt-Activation */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* areaScopeOfMDT */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measurementsToActivate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* m1reportingTrigger */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* m1thresholdeventA2 */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* m1periodicReporting */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_specs_1 = { + sizeof(struct MDT_Configuration), + offsetof(struct MDT_Configuration, _asn_ctx), + asn_MAP_MDT_Configuration_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_MDT_Configuration_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Configuration = { + "MDT-Configuration", + "MDT-Configuration", + &asn_OP_SEQUENCE, + asn_DEF_MDT_Configuration_tags_1, + sizeof(asn_DEF_MDT_Configuration_tags_1) + /sizeof(asn_DEF_MDT_Configuration_tags_1[0]), /* 1 */ + asn_DEF_MDT_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_MDT_Configuration_tags_1) + /sizeof(asn_DEF_MDT_Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MDT_Configuration_1, + 7, /* Elements count */ + &asn_SPC_MDT_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Configuration.h new file mode 100644 index 0000000..8de3654 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Configuration.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDT_Configuration_H_ +#define _MDT_Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MDT-Activation.h" +#include "AreaScopeOfMDT.h" +#include "MeasurementsToActivate.h" +#include "M1ReportingTrigger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct M1ThresholdEventA2; +struct M1PeriodicReporting; +struct ProtocolExtensionContainer; + +/* MDT-Configuration */ +typedef struct MDT_Configuration { + MDT_Activation_t mdt_Activation; + AreaScopeOfMDT_t areaScopeOfMDT; + MeasurementsToActivate_t measurementsToActivate; + M1ReportingTrigger_t m1reportingTrigger; + struct M1ThresholdEventA2 *m1thresholdeventA2; /* OPTIONAL */ + struct M1PeriodicReporting *m1periodicReporting; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MDT_Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MDT_Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_MDT_Configuration_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDT_Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Location-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Location-Info.c new file mode 100644 index 0000000..a6755c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Location-Info.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDT-Location-Info.h" + +int +MDT_Location_Info_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MDT_Location_Info_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MDT_Location_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Location_Info = { + "MDT-Location-Info", + "MDT-Location-Info", + &asn_OP_BIT_STRING, + asn_DEF_MDT_Location_Info_tags_1, + sizeof(asn_DEF_MDT_Location_Info_tags_1) + /sizeof(asn_DEF_MDT_Location_Info_tags_1[0]), /* 1 */ + asn_DEF_MDT_Location_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_MDT_Location_Info_tags_1) + /sizeof(asn_DEF_MDT_Location_Info_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MDT_Location_Info_constr_1, MDT_Location_Info_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Location-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Location-Info.h new file mode 100644 index 0000000..8c36cc9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDT-Location-Info.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDT_Location_Info_H_ +#define _MDT_Location_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MDT-Location-Info */ +typedef BIT_STRING_t MDT_Location_Info_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MDT_Location_Info_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MDT_Location_Info; +asn_struct_free_f MDT_Location_Info_free; +asn_struct_print_f MDT_Location_Info_print; +asn_constr_check_f MDT_Location_Info_constraint; +ber_type_decoder_f MDT_Location_Info_decode_ber; +der_type_encoder_f MDT_Location_Info_encode_der; +xer_type_decoder_f MDT_Location_Info_decode_xer; +xer_type_encoder_f MDT_Location_Info_encode_xer; +per_type_decoder_f MDT_Location_Info_decode_uper; +per_type_encoder_f MDT_Location_Info_encode_uper; +per_type_decoder_f MDT_Location_Info_decode_aper; +per_type_encoder_f MDT_Location_Info_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDT_Location_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDTPLMNList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDTPLMNList.c new file mode 100644 index 0000000..5f09c92 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDTPLMNList.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MDTPLMNList.h" + +asn_per_constraints_t asn_PER_type_MDTPLMNList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MDTPLMNList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MDTPLMNList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MDTPLMNList_specs_1 = { + sizeof(struct MDTPLMNList), + offsetof(struct MDTPLMNList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MDTPLMNList = { + "MDTPLMNList", + "MDTPLMNList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MDTPLMNList_tags_1, + sizeof(asn_DEF_MDTPLMNList_tags_1) + /sizeof(asn_DEF_MDTPLMNList_tags_1[0]), /* 1 */ + asn_DEF_MDTPLMNList_tags_1, /* Same as above */ + sizeof(asn_DEF_MDTPLMNList_tags_1) + /sizeof(asn_DEF_MDTPLMNList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MDTPLMNList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MDTPLMNList_1, + 1, /* Single element */ + &asn_SPC_MDTPLMNList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDTPLMNList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDTPLMNList.h new file mode 100644 index 0000000..991380e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MDTPLMNList.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MDTPLMNList_H_ +#define _MDTPLMNList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MDTPLMNList */ +typedef struct MDTPLMNList { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MDTPLMNList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MDTPLMNList; +extern asn_SET_OF_specifics_t asn_SPC_MDTPLMNList_specs_1; +extern asn_TYPE_member_t asn_MBR_MDTPLMNList_1[1]; +extern asn_per_constraints_t asn_PER_type_MDTPLMNList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MDTPLMNList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Code.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Code.c new file mode 100644 index 0000000..3a3bdaf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Code.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MME-Code.h" + +int +MME_Code_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 1)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MME_Code_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 1, 1 } /* (SIZE(1..1)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MME_Code_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_Code = { + "MME-Code", + "MME-Code", + &asn_OP_OCTET_STRING, + asn_DEF_MME_Code_tags_1, + sizeof(asn_DEF_MME_Code_tags_1) + /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */ + asn_DEF_MME_Code_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_Code_tags_1) + /sizeof(asn_DEF_MME_Code_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MME_Code_constr_1, MME_Code_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Code.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Code.h new file mode 100644 index 0000000..ffb92cd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Code.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MME_Code_H_ +#define _MME_Code_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-Code */ +typedef OCTET_STRING_t MME_Code_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_Code_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_Code; +asn_struct_free_f MME_Code_free; +asn_struct_print_f MME_Code_print; +asn_constr_check_f MME_Code_constraint; +ber_type_decoder_f MME_Code_decode_ber; +der_type_encoder_f MME_Code_encode_der; +xer_type_decoder_f MME_Code_decode_xer; +xer_type_encoder_f MME_Code_encode_xer; +per_type_decoder_f MME_Code_decode_uper; +per_type_encoder_f MME_Code_encode_uper; +per_type_decoder_f MME_Code_decode_aper; +per_type_encoder_f MME_Code_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_Code_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Group-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Group-ID.c new file mode 100644 index 0000000..91ce04f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Group-ID.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MME-Group-ID.h" + +int +MME_Group_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MME_Group_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MME_Group_ID = { + "MME-Group-ID", + "MME-Group-ID", + &asn_OP_OCTET_STRING, + asn_DEF_MME_Group_ID_tags_1, + sizeof(asn_DEF_MME_Group_ID_tags_1) + /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */ + asn_DEF_MME_Group_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_MME_Group_ID_tags_1) + /sizeof(asn_DEF_MME_Group_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MME_Group_ID_constr_1, MME_Group_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Group-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Group-ID.h new file mode 100644 index 0000000..826304e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MME-Group-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MME_Group_ID_H_ +#define _MME_Group_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MME-Group-ID */ +typedef OCTET_STRING_t MME_Group_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MME_Group_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MME_Group_ID; +asn_struct_free_f MME_Group_ID_free; +asn_struct_print_f MME_Group_ID_print; +asn_constr_check_f MME_Group_ID_constraint; +ber_type_decoder_f MME_Group_ID_decode_ber; +der_type_encoder_f MME_Group_ID_encode_der; +xer_type_decoder_f MME_Group_ID_decode_xer; +xer_type_encoder_f MME_Group_ID_encode_xer; +per_type_decoder_f MME_Group_ID_decode_uper; +per_type_encoder_f MME_Group_ID_encode_uper; +per_type_decoder_f MME_Group_ID_decode_aper; +per_type_encoder_f MME_Group_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MME_Group_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c new file mode 100644 index 0000000..2696cb7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MakeBeforeBreakIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MakeBeforeBreakIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MakeBeforeBreakIndicator_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MakeBeforeBreakIndicator_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MakeBeforeBreakIndicator_specs_1 = { + asn_MAP_MakeBeforeBreakIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MakeBeforeBreakIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MakeBeforeBreakIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MakeBeforeBreakIndicator = { + "MakeBeforeBreakIndicator", + "MakeBeforeBreakIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_MakeBeforeBreakIndicator_tags_1, + sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1) + /sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1[0]), /* 1 */ + asn_DEF_MakeBeforeBreakIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1) + /sizeof(asn_DEF_MakeBeforeBreakIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MakeBeforeBreakIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MakeBeforeBreakIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h new file mode 100644 index 0000000..1282ea5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MakeBeforeBreakIndicator.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MakeBeforeBreakIndicator_H_ +#define _MakeBeforeBreakIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MakeBeforeBreakIndicator { + MakeBeforeBreakIndicator_true = 0 + /* + * Enumeration is extensible + */ +} e_MakeBeforeBreakIndicator; + +/* MakeBeforeBreakIndicator */ +typedef long MakeBeforeBreakIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MakeBeforeBreakIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MakeBeforeBreakIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_MakeBeforeBreakIndicator_specs_1; +asn_struct_free_f MakeBeforeBreakIndicator_free; +asn_struct_print_f MakeBeforeBreakIndicator_print; +asn_constr_check_f MakeBeforeBreakIndicator_constraint; +ber_type_decoder_f MakeBeforeBreakIndicator_decode_ber; +der_type_encoder_f MakeBeforeBreakIndicator_encode_der; +xer_type_decoder_f MakeBeforeBreakIndicator_decode_xer; +xer_type_encoder_f MakeBeforeBreakIndicator_encode_xer; +per_type_decoder_f MakeBeforeBreakIndicator_decode_uper; +per_type_encoder_f MakeBeforeBreakIndicator_encode_uper; +per_type_decoder_f MakeBeforeBreakIndicator_decode_aper; +per_type_encoder_f MakeBeforeBreakIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MakeBeforeBreakIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Makefile.am.asn1convert b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Makefile.am.asn1convert new file mode 100644 index 0000000..72e1839 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Makefile.am.asn1convert @@ -0,0 +1,14 @@ +include ./Makefile.am.libasncodec + +bin_PROGRAMS += asn1convert +asn1convert_CFLAGS = $(ASN_MODULE_CFLAGS) -DASN_PDU_COLLECTION +asn1convert_CPPFLAGS = -I$(top_srcdir)/./ +asn1convert_LDADD = libasncodec.la +asn1convert_SOURCES = \ + ./converter-example.c\ + ./pdu_collection.c +regen: regenerate-from-asn1-source + +regenerate-from-asn1-source: + asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../../asnFiles/e2ap-v031.asn ../../asnFiles/X2AP-PDU-Contents.asn ../../asnFiles/X2AP-Constants.asn ../../asnFiles/X2AP-Containers.asn ../../asnFiles/X2AP-IEs.asn ../../asnFiles/X2AP-CommonDataTypes.asn ../../asnFiles/e2sm-gNB-X2-release-1-v041.asn + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Makefile.am.libasncodec b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Makefile.am.libasncodec new file mode 100644 index 0000000..db908ec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Makefile.am.libasncodec @@ -0,0 +1,1575 @@ +ASN_MODULE_SRCS= \ + ./E2AP-PDU.c \ + ./InitiatingMessage.c \ + ./SuccessfulOutcome.c \ + ./UnsuccessfulOutcome.c \ + ./RICsubscriptionRequest.c \ + ./RICsubscription.c \ + ./RICactions-ToBeSetup-List.c \ + ./RICaction-ToBeSetup-Item.c \ + ./RICsubscriptionResponse.c \ + ./RICaction-Admitted-List.c \ + ./RICaction-Admitted-Item.c \ + ./RICaction-NotAdmitted-List.c \ + ./RICaction-NotAdmitted-Item.c \ + ./RICsubscriptionFailure.c \ + ./RICsubscriptionDeleteRequest.c \ + ./RICsubscriptionDeleteResponse.c \ + ./RICsubscriptionDeleteFailure.c \ + ./RICindication.c \ + ./RICcontrolRequest.c \ + ./RICcontrolAcknowledge.c \ + ./RICcontrolFailure.c \ + ./RICserviceUpdate.c \ + ./RANfunctions-List.c \ + ./RANfunction-Item.c \ + ./RANfunctionsID-List.c \ + ./RANfunctionID-Item.c \ + ./RICserviceUpdateAcknowledge.c \ + ./RANfunctionsIDcause-List.c \ + ./RANfunctionIDcause-Item.c \ + ./RICserviceUpdateFailure.c \ + ./RICserviceQuery.c \ + ./CauseRIC.c \ + ./RANfunctionDefinition.c \ + ./RANfunctionID.c \ + ./RICactionDefinition.c \ + ./RICactionID.c \ + ./RICactionType.c \ + ./RICcallProcessID.c \ + ./RICcause.c \ + ./RICcontrolAckRequest.c \ + ./RICcontrolHeader.c \ + ./RICcontrolMessage.c \ + ./RICcontrolStatus.c \ + ./RICeventTriggerDefinition.c \ + ./RICindicationHeader.c \ + ./RICindicationMessage.c \ + ./RICindicationSN.c \ + ./RICindicationType.c \ + ./RICrequestID.c \ + ./RICsubsequentAction.c \ + ./RICsubsequentActionType.c \ + ./RICtimeToWait.c \ + ./HandoverRequest.c \ + ./UE-ContextInformation.c \ + ./E-RABs-ToBeSetup-List.c \ + ./E-RABs-ToBeSetup-Item.c \ + ./MobilityInformation.c \ + ./UE-ContextReferenceAtSeNB.c \ + ./UE-ContextReferenceAtWT.c \ + ./UE-ContextReferenceAtSgNB.c \ + ./HandoverRequestAcknowledge.c \ + ./E-RABs-Admitted-List.c \ + ./E-RABs-Admitted-Item.c \ + ./HandoverPreparationFailure.c \ + ./HandoverReport.c \ + ./SNStatusTransfer.c \ + ./E-RABs-SubjectToStatusTransfer-List.c \ + ./E-RABs-SubjectToStatusTransfer-Item.c \ + ./UEContextRelease.c \ + ./HandoverCancel.c \ + ./ErrorIndication.c \ + ./ResetRequest.c \ + ./ResetResponse.c \ + ./X2SetupRequest.c \ + ./X2SetupResponse.c \ + ./X2SetupFailure.c \ + ./LoadInformation.c \ + ./CellInformation-List.c \ + ./CellInformation-Item.c \ + ./ENBConfigurationUpdate.c \ + ./ServedCellsToModify.c \ + ./ServedCellsToModify-Item.c \ + ./Old-ECGIs.c \ + ./ENBConfigurationUpdateAcknowledge.c \ + ./ENBConfigurationUpdateFailure.c \ + ./ResourceStatusRequest.c \ + ./CellToReport-List.c \ + ./CellToReport-Item.c \ + ./ReportingPeriodicity.c \ + ./PartialSuccessIndicator.c \ + ./ResourceStatusResponse.c \ + ./MeasurementInitiationResult-List.c \ + ./MeasurementInitiationResult-Item.c \ + ./MeasurementFailureCause-List.c \ + ./MeasurementFailureCause-Item.c \ + ./ResourceStatusFailure.c \ + ./CompleteFailureCauseInformation-List.c \ + ./CompleteFailureCauseInformation-Item.c \ + ./ResourceStatusUpdate.c \ + ./CellMeasurementResult-List.c \ + ./CellMeasurementResult-Item.c \ + ./PrivateMessage.c \ + ./MobilityChangeRequest.c \ + ./MobilityChangeAcknowledge.c \ + ./MobilityChangeFailure.c \ + ./RLFIndication.c \ + ./CellActivationRequest.c \ + ./ServedCellsToActivate.c \ + ./ServedCellsToActivate-Item.c \ + ./CellActivationResponse.c \ + ./ActivatedCellList.c \ + ./ActivatedCellList-Item.c \ + ./CellActivationFailure.c \ + ./X2Release.c \ + ./X2APMessageTransfer.c \ + ./RNL-Header.c \ + ./X2AP-Message.c \ + ./SeNBAdditionRequest.c \ + ./E-RABs-ToBeAdded-List.c \ + ./E-RABs-ToBeAdded-Item.c \ + ./E-RABs-ToBeAdded-Item-SCG-Bearer.c \ + ./E-RABs-ToBeAdded-Item-Split-Bearer.c \ + ./SeNBAdditionRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-List.c \ + ./E-RABs-Admitted-ToBeAdded-Item.c \ + ./E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.c \ + ./SeNBAdditionRequestReject.c \ + ./SeNBReconfigurationComplete.c \ + ./ResponseInformationSeNBReconfComp.c \ + ./ResponseInformationSeNBReconfComp-SuccessItem.c \ + ./ResponseInformationSeNBReconfComp-RejectByMeNBItem.c \ + ./SeNBModificationRequest.c \ + ./UE-ContextInformationSeNBModReq.c \ + ./E-RABs-ToBeAdded-List-ModReq.c \ + ./E-RABs-ToBeAdded-ModReqItem.c \ + ./E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeAdded-ModReqItem-Split-Bearer.c \ + ./E-RABs-ToBeModified-List-ModReq.c \ + ./E-RABs-ToBeModified-ModReqItem.c \ + ./E-RABs-ToBeModified-ModReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeModified-ModReqItem-Split-Bearer.c \ + ./E-RABs-ToBeReleased-List-ModReq.c \ + ./E-RABs-ToBeReleased-ModReqItem.c \ + ./E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeReleased-ModReqItem-Split-Bearer.c \ + ./SeNBModificationRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckList.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.c \ + ./E-RABs-Admitted-ToBeModified-ModAckList.c \ + ./E-RABs-Admitted-ToBeModified-ModAckItem.c \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.c \ + ./E-RABs-Admitted-ToBeReleased-ModAckList.c \ + ./E-RABs-Admitted-ToReleased-ModAckItem.c \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.c \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.c \ + ./SeNBModificationRequestReject.c \ + ./SeNBModificationRequired.c \ + ./E-RABs-ToBeReleased-ModReqd.c \ + ./E-RABs-ToBeReleased-ModReqdItem.c \ + ./SeNBModificationConfirm.c \ + ./SeNBModificationRefuse.c \ + ./SeNBReleaseRequest.c \ + ./E-RABs-ToBeReleased-List-RelReq.c \ + ./E-RABs-ToBeReleased-RelReqItem.c \ + ./E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.c \ + ./E-RABs-ToBeReleased-RelReqItem-Split-Bearer.c \ + ./SeNBReleaseRequired.c \ + ./SeNBReleaseConfirm.c \ + ./E-RABs-ToBeReleased-List-RelConf.c \ + ./E-RABs-ToBeReleased-RelConfItem.c \ + ./E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.c \ + ./E-RABs-ToBeReleased-RelConfItem-Split-Bearer.c \ + ./SeNBCounterCheckRequest.c \ + ./E-RABs-SubjectToCounterCheck-List.c \ + ./E-RABs-SubjectToCounterCheckItem.c \ + ./X2RemovalRequest.c \ + ./X2RemovalResponse.c \ + ./X2RemovalFailure.c \ + ./RetrieveUEContextRequest.c \ + ./RetrieveUEContextResponse.c \ + ./UE-ContextInformationRetrieve.c \ + ./E-RABs-ToBeSetup-ListRetrieve.c \ + ./E-RABs-ToBeSetupRetrieve-Item.c \ + ./RetrieveUEContextFailure.c \ + ./SgNBAdditionRequest.c \ + ./E-RABs-ToBeAdded-SgNBAddReqList.c \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item.c \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.c \ + ./SgNBAdditionRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.c \ + ./SgNBAdditionRequestReject.c \ + ./SgNBReconfigurationComplete.c \ + ./ResponseInformationSgNBReconfComp.c \ + ./ResponseInformationSgNBReconfComp-SuccessItem.c \ + ./ResponseInformationSgNBReconfComp-RejectByMeNBItem.c \ + ./SgNBModificationRequest.c \ + ./UE-ContextInformation-SgNBModReq.c \ + ./E-RABs-ToBeAdded-SgNBModReq-List.c \ + ./E-RABs-ToBeAdded-SgNBModReq-Item.c \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-ToBeModified-SgNBModReq-List.c \ + ./E-RABs-ToBeModified-SgNBModReq-Item.c \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-ToBeReleased-SgNBModReq-List.c \ + ./E-RABs-ToBeReleased-SgNBModReq-Item.c \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAckList.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAckList.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAckList.c \ + ./E-RABs-Admitted-ToReleased-SgNBModAck-Item.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationRequestReject.c \ + ./SgNBModificationRequired.c \ + ./E-RABs-ToBeReleased-SgNBModReqdList.c \ + ./E-RABs-ToBeReleased-SgNBModReqd-Item.c \ + ./E-RABs-ToBeModified-SgNBModReqdList.c \ + ./E-RABs-ToBeModified-SgNBModReqd-Item.c \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationConfirm.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConfList.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.c \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.c \ + ./SgNBModificationRefuse.c \ + ./SgNBReleaseRequest.c \ + ./E-RABs-ToBeReleased-SgNBRelReqList.c \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item.c \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.c \ + ./SgNBReleaseRequestAcknowledge.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.c \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.c \ + ./SgNBReleaseRequestReject.c \ + ./SgNBReleaseRequired.c \ + ./E-RABs-ToBeReleased-SgNBRelReqdList.c \ + ./E-RABs-ToBeReleased-SgNBRelReqd-Item.c \ + ./SgNBReleaseConfirm.c \ + ./E-RABs-ToBeReleased-SgNBRelConfList.c \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item.c \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.c \ + ./SgNBCounterCheckRequest.c \ + ./E-RABs-SubjectToSgNBCounterCheck-List.c \ + ./E-RABs-SubjectToSgNBCounterCheck-Item.c \ + ./SgNBChangeRequired.c \ + ./SgNBChangeConfirm.c \ + ./E-RABs-ToBeReleased-SgNBChaConfList.c \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item.c \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.c \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.c \ + ./RRCTransfer.c \ + ./SgNBChangeRefuse.c \ + ./ENDCX2SetupRequest.c \ + ./InitiatingNodeType-EndcX2Setup.c \ + ./ServedEUTRAcellsENDCX2ManagementList.c \ + ./ServedNRcellsENDCX2ManagementList.c \ + ./ServedNRCell-Information.c \ + ./FDD-InfoServedNRCell-Information.c \ + ./FDD-InfoNeighbourServedNRCell-Information.c \ + ./TDD-InfoServedNRCell-Information.c \ + ./TDD-InfoNeighbourServedNRCell-Information.c \ + ./NRNeighbour-Information.c \ + ./CellAssistanceInformation.c \ + ./Limited-list.c \ + ./ENDCX2SetupResponse.c \ + ./RespondingNodeType-EndcX2Setup.c \ + ./ENDCX2SetupFailure.c \ + ./ENDCConfigurationUpdate.c \ + ./InitiatingNodeType-EndcConfigUpdate.c \ + ./ServedEUTRAcellsToModifyListENDCConfUpd.c \ + ./ServedEUTRAcellsToDeleteListENDCConfUpd.c \ + ./ServedNRcellsToModifyENDCConfUpdList.c \ + ./ServedNRCellsToModify-Item.c \ + ./ServedNRcellsToDeleteENDCConfUpdList.c \ + ./ENDCConfigurationUpdateAcknowledge.c \ + ./RespondingNodeType-EndcConfigUpdate.c \ + ./ENDCConfigurationUpdateFailure.c \ + ./ENDCCellActivationRequest.c \ + ./ServedNRCellsToActivate.c \ + ./ServedNRCellsToActivate-Item.c \ + ./ENDCCellActivationResponse.c \ + ./ActivatedNRCellList.c \ + ./ActivatedNRCellList-Item.c \ + ./ENDCCellActivationFailure.c \ + ./SecondaryRATDataUsageReport.c \ + ./SgNBActivityNotification.c \ + ./ENDCPartialResetRequired.c \ + ./ENDCPartialResetConfirm.c \ + ./EUTRANRCellResourceCoordinationRequest.c \ + ./InitiatingNodeType-EutranrCellResourceCoordination.c \ + ./ListofEUTRACellsinEUTRACoordinationReq.c \ + ./ListofEUTRACellsinNRCoordinationReq.c \ + ./ListofNRCellsinNRCoordinationReq.c \ + ./EUTRANRCellResourceCoordinationResponse.c \ + ./RespondingNodeType-EutranrCellResourceCoordination.c \ + ./ListofEUTRACellsinEUTRACoordinationResp.c \ + ./ListofNRCellsinNRCoordinationResp.c \ + ./ENDCX2RemovalRequest.c \ + ./InitiatingNodeType-EndcX2Removal.c \ + ./ENDCX2RemovalResponse.c \ + ./RespondingNodeType-EndcX2Removal.c \ + ./ENDCX2RemovalFailure.c \ + ./DataForwardingAddressIndication.c \ + ./E-RABs-DataForwardingAddress-List.c \ + ./E-RABs-DataForwardingAddress-Item.c \ + ./GNBStatusIndication.c \ + ./ProtocolIE-Container.c \ + ./ProtocolIE-Single-Container.c \ + ./ProtocolIE-Field.c \ + ./ProtocolIE-ContainerPair.c \ + ./ProtocolIE-FieldPair.c \ + ./ProtocolIE-ContainerList.c \ + ./ProtocolIE-ContainerPairList.c \ + ./ProtocolExtensionContainer.c \ + ./ProtocolExtensionField.c \ + ./PrivateIE-Container.c \ + ./PrivateIE-Field.c \ + ./ABSInformation.c \ + ./ABSInformationFDD.c \ + ./ABSInformationTDD.c \ + ./ABS-Status.c \ + ./ActivationID.c \ + ./AdditionalSpecialSubframe-Info.c \ + ./AdditionalSpecialSubframePatterns.c \ + ./AdditionalSpecialSubframeExtension-Info.c \ + ./AdditionalSpecialSubframePatternsExtension.c \ + ./AerialUEsubscriptionInformation.c \ + ./AllocationAndRetentionPriority.c \ + ./AreaScopeOfMDT.c \ + ./AreaScopeOfQMC.c \ + ./AS-SecurityInformation.c \ + ./BandwidthReducedSI.c \ + ./BearerType.c \ + ./BenefitMetric.c \ + ./BitRate.c \ + ./BroadcastPLMNs-Item.c \ + ./BluetoothMeasurementConfiguration.c \ + ./BluetoothMeasConfigNameList.c \ + ./BluetoothMeasConfig.c \ + ./BluetoothName.c \ + ./CapacityValue.c \ + ./Cause.c \ + ./CauseMisc.c \ + ./CauseProtocol.c \ + ./CauseRadioNetwork.c \ + ./CauseTransport.c \ + ./CellBasedMDT.c \ + ./CellBasedQMC.c \ + ./CellCapacityClassValue.c \ + ./CellDeploymentStatusIndicator.c \ + ./CellIdListforMDT.c \ + ./CellIdListforQMC.c \ + ./CellReplacingInfo.c \ + ./CellReportingIndicator.c \ + ./Cell-Size.c \ + ./CellType.c \ + ./CNTypeRestrictions.c \ + ./CNTypeRestrictionsItem.c \ + ./CoMPHypothesisSet.c \ + ./CoMPHypothesisSetItem.c \ + ./CoMPInformation.c \ + ./CoMPInformationItem.c \ + ./CoMPInformationStartTime.c \ + ./CompositeAvailableCapacity.c \ + ./CompositeAvailableCapacityGroup.c \ + ./Correlation-ID.c \ + ./COUNTvalue.c \ + ./COUNTValueExtended.c \ + ./COUNTvaluePDCP-SNlength18.c \ + ./CoverageModificationList.c \ + ./CoverageModification-Item.c \ + ./CriticalityDiagnostics.c \ + ./CriticalityDiagnostics-IE-List.c \ + ./CRNTI.c \ + ./CSGMembershipStatus.c \ + ./CSG-Id.c \ + ./CSIReportList.c \ + ./CSIReportPerCSIProcess.c \ + ./CSIReportPerCSIProcessItem.c \ + ./CyclicPrefixDL.c \ + ./CyclicPrefixUL.c \ + ./DataTrafficResources.c \ + ./DataTrafficResourceIndication.c \ + ./DeactivationIndication.c \ + ./DeliveryStatus.c \ + ./DL-ABS-status.c \ + ./DL-Forwarding.c \ + ./DL-GBR-PRB-usage.c \ + ./DL-non-GBR-PRB-usage.c \ + ./DLResourceBitmapULandDLSharing.c \ + ./DLResourcesULandDLSharing.c \ + ./DL-scheduling-PDCCH-CCE-usage.c \ + ./DL-Total-PRB-usage.c \ + ./DRB-ID.c \ + ./DuplicationActivation.c \ + ./DynamicDLTransmissionInformation.c \ + ./DynamicNAICSInformation.c \ + ./EARFCN.c \ + ./EARFCNExtension.c \ + ./ECGI.c \ + ./EnhancedRNTP.c \ + ./EnhancedRNTPStartTime.c \ + ./ENB-ID.c \ + ./EncryptionAlgorithms.c \ + ./EN-DC-ResourceConfiguration.c \ + ./EPLMNs.c \ + ./ERABActivityNotifyItemList.c \ + ./ERABActivityNotifyItem.c \ + ./E-RAB-ID.c \ + ./E-RAB-Level-QoS-Parameters.c \ + ./E-RAB-List.c \ + ./E-RAB-Item.c \ + ./E-RABUsageReportList.c \ + ./E-RABUsageReport-Item.c \ + ./EUTRA-Mode-Info.c \ + ./EUTRANCellIdentifier.c \ + ./EUTRANTraceID.c \ + ./EventType.c \ + ./ExpectedUEBehaviour.c \ + ./ExpectedUEActivityBehaviour.c \ + ./ExpectedActivityPeriod.c \ + ./ExpectedIdlePeriod.c \ + ./ExpectedHOInterval.c \ + ./ExtendedULInterferenceOverloadInfo.c \ + ./ExtendedBitRate.c \ + ./FDD-Info.c \ + ./ForbiddenInterRATs.c \ + ./ForbiddenTAs.c \ + ./ForbiddenTAs-Item.c \ + ./ForbiddenTACs.c \ + ./ForbiddenLAs.c \ + ./ForbiddenLAs-Item.c \ + ./ForbiddenLACs.c \ + ./Fourframes.c \ + ./FreqBandIndicator.c \ + ./FreqBandIndicatorPriority.c \ + ./FreqBandNrItem.c \ + ./GBR-QosInformation.c \ + ./GlobalENB-ID.c \ + ./GlobalGNB-ID.c \ + ./GNBOverloadInformation.c \ + ./GTPtunnelEndpoint.c \ + ./GTP-TEI.c \ + ./GUGroupIDList.c \ + ./GU-Group-ID.c \ + ./GUMMEI.c \ + ./GNB-ID.c \ + ./HandoverReportType.c \ + ./HandoverRestrictionList.c \ + ./HFN.c \ + ./HFNModified.c \ + ./HFNforPDCP-SNlength18.c \ + ./HWLoadIndicator.c \ + ./IntegrityProtectionAlgorithms.c \ + ./InterfacesToTrace.c \ + ./InvokeIndication.c \ + ./Key-eNodeB-Star.c \ + ./LAC.c \ + ./LastVisitedCell-Item.c \ + ./LastVisitedEUTRANCellInformation.c \ + ./LastVisitedGERANCellInformation.c \ + ./LastVisitedNGRANCellInformation.c \ + ./LastVisitedUTRANCellInformation.c \ + ./LCID.c \ + ./LHN-ID.c \ + ./Links-to-log.c \ + ./LoadIndicator.c \ + ./LocationReportingInformation.c \ + ./M1PeriodicReporting.c \ + ./M1ReportingTrigger.c \ + ./M1ThresholdEventA2.c \ + ./M3Configuration.c \ + ./M3period.c \ + ./M4Configuration.c \ + ./M4period.c \ + ./M5Configuration.c \ + ./M5period.c \ + ./M6Configuration.c \ + ./M6report-interval.c \ + ./M6delay-threshold.c \ + ./M7Configuration.c \ + ./M7period.c \ + ./MakeBeforeBreakIndicator.c \ + ./ManagementBasedMDTallowed.c \ + ./Masked-IMEISV.c \ + ./MDT-Activation.c \ + ./MDT-Configuration.c \ + ./MDTPLMNList.c \ + ./MDT-Location-Info.c \ + ./Measurement-ID.c \ + ./MeasurementsToActivate.c \ + ./MeasurementThresholdA2.c \ + ./MeNBCoordinationAssistanceInformation.c \ + ./MeNBResourceCoordinationInformation.c \ + ./MeNBtoSeNBContainer.c \ + ./MME-Group-ID.c \ + ./MME-Code.c \ + ./MBMS-Service-Area-Identity-List.c \ + ./MBMS-Service-Area-Identity.c \ + ./MBSFN-Subframe-Infolist.c \ + ./MBSFN-Subframe-Info.c \ + ./MobilityParametersModificationRange.c \ + ./MobilityParametersInformation.c \ + ./MultibandInfoList.c \ + ./BandInfo.c \ + ./MeNBtoSgNBContainer.c \ + ./SplitSRBs.c \ + ./SplitSRB.c \ + ./UENRMeasurement.c \ + ./Neighbour-Information.c \ + ./NextHopChainingCount.c \ + ./NewDRBIDrequest.c \ + ./Number-of-Antennaports.c \ + ./NRFreqInfo.c \ + ./NRCellIdentifier.c \ + ./NRCGI.c \ + ./NRPCI.c \ + ./NRrestrictioninEPSasSecondaryRAT.c \ + ./NRrestrictionin5GS.c \ + ./NRencryptionAlgorithms.c \ + ./NRintegrityProtectionAlgorithms.c \ + ./NR-TxBW.c \ + ./NRNRB.c \ + ./NRSCS.c \ + ./NRS-NSSS-PowerOffset.c \ + ./FiveGS-TAC.c \ + ./NRUESecurityCapabilities.c \ + ./NSSS-NumOccasionDifferentPrecoder.c \ + ./OffsetOfNbiotChannelNumberToEARFCN.c \ + ./Oneframe.c \ + ./Packet-LossRate.c \ + ./PA-Values.c \ + ./PDCPChangeIndication.c \ + ./PDCP-SN.c \ + ./PDCP-SNExtended.c \ + ./PDCP-SNlength18.c \ + ./PDCPSnLength.c \ + ./PCI.c \ + ./PLMN-Identity.c \ + ./Port-Number.c \ + ./PRACH-Configuration.c \ + ./PLMNAreaBasedQMC.c \ + ./PLMNListforQMC.c \ + ./Pre-emptionCapability.c \ + ./Pre-emptionVulnerability.c \ + ./PriorityLevel.c \ + ./ProSeAuthorized.c \ + ./ProSeDirectDiscovery.c \ + ./ProSeDirectCommunication.c \ + ./ProSeUEtoNetworkRelaying.c \ + ./ProtectedEUTRAResourceIndication.c \ + ./ProtectedFootprintTimePattern.c \ + ./ProtectedResourceList.c \ + ./ProtectedResourceList-Item.c \ + ./QCI.c \ + ./RadioframeAllocationOffset.c \ + ./RadioframeAllocationPeriod.c \ + ./RadioResourceStatus.c \ + ./ReceiveStatusofULPDCPSDUs.c \ + ./ReceiveStatusOfULPDCPSDUsExtended.c \ + ./ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c \ + ./Reestablishment-Indication.c \ + ./Registration-Request.c \ + ./RelativeNarrowbandTxPower.c \ + ./ReplacingCellsList.c \ + ./ReplacingCellsList-Item.c \ + ./ReportAmountMDT.c \ + ./ReportArea.c \ + ./ReportCharacteristics.c \ + ./ReportingPeriodicityCSIR.c \ + ./ReportingPeriodicityRSRPMR.c \ + ./ReportIntervalMDT.c \ + ./ReservedSubframePattern.c \ + ./ResourceType.c \ + ./ResumeID.c \ + ./RLCMode.c \ + ./RLC-Status.c \ + ./RNTP-Threshold.c \ + ./RRC-Config-Ind.c \ + ./RRC-Context.c \ + ./RRCConnReestabIndicator.c \ + ./RRCConnSetupIndicator.c \ + ./RSRPMeasurementResult.c \ + ./RSRPMRList.c \ + ./RRCContainer.c \ + ./S1TNLLoadIndicator.c \ + ./SCGChangeIndication.c \ + ./SecondaryRATUsageReportList.c \ + ./SecondaryRATUsageReport-Item.c \ + ./SeNBSecurityKey.c \ + ./SeNBtoMeNBContainer.c \ + ./ServedCells.c \ + ./ServedCell-Information.c \ + ./ServiceType.c \ + ./SgNBCoordinationAssistanceInformation.c \ + ./SgNBResourceCoordinationInformation.c \ + ./SgNB-UE-X2AP-ID.c \ + ./SIPTOBearerDeactivationIndication.c \ + ./SharedResourceType.c \ + ./ShortMAC-I.c \ + ./SGNB-Addition-Trigger-Ind.c \ + ./SourceOfUEActivityBehaviourInformation.c \ + ./SpecialSubframe-Info.c \ + ./SpecialSubframePatterns.c \ + ./SpectrumSharingGroupID.c \ + ./SubbandCQI.c \ + ./Subscription-Based-UE-DifferentiationInfo.c \ + ./ScheduledCommunicationTime.c \ + ./SRVCCOperationPossible.c \ + ./SubbandCQICodeword0.c \ + ./SubbandCQICodeword1.c \ + ./SubbandCQIList.c \ + ./SubbandCQIItem.c \ + ./SubbandSize.c \ + ./SubscriberProfileIDforRFP.c \ + ./SubframeAllocation.c \ + ./SubframeAssignment.c \ + ./SubframeType.c \ + ./SgNBSecurityKey.c \ + ./SgNBtoMeNBContainer.c \ + ./SRBType.c \ + ./SCGConfigurationQuery.c \ + ./SULInformation.c \ + ./SupportedSULFreqBandItem.c \ + ./TABasedMDT.c \ + ./TAC.c \ + ./TAIBasedMDT.c \ + ./TAIListforMDT.c \ + ./TAI-Item.c \ + ./TAListforMDT.c \ + ./TABasedQMC.c \ + ./TAListforQMC.c \ + ./TAIBasedQMC.c \ + ./TAIListforQMC.c \ + ./TargetCellInUTRAN.c \ + ./TargeteNBtoSource-eNBTransparentContainer.c \ + ./TDD-Info.c \ + ./Threshold-RSRP.c \ + ./Threshold-RSRQ.c \ + ./TimeToWait.c \ + ./Time-UE-StayedInCell.c \ + ./Time-UE-StayedInCell-EnhancedGranularity.c \ + ./TraceActivation.c \ + ./TraceCollectionEntityIPAddress.c \ + ./TraceDepth.c \ + ./Transmission-Bandwidth.c \ + ./TransportLayerAddress.c \ + ./TunnelInformation.c \ + ./TypeOfError.c \ + ./UEAggregateMaximumBitRate.c \ + ./UEAppLayerMeasConfig.c \ + ./UE-ContextKeptIndicator.c \ + ./UEID.c \ + ./UE-HistoryInformation.c \ + ./UE-HistoryInformationFromTheUE.c \ + ./UE-S1AP-ID.c \ + ./UE-X2AP-ID.c \ + ./UE-X2AP-ID-Extension.c \ + ./UE-RLF-Report-Container.c \ + ./UE-RLF-Report-Container-for-extended-bands.c \ + ./UESecurityCapabilities.c \ + ./UESidelinkAggregateMaximumBitRate.c \ + ./UEsToBeResetList.c \ + ./UEsToBeResetList-Item.c \ + ./ULandDLSharing.c \ + ./ULConfiguration.c \ + ./UL-UE-Configuration.c \ + ./UL-GBR-PRB-usage.c \ + ./UL-HighInterferenceIndicationInfo.c \ + ./UL-HighInterferenceIndicationInfo-Item.c \ + ./UL-HighInterferenceIndication.c \ + ./UL-InterferenceOverloadIndication.c \ + ./UL-InterferenceOverloadIndication-Item.c \ + ./UL-non-GBR-PRB-usage.c \ + ./ULOnlySharing.c \ + ./ULResourceBitmapULandDLSharing.c \ + ./ULResourcesULandDLSharing.c \ + ./UL-scheduling-PDCCH-CCE-usage.c \ + ./UL-Total-PRB-usage.c \ + ./UsableABSInformation.c \ + ./UsableABSInformationFDD.c \ + ./UsableABSInformationTDD.c \ + ./UserPlaneTrafficActivityReport.c \ + ./V2XServicesAuthorized.c \ + ./VehicleUE.c \ + ./PedestrianUE.c \ + ./WidebandCQI.c \ + ./WidebandCQICodeword1.c \ + ./WLANMeasurementConfiguration.c \ + ./WLANMeasConfigNameList.c \ + ./WLANMeasConfig.c \ + ./WLANName.c \ + ./WTID.c \ + ./WTID-Type1.c \ + ./WTID-Long-Type2.c \ + ./WT-UE-XwAP-ID.c \ + ./X2BenefitValue.c \ + ./Criticality.c \ + ./Presence.c \ + ./PrivateIE-ID.c \ + ./ProcedureCode.c \ + ./ProtocolIE-ID.c \ + ./TriggeringMessage.c \ + ./E2SM-gNB-X2-eventTriggerDefinition.c \ + ./E2SM-gNB-X2-actionDefinition.c \ + ./E2SM-gNB-X2-indicationHeader.c \ + ./E2SM-gNB-X2-indicationMessage.c \ + ./E2SM-gNB-X2-callProcessID.c \ + ./E2SM-gNB-X2-controlHeader.c \ + ./E2SM-gNB-X2-controlMessage.c \ + ./ActionParameter-Item.c \ + ./ActionParameter-ID.c \ + ./ActionParameter-Value.c \ + ./CallProcess-ID.c \ + ./Interface-ID.c \ + ./InterfaceDirection.c \ + ./InterfaceMessage.c \ + ./InterfaceMessageType.c \ + ./TypeOfMessage.c \ + ./InterfaceProtocolIE-Item.c \ + ./InterfaceProtocolIE-ID.c \ + ./InterfaceProtocolIE-Test.c \ + ./InterfaceProtocolIE-Value.c \ + ./Style-ID.c \ + ./TimeStamp.c + +ASN_MODULE_HDRS= \ + ./E2AP-PDU.h \ + ./InitiatingMessage.h \ + ./SuccessfulOutcome.h \ + ./UnsuccessfulOutcome.h \ + ./RICsubscriptionRequest.h \ + ./RICsubscription.h \ + ./RICactions-ToBeSetup-List.h \ + ./RICaction-ToBeSetup-Item.h \ + ./RICsubscriptionResponse.h \ + ./RICaction-Admitted-List.h \ + ./RICaction-Admitted-Item.h \ + ./RICaction-NotAdmitted-List.h \ + ./RICaction-NotAdmitted-Item.h \ + ./RICsubscriptionFailure.h \ + ./RICsubscriptionDeleteRequest.h \ + ./RICsubscriptionDeleteResponse.h \ + ./RICsubscriptionDeleteFailure.h \ + ./RICindication.h \ + ./RICcontrolRequest.h \ + ./RICcontrolAcknowledge.h \ + ./RICcontrolFailure.h \ + ./RICserviceUpdate.h \ + ./RANfunctions-List.h \ + ./RANfunction-Item.h \ + ./RANfunctionsID-List.h \ + ./RANfunctionID-Item.h \ + ./RICserviceUpdateAcknowledge.h \ + ./RANfunctionsIDcause-List.h \ + ./RANfunctionIDcause-Item.h \ + ./RICserviceUpdateFailure.h \ + ./RICserviceQuery.h \ + ./CauseRIC.h \ + ./RANfunctionDefinition.h \ + ./RANfunctionID.h \ + ./RICactionDefinition.h \ + ./RICactionID.h \ + ./RICactionType.h \ + ./RICcallProcessID.h \ + ./RICcause.h \ + ./RICcontrolAckRequest.h \ + ./RICcontrolHeader.h \ + ./RICcontrolMessage.h \ + ./RICcontrolStatus.h \ + ./RICeventTriggerDefinition.h \ + ./RICindicationHeader.h \ + ./RICindicationMessage.h \ + ./RICindicationSN.h \ + ./RICindicationType.h \ + ./RICrequestID.h \ + ./RICsubsequentAction.h \ + ./RICsubsequentActionType.h \ + ./RICtimeToWait.h \ + ./HandoverRequest.h \ + ./UE-ContextInformation.h \ + ./E-RABs-ToBeSetup-List.h \ + ./E-RABs-ToBeSetup-Item.h \ + ./MobilityInformation.h \ + ./UE-ContextReferenceAtSeNB.h \ + ./UE-ContextReferenceAtWT.h \ + ./UE-ContextReferenceAtSgNB.h \ + ./HandoverRequestAcknowledge.h \ + ./E-RABs-Admitted-List.h \ + ./E-RABs-Admitted-Item.h \ + ./HandoverPreparationFailure.h \ + ./HandoverReport.h \ + ./SNStatusTransfer.h \ + ./E-RABs-SubjectToStatusTransfer-List.h \ + ./E-RABs-SubjectToStatusTransfer-Item.h \ + ./UEContextRelease.h \ + ./HandoverCancel.h \ + ./ErrorIndication.h \ + ./ResetRequest.h \ + ./ResetResponse.h \ + ./X2SetupRequest.h \ + ./X2SetupResponse.h \ + ./X2SetupFailure.h \ + ./LoadInformation.h \ + ./CellInformation-List.h \ + ./CellInformation-Item.h \ + ./ENBConfigurationUpdate.h \ + ./ServedCellsToModify.h \ + ./ServedCellsToModify-Item.h \ + ./Old-ECGIs.h \ + ./ENBConfigurationUpdateAcknowledge.h \ + ./ENBConfigurationUpdateFailure.h \ + ./ResourceStatusRequest.h \ + ./CellToReport-List.h \ + ./CellToReport-Item.h \ + ./ReportingPeriodicity.h \ + ./PartialSuccessIndicator.h \ + ./ResourceStatusResponse.h \ + ./MeasurementInitiationResult-List.h \ + ./MeasurementInitiationResult-Item.h \ + ./MeasurementFailureCause-List.h \ + ./MeasurementFailureCause-Item.h \ + ./ResourceStatusFailure.h \ + ./CompleteFailureCauseInformation-List.h \ + ./CompleteFailureCauseInformation-Item.h \ + ./ResourceStatusUpdate.h \ + ./CellMeasurementResult-List.h \ + ./CellMeasurementResult-Item.h \ + ./PrivateMessage.h \ + ./MobilityChangeRequest.h \ + ./MobilityChangeAcknowledge.h \ + ./MobilityChangeFailure.h \ + ./RLFIndication.h \ + ./CellActivationRequest.h \ + ./ServedCellsToActivate.h \ + ./ServedCellsToActivate-Item.h \ + ./CellActivationResponse.h \ + ./ActivatedCellList.h \ + ./ActivatedCellList-Item.h \ + ./CellActivationFailure.h \ + ./X2Release.h \ + ./X2APMessageTransfer.h \ + ./RNL-Header.h \ + ./X2AP-Message.h \ + ./SeNBAdditionRequest.h \ + ./E-RABs-ToBeAdded-List.h \ + ./E-RABs-ToBeAdded-Item.h \ + ./E-RABs-ToBeAdded-Item-SCG-Bearer.h \ + ./E-RABs-ToBeAdded-Item-Split-Bearer.h \ + ./SeNBAdditionRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-List.h \ + ./E-RABs-Admitted-ToBeAdded-Item.h \ + ./E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeAdded-Item-Split-Bearer.h \ + ./SeNBAdditionRequestReject.h \ + ./SeNBReconfigurationComplete.h \ + ./ResponseInformationSeNBReconfComp.h \ + ./ResponseInformationSeNBReconfComp-SuccessItem.h \ + ./ResponseInformationSeNBReconfComp-RejectByMeNBItem.h \ + ./SeNBModificationRequest.h \ + ./UE-ContextInformationSeNBModReq.h \ + ./E-RABs-ToBeAdded-List-ModReq.h \ + ./E-RABs-ToBeAdded-ModReqItem.h \ + ./E-RABs-ToBeAdded-ModReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeAdded-ModReqItem-Split-Bearer.h \ + ./E-RABs-ToBeModified-List-ModReq.h \ + ./E-RABs-ToBeModified-ModReqItem.h \ + ./E-RABs-ToBeModified-ModReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeModified-ModReqItem-Split-Bearer.h \ + ./E-RABs-ToBeReleased-List-ModReq.h \ + ./E-RABs-ToBeReleased-ModReqItem.h \ + ./E-RABs-ToBeReleased-ModReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeReleased-ModReqItem-Split-Bearer.h \ + ./SeNBModificationRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckList.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer.h \ + ./E-RABs-Admitted-ToBeModified-ModAckList.h \ + ./E-RABs-Admitted-ToBeModified-ModAckItem.h \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer.h \ + ./E-RABs-Admitted-ToBeReleased-ModAckList.h \ + ./E-RABs-Admitted-ToReleased-ModAckItem.h \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer.h \ + ./E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer.h \ + ./SeNBModificationRequestReject.h \ + ./SeNBModificationRequired.h \ + ./E-RABs-ToBeReleased-ModReqd.h \ + ./E-RABs-ToBeReleased-ModReqdItem.h \ + ./SeNBModificationConfirm.h \ + ./SeNBModificationRefuse.h \ + ./SeNBReleaseRequest.h \ + ./E-RABs-ToBeReleased-List-RelReq.h \ + ./E-RABs-ToBeReleased-RelReqItem.h \ + ./E-RABs-ToBeReleased-RelReqItem-SCG-Bearer.h \ + ./E-RABs-ToBeReleased-RelReqItem-Split-Bearer.h \ + ./SeNBReleaseRequired.h \ + ./SeNBReleaseConfirm.h \ + ./E-RABs-ToBeReleased-List-RelConf.h \ + ./E-RABs-ToBeReleased-RelConfItem.h \ + ./E-RABs-ToBeReleased-RelConfItem-SCG-Bearer.h \ + ./E-RABs-ToBeReleased-RelConfItem-Split-Bearer.h \ + ./SeNBCounterCheckRequest.h \ + ./E-RABs-SubjectToCounterCheck-List.h \ + ./E-RABs-SubjectToCounterCheckItem.h \ + ./X2RemovalRequest.h \ + ./X2RemovalResponse.h \ + ./X2RemovalFailure.h \ + ./RetrieveUEContextRequest.h \ + ./RetrieveUEContextResponse.h \ + ./UE-ContextInformationRetrieve.h \ + ./E-RABs-ToBeSetup-ListRetrieve.h \ + ./E-RABs-ToBeSetupRetrieve-Item.h \ + ./RetrieveUEContextFailure.h \ + ./SgNBAdditionRequest.h \ + ./E-RABs-ToBeAdded-SgNBAddReqList.h \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item.h \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent.h \ + ./SgNBAdditionRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent.h \ + ./SgNBAdditionRequestReject.h \ + ./SgNBReconfigurationComplete.h \ + ./ResponseInformationSgNBReconfComp.h \ + ./ResponseInformationSgNBReconfComp-SuccessItem.h \ + ./ResponseInformationSgNBReconfComp-RejectByMeNBItem.h \ + ./SgNBModificationRequest.h \ + ./UE-ContextInformation-SgNBModReq.h \ + ./E-RABs-ToBeAdded-SgNBModReq-List.h \ + ./E-RABs-ToBeAdded-SgNBModReq-Item.h \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-ToBeModified-SgNBModReq-List.h \ + ./E-RABs-ToBeModified-SgNBModReq-Item.h \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-ToBeReleased-SgNBModReq-List.h \ + ./E-RABs-ToBeReleased-SgNBModReq-Item.h \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAckList.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAckList.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAckList.h \ + ./E-RABs-Admitted-ToReleased-SgNBModAck-Item.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationRequestReject.h \ + ./SgNBModificationRequired.h \ + ./E-RABs-ToBeReleased-SgNBModReqdList.h \ + ./E-RABs-ToBeReleased-SgNBModReqd-Item.h \ + ./E-RABs-ToBeModified-SgNBModReqdList.h \ + ./E-RABs-ToBeModified-SgNBModReqd-Item.h \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationConfirm.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConfList.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent.h \ + ./E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent.h \ + ./SgNBModificationRefuse.h \ + ./SgNBReleaseRequest.h \ + ./E-RABs-ToBeReleased-SgNBRelReqList.h \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item.h \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent.h \ + ./SgNBReleaseRequestAcknowledge.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h \ + ./E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h \ + ./SgNBReleaseRequestReject.h \ + ./SgNBReleaseRequired.h \ + ./E-RABs-ToBeReleased-SgNBRelReqdList.h \ + ./E-RABs-ToBeReleased-SgNBRelReqd-Item.h \ + ./SgNBReleaseConfirm.h \ + ./E-RABs-ToBeReleased-SgNBRelConfList.h \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item.h \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent.h \ + ./SgNBCounterCheckRequest.h \ + ./E-RABs-SubjectToSgNBCounterCheck-List.h \ + ./E-RABs-SubjectToSgNBCounterCheck-Item.h \ + ./SgNBChangeRequired.h \ + ./SgNBChangeConfirm.h \ + ./E-RABs-ToBeReleased-SgNBChaConfList.h \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item.h \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent.h \ + ./E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent.h \ + ./RRCTransfer.h \ + ./SgNBChangeRefuse.h \ + ./ENDCX2SetupRequest.h \ + ./InitiatingNodeType-EndcX2Setup.h \ + ./ServedEUTRAcellsENDCX2ManagementList.h \ + ./ServedNRcellsENDCX2ManagementList.h \ + ./ServedNRCell-Information.h \ + ./FDD-InfoServedNRCell-Information.h \ + ./FDD-InfoNeighbourServedNRCell-Information.h \ + ./TDD-InfoServedNRCell-Information.h \ + ./TDD-InfoNeighbourServedNRCell-Information.h \ + ./NRNeighbour-Information.h \ + ./CellAssistanceInformation.h \ + ./Limited-list.h \ + ./ENDCX2SetupResponse.h \ + ./RespondingNodeType-EndcX2Setup.h \ + ./ENDCX2SetupFailure.h \ + ./ENDCConfigurationUpdate.h \ + ./InitiatingNodeType-EndcConfigUpdate.h \ + ./ServedEUTRAcellsToModifyListENDCConfUpd.h \ + ./ServedEUTRAcellsToDeleteListENDCConfUpd.h \ + ./ServedNRcellsToModifyENDCConfUpdList.h \ + ./ServedNRCellsToModify-Item.h \ + ./ServedNRcellsToDeleteENDCConfUpdList.h \ + ./ENDCConfigurationUpdateAcknowledge.h \ + ./RespondingNodeType-EndcConfigUpdate.h \ + ./ENDCConfigurationUpdateFailure.h \ + ./ENDCCellActivationRequest.h \ + ./ServedNRCellsToActivate.h \ + ./ServedNRCellsToActivate-Item.h \ + ./ENDCCellActivationResponse.h \ + ./ActivatedNRCellList.h \ + ./ActivatedNRCellList-Item.h \ + ./ENDCCellActivationFailure.h \ + ./SecondaryRATDataUsageReport.h \ + ./SgNBActivityNotification.h \ + ./ENDCPartialResetRequired.h \ + ./ENDCPartialResetConfirm.h \ + ./EUTRANRCellResourceCoordinationRequest.h \ + ./InitiatingNodeType-EutranrCellResourceCoordination.h \ + ./ListofEUTRACellsinEUTRACoordinationReq.h \ + ./ListofEUTRACellsinNRCoordinationReq.h \ + ./ListofNRCellsinNRCoordinationReq.h \ + ./EUTRANRCellResourceCoordinationResponse.h \ + ./RespondingNodeType-EutranrCellResourceCoordination.h \ + ./ListofEUTRACellsinEUTRACoordinationResp.h \ + ./ListofNRCellsinNRCoordinationResp.h \ + ./ENDCX2RemovalRequest.h \ + ./InitiatingNodeType-EndcX2Removal.h \ + ./ENDCX2RemovalResponse.h \ + ./RespondingNodeType-EndcX2Removal.h \ + ./ENDCX2RemovalFailure.h \ + ./DataForwardingAddressIndication.h \ + ./E-RABs-DataForwardingAddress-List.h \ + ./E-RABs-DataForwardingAddress-Item.h \ + ./GNBStatusIndication.h \ + ./ProtocolIE-Container.h \ + ./ProtocolIE-Single-Container.h \ + ./ProtocolIE-Field.h \ + ./ProtocolIE-ContainerPair.h \ + ./ProtocolIE-FieldPair.h \ + ./ProtocolIE-ContainerList.h \ + ./ProtocolIE-ContainerPairList.h \ + ./ProtocolExtensionContainer.h \ + ./ProtocolExtensionField.h \ + ./PrivateIE-Container.h \ + ./PrivateIE-Field.h \ + ./ABSInformation.h \ + ./ABSInformationFDD.h \ + ./ABSInformationTDD.h \ + ./ABS-Status.h \ + ./ActivationID.h \ + ./AdditionalSpecialSubframe-Info.h \ + ./AdditionalSpecialSubframePatterns.h \ + ./AdditionalSpecialSubframeExtension-Info.h \ + ./AdditionalSpecialSubframePatternsExtension.h \ + ./AerialUEsubscriptionInformation.h \ + ./AllocationAndRetentionPriority.h \ + ./AreaScopeOfMDT.h \ + ./AreaScopeOfQMC.h \ + ./AS-SecurityInformation.h \ + ./BandwidthReducedSI.h \ + ./BearerType.h \ + ./BenefitMetric.h \ + ./BitRate.h \ + ./BroadcastPLMNs-Item.h \ + ./BluetoothMeasurementConfiguration.h \ + ./BluetoothMeasConfigNameList.h \ + ./BluetoothMeasConfig.h \ + ./BluetoothName.h \ + ./CapacityValue.h \ + ./Cause.h \ + ./CauseMisc.h \ + ./CauseProtocol.h \ + ./CauseRadioNetwork.h \ + ./CauseTransport.h \ + ./CellBasedMDT.h \ + ./CellBasedQMC.h \ + ./CellCapacityClassValue.h \ + ./CellDeploymentStatusIndicator.h \ + ./CellIdListforMDT.h \ + ./CellIdListforQMC.h \ + ./CellReplacingInfo.h \ + ./CellReportingIndicator.h \ + ./Cell-Size.h \ + ./CellType.h \ + ./CNTypeRestrictions.h \ + ./CNTypeRestrictionsItem.h \ + ./CoMPHypothesisSet.h \ + ./CoMPHypothesisSetItem.h \ + ./CoMPInformation.h \ + ./CoMPInformationItem.h \ + ./CoMPInformationStartTime.h \ + ./CompositeAvailableCapacity.h \ + ./CompositeAvailableCapacityGroup.h \ + ./Correlation-ID.h \ + ./COUNTvalue.h \ + ./COUNTValueExtended.h \ + ./COUNTvaluePDCP-SNlength18.h \ + ./CoverageModificationList.h \ + ./CoverageModification-Item.h \ + ./CriticalityDiagnostics.h \ + ./CriticalityDiagnostics-IE-List.h \ + ./CRNTI.h \ + ./CSGMembershipStatus.h \ + ./CSG-Id.h \ + ./CSIReportList.h \ + ./CSIReportPerCSIProcess.h \ + ./CSIReportPerCSIProcessItem.h \ + ./CyclicPrefixDL.h \ + ./CyclicPrefixUL.h \ + ./DataTrafficResources.h \ + ./DataTrafficResourceIndication.h \ + ./DeactivationIndication.h \ + ./DeliveryStatus.h \ + ./DL-ABS-status.h \ + ./DL-Forwarding.h \ + ./DL-GBR-PRB-usage.h \ + ./DL-non-GBR-PRB-usage.h \ + ./DLResourceBitmapULandDLSharing.h \ + ./DLResourcesULandDLSharing.h \ + ./DL-scheduling-PDCCH-CCE-usage.h \ + ./DL-Total-PRB-usage.h \ + ./DRB-ID.h \ + ./DuplicationActivation.h \ + ./DynamicDLTransmissionInformation.h \ + ./DynamicNAICSInformation.h \ + ./EARFCN.h \ + ./EARFCNExtension.h \ + ./ECGI.h \ + ./EnhancedRNTP.h \ + ./EnhancedRNTPStartTime.h \ + ./ENB-ID.h \ + ./EncryptionAlgorithms.h \ + ./EN-DC-ResourceConfiguration.h \ + ./EPLMNs.h \ + ./ERABActivityNotifyItemList.h \ + ./ERABActivityNotifyItem.h \ + ./E-RAB-ID.h \ + ./E-RAB-Level-QoS-Parameters.h \ + ./E-RAB-List.h \ + ./E-RAB-Item.h \ + ./E-RABUsageReportList.h \ + ./E-RABUsageReport-Item.h \ + ./EUTRA-Mode-Info.h \ + ./EUTRANCellIdentifier.h \ + ./EUTRANTraceID.h \ + ./EventType.h \ + ./ExpectedUEBehaviour.h \ + ./ExpectedUEActivityBehaviour.h \ + ./ExpectedActivityPeriod.h \ + ./ExpectedIdlePeriod.h \ + ./ExpectedHOInterval.h \ + ./ExtendedULInterferenceOverloadInfo.h \ + ./ExtendedBitRate.h \ + ./FDD-Info.h \ + ./ForbiddenInterRATs.h \ + ./ForbiddenTAs.h \ + ./ForbiddenTAs-Item.h \ + ./ForbiddenTACs.h \ + ./ForbiddenLAs.h \ + ./ForbiddenLAs-Item.h \ + ./ForbiddenLACs.h \ + ./Fourframes.h \ + ./FreqBandIndicator.h \ + ./FreqBandIndicatorPriority.h \ + ./FreqBandNrItem.h \ + ./GBR-QosInformation.h \ + ./GlobalENB-ID.h \ + ./GlobalGNB-ID.h \ + ./GNBOverloadInformation.h \ + ./GTPtunnelEndpoint.h \ + ./GTP-TEI.h \ + ./GUGroupIDList.h \ + ./GU-Group-ID.h \ + ./GUMMEI.h \ + ./GNB-ID.h \ + ./HandoverReportType.h \ + ./HandoverRestrictionList.h \ + ./HFN.h \ + ./HFNModified.h \ + ./HFNforPDCP-SNlength18.h \ + ./HWLoadIndicator.h \ + ./IntegrityProtectionAlgorithms.h \ + ./InterfacesToTrace.h \ + ./InvokeIndication.h \ + ./Key-eNodeB-Star.h \ + ./LAC.h \ + ./LastVisitedCell-Item.h \ + ./LastVisitedEUTRANCellInformation.h \ + ./LastVisitedGERANCellInformation.h \ + ./LastVisitedNGRANCellInformation.h \ + ./LastVisitedUTRANCellInformation.h \ + ./LCID.h \ + ./LHN-ID.h \ + ./Links-to-log.h \ + ./LoadIndicator.h \ + ./LocationReportingInformation.h \ + ./M1PeriodicReporting.h \ + ./M1ReportingTrigger.h \ + ./M1ThresholdEventA2.h \ + ./M3Configuration.h \ + ./M3period.h \ + ./M4Configuration.h \ + ./M4period.h \ + ./M5Configuration.h \ + ./M5period.h \ + ./M6Configuration.h \ + ./M6report-interval.h \ + ./M6delay-threshold.h \ + ./M7Configuration.h \ + ./M7period.h \ + ./MakeBeforeBreakIndicator.h \ + ./ManagementBasedMDTallowed.h \ + ./Masked-IMEISV.h \ + ./MDT-Activation.h \ + ./MDT-Configuration.h \ + ./MDTPLMNList.h \ + ./MDT-Location-Info.h \ + ./Measurement-ID.h \ + ./MeasurementsToActivate.h \ + ./MeasurementThresholdA2.h \ + ./MeNBCoordinationAssistanceInformation.h \ + ./MeNBResourceCoordinationInformation.h \ + ./MeNBtoSeNBContainer.h \ + ./MME-Group-ID.h \ + ./MME-Code.h \ + ./MBMS-Service-Area-Identity-List.h \ + ./MBMS-Service-Area-Identity.h \ + ./MBSFN-Subframe-Infolist.h \ + ./MBSFN-Subframe-Info.h \ + ./MobilityParametersModificationRange.h \ + ./MobilityParametersInformation.h \ + ./MultibandInfoList.h \ + ./BandInfo.h \ + ./MeNBtoSgNBContainer.h \ + ./SplitSRBs.h \ + ./SplitSRB.h \ + ./UENRMeasurement.h \ + ./Neighbour-Information.h \ + ./NextHopChainingCount.h \ + ./NewDRBIDrequest.h \ + ./Number-of-Antennaports.h \ + ./NRFreqInfo.h \ + ./NRCellIdentifier.h \ + ./NRCGI.h \ + ./NRPCI.h \ + ./NRrestrictioninEPSasSecondaryRAT.h \ + ./NRrestrictionin5GS.h \ + ./NRencryptionAlgorithms.h \ + ./NRintegrityProtectionAlgorithms.h \ + ./NR-TxBW.h \ + ./NRNRB.h \ + ./NRSCS.h \ + ./NRS-NSSS-PowerOffset.h \ + ./FiveGS-TAC.h \ + ./NRUESecurityCapabilities.h \ + ./NSSS-NumOccasionDifferentPrecoder.h \ + ./OffsetOfNbiotChannelNumberToEARFCN.h \ + ./Oneframe.h \ + ./Packet-LossRate.h \ + ./PA-Values.h \ + ./PDCPChangeIndication.h \ + ./PDCP-SN.h \ + ./PDCP-SNExtended.h \ + ./PDCP-SNlength18.h \ + ./PDCPSnLength.h \ + ./PCI.h \ + ./PLMN-Identity.h \ + ./Port-Number.h \ + ./PRACH-Configuration.h \ + ./PLMNAreaBasedQMC.h \ + ./PLMNListforQMC.h \ + ./Pre-emptionCapability.h \ + ./Pre-emptionVulnerability.h \ + ./PriorityLevel.h \ + ./ProSeAuthorized.h \ + ./ProSeDirectDiscovery.h \ + ./ProSeDirectCommunication.h \ + ./ProSeUEtoNetworkRelaying.h \ + ./ProtectedEUTRAResourceIndication.h \ + ./ProtectedFootprintTimePattern.h \ + ./ProtectedResourceList.h \ + ./ProtectedResourceList-Item.h \ + ./QCI.h \ + ./RadioframeAllocationOffset.h \ + ./RadioframeAllocationPeriod.h \ + ./RadioResourceStatus.h \ + ./ReceiveStatusofULPDCPSDUs.h \ + ./ReceiveStatusOfULPDCPSDUsExtended.h \ + ./ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h \ + ./Reestablishment-Indication.h \ + ./Registration-Request.h \ + ./RelativeNarrowbandTxPower.h \ + ./ReplacingCellsList.h \ + ./ReplacingCellsList-Item.h \ + ./ReportAmountMDT.h \ + ./ReportArea.h \ + ./ReportCharacteristics.h \ + ./ReportingPeriodicityCSIR.h \ + ./ReportingPeriodicityRSRPMR.h \ + ./ReportIntervalMDT.h \ + ./ReservedSubframePattern.h \ + ./ResourceType.h \ + ./ResumeID.h \ + ./RLCMode.h \ + ./RLC-Status.h \ + ./RNTP-Threshold.h \ + ./RRC-Config-Ind.h \ + ./RRC-Context.h \ + ./RRCConnReestabIndicator.h \ + ./RRCConnSetupIndicator.h \ + ./RSRPMeasurementResult.h \ + ./RSRPMRList.h \ + ./RRCContainer.h \ + ./S1TNLLoadIndicator.h \ + ./SCGChangeIndication.h \ + ./SecondaryRATUsageReportList.h \ + ./SecondaryRATUsageReport-Item.h \ + ./SeNBSecurityKey.h \ + ./SeNBtoMeNBContainer.h \ + ./ServedCells.h \ + ./ServedCell-Information.h \ + ./ServiceType.h \ + ./SgNBCoordinationAssistanceInformation.h \ + ./SgNBResourceCoordinationInformation.h \ + ./SgNB-UE-X2AP-ID.h \ + ./SIPTOBearerDeactivationIndication.h \ + ./SharedResourceType.h \ + ./ShortMAC-I.h \ + ./SGNB-Addition-Trigger-Ind.h \ + ./SourceOfUEActivityBehaviourInformation.h \ + ./SpecialSubframe-Info.h \ + ./SpecialSubframePatterns.h \ + ./SpectrumSharingGroupID.h \ + ./SubbandCQI.h \ + ./Subscription-Based-UE-DifferentiationInfo.h \ + ./ScheduledCommunicationTime.h \ + ./SRVCCOperationPossible.h \ + ./SubbandCQICodeword0.h \ + ./SubbandCQICodeword1.h \ + ./SubbandCQIList.h \ + ./SubbandCQIItem.h \ + ./SubbandSize.h \ + ./SubscriberProfileIDforRFP.h \ + ./SubframeAllocation.h \ + ./SubframeAssignment.h \ + ./SubframeType.h \ + ./SgNBSecurityKey.h \ + ./SgNBtoMeNBContainer.h \ + ./SRBType.h \ + ./SCGConfigurationQuery.h \ + ./SULInformation.h \ + ./SupportedSULFreqBandItem.h \ + ./TABasedMDT.h \ + ./TAC.h \ + ./TAIBasedMDT.h \ + ./TAIListforMDT.h \ + ./TAI-Item.h \ + ./TAListforMDT.h \ + ./TABasedQMC.h \ + ./TAListforQMC.h \ + ./TAIBasedQMC.h \ + ./TAIListforQMC.h \ + ./TargetCellInUTRAN.h \ + ./TargeteNBtoSource-eNBTransparentContainer.h \ + ./TDD-Info.h \ + ./Threshold-RSRP.h \ + ./Threshold-RSRQ.h \ + ./TimeToWait.h \ + ./Time-UE-StayedInCell.h \ + ./Time-UE-StayedInCell-EnhancedGranularity.h \ + ./TraceActivation.h \ + ./TraceCollectionEntityIPAddress.h \ + ./TraceDepth.h \ + ./Transmission-Bandwidth.h \ + ./TransportLayerAddress.h \ + ./TunnelInformation.h \ + ./TypeOfError.h \ + ./UEAggregateMaximumBitRate.h \ + ./UEAppLayerMeasConfig.h \ + ./UE-ContextKeptIndicator.h \ + ./UEID.h \ + ./UE-HistoryInformation.h \ + ./UE-HistoryInformationFromTheUE.h \ + ./UE-S1AP-ID.h \ + ./UE-X2AP-ID.h \ + ./UE-X2AP-ID-Extension.h \ + ./UE-RLF-Report-Container.h \ + ./UE-RLF-Report-Container-for-extended-bands.h \ + ./UESecurityCapabilities.h \ + ./UESidelinkAggregateMaximumBitRate.h \ + ./UEsToBeResetList.h \ + ./UEsToBeResetList-Item.h \ + ./ULandDLSharing.h \ + ./ULConfiguration.h \ + ./UL-UE-Configuration.h \ + ./UL-GBR-PRB-usage.h \ + ./UL-HighInterferenceIndicationInfo.h \ + ./UL-HighInterferenceIndicationInfo-Item.h \ + ./UL-HighInterferenceIndication.h \ + ./UL-InterferenceOverloadIndication.h \ + ./UL-InterferenceOverloadIndication-Item.h \ + ./UL-non-GBR-PRB-usage.h \ + ./ULOnlySharing.h \ + ./ULResourceBitmapULandDLSharing.h \ + ./ULResourcesULandDLSharing.h \ + ./UL-scheduling-PDCCH-CCE-usage.h \ + ./UL-Total-PRB-usage.h \ + ./UsableABSInformation.h \ + ./UsableABSInformationFDD.h \ + ./UsableABSInformationTDD.h \ + ./UserPlaneTrafficActivityReport.h \ + ./V2XServicesAuthorized.h \ + ./VehicleUE.h \ + ./PedestrianUE.h \ + ./WidebandCQI.h \ + ./WidebandCQICodeword1.h \ + ./WLANMeasurementConfiguration.h \ + ./WLANMeasConfigNameList.h \ + ./WLANMeasConfig.h \ + ./WLANName.h \ + ./WTID.h \ + ./WTID-Type1.h \ + ./WTID-Long-Type2.h \ + ./WT-UE-XwAP-ID.h \ + ./X2BenefitValue.h \ + ./Criticality.h \ + ./Presence.h \ + ./PrivateIE-ID.h \ + ./ProcedureCode.h \ + ./ProtocolIE-ID.h \ + ./TriggeringMessage.h \ + ./E2SM-gNB-X2-eventTriggerDefinition.h \ + ./E2SM-gNB-X2-actionDefinition.h \ + ./E2SM-gNB-X2-indicationHeader.h \ + ./E2SM-gNB-X2-indicationMessage.h \ + ./E2SM-gNB-X2-callProcessID.h \ + ./E2SM-gNB-X2-controlHeader.h \ + ./E2SM-gNB-X2-controlMessage.h \ + ./ActionParameter-Item.h \ + ./ActionParameter-ID.h \ + ./ActionParameter-Value.h \ + ./CallProcess-ID.h \ + ./Interface-ID.h \ + ./InterfaceDirection.h \ + ./InterfaceMessage.h \ + ./InterfaceMessageType.h \ + ./TypeOfMessage.h \ + ./InterfaceProtocolIE-Item.h \ + ./InterfaceProtocolIE-ID.h \ + ./InterfaceProtocolIE-Test.h \ + ./InterfaceProtocolIE-Value.h \ + ./Style-ID.h \ + ./TimeStamp.h + +ASN_MODULE_HDRS+=./ANY.h +ASN_MODULE_SRCS+=./ANY.c +ASN_MODULE_HDRS+=./OCTET_STRING.h +ASN_MODULE_HDRS+=./OPEN_TYPE.h +ASN_MODULE_SRCS+=./OPEN_TYPE.c +ASN_MODULE_HDRS+=./constr_CHOICE.h +ASN_MODULE_HDRS+=./BOOLEAN.h +ASN_MODULE_SRCS+=./BOOLEAN.c +ASN_MODULE_HDRS+=./INTEGER.h +ASN_MODULE_SRCS+=./INTEGER.c +ASN_MODULE_HDRS+=./NULL.h +ASN_MODULE_SRCS+=./NULL.c +ASN_MODULE_HDRS+=./NativeEnumerated.h +ASN_MODULE_SRCS+=./NativeEnumerated.c +ASN_MODULE_HDRS+=./NativeInteger.h +ASN_MODULE_SRCS+=./NativeInteger.c +ASN_MODULE_HDRS+=./OBJECT_IDENTIFIER.h +ASN_MODULE_SRCS+=./OBJECT_IDENTIFIER.c +ASN_MODULE_HDRS+=./PrintableString.h +ASN_MODULE_SRCS+=./PrintableString.c +ASN_MODULE_HDRS+=./asn_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./asn_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./asn_SET_OF.h +ASN_MODULE_SRCS+=./asn_SET_OF.c +ASN_MODULE_SRCS+=./constr_CHOICE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE.h +ASN_MODULE_SRCS+=./constr_SEQUENCE.c +ASN_MODULE_HDRS+=./constr_SEQUENCE_OF.h +ASN_MODULE_SRCS+=./constr_SEQUENCE_OF.c +ASN_MODULE_HDRS+=./constr_SET_OF.h +ASN_MODULE_SRCS+=./constr_SET_OF.c +ASN_MODULE_HDRS+=./asn_application.h +ASN_MODULE_SRCS+=./asn_application.c +ASN_MODULE_HDRS+=./asn_ioc.h +ASN_MODULE_HDRS+=./asn_system.h +ASN_MODULE_HDRS+=./asn_codecs.h +ASN_MODULE_HDRS+=./asn_internal.h +ASN_MODULE_SRCS+=./asn_internal.c +ASN_MODULE_HDRS+=./asn_random_fill.h +ASN_MODULE_SRCS+=./asn_random_fill.c +ASN_MODULE_HDRS+=./asn_bit_data.h +ASN_MODULE_SRCS+=./asn_bit_data.c +ASN_MODULE_SRCS+=./OCTET_STRING.c +ASN_MODULE_HDRS+=./BIT_STRING.h +ASN_MODULE_SRCS+=./BIT_STRING.c +ASN_MODULE_SRCS+=./asn_codecs_prim.c +ASN_MODULE_HDRS+=./asn_codecs_prim.h +ASN_MODULE_HDRS+=./ber_tlv_length.h +ASN_MODULE_SRCS+=./ber_tlv_length.c +ASN_MODULE_HDRS+=./ber_tlv_tag.h +ASN_MODULE_SRCS+=./ber_tlv_tag.c +ASN_MODULE_HDRS+=./ber_decoder.h +ASN_MODULE_SRCS+=./ber_decoder.c +ASN_MODULE_HDRS+=./der_encoder.h +ASN_MODULE_SRCS+=./der_encoder.c +ASN_MODULE_HDRS+=./constr_TYPE.h +ASN_MODULE_SRCS+=./constr_TYPE.c +ASN_MODULE_HDRS+=./constraints.h +ASN_MODULE_SRCS+=./constraints.c +ASN_MODULE_HDRS+=./xer_support.h +ASN_MODULE_SRCS+=./xer_support.c +ASN_MODULE_HDRS+=./xer_decoder.h +ASN_MODULE_SRCS+=./xer_decoder.c +ASN_MODULE_HDRS+=./xer_encoder.h +ASN_MODULE_SRCS+=./xer_encoder.c +ASN_MODULE_HDRS+=./per_support.h +ASN_MODULE_SRCS+=./per_support.c +ASN_MODULE_HDRS+=./per_decoder.h +ASN_MODULE_SRCS+=./per_decoder.c +ASN_MODULE_HDRS+=./per_encoder.h +ASN_MODULE_SRCS+=./per_encoder.c +ASN_MODULE_HDRS+=./per_opentype.h +ASN_MODULE_SRCS+=./per_opentype.c + +ASN_MODULE_CFLAGS=-DASN_DISABLE_OER_SUPPORT + +lib_LTLIBRARIES+=libasncodec.la +libasncodec_la_SOURCES=$(ASN_MODULE_SRCS) $(ASN_MODULE_HDRS) +libasncodec_la_CPPFLAGS=-I$(top_srcdir)/./ +libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS) +libasncodec_la_LDFLAGS=-lm diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c new file mode 100644 index 0000000..9f18b36 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ManagementBasedMDTallowed.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ManagementBasedMDTallowed.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ManagementBasedMDTallowed_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ManagementBasedMDTallowed_value2enum_1[] = { + { 0, 7, "allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ManagementBasedMDTallowed_enum2value_1[] = { + 0 /* allowed(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ManagementBasedMDTallowed_specs_1 = { + asn_MAP_ManagementBasedMDTallowed_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ManagementBasedMDTallowed_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ManagementBasedMDTallowed_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ManagementBasedMDTallowed = { + "ManagementBasedMDTallowed", + "ManagementBasedMDTallowed", + &asn_OP_NativeEnumerated, + asn_DEF_ManagementBasedMDTallowed_tags_1, + sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1) + /sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1[0]), /* 1 */ + asn_DEF_ManagementBasedMDTallowed_tags_1, /* Same as above */ + sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1) + /sizeof(asn_DEF_ManagementBasedMDTallowed_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ManagementBasedMDTallowed_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ManagementBasedMDTallowed_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h new file mode 100644 index 0000000..9e11415 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ManagementBasedMDTallowed.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ManagementBasedMDTallowed_H_ +#define _ManagementBasedMDTallowed_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ManagementBasedMDTallowed { + ManagementBasedMDTallowed_allowed = 0 + /* + * Enumeration is extensible + */ +} e_ManagementBasedMDTallowed; + +/* ManagementBasedMDTallowed */ +typedef long ManagementBasedMDTallowed_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ManagementBasedMDTallowed_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ManagementBasedMDTallowed; +extern const asn_INTEGER_specifics_t asn_SPC_ManagementBasedMDTallowed_specs_1; +asn_struct_free_f ManagementBasedMDTallowed_free; +asn_struct_print_f ManagementBasedMDTallowed_print; +asn_constr_check_f ManagementBasedMDTallowed_constraint; +ber_type_decoder_f ManagementBasedMDTallowed_decode_ber; +der_type_encoder_f ManagementBasedMDTallowed_encode_der; +xer_type_decoder_f ManagementBasedMDTallowed_decode_xer; +xer_type_encoder_f ManagementBasedMDTallowed_encode_xer; +per_type_decoder_f ManagementBasedMDTallowed_decode_uper; +per_type_encoder_f ManagementBasedMDTallowed_encode_uper; +per_type_decoder_f ManagementBasedMDTallowed_decode_aper; +per_type_encoder_f ManagementBasedMDTallowed_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ManagementBasedMDTallowed_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Masked-IMEISV.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Masked-IMEISV.c new file mode 100644 index 0000000..f3e55a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Masked-IMEISV.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Masked-IMEISV.h" + +int +Masked_IMEISV_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 64)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Masked_IMEISV_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 64, 64 } /* (SIZE(64..64)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Masked_IMEISV_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Masked_IMEISV = { + "Masked-IMEISV", + "Masked-IMEISV", + &asn_OP_BIT_STRING, + asn_DEF_Masked_IMEISV_tags_1, + sizeof(asn_DEF_Masked_IMEISV_tags_1) + /sizeof(asn_DEF_Masked_IMEISV_tags_1[0]), /* 1 */ + asn_DEF_Masked_IMEISV_tags_1, /* Same as above */ + sizeof(asn_DEF_Masked_IMEISV_tags_1) + /sizeof(asn_DEF_Masked_IMEISV_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Masked_IMEISV_constr_1, Masked_IMEISV_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Masked-IMEISV.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Masked-IMEISV.h new file mode 100644 index 0000000..3083334 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Masked-IMEISV.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Masked_IMEISV_H_ +#define _Masked_IMEISV_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Masked-IMEISV */ +typedef BIT_STRING_t Masked_IMEISV_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Masked_IMEISV_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Masked_IMEISV; +asn_struct_free_f Masked_IMEISV_free; +asn_struct_print_f Masked_IMEISV_print; +asn_constr_check_f Masked_IMEISV_constraint; +ber_type_decoder_f Masked_IMEISV_decode_ber; +der_type_encoder_f Masked_IMEISV_encode_der; +xer_type_decoder_f Masked_IMEISV_decode_xer; +xer_type_encoder_f Masked_IMEISV_encode_xer; +per_type_decoder_f Masked_IMEISV_decode_uper; +per_type_encoder_f Masked_IMEISV_encode_uper; +per_type_decoder_f Masked_IMEISV_decode_aper; +per_type_encoder_f Masked_IMEISV_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Masked_IMEISV_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c new file mode 100644 index 0000000..45cca26 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBCoordinationAssistanceInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MeNBCoordinationAssistanceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_MeNBCoordinationAssistanceInformation_value2enum_1[] = { + { 0, 25, "coordination-not-required" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_MeNBCoordinationAssistanceInformation_enum2value_1[] = { + 0 /* coordination-not-required(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_MeNBCoordinationAssistanceInformation_specs_1 = { + asn_MAP_MeNBCoordinationAssistanceInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_MeNBCoordinationAssistanceInformation_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_MeNBCoordinationAssistanceInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeNBCoordinationAssistanceInformation = { + "MeNBCoordinationAssistanceInformation", + "MeNBCoordinationAssistanceInformation", + &asn_OP_NativeEnumerated, + asn_DEF_MeNBCoordinationAssistanceInformation_tags_1, + sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + asn_DEF_MeNBCoordinationAssistanceInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_MeNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeNBCoordinationAssistanceInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_MeNBCoordinationAssistanceInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h new file mode 100644 index 0000000..c9433a5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBCoordinationAssistanceInformation.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBCoordinationAssistanceInformation_H_ +#define _MeNBCoordinationAssistanceInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeNBCoordinationAssistanceInformation { + MeNBCoordinationAssistanceInformation_coordination_not_required = 0 + /* + * Enumeration is extensible + */ +} e_MeNBCoordinationAssistanceInformation; + +/* MeNBCoordinationAssistanceInformation */ +typedef long MeNBCoordinationAssistanceInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeNBCoordinationAssistanceInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeNBCoordinationAssistanceInformation; +extern const asn_INTEGER_specifics_t asn_SPC_MeNBCoordinationAssistanceInformation_specs_1; +asn_struct_free_f MeNBCoordinationAssistanceInformation_free; +asn_struct_print_f MeNBCoordinationAssistanceInformation_print; +asn_constr_check_f MeNBCoordinationAssistanceInformation_constraint; +ber_type_decoder_f MeNBCoordinationAssistanceInformation_decode_ber; +der_type_encoder_f MeNBCoordinationAssistanceInformation_encode_der; +xer_type_decoder_f MeNBCoordinationAssistanceInformation_decode_xer; +xer_type_encoder_f MeNBCoordinationAssistanceInformation_encode_xer; +per_type_decoder_f MeNBCoordinationAssistanceInformation_decode_uper; +per_type_encoder_f MeNBCoordinationAssistanceInformation_encode_uper; +per_type_decoder_f MeNBCoordinationAssistanceInformation_decode_aper; +per_type_encoder_f MeNBCoordinationAssistanceInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBCoordinationAssistanceInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c new file mode 100644 index 0000000..89dca6a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.c @@ -0,0 +1,178 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBResourceCoordinationInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_uLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_dLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_uLCoordinationInformation_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dLCoordinationInformation_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformation, eUTRA_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRA-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformation, uLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_uLCoordinationInformation_constr_3, memb_uLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "uLCoordinationInformation" + }, + { ATF_POINTER, 2, offsetof(struct MeNBResourceCoordinationInformation, dLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_dLCoordinationInformation_constr_4, memb_dLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "dLCoordinationInformation" + }, + { ATF_POINTER, 1, offsetof(struct MeNBResourceCoordinationInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P167, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MeNBResourceCoordinationInformation_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_MeNBResourceCoordinationInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeNBResourceCoordinationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eUTRA-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformation_specs_1 = { + sizeof(struct MeNBResourceCoordinationInformation), + offsetof(struct MeNBResourceCoordinationInformation, _asn_ctx), + asn_MAP_MeNBResourceCoordinationInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_MeNBResourceCoordinationInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformation = { + "MeNBResourceCoordinationInformation", + "MeNBResourceCoordinationInformation", + &asn_OP_SEQUENCE, + asn_DEF_MeNBResourceCoordinationInformation_tags_1, + sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + asn_DEF_MeNBResourceCoordinationInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_MeNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeNBResourceCoordinationInformation_1, + 4, /* Elements count */ + &asn_SPC_MeNBResourceCoordinationInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h new file mode 100644 index 0000000..3823dd8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBResourceCoordinationInformation.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBResourceCoordinationInformation_H_ +#define _MeNBResourceCoordinationInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* MeNBResourceCoordinationInformation */ +typedef struct MeNBResourceCoordinationInformation { + ECGI_t eUTRA_Cell_ID; + BIT_STRING_t uLCoordinationInformation; + BIT_STRING_t *dLCoordinationInformation; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeNBResourceCoordinationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBResourceCoordinationInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c new file mode 100644 index 0000000..6f1ecf3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSeNBContainer.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBtoSeNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_MeNBtoSeNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeNBtoSeNBContainer = { + "MeNBtoSeNBContainer", + "MeNBtoSeNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_MeNBtoSeNBContainer_tags_1, + sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1[0]), /* 1 */ + asn_DEF_MeNBtoSeNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSeNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h new file mode 100644 index 0000000..004a7c1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSeNBContainer.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBtoSeNBContainer_H_ +#define _MeNBtoSeNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeNBtoSeNBContainer */ +typedef OCTET_STRING_t MeNBtoSeNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeNBtoSeNBContainer; +asn_struct_free_f MeNBtoSeNBContainer_free; +asn_struct_print_f MeNBtoSeNBContainer_print; +asn_constr_check_f MeNBtoSeNBContainer_constraint; +ber_type_decoder_f MeNBtoSeNBContainer_decode_ber; +der_type_encoder_f MeNBtoSeNBContainer_encode_der; +xer_type_decoder_f MeNBtoSeNBContainer_decode_xer; +xer_type_encoder_f MeNBtoSeNBContainer_encode_xer; +per_type_decoder_f MeNBtoSeNBContainer_decode_uper; +per_type_encoder_f MeNBtoSeNBContainer_encode_uper; +per_type_decoder_f MeNBtoSeNBContainer_decode_aper; +per_type_encoder_f MeNBtoSeNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBtoSeNBContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c new file mode 100644 index 0000000..e33faca --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSgNBContainer.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeNBtoSgNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_MeNBtoSgNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeNBtoSgNBContainer = { + "MeNBtoSgNBContainer", + "MeNBtoSgNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_MeNBtoSgNBContainer_tags_1, + sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1[0]), /* 1 */ + asn_DEF_MeNBtoSgNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1) + /sizeof(asn_DEF_MeNBtoSgNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h new file mode 100644 index 0000000..70f8636 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeNBtoSgNBContainer.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeNBtoSgNBContainer_H_ +#define _MeNBtoSgNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeNBtoSgNBContainer */ +typedef OCTET_STRING_t MeNBtoSgNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeNBtoSgNBContainer; +asn_struct_free_f MeNBtoSgNBContainer_free; +asn_struct_print_f MeNBtoSgNBContainer_print; +asn_constr_check_f MeNBtoSgNBContainer_constraint; +ber_type_decoder_f MeNBtoSgNBContainer_decode_ber; +der_type_encoder_f MeNBtoSgNBContainer_encode_der; +xer_type_decoder_f MeNBtoSgNBContainer_decode_xer; +xer_type_encoder_f MeNBtoSgNBContainer_encode_xer; +per_type_decoder_f MeNBtoSgNBContainer_decode_uper; +per_type_encoder_f MeNBtoSgNBContainer_encode_uper; +per_type_decoder_f MeNBtoSgNBContainer_decode_aper; +per_type_encoder_f MeNBtoSgNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeNBtoSgNBContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Measurement-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Measurement-ID.c new file mode 100644 index 0000000..50addbb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Measurement-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Measurement-ID.h" + +int +Measurement_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Measurement_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 1, 4095 } /* (1..4095,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Measurement_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Measurement_ID = { + "Measurement-ID", + "Measurement-ID", + &asn_OP_NativeInteger, + asn_DEF_Measurement_ID_tags_1, + sizeof(asn_DEF_Measurement_ID_tags_1) + /sizeof(asn_DEF_Measurement_ID_tags_1[0]), /* 1 */ + asn_DEF_Measurement_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Measurement_ID_tags_1) + /sizeof(asn_DEF_Measurement_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Measurement_ID_constr_1, Measurement_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Measurement-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Measurement-ID.h new file mode 100644 index 0000000..b95fd56 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Measurement-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Measurement_ID_H_ +#define _Measurement_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Measurement-ID */ +typedef long Measurement_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Measurement_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Measurement_ID; +asn_struct_free_f Measurement_ID_free; +asn_struct_print_f Measurement_ID_print; +asn_constr_check_f Measurement_ID_constraint; +ber_type_decoder_f Measurement_ID_decode_ber; +der_type_encoder_f Measurement_ID_encode_der; +xer_type_decoder_f Measurement_ID_decode_xer; +xer_type_encoder_f Measurement_ID_encode_xer; +per_type_decoder_f Measurement_ID_decode_uper; +per_type_encoder_f Measurement_ID_encode_uper; +per_type_decoder_f Measurement_ID_decode_aper; +per_type_encoder_f Measurement_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Measurement_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c new file mode 100644 index 0000000..14d9422 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementFailureCause-Item.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item, measurementFailedReportCharacteristics), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ReportCharacteristics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementFailedReportCharacteristics" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementFailureCause_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MeasurementFailureCause_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementFailureCause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementFailedReportCharacteristics */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_Item_specs_1 = { + sizeof(struct MeasurementFailureCause_Item), + offsetof(struct MeasurementFailureCause_Item, _asn_ctx), + asn_MAP_MeasurementFailureCause_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_MeasurementFailureCause_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item = { + "MeasurementFailureCause-Item", + "MeasurementFailureCause-Item", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementFailureCause_Item_tags_1, + sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_Item_1, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h new file mode 100644 index 0000000..90adc56 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementFailureCause_Item_H_ +#define _MeasurementFailureCause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ReportCharacteristics.h" +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* MeasurementFailureCause-Item */ +typedef struct MeasurementFailureCause_Item { + ReportCharacteristics_t measurementFailedReportCharacteristics; + Cause_t cause; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementFailureCause_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-List.c new file mode 100644 index 0000000..5164506 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementFailureCause-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_MeasurementFailureCause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MeasurementFailureCause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MeasurementFailureCause_List_specs_1 = { + sizeof(struct MeasurementFailureCause_List), + offsetof(struct MeasurementFailureCause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_List = { + "MeasurementFailureCause-List", + "MeasurementFailureCause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementFailureCause_List_tags_1, + sizeof(asn_DEF_MeasurementFailureCause_List_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_List_tags_1[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_List_tags_1) + /sizeof(asn_DEF_MeasurementFailureCause_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeasurementFailureCause_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MeasurementFailureCause_List_1, + 1, /* Single element */ + &asn_SPC_MeasurementFailureCause_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-List.h new file mode 100644 index 0000000..69e9b38 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementFailureCause-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementFailureCause_List_H_ +#define _MeasurementFailureCause_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* MeasurementFailureCause-List */ +typedef struct MeasurementFailureCause_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_List; +extern asn_SET_OF_specifics_t asn_SPC_MeasurementFailureCause_List_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_List_1[1]; +extern asn_per_constraints_t asn_PER_type_MeasurementFailureCause_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementFailureCause_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c new file mode 100644 index 0000000..068b252 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementInitiationResult-Item.h" + +#include "MeasurementFailureCause-List.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item, cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cell-ID" + }, + { ATF_POINTER, 2, offsetof(struct MeasurementInitiationResult_Item, measurementFailureCause_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeasurementFailureCause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementFailureCause-List" + }, + { ATF_POINTER, 1, offsetof(struct MeasurementInitiationResult_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_MeasurementInitiationResult_Item_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInitiationResult_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measurementFailureCause-List */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_specs_1 = { + sizeof(struct MeasurementInitiationResult_Item), + offsetof(struct MeasurementInitiationResult_Item, _asn_ctx), + asn_MAP_MeasurementInitiationResult_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_MeasurementInitiationResult_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item = { + "MeasurementInitiationResult-Item", + "MeasurementInitiationResult-Item", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInitiationResult_Item_tags_1, + sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_Item_1, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h new file mode 100644 index 0000000..283026c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementInitiationResult_Item_H_ +#define _MeasurementInitiationResult_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct MeasurementFailureCause_List; +struct ProtocolExtensionContainer; + +/* MeasurementInitiationResult-Item */ +typedef struct MeasurementInitiationResult_Item { + ECGI_t cell_ID; + struct MeasurementFailureCause_List *measurementFailureCause_List; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInitiationResult_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c new file mode 100644 index 0000000..c5b60f9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementInitiationResult-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_MeasurementInitiationResult_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_MeasurementInitiationResult_List_specs_1 = { + sizeof(struct MeasurementInitiationResult_List), + offsetof(struct MeasurementInitiationResult_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_List = { + "MeasurementInitiationResult-List", + "MeasurementInitiationResult-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_MeasurementInitiationResult_List_tags_1, + sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_List_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1) + /sizeof(asn_DEF_MeasurementInitiationResult_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeasurementInitiationResult_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MeasurementInitiationResult_List_1, + 1, /* Single element */ + &asn_SPC_MeasurementInitiationResult_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h new file mode 100644 index 0000000..3af1ec2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementInitiationResult-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementInitiationResult_List_H_ +#define _MeasurementInitiationResult_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* MeasurementInitiationResult-List */ +typedef struct MeasurementInitiationResult_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementInitiationResult_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementThresholdA2.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementThresholdA2.c new file mode 100644 index 0000000..732d504 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementThresholdA2.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementThresholdA2.h" + +asn_per_constraints_t asn_PER_type_MeasurementThresholdA2_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MeasurementThresholdA2_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementThresholdA2, choice.threshold_RSRP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Threshold_RSRP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "threshold-RSRP" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementThresholdA2, choice.threshold_RSRQ), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Threshold_RSRQ, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "threshold-RSRQ" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementThresholdA2_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* threshold-RSRP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* threshold-RSRQ */ +}; +asn_CHOICE_specifics_t asn_SPC_MeasurementThresholdA2_specs_1 = { + sizeof(struct MeasurementThresholdA2), + offsetof(struct MeasurementThresholdA2, _asn_ctx), + offsetof(struct MeasurementThresholdA2, present), + sizeof(((struct MeasurementThresholdA2 *)0)->present), + asn_MAP_MeasurementThresholdA2_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementThresholdA2 = { + "MeasurementThresholdA2", + "MeasurementThresholdA2", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_MeasurementThresholdA2_constr_1, CHOICE_constraint }, + asn_MBR_MeasurementThresholdA2_1, + 2, /* Elements count */ + &asn_SPC_MeasurementThresholdA2_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementThresholdA2.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementThresholdA2.h new file mode 100644 index 0000000..62bf2c8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementThresholdA2.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementThresholdA2_H_ +#define _MeasurementThresholdA2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Threshold-RSRP.h" +#include "Threshold-RSRQ.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum MeasurementThresholdA2_PR { + MeasurementThresholdA2_PR_NOTHING, /* No components present */ + MeasurementThresholdA2_PR_threshold_RSRP, + MeasurementThresholdA2_PR_threshold_RSRQ + /* Extensions may appear below */ + +} MeasurementThresholdA2_PR; + +/* MeasurementThresholdA2 */ +typedef struct MeasurementThresholdA2 { + MeasurementThresholdA2_PR present; + union MeasurementThresholdA2_u { + Threshold_RSRP_t threshold_RSRP; + Threshold_RSRQ_t threshold_RSRQ; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementThresholdA2_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MeasurementThresholdA2; +extern asn_CHOICE_specifics_t asn_SPC_MeasurementThresholdA2_specs_1; +extern asn_TYPE_member_t asn_MBR_MeasurementThresholdA2_1[2]; +extern asn_per_constraints_t asn_PER_type_MeasurementThresholdA2_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementThresholdA2_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementsToActivate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementsToActivate.c new file mode 100644 index 0000000..4ebcee9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementsToActivate.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MeasurementsToActivate.h" + +int +MeasurementsToActivate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_MeasurementsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MeasurementsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementsToActivate = { + "MeasurementsToActivate", + "MeasurementsToActivate", + &asn_OP_BIT_STRING, + asn_DEF_MeasurementsToActivate_tags_1, + sizeof(asn_DEF_MeasurementsToActivate_tags_1) + /sizeof(asn_DEF_MeasurementsToActivate_tags_1[0]), /* 1 */ + asn_DEF_MeasurementsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_MeasurementsToActivate_tags_1) + /sizeof(asn_DEF_MeasurementsToActivate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MeasurementsToActivate_constr_1, MeasurementsToActivate_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementsToActivate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementsToActivate.h new file mode 100644 index 0000000..9903205 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MeasurementsToActivate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MeasurementsToActivate_H_ +#define _MeasurementsToActivate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MeasurementsToActivate */ +typedef BIT_STRING_t MeasurementsToActivate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_MeasurementsToActivate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementsToActivate; +asn_struct_free_f MeasurementsToActivate_free; +asn_struct_print_f MeasurementsToActivate_print; +asn_constr_check_f MeasurementsToActivate_constraint; +ber_type_decoder_f MeasurementsToActivate_decode_ber; +der_type_encoder_f MeasurementsToActivate_encode_der; +xer_type_decoder_f MeasurementsToActivate_decode_xer; +xer_type_encoder_f MeasurementsToActivate_encode_xer; +per_type_decoder_f MeasurementsToActivate_decode_uper; +per_type_encoder_f MeasurementsToActivate_encode_uper; +per_type_decoder_f MeasurementsToActivate_decode_aper; +per_type_encoder_f MeasurementsToActivate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MeasurementsToActivate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c new file mode 100644 index 0000000..830c922 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityChangeAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_MobilityChangeAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P36, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeAcknowledge_specs_1 = { + sizeof(struct MobilityChangeAcknowledge), + offsetof(struct MobilityChangeAcknowledge, _asn_ctx), + asn_MAP_MobilityChangeAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge = { + "MobilityChangeAcknowledge", + "MobilityChangeAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeAcknowledge_tags_1, + sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1) + /sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_MobilityChangeAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1) + /sizeof(asn_DEF_MobilityChangeAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_MobilityChangeAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h new file mode 100644 index 0000000..ea53758 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityChangeAcknowledge_H_ +#define _MobilityChangeAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityChangeAcknowledge */ +typedef struct MobilityChangeAcknowledge { + ProtocolIE_Container_119P36_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityChangeAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeFailure.c new file mode 100644 index 0000000..5ec1caf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityChangeFailure.h" + +static asn_TYPE_member_t asn_MBR_MobilityChangeFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P37, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeFailure_specs_1 = { + sizeof(struct MobilityChangeFailure), + offsetof(struct MobilityChangeFailure, _asn_ctx), + asn_MAP_MobilityChangeFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure = { + "MobilityChangeFailure", + "MobilityChangeFailure", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeFailure_tags_1, + sizeof(asn_DEF_MobilityChangeFailure_tags_1) + /sizeof(asn_DEF_MobilityChangeFailure_tags_1[0]), /* 1 */ + asn_DEF_MobilityChangeFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityChangeFailure_tags_1) + /sizeof(asn_DEF_MobilityChangeFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeFailure_1, + 1, /* Elements count */ + &asn_SPC_MobilityChangeFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeFailure.h new file mode 100644 index 0000000..be75bf5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityChangeFailure_H_ +#define _MobilityChangeFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityChangeFailure */ +typedef struct MobilityChangeFailure { + ProtocolIE_Container_119P37_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityChangeFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeRequest.c new file mode 100644 index 0000000..f1e40ac --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityChangeRequest.h" + +static asn_TYPE_member_t asn_MBR_MobilityChangeRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P35, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeRequest_specs_1 = { + sizeof(struct MobilityChangeRequest), + offsetof(struct MobilityChangeRequest, _asn_ctx), + asn_MAP_MobilityChangeRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest = { + "MobilityChangeRequest", + "MobilityChangeRequest", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeRequest_tags_1, + sizeof(asn_DEF_MobilityChangeRequest_tags_1) + /sizeof(asn_DEF_MobilityChangeRequest_tags_1[0]), /* 1 */ + asn_DEF_MobilityChangeRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityChangeRequest_tags_1) + /sizeof(asn_DEF_MobilityChangeRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeRequest_1, + 1, /* Elements count */ + &asn_SPC_MobilityChangeRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeRequest.h new file mode 100644 index 0000000..69be036 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityChangeRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityChangeRequest_H_ +#define _MobilityChangeRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityChangeRequest */ +typedef struct MobilityChangeRequest { + ProtocolIE_Container_119P35_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityChangeRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityInformation.c new file mode 100644 index 0000000..19d7ec6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityInformation.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityInformation.h" + +int +MobilityInformation_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_MobilityInformation_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32, 32 } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_MobilityInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_MobilityInformation = { + "MobilityInformation", + "MobilityInformation", + &asn_OP_BIT_STRING, + asn_DEF_MobilityInformation_tags_1, + sizeof(asn_DEF_MobilityInformation_tags_1) + /sizeof(asn_DEF_MobilityInformation_tags_1[0]), /* 1 */ + asn_DEF_MobilityInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityInformation_tags_1) + /sizeof(asn_DEF_MobilityInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MobilityInformation_constr_1, MobilityInformation_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityInformation.h new file mode 100644 index 0000000..d65e561 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityInformation.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityInformation_H_ +#define _MobilityInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityInformation */ +typedef BIT_STRING_t MobilityInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityInformation; +asn_struct_free_f MobilityInformation_free; +asn_struct_print_f MobilityInformation_print; +asn_constr_check_f MobilityInformation_constraint; +ber_type_decoder_f MobilityInformation_decode_ber; +der_type_encoder_f MobilityInformation_encode_der; +xer_type_decoder_f MobilityInformation_decode_xer; +xer_type_encoder_f MobilityInformation_encode_xer; +per_type_decoder_f MobilityInformation_decode_uper; +per_type_encoder_f MobilityInformation_encode_uper; +per_type_decoder_f MobilityInformation_decode_aper; +per_type_encoder_f MobilityInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersInformation.c new file mode 100644 index 0000000..ee8e61e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersInformation.c @@ -0,0 +1,103 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityParametersInformation.h" + +static int +memb_handoverTriggerChange_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -20 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_handoverTriggerChange_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, -20, 20 } /* (-20..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MobilityParametersInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityParametersInformation, handoverTriggerChange), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_handoverTriggerChange_constr_2, memb_handoverTriggerChange_constraint_1 }, + 0, 0, /* No default value */ + "handoverTriggerChange" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityParametersInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityParametersInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* handoverTriggerChange */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersInformation_specs_1 = { + sizeof(struct MobilityParametersInformation), + offsetof(struct MobilityParametersInformation, _asn_ctx), + asn_MAP_MobilityParametersInformation_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityParametersInformation = { + "MobilityParametersInformation", + "MobilityParametersInformation", + &asn_OP_SEQUENCE, + asn_DEF_MobilityParametersInformation_tags_1, + sizeof(asn_DEF_MobilityParametersInformation_tags_1) + /sizeof(asn_DEF_MobilityParametersInformation_tags_1[0]), /* 1 */ + asn_DEF_MobilityParametersInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityParametersInformation_tags_1) + /sizeof(asn_DEF_MobilityParametersInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityParametersInformation_1, + 1, /* Elements count */ + &asn_SPC_MobilityParametersInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersInformation.h new file mode 100644 index 0000000..6b92c75 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersInformation.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityParametersInformation_H_ +#define _MobilityParametersInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityParametersInformation */ +typedef struct MobilityParametersInformation { + long handoverTriggerChange; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityParametersInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityParametersInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityParametersInformation_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityParametersInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersModificationRange.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersModificationRange.c new file mode 100644 index 0000000..a92f521 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersModificationRange.c @@ -0,0 +1,143 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MobilityParametersModificationRange.h" + +static int +memb_handoverTriggerChangeLowerLimit_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -20 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_handoverTriggerChangeUpperLimit_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= -20 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_handoverTriggerChangeLowerLimit_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, -20, 20 } /* (-20..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_handoverTriggerChangeUpperLimit_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, -20, 20 } /* (-20..20) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MobilityParametersModificationRange_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityParametersModificationRange, handoverTriggerChangeLowerLimit), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_handoverTriggerChangeLowerLimit_constr_2, memb_handoverTriggerChangeLowerLimit_constraint_1 }, + 0, 0, /* No default value */ + "handoverTriggerChangeLowerLimit" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityParametersModificationRange, handoverTriggerChangeUpperLimit), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_handoverTriggerChangeUpperLimit_constr_3, memb_handoverTriggerChangeUpperLimit_constraint_1 }, + 0, 0, /* No default value */ + "handoverTriggerChangeUpperLimit" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityParametersModificationRange_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityParametersModificationRange_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverTriggerChangeLowerLimit */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* handoverTriggerChangeUpperLimit */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersModificationRange_specs_1 = { + sizeof(struct MobilityParametersModificationRange), + offsetof(struct MobilityParametersModificationRange, _asn_ctx), + asn_MAP_MobilityParametersModificationRange_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityParametersModificationRange = { + "MobilityParametersModificationRange", + "MobilityParametersModificationRange", + &asn_OP_SEQUENCE, + asn_DEF_MobilityParametersModificationRange_tags_1, + sizeof(asn_DEF_MobilityParametersModificationRange_tags_1) + /sizeof(asn_DEF_MobilityParametersModificationRange_tags_1[0]), /* 1 */ + asn_DEF_MobilityParametersModificationRange_tags_1, /* Same as above */ + sizeof(asn_DEF_MobilityParametersModificationRange_tags_1) + /sizeof(asn_DEF_MobilityParametersModificationRange_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityParametersModificationRange_1, + 2, /* Elements count */ + &asn_SPC_MobilityParametersModificationRange_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersModificationRange.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersModificationRange.h new file mode 100644 index 0000000..594afc5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MobilityParametersModificationRange.h @@ -0,0 +1,68 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MobilityParametersModificationRange_H_ +#define _MobilityParametersModificationRange_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MobilityParametersModificationRange */ +typedef struct MobilityParametersModificationRange { + long handoverTriggerChangeLowerLimit; + long handoverTriggerChangeUpperLimit; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityParametersModificationRange_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MobilityParametersModificationRange; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityParametersModificationRange_specs_1; +extern asn_TYPE_member_t asn_MBR_MobilityParametersModificationRange_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _MobilityParametersModificationRange_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MultibandInfoList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MultibandInfoList.c new file mode 100644 index 0000000..aa1310e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MultibandInfoList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "MultibandInfoList.h" + +#include "BandInfo.h" +asn_per_constraints_t asn_PER_type_MultibandInfoList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_MultibandInfoList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BandInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_MultibandInfoList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_MultibandInfoList_specs_1 = { + sizeof(struct MultibandInfoList), + offsetof(struct MultibandInfoList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_MultibandInfoList = { + "MultibandInfoList", + "MultibandInfoList", + &asn_OP_SEQUENCE_OF, + asn_DEF_MultibandInfoList_tags_1, + sizeof(asn_DEF_MultibandInfoList_tags_1) + /sizeof(asn_DEF_MultibandInfoList_tags_1[0]), /* 1 */ + asn_DEF_MultibandInfoList_tags_1, /* Same as above */ + sizeof(asn_DEF_MultibandInfoList_tags_1) + /sizeof(asn_DEF_MultibandInfoList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_MultibandInfoList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_MultibandInfoList_1, + 1, /* Single element */ + &asn_SPC_MultibandInfoList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MultibandInfoList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MultibandInfoList.h new file mode 100644 index 0000000..e1971bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/MultibandInfoList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _MultibandInfoList_H_ +#define _MultibandInfoList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct BandInfo; + +/* MultibandInfoList */ +typedef struct MultibandInfoList { + A_SEQUENCE_OF(struct BandInfo) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MultibandInfoList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_MultibandInfoList; +extern asn_SET_OF_specifics_t asn_SPC_MultibandInfoList_specs_1; +extern asn_TYPE_member_t asn_MBR_MultibandInfoList_1[1]; +extern asn_per_constraints_t asn_PER_type_MultibandInfoList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _MultibandInfoList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NR-TxBW.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NR-TxBW.c new file mode 100644 index 0000000..33bdd69 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NR-TxBW.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NR-TxBW.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_NR_TxBW_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW, nRSCS), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRSCS, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRSCS" + }, + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW, nRNRB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNRB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRNRB" + }, + { ATF_POINTER, 1, offsetof(struct NR_TxBW, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P175, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NR_TxBW_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NR_TxBW_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NR_TxBW_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRSCS */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRNRB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_specs_1 = { + sizeof(struct NR_TxBW), + offsetof(struct NR_TxBW, _asn_ctx), + asn_MAP_NR_TxBW_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NR_TxBW_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NR_TxBW = { + "NR-TxBW", + "NR-TxBW", + &asn_OP_SEQUENCE, + asn_DEF_NR_TxBW_tags_1, + sizeof(asn_DEF_NR_TxBW_tags_1) + /sizeof(asn_DEF_NR_TxBW_tags_1[0]), /* 1 */ + asn_DEF_NR_TxBW_tags_1, /* Same as above */ + sizeof(asn_DEF_NR_TxBW_tags_1) + /sizeof(asn_DEF_NR_TxBW_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NR_TxBW_1, + 3, /* Elements count */ + &asn_SPC_NR_TxBW_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NR-TxBW.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NR-TxBW.h new file mode 100644 index 0000000..7352090 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NR-TxBW.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NR_TxBW_H_ +#define _NR_TxBW_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRSCS.h" +#include "NRNRB.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* NR-TxBW */ +typedef struct NR_TxBW { + NRSCS_t nRSCS; + NRNRB_t nRNRB; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NR_TxBW_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NR_TxBW; +extern asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_specs_1; +extern asn_TYPE_member_t asn_MBR_NR_TxBW_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NR_TxBW_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCGI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCGI.c new file mode 100644 index 0000000..fab7979 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCGI.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRCGI.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_NRCGI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRCGI, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRCGI, nRcellIdentifier), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRcellIdentifier" + }, + { ATF_POINTER, 1, offsetof(struct NRCGI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P174, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NRCGI_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NRCGI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRCGI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRcellIdentifier */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1 = { + sizeof(struct NRCGI), + offsetof(struct NRCGI, _asn_ctx), + asn_MAP_NRCGI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NRCGI_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRCGI = { + "NRCGI", + "NRCGI", + &asn_OP_SEQUENCE, + asn_DEF_NRCGI_tags_1, + sizeof(asn_DEF_NRCGI_tags_1) + /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ + asn_DEF_NRCGI_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCGI_tags_1) + /sizeof(asn_DEF_NRCGI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRCGI_1, + 3, /* Elements count */ + &asn_SPC_NRCGI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCGI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCGI.h new file mode 100644 index 0000000..d97ee3e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCGI.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRCGI_H_ +#define _NRCGI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "NRCellIdentifier.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* NRCGI */ +typedef struct NRCGI { + PLMN_Identity_t pLMN_Identity; + NRCellIdentifier_t nRcellIdentifier; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRCGI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRCGI; +extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_specs_1; +extern asn_TYPE_member_t asn_MBR_NRCGI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCGI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCellIdentifier.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCellIdentifier.c new file mode 100644 index 0000000..c4afb92 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCellIdentifier.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRCellIdentifier.h" + +int +NRCellIdentifier_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 36)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRCellIdentifier_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 36, 36 } /* (SIZE(36..36)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRCellIdentifier_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRCellIdentifier = { + "NRCellIdentifier", + "NRCellIdentifier", + &asn_OP_BIT_STRING, + asn_DEF_NRCellIdentifier_tags_1, + sizeof(asn_DEF_NRCellIdentifier_tags_1) + /sizeof(asn_DEF_NRCellIdentifier_tags_1[0]), /* 1 */ + asn_DEF_NRCellIdentifier_tags_1, /* Same as above */ + sizeof(asn_DEF_NRCellIdentifier_tags_1) + /sizeof(asn_DEF_NRCellIdentifier_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRCellIdentifier_constr_1, NRCellIdentifier_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCellIdentifier.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCellIdentifier.h new file mode 100644 index 0000000..4ed9aa4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRCellIdentifier.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRCellIdentifier_H_ +#define _NRCellIdentifier_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRCellIdentifier */ +typedef BIT_STRING_t NRCellIdentifier_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRCellIdentifier_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRCellIdentifier; +asn_struct_free_f NRCellIdentifier_free; +asn_struct_print_f NRCellIdentifier_print; +asn_constr_check_f NRCellIdentifier_constraint; +ber_type_decoder_f NRCellIdentifier_decode_ber; +der_type_encoder_f NRCellIdentifier_encode_der; +xer_type_decoder_f NRCellIdentifier_decode_xer; +xer_type_encoder_f NRCellIdentifier_encode_xer; +per_type_decoder_f NRCellIdentifier_decode_uper; +per_type_encoder_f NRCellIdentifier_encode_uper; +per_type_decoder_f NRCellIdentifier_decode_aper; +per_type_encoder_f NRCellIdentifier_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRCellIdentifier_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRFreqInfo.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRFreqInfo.c new file mode 100644 index 0000000..fb4f188 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRFreqInfo.c @@ -0,0 +1,211 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRFreqInfo.h" + +#include "SULInformation.h" +#include "ProtocolExtensionContainer.h" +#include "FreqBandNrItem.h" +static int +memb_nRARFCN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3279165)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_freqBandListNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 32)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_freqBandListNr_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_nRARFCN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 22, -1, 0, 3279165 } /* (0..3279165) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_freqBandListNr_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_freqBandListNr_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FreqBandNrItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_freqBandListNr_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_freqBandListNr_specs_3 = { + sizeof(struct NRFreqInfo__freqBandListNr), + offsetof(struct NRFreqInfo__freqBandListNr, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_freqBandListNr_3 = { + "freqBandListNr", + "freqBandListNr", + &asn_OP_SEQUENCE_OF, + asn_DEF_freqBandListNr_tags_3, + sizeof(asn_DEF_freqBandListNr_tags_3) + /sizeof(asn_DEF_freqBandListNr_tags_3[0]) - 1, /* 1 */ + asn_DEF_freqBandListNr_tags_3, /* Same as above */ + sizeof(asn_DEF_freqBandListNr_tags_3) + /sizeof(asn_DEF_freqBandListNr_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_freqBandListNr_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_freqBandListNr_3, + 1, /* Single element */ + &asn_SPC_freqBandListNr_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRFreqInfo_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo, nRARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_nRARFCN_constr_2, memb_nRARFCN_constraint_1 }, + 0, 0, /* No default value */ + "nRARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo, freqBandListNr), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + 0, + &asn_DEF_freqBandListNr_3, + 0, + { 0, &asn_PER_memb_freqBandListNr_constr_3, memb_freqBandListNr_constraint_1 }, + 0, 0, /* No default value */ + "freqBandListNr" + }, + { ATF_POINTER, 2, offsetof(struct NRFreqInfo, sULInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SULInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sULInformation" + }, + { ATF_POINTER, 1, offsetof(struct NRFreqInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P173, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NRFreqInfo_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_NRFreqInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRFreqInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* freqBandListNr */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sULInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_specs_1 = { + sizeof(struct NRFreqInfo), + offsetof(struct NRFreqInfo, _asn_ctx), + asn_MAP_NRFreqInfo_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_NRFreqInfo_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFreqInfo = { + "NRFreqInfo", + "NRFreqInfo", + &asn_OP_SEQUENCE, + asn_DEF_NRFreqInfo_tags_1, + sizeof(asn_DEF_NRFreqInfo_tags_1) + /sizeof(asn_DEF_NRFreqInfo_tags_1[0]), /* 1 */ + asn_DEF_NRFreqInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_NRFreqInfo_tags_1) + /sizeof(asn_DEF_NRFreqInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRFreqInfo_1, + 4, /* Elements count */ + &asn_SPC_NRFreqInfo_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRFreqInfo.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRFreqInfo.h new file mode 100644 index 0000000..7b74646 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRFreqInfo.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRFreqInfo_H_ +#define _NRFreqInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SULInformation; +struct ProtocolExtensionContainer; +struct FreqBandNrItem; + +/* NRFreqInfo */ +typedef struct NRFreqInfo { + long nRARFCN; + struct NRFreqInfo__freqBandListNr { + A_SEQUENCE_OF(struct FreqBandNrItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } freqBandListNr; + struct SULInformation *sULInformation; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRFreqInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRFreqInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_NRFreqInfo_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRFreqInfo_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNRB.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNRB.c new file mode 100644 index 0000000..cfd3ceb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNRB.c @@ -0,0 +1,132 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRNRB.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRNRB_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 28 } /* (0..28,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRNRB_value2enum_1[] = { + { 0, 5, "nrb11" }, + { 1, 5, "nrb18" }, + { 2, 5, "nrb24" }, + { 3, 5, "nrb25" }, + { 4, 5, "nrb31" }, + { 5, 5, "nrb32" }, + { 6, 5, "nrb38" }, + { 7, 5, "nrb51" }, + { 8, 5, "nrb52" }, + { 9, 5, "nrb65" }, + { 10, 5, "nrb66" }, + { 11, 5, "nrb78" }, + { 12, 5, "nrb79" }, + { 13, 5, "nrb93" }, + { 14, 6, "nrb106" }, + { 15, 6, "nrb107" }, + { 16, 6, "nrb121" }, + { 17, 6, "nrb132" }, + { 18, 6, "nrb133" }, + { 19, 6, "nrb135" }, + { 20, 6, "nrb160" }, + { 21, 6, "nrb162" }, + { 22, 6, "nrb189" }, + { 23, 6, "nrb216" }, + { 24, 6, "nrb217" }, + { 25, 6, "nrb245" }, + { 26, 6, "nrb264" }, + { 27, 6, "nrb270" }, + { 28, 6, "nrb273" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRNRB_enum2value_1[] = { + 14, /* nrb106(14) */ + 15, /* nrb107(15) */ + 0, /* nrb11(0) */ + 16, /* nrb121(16) */ + 17, /* nrb132(17) */ + 18, /* nrb133(18) */ + 19, /* nrb135(19) */ + 20, /* nrb160(20) */ + 21, /* nrb162(21) */ + 1, /* nrb18(1) */ + 22, /* nrb189(22) */ + 23, /* nrb216(23) */ + 24, /* nrb217(24) */ + 2, /* nrb24(2) */ + 25, /* nrb245(25) */ + 3, /* nrb25(3) */ + 26, /* nrb264(26) */ + 27, /* nrb270(27) */ + 28, /* nrb273(28) */ + 4, /* nrb31(4) */ + 5, /* nrb32(5) */ + 6, /* nrb38(6) */ + 7, /* nrb51(7) */ + 8, /* nrb52(8) */ + 9, /* nrb65(9) */ + 10, /* nrb66(10) */ + 11, /* nrb78(11) */ + 12, /* nrb79(12) */ + 13 /* nrb93(13) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRNRB_specs_1 = { + asn_MAP_NRNRB_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRNRB_enum2value_1, /* N => "tag"; sorted by N */ + 29, /* Number of elements in the maps */ + 30, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRNRB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRNRB = { + "NRNRB", + "NRNRB", + &asn_OP_NativeEnumerated, + asn_DEF_NRNRB_tags_1, + sizeof(asn_DEF_NRNRB_tags_1) + /sizeof(asn_DEF_NRNRB_tags_1[0]), /* 1 */ + asn_DEF_NRNRB_tags_1, /* Same as above */ + sizeof(asn_DEF_NRNRB_tags_1) + /sizeof(asn_DEF_NRNRB_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRNRB_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRNRB_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNRB.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNRB.h new file mode 100644 index 0000000..aba54b7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNRB.h @@ -0,0 +1,104 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRNRB_H_ +#define _NRNRB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRNRB { + NRNRB_nrb11 = 0, + NRNRB_nrb18 = 1, + NRNRB_nrb24 = 2, + NRNRB_nrb25 = 3, + NRNRB_nrb31 = 4, + NRNRB_nrb32 = 5, + NRNRB_nrb38 = 6, + NRNRB_nrb51 = 7, + NRNRB_nrb52 = 8, + NRNRB_nrb65 = 9, + NRNRB_nrb66 = 10, + NRNRB_nrb78 = 11, + NRNRB_nrb79 = 12, + NRNRB_nrb93 = 13, + NRNRB_nrb106 = 14, + NRNRB_nrb107 = 15, + NRNRB_nrb121 = 16, + NRNRB_nrb132 = 17, + NRNRB_nrb133 = 18, + NRNRB_nrb135 = 19, + NRNRB_nrb160 = 20, + NRNRB_nrb162 = 21, + NRNRB_nrb189 = 22, + NRNRB_nrb216 = 23, + NRNRB_nrb217 = 24, + NRNRB_nrb245 = 25, + NRNRB_nrb264 = 26, + NRNRB_nrb270 = 27, + NRNRB_nrb273 = 28 + /* + * Enumeration is extensible + */ +} e_NRNRB; + +/* NRNRB */ +typedef long NRNRB_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRNRB_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRNRB; +extern const asn_INTEGER_specifics_t asn_SPC_NRNRB_specs_1; +asn_struct_free_f NRNRB_free; +asn_struct_print_f NRNRB_print; +asn_constr_check_f NRNRB_constraint; +ber_type_decoder_f NRNRB_decode_ber; +der_type_encoder_f NRNRB_encode_der; +xer_type_decoder_f NRNRB_decode_xer; +xer_type_encoder_f NRNRB_encode_xer; +per_type_decoder_f NRNRB_decode_uper; +per_type_encoder_f NRNRB_encode_uper; +per_type_decoder_f NRNRB_decode_aper; +per_type_encoder_f NRNRB_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRNRB_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNeighbour-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNeighbour-Information.c new file mode 100644 index 0000000..176864a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNeighbour-Information.c @@ -0,0 +1,233 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRNeighbour-Information.h" + +#include "ProtocolExtensionContainer.h" +#include "FDD-InfoNeighbourServedNRCell-Information.h" +#include "TDD-InfoNeighbourServedNRCell-Information.h" +static asn_per_constraints_t asn_PER_type_nRNeighbourModeInfo_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_NRNeighbour_Information_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1024 } /* (SIZE(1..1024)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nRNeighbourModeInfo_8[] = { + { ATF_POINTER, 0, offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FDD_InfoNeighbourServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TDD_InfoNeighbourServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_nRNeighbourModeInfo_tag2el_8[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tdd */ +}; +static asn_CHOICE_specifics_t asn_SPC_nRNeighbourModeInfo_specs_8 = { + sizeof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo), + offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, _asn_ctx), + offsetof(struct NRNeighbour_Information__Member__nRNeighbourModeInfo, present), + sizeof(((struct NRNeighbour_Information__Member__nRNeighbourModeInfo *)0)->present), + asn_MAP_nRNeighbourModeInfo_tag2el_8, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nRNeighbourModeInfo_8 = { + "nRNeighbourModeInfo", + "nRNeighbourModeInfo", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_nRNeighbourModeInfo_constr_8, CHOICE_constraint }, + asn_MBR_nRNeighbourModeInfo_8, + 2, /* Elements count */ + &asn_SPC_nRNeighbourModeInfo_specs_8 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, nrpCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRPCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrpCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 2, offsetof(struct NRNeighbour_Information__Member, fiveGS_TAC), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveGS_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fiveGS-TAC" + }, + { ATF_POINTER, 1, offsetof(struct NRNeighbour_Information__Member, configured_TAC), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "configured-TAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, measurementTimingConfiguration), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementTimingConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information__Member, nRNeighbourModeInfo), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_nRNeighbourModeInfo_8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRNeighbourModeInfo" + }, + { ATF_POINTER, 1, offsetof(struct NRNeighbour_Information__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P97, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2, 3, 6 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrpCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* fiveGS-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* configured-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* measurementTimingConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* nRNeighbourModeInfo */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct NRNeighbour_Information__Member), + offsetof(struct NRNeighbour_Information__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 7, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 3, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 7, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRNeighbour_Information_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRNeighbour_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_NRNeighbour_Information_specs_1 = { + sizeof(struct NRNeighbour_Information), + offsetof(struct NRNeighbour_Information, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information = { + "NRNeighbour-Information", + "NRNeighbour-Information", + &asn_OP_SEQUENCE_OF, + asn_DEF_NRNeighbour_Information_tags_1, + sizeof(asn_DEF_NRNeighbour_Information_tags_1) + /sizeof(asn_DEF_NRNeighbour_Information_tags_1[0]), /* 1 */ + asn_DEF_NRNeighbour_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_NRNeighbour_Information_tags_1) + /sizeof(asn_DEF_NRNeighbour_Information_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRNeighbour_Information_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_NRNeighbour_Information_1, + 1, /* Single element */ + &asn_SPC_NRNeighbour_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNeighbour-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNeighbour-Information.h new file mode 100644 index 0000000..711c7aa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRNeighbour-Information.h @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRNeighbour_Information_H_ +#define _NRNeighbour_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "NRPCI.h" +#include "NRCGI.h" +#include "FiveGS-TAC.h" +#include "TAC.h" +#include "OCTET_STRING.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRNeighbour_Information__Member__nRNeighbourModeInfo_PR { + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_NOTHING, /* No components present */ + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_fdd, + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_tdd + /* Extensions may appear below */ + +} NRNeighbour_Information__Member__nRNeighbourModeInfo_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct FDD_InfoNeighbourServedNRCell_Information; +struct TDD_InfoNeighbourServedNRCell_Information; + +/* Forward definitions */ +typedef struct NRNeighbour_Information__Member { + NRPCI_t nrpCI; + NRCGI_t nrCellID; + FiveGS_TAC_t *fiveGS_TAC; /* OPTIONAL */ + TAC_t *configured_TAC; /* OPTIONAL */ + OCTET_STRING_t measurementTimingConfiguration; + struct NRNeighbour_Information__Member__nRNeighbourModeInfo { + NRNeighbour_Information__Member__nRNeighbourModeInfo_PR present; + union NRNeighbour_Information__Member__nRNeighbourModeInfo_u { + struct FDD_InfoNeighbourServedNRCell_Information *fdd; + struct TDD_InfoNeighbourServedNRCell_Information *tdd; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nRNeighbourModeInfo; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRNeighbour_Information__Member; + +/* NRNeighbour-Information */ +typedef struct NRNeighbour_Information { + A_SEQUENCE_OF(NRNeighbour_Information__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRNeighbour_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information; +extern asn_SET_OF_specifics_t asn_SPC_NRNeighbour_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_NRNeighbour_Information_1[1]; +extern asn_per_constraints_t asn_PER_type_NRNeighbour_Information_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRNeighbour_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRPCI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRPCI.c new file mode 100644 index 0000000..693daf2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRPCI.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRPCI.h" + +int +NRPCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1007)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRPCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1007 } /* (0..1007) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRPCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRPCI = { + "NRPCI", + "NRPCI", + &asn_OP_NativeInteger, + asn_DEF_NRPCI_tags_1, + sizeof(asn_DEF_NRPCI_tags_1) + /sizeof(asn_DEF_NRPCI_tags_1[0]), /* 1 */ + asn_DEF_NRPCI_tags_1, /* Same as above */ + sizeof(asn_DEF_NRPCI_tags_1) + /sizeof(asn_DEF_NRPCI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRPCI_constr_1, NRPCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRPCI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRPCI.h new file mode 100644 index 0000000..f48181c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRPCI.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRPCI_H_ +#define _NRPCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRPCI */ +typedef long NRPCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRPCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRPCI; +asn_struct_free_f NRPCI_free; +asn_struct_print_f NRPCI_print; +asn_constr_check_f NRPCI_constraint; +ber_type_decoder_f NRPCI_decode_ber; +der_type_encoder_f NRPCI_encode_der; +xer_type_decoder_f NRPCI_decode_xer; +xer_type_encoder_f NRPCI_encode_xer; +per_type_decoder_f NRPCI_decode_uper; +per_type_encoder_f NRPCI_encode_uper; +per_type_decoder_f NRPCI_decode_aper; +per_type_encoder_f NRPCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRPCI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c new file mode 100644 index 0000000..2d4c9a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRS-NSSS-PowerOffset.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRS_NSSS_PowerOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRS_NSSS_PowerOffset_value2enum_1[] = { + { 0, 10, "minusThree" }, + { 1, 4, "zero" }, + { 2, 5, "three" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRS_NSSS_PowerOffset_enum2value_1[] = { + 0, /* minusThree(0) */ + 2, /* three(2) */ + 1 /* zero(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRS_NSSS_PowerOffset_specs_1 = { + asn_MAP_NRS_NSSS_PowerOffset_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRS_NSSS_PowerOffset_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRS_NSSS_PowerOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRS_NSSS_PowerOffset = { + "NRS-NSSS-PowerOffset", + "NRS-NSSS-PowerOffset", + &asn_OP_NativeEnumerated, + asn_DEF_NRS_NSSS_PowerOffset_tags_1, + sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1) + /sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1[0]), /* 1 */ + asn_DEF_NRS_NSSS_PowerOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1) + /sizeof(asn_DEF_NRS_NSSS_PowerOffset_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRS_NSSS_PowerOffset_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRS_NSSS_PowerOffset_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h new file mode 100644 index 0000000..aee8a89 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRS-NSSS-PowerOffset.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRS_NSSS_PowerOffset_H_ +#define _NRS_NSSS_PowerOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRS_NSSS_PowerOffset { + NRS_NSSS_PowerOffset_minusThree = 0, + NRS_NSSS_PowerOffset_zero = 1, + NRS_NSSS_PowerOffset_three = 2 + /* + * Enumeration is extensible + */ +} e_NRS_NSSS_PowerOffset; + +/* NRS-NSSS-PowerOffset */ +typedef long NRS_NSSS_PowerOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRS_NSSS_PowerOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRS_NSSS_PowerOffset; +extern const asn_INTEGER_specifics_t asn_SPC_NRS_NSSS_PowerOffset_specs_1; +asn_struct_free_f NRS_NSSS_PowerOffset_free; +asn_struct_print_f NRS_NSSS_PowerOffset_print; +asn_constr_check_f NRS_NSSS_PowerOffset_constraint; +ber_type_decoder_f NRS_NSSS_PowerOffset_decode_ber; +der_type_encoder_f NRS_NSSS_PowerOffset_encode_der; +xer_type_decoder_f NRS_NSSS_PowerOffset_decode_xer; +xer_type_encoder_f NRS_NSSS_PowerOffset_encode_xer; +per_type_decoder_f NRS_NSSS_PowerOffset_decode_uper; +per_type_encoder_f NRS_NSSS_PowerOffset_encode_uper; +per_type_decoder_f NRS_NSSS_PowerOffset_decode_aper; +per_type_encoder_f NRS_NSSS_PowerOffset_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRS_NSSS_PowerOffset_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRSCS.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRSCS.c new file mode 100644 index 0000000..359a2be --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRSCS.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRSCS.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRSCS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRSCS_value2enum_1[] = { + { 0, 5, "scs15" }, + { 1, 5, "scs30" }, + { 2, 5, "scs60" }, + { 3, 6, "scs120" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRSCS_enum2value_1[] = { + 3, /* scs120(3) */ + 0, /* scs15(0) */ + 1, /* scs30(1) */ + 2 /* scs60(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRSCS_specs_1 = { + asn_MAP_NRSCS_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRSCS_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRSCS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRSCS = { + "NRSCS", + "NRSCS", + &asn_OP_NativeEnumerated, + asn_DEF_NRSCS_tags_1, + sizeof(asn_DEF_NRSCS_tags_1) + /sizeof(asn_DEF_NRSCS_tags_1[0]), /* 1 */ + asn_DEF_NRSCS_tags_1, /* Same as above */ + sizeof(asn_DEF_NRSCS_tags_1) + /sizeof(asn_DEF_NRSCS_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRSCS_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRSCS_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRSCS.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRSCS.h new file mode 100644 index 0000000..f31eb18 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRSCS.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRSCS_H_ +#define _NRSCS_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRSCS { + NRSCS_scs15 = 0, + NRSCS_scs30 = 1, + NRSCS_scs60 = 2, + NRSCS_scs120 = 3 + /* + * Enumeration is extensible + */ +} e_NRSCS; + +/* NRSCS */ +typedef long NRSCS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRSCS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRSCS; +extern const asn_INTEGER_specifics_t asn_SPC_NRSCS_specs_1; +asn_struct_free_f NRSCS_free; +asn_struct_print_f NRSCS_print; +asn_constr_check_f NRSCS_constraint; +ber_type_decoder_f NRSCS_decode_ber; +der_type_encoder_f NRSCS_encode_der; +xer_type_decoder_f NRSCS_decode_xer; +xer_type_encoder_f NRSCS_encode_xer; +per_type_decoder_f NRSCS_decode_uper; +per_type_encoder_f NRSCS_encode_uper; +per_type_decoder_f NRSCS_decode_aper; +per_type_encoder_f NRSCS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRSCS_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRUESecurityCapabilities.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRUESecurityCapabilities.c new file mode 100644 index 0000000..fa1eb22 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRUESecurityCapabilities.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRUESecurityCapabilities.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities, nRencryptionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRencryptionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRencryptionAlgorithms" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities, nRintegrityProtectionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRintegrityProtectionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRintegrityProtectionAlgorithms" + }, + { ATF_POINTER, 1, offsetof(struct NRUESecurityCapabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P176, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_NRUESecurityCapabilities_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_NRUESecurityCapabilities_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRUESecurityCapabilities_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRencryptionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRintegrityProtectionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_specs_1 = { + sizeof(struct NRUESecurityCapabilities), + offsetof(struct NRUESecurityCapabilities, _asn_ctx), + asn_MAP_NRUESecurityCapabilities_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_NRUESecurityCapabilities_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities = { + "NRUESecurityCapabilities", + "NRUESecurityCapabilities", + &asn_OP_SEQUENCE, + asn_DEF_NRUESecurityCapabilities_tags_1, + sizeof(asn_DEF_NRUESecurityCapabilities_tags_1) + /sizeof(asn_DEF_NRUESecurityCapabilities_tags_1[0]), /* 1 */ + asn_DEF_NRUESecurityCapabilities_tags_1, /* Same as above */ + sizeof(asn_DEF_NRUESecurityCapabilities_tags_1) + /sizeof(asn_DEF_NRUESecurityCapabilities_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRUESecurityCapabilities_1, + 3, /* Elements count */ + &asn_SPC_NRUESecurityCapabilities_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRUESecurityCapabilities.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRUESecurityCapabilities.h new file mode 100644 index 0000000..e64dcb4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRUESecurityCapabilities.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRUESecurityCapabilities_H_ +#define _NRUESecurityCapabilities_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRencryptionAlgorithms.h" +#include "NRintegrityProtectionAlgorithms.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* NRUESecurityCapabilities */ +typedef struct NRUESecurityCapabilities { + NRencryptionAlgorithms_t nRencryptionAlgorithms; + NRintegrityProtectionAlgorithms_t nRintegrityProtectionAlgorithms; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRUESecurityCapabilities_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities; +extern asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_specs_1; +extern asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRUESecurityCapabilities_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRencryptionAlgorithms.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRencryptionAlgorithms.c new file mode 100644 index 0000000..6bc3cd0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRencryptionAlgorithms.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRencryptionAlgorithms.h" + +int +NRencryptionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRencryptionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRencryptionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRencryptionAlgorithms = { + "NRencryptionAlgorithms", + "NRencryptionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_NRencryptionAlgorithms_tags_1, + sizeof(asn_DEF_NRencryptionAlgorithms_tags_1) + /sizeof(asn_DEF_NRencryptionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_NRencryptionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_NRencryptionAlgorithms_tags_1) + /sizeof(asn_DEF_NRencryptionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRencryptionAlgorithms_constr_1, NRencryptionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRencryptionAlgorithms.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRencryptionAlgorithms.h new file mode 100644 index 0000000..fe9a2b0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRencryptionAlgorithms.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRencryptionAlgorithms_H_ +#define _NRencryptionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRencryptionAlgorithms */ +typedef BIT_STRING_t NRencryptionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRencryptionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRencryptionAlgorithms; +asn_struct_free_f NRencryptionAlgorithms_free; +asn_struct_print_f NRencryptionAlgorithms_print; +asn_constr_check_f NRencryptionAlgorithms_constraint; +ber_type_decoder_f NRencryptionAlgorithms_decode_ber; +der_type_encoder_f NRencryptionAlgorithms_encode_der; +xer_type_decoder_f NRencryptionAlgorithms_decode_xer; +xer_type_encoder_f NRencryptionAlgorithms_encode_xer; +per_type_decoder_f NRencryptionAlgorithms_decode_uper; +per_type_encoder_f NRencryptionAlgorithms_encode_uper; +per_type_decoder_f NRencryptionAlgorithms_decode_aper; +per_type_encoder_f NRencryptionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRencryptionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c new file mode 100644 index 0000000..9f431df --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRintegrityProtectionAlgorithms.h" + +int +NRintegrityProtectionAlgorithms_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRintegrityProtectionAlgorithms_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 16, 16 } /* (SIZE(16..16,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NRintegrityProtectionAlgorithms_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRintegrityProtectionAlgorithms = { + "NRintegrityProtectionAlgorithms", + "NRintegrityProtectionAlgorithms", + &asn_OP_BIT_STRING, + asn_DEF_NRintegrityProtectionAlgorithms_tags_1, + sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + asn_DEF_NRintegrityProtectionAlgorithms_tags_1, /* Same as above */ + sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1) + /sizeof(asn_DEF_NRintegrityProtectionAlgorithms_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRintegrityProtectionAlgorithms_constr_1, NRintegrityProtectionAlgorithms_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h new file mode 100644 index 0000000..bf87115 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRintegrityProtectionAlgorithms.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRintegrityProtectionAlgorithms_H_ +#define _NRintegrityProtectionAlgorithms_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NRintegrityProtectionAlgorithms */ +typedef BIT_STRING_t NRintegrityProtectionAlgorithms_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRintegrityProtectionAlgorithms_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRintegrityProtectionAlgorithms; +asn_struct_free_f NRintegrityProtectionAlgorithms_free; +asn_struct_print_f NRintegrityProtectionAlgorithms_print; +asn_constr_check_f NRintegrityProtectionAlgorithms_constraint; +ber_type_decoder_f NRintegrityProtectionAlgorithms_decode_ber; +der_type_encoder_f NRintegrityProtectionAlgorithms_encode_der; +xer_type_decoder_f NRintegrityProtectionAlgorithms_decode_xer; +xer_type_encoder_f NRintegrityProtectionAlgorithms_encode_xer; +per_type_decoder_f NRintegrityProtectionAlgorithms_decode_uper; +per_type_encoder_f NRintegrityProtectionAlgorithms_encode_uper; +per_type_decoder_f NRintegrityProtectionAlgorithms_decode_aper; +per_type_encoder_f NRintegrityProtectionAlgorithms_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRintegrityProtectionAlgorithms_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictionin5GS.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictionin5GS.c new file mode 100644 index 0000000..88dad00 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictionin5GS.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRrestrictionin5GS.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRrestrictionin5GS_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRrestrictionin5GS_value2enum_1[] = { + { 0, 17, "nRrestrictedin5GS" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRrestrictionin5GS_enum2value_1[] = { + 0 /* nRrestrictedin5GS(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRrestrictionin5GS_specs_1 = { + asn_MAP_NRrestrictionin5GS_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRrestrictionin5GS_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRrestrictionin5GS_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRrestrictionin5GS = { + "NRrestrictionin5GS", + "NRrestrictionin5GS", + &asn_OP_NativeEnumerated, + asn_DEF_NRrestrictionin5GS_tags_1, + sizeof(asn_DEF_NRrestrictionin5GS_tags_1) + /sizeof(asn_DEF_NRrestrictionin5GS_tags_1[0]), /* 1 */ + asn_DEF_NRrestrictionin5GS_tags_1, /* Same as above */ + sizeof(asn_DEF_NRrestrictionin5GS_tags_1) + /sizeof(asn_DEF_NRrestrictionin5GS_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRrestrictionin5GS_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRrestrictionin5GS_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictionin5GS.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictionin5GS.h new file mode 100644 index 0000000..07dfa0f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictionin5GS.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRrestrictionin5GS_H_ +#define _NRrestrictionin5GS_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRrestrictionin5GS { + NRrestrictionin5GS_nRrestrictedin5GS = 0 + /* + * Enumeration is extensible + */ +} e_NRrestrictionin5GS; + +/* NRrestrictionin5GS */ +typedef long NRrestrictionin5GS_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRrestrictionin5GS_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRrestrictionin5GS; +extern const asn_INTEGER_specifics_t asn_SPC_NRrestrictionin5GS_specs_1; +asn_struct_free_f NRrestrictionin5GS_free; +asn_struct_print_f NRrestrictionin5GS_print; +asn_constr_check_f NRrestrictionin5GS_constraint; +ber_type_decoder_f NRrestrictionin5GS_decode_ber; +der_type_encoder_f NRrestrictionin5GS_encode_der; +xer_type_decoder_f NRrestrictionin5GS_decode_xer; +xer_type_encoder_f NRrestrictionin5GS_encode_xer; +per_type_decoder_f NRrestrictionin5GS_decode_uper; +per_type_encoder_f NRrestrictionin5GS_encode_uper; +per_type_decoder_f NRrestrictionin5GS_decode_aper; +per_type_encoder_f NRrestrictionin5GS_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRrestrictionin5GS_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c new file mode 100644 index 0000000..d35bc6f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NRrestrictioninEPSasSecondaryRAT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NRrestrictioninEPSasSecondaryRAT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NRrestrictioninEPSasSecondaryRAT_value2enum_1[] = { + { 0, 31, "nRrestrictedinEPSasSecondaryRAT" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NRrestrictioninEPSasSecondaryRAT_enum2value_1[] = { + 0 /* nRrestrictedinEPSasSecondaryRAT(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NRrestrictioninEPSasSecondaryRAT_specs_1 = { + asn_MAP_NRrestrictioninEPSasSecondaryRAT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NRrestrictioninEPSasSecondaryRAT_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NRrestrictioninEPSasSecondaryRAT = { + "NRrestrictioninEPSasSecondaryRAT", + "NRrestrictioninEPSasSecondaryRAT", + &asn_OP_NativeEnumerated, + asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1, + sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1) + /sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1[0]), /* 1 */ + asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1, /* Same as above */ + sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1) + /sizeof(asn_DEF_NRrestrictioninEPSasSecondaryRAT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NRrestrictioninEPSasSecondaryRAT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NRrestrictioninEPSasSecondaryRAT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h new file mode 100644 index 0000000..96953ee --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NRrestrictioninEPSasSecondaryRAT.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NRrestrictioninEPSasSecondaryRAT_H_ +#define _NRrestrictioninEPSasSecondaryRAT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NRrestrictioninEPSasSecondaryRAT { + NRrestrictioninEPSasSecondaryRAT_nRrestrictedinEPSasSecondaryRAT = 0 + /* + * Enumeration is extensible + */ +} e_NRrestrictioninEPSasSecondaryRAT; + +/* NRrestrictioninEPSasSecondaryRAT */ +typedef long NRrestrictioninEPSasSecondaryRAT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NRrestrictioninEPSasSecondaryRAT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NRrestrictioninEPSasSecondaryRAT; +extern const asn_INTEGER_specifics_t asn_SPC_NRrestrictioninEPSasSecondaryRAT_specs_1; +asn_struct_free_f NRrestrictioninEPSasSecondaryRAT_free; +asn_struct_print_f NRrestrictioninEPSasSecondaryRAT_print; +asn_constr_check_f NRrestrictioninEPSasSecondaryRAT_constraint; +ber_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_ber; +der_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_der; +xer_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_xer; +xer_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_xer; +per_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_uper; +per_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_uper; +per_type_decoder_f NRrestrictioninEPSasSecondaryRAT_decode_aper; +per_type_encoder_f NRrestrictioninEPSasSecondaryRAT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NRrestrictioninEPSasSecondaryRAT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c new file mode 100644 index 0000000..e65549c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NSSS-NumOccasionDifferentPrecoder.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NSSS_NumOccasionDifferentPrecoder_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NSSS_NumOccasionDifferentPrecoder_value2enum_1[] = { + { 0, 3, "two" }, + { 1, 4, "four" }, + { 2, 5, "eight" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NSSS_NumOccasionDifferentPrecoder_enum2value_1[] = { + 2, /* eight(2) */ + 1, /* four(1) */ + 0 /* two(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NSSS_NumOccasionDifferentPrecoder_specs_1 = { + asn_MAP_NSSS_NumOccasionDifferentPrecoder_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NSSS_NumOccasionDifferentPrecoder_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NSSS_NumOccasionDifferentPrecoder = { + "NSSS-NumOccasionDifferentPrecoder", + "NSSS-NumOccasionDifferentPrecoder", + &asn_OP_NativeEnumerated, + asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1, + sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1) + /sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1[0]), /* 1 */ + asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1, /* Same as above */ + sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1) + /sizeof(asn_DEF_NSSS_NumOccasionDifferentPrecoder_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NSSS_NumOccasionDifferentPrecoder_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NSSS_NumOccasionDifferentPrecoder_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h new file mode 100644 index 0000000..dcb433f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NSSS-NumOccasionDifferentPrecoder.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NSSS_NumOccasionDifferentPrecoder_H_ +#define _NSSS_NumOccasionDifferentPrecoder_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NSSS_NumOccasionDifferentPrecoder { + NSSS_NumOccasionDifferentPrecoder_two = 0, + NSSS_NumOccasionDifferentPrecoder_four = 1, + NSSS_NumOccasionDifferentPrecoder_eight = 2 + /* + * Enumeration is extensible + */ +} e_NSSS_NumOccasionDifferentPrecoder; + +/* NSSS-NumOccasionDifferentPrecoder */ +typedef long NSSS_NumOccasionDifferentPrecoder_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NSSS_NumOccasionDifferentPrecoder_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NSSS_NumOccasionDifferentPrecoder; +extern const asn_INTEGER_specifics_t asn_SPC_NSSS_NumOccasionDifferentPrecoder_specs_1; +asn_struct_free_f NSSS_NumOccasionDifferentPrecoder_free; +asn_struct_print_f NSSS_NumOccasionDifferentPrecoder_print; +asn_constr_check_f NSSS_NumOccasionDifferentPrecoder_constraint; +ber_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_ber; +der_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_der; +xer_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_xer; +xer_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_xer; +per_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_uper; +per_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_uper; +per_type_decoder_f NSSS_NumOccasionDifferentPrecoder_decode_aper; +per_type_encoder_f NSSS_NumOccasionDifferentPrecoder_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NSSS_NumOccasionDifferentPrecoder_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NULL.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NULL.c new file mode 100644 index 0000000..332b97e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NULL.c @@ -0,0 +1,300 @@ + +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include /* Implemented in terms of BOOLEAN type */ + +/* + * NULL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn_TYPE_operation_t asn_OP_NULL = { + BOOLEAN_free, + NULL_print, + NULL_compare, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_decode_xer, + NULL_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NULL_decode_oer, + NULL_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NULL_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + &asn_OP_NULL, + asn_DEF_NULL_tags, + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + asn_DEF_NULL_tags, /* Same as above */ + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} + +int +NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(sptr) { + return (cb("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +#ifndef ASN_DISABLE_OER_SUPPORT + +asn_dec_rval_t +NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t rv = {RC_OK, 0}; + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)ptr; + (void)size; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + return rv; +} + +asn_enc_rval_t +NULL_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)constraints; + (void)cb; + (void)app_key; + + er.encoded = 0; /* Encoding in 0 bytes. */ + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + NULL_t *st = *sptr; + + (void)td; + (void)constr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + return result_ok; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NULL.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NULL.h new file mode 100644 index 0000000..196661e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NULL.h @@ -0,0 +1,46 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless: see BOOLEAN if you want to + * carry true/false semantics. + */ +typedef int NULL_t; + +extern asn_TYPE_descriptor_t asn_DEF_NULL; +extern asn_TYPE_operation_t asn_OP_NULL; + +asn_struct_print_f NULL_print; +asn_struct_compare_f NULL_compare; +der_type_encoder_f NULL_encode_der; +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +asn_random_fill_f NULL_random_fill; + +#define NULL_free BOOLEAN_free +#define NULL_decode_ber BOOLEAN_decode_ber +#define NULL_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeEnumerated.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeEnumerated.c new file mode 100644 index 0000000..1bce30c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeEnumerated.c @@ -0,0 +1,368 @@ + +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeEnumerated_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct = NULL; // BMC + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +static int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct = NULL; // BMC + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct && ct->range_bits >= 0) { // BMC + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct = NULL; // BMC + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct = NULL; // BMC + int inext = 0; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct && ct->range_bits >= 0) { // BMC + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct && ct->flags & APC_EXTENSIBLE) { // BMC + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeEnumerated.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeEnumerated.h new file mode 100644 index 0000000..ad3a5ab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeEnumerated.h @@ -0,0 +1,46 @@ + +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +xer_type_encoder_f NativeEnumerated_encode_xer; +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; + +#define NativeEnumerated_free NativeInteger_free +#define NativeEnumerated_print NativeInteger_print +#define NativeEnumerated_compare NativeInteger_compare +#define NativeEnumerated_random_fill NativeInteger_random_fill +#define NativeEnumerated_constraint asn_generic_no_constraint +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#define NativeEnumerated_decode_xer NativeInteger_decode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeInteger.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeInteger.c new file mode 100644 index 0000000..93d9858 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeInteger.c @@ -0,0 +1,551 @@ + +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeInteger_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occured, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeInteger.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeInteger.h new file mode 100644 index 0000000..1c5cccf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NativeInteger.h @@ -0,0 +1,47 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +asn_struct_compare_f NativeInteger_compare; +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +asn_random_fill_f NativeInteger_random_fill; + +#define NativeInteger_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Neighbour-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Neighbour-Information.c new file mode 100644 index 0000000..7cc28fc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Neighbour-Information.c @@ -0,0 +1,147 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Neighbour-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_Neighbour_Information_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 0, 512 } /* (SIZE(0..512)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information__Member, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information__Member, pCI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information__Member, eARFCN), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eARFCN" + }, + { ATF_POINTER, 1, offsetof(struct Neighbour_Information__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P172, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eCGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pCI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct Neighbour_Information__Member), + offsetof(struct Neighbour_Information__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Neighbour_Information_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Neighbour_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_Neighbour_Information_specs_1 = { + sizeof(struct Neighbour_Information), + offsetof(struct Neighbour_Information, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Neighbour_Information = { + "Neighbour-Information", + "Neighbour-Information", + &asn_OP_SEQUENCE_OF, + asn_DEF_Neighbour_Information_tags_1, + sizeof(asn_DEF_Neighbour_Information_tags_1) + /sizeof(asn_DEF_Neighbour_Information_tags_1[0]), /* 1 */ + asn_DEF_Neighbour_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_Neighbour_Information_tags_1) + /sizeof(asn_DEF_Neighbour_Information_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Neighbour_Information_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_Neighbour_Information_1, + 1, /* Single element */ + &asn_SPC_Neighbour_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Neighbour-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Neighbour-Information.h new file mode 100644 index 0000000..172646e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Neighbour-Information.h @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Neighbour_Information_H_ +#define _Neighbour_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ECGI.h" +#include "PCI.h" +#include "EARFCN.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct Neighbour_Information__Member { + ECGI_t eCGI; + PCI_t pCI; + EARFCN_t eARFCN; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Neighbour_Information__Member; + +/* Neighbour-Information */ +typedef struct Neighbour_Information { + A_SEQUENCE_OF(Neighbour_Information__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Neighbour_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Neighbour_Information; +extern asn_SET_OF_specifics_t asn_SPC_Neighbour_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_Neighbour_Information_1[1]; +extern asn_per_constraints_t asn_PER_type_Neighbour_Information_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Neighbour_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NewDRBIDrequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NewDRBIDrequest.c new file mode 100644 index 0000000..75f01ba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NewDRBIDrequest.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NewDRBIDrequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NewDRBIDrequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_NewDRBIDrequest_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_NewDRBIDrequest_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_NewDRBIDrequest_specs_1 = { + asn_MAP_NewDRBIDrequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_NewDRBIDrequest_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_NewDRBIDrequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NewDRBIDrequest = { + "NewDRBIDrequest", + "NewDRBIDrequest", + &asn_OP_NativeEnumerated, + asn_DEF_NewDRBIDrequest_tags_1, + sizeof(asn_DEF_NewDRBIDrequest_tags_1) + /sizeof(asn_DEF_NewDRBIDrequest_tags_1[0]), /* 1 */ + asn_DEF_NewDRBIDrequest_tags_1, /* Same as above */ + sizeof(asn_DEF_NewDRBIDrequest_tags_1) + /sizeof(asn_DEF_NewDRBIDrequest_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NewDRBIDrequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_NewDRBIDrequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NewDRBIDrequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NewDRBIDrequest.h new file mode 100644 index 0000000..c546748 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NewDRBIDrequest.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NewDRBIDrequest_H_ +#define _NewDRBIDrequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum NewDRBIDrequest { + NewDRBIDrequest_true = 0 + /* + * Enumeration is extensible + */ +} e_NewDRBIDrequest; + +/* NewDRBIDrequest */ +typedef long NewDRBIDrequest_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NewDRBIDrequest_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NewDRBIDrequest; +extern const asn_INTEGER_specifics_t asn_SPC_NewDRBIDrequest_specs_1; +asn_struct_free_f NewDRBIDrequest_free; +asn_struct_print_f NewDRBIDrequest_print; +asn_constr_check_f NewDRBIDrequest_constraint; +ber_type_decoder_f NewDRBIDrequest_decode_ber; +der_type_encoder_f NewDRBIDrequest_encode_der; +xer_type_decoder_f NewDRBIDrequest_decode_xer; +xer_type_encoder_f NewDRBIDrequest_encode_xer; +per_type_decoder_f NewDRBIDrequest_decode_uper; +per_type_encoder_f NewDRBIDrequest_encode_uper; +per_type_decoder_f NewDRBIDrequest_decode_aper; +per_type_encoder_f NewDRBIDrequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NewDRBIDrequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NextHopChainingCount.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NextHopChainingCount.c new file mode 100644 index 0000000..b9d72cc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NextHopChainingCount.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "NextHopChainingCount.h" + +int +NextHopChainingCount_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_NextHopChainingCount_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_NextHopChainingCount_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_NextHopChainingCount = { + "NextHopChainingCount", + "NextHopChainingCount", + &asn_OP_NativeInteger, + asn_DEF_NextHopChainingCount_tags_1, + sizeof(asn_DEF_NextHopChainingCount_tags_1) + /sizeof(asn_DEF_NextHopChainingCount_tags_1[0]), /* 1 */ + asn_DEF_NextHopChainingCount_tags_1, /* Same as above */ + sizeof(asn_DEF_NextHopChainingCount_tags_1) + /sizeof(asn_DEF_NextHopChainingCount_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_NextHopChainingCount_constr_1, NextHopChainingCount_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NextHopChainingCount.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NextHopChainingCount.h new file mode 100644 index 0000000..b6905ac --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/NextHopChainingCount.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _NextHopChainingCount_H_ +#define _NextHopChainingCount_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* NextHopChainingCount */ +typedef long NextHopChainingCount_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_NextHopChainingCount_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_NextHopChainingCount; +asn_struct_free_f NextHopChainingCount_free; +asn_struct_print_f NextHopChainingCount_print; +asn_constr_check_f NextHopChainingCount_constraint; +ber_type_decoder_f NextHopChainingCount_decode_ber; +der_type_encoder_f NextHopChainingCount_encode_der; +xer_type_decoder_f NextHopChainingCount_decode_xer; +xer_type_encoder_f NextHopChainingCount_encode_xer; +per_type_decoder_f NextHopChainingCount_decode_uper; +per_type_encoder_f NextHopChainingCount_encode_uper; +per_type_decoder_f NextHopChainingCount_decode_aper; +per_type_encoder_f NextHopChainingCount_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _NextHopChainingCount_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Number-of-Antennaports.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Number-of-Antennaports.c new file mode 100644 index 0000000..077d4c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Number-of-Antennaports.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Number-of-Antennaports.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Number_of_Antennaports_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Number_of_Antennaports_value2enum_1[] = { + { 0, 3, "an1" }, + { 1, 3, "an2" }, + { 2, 3, "an4" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Number_of_Antennaports_enum2value_1[] = { + 0, /* an1(0) */ + 1, /* an2(1) */ + 2 /* an4(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Number_of_Antennaports_specs_1 = { + asn_MAP_Number_of_Antennaports_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Number_of_Antennaports_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Number_of_Antennaports_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Number_of_Antennaports = { + "Number-of-Antennaports", + "Number-of-Antennaports", + &asn_OP_NativeEnumerated, + asn_DEF_Number_of_Antennaports_tags_1, + sizeof(asn_DEF_Number_of_Antennaports_tags_1) + /sizeof(asn_DEF_Number_of_Antennaports_tags_1[0]), /* 1 */ + asn_DEF_Number_of_Antennaports_tags_1, /* Same as above */ + sizeof(asn_DEF_Number_of_Antennaports_tags_1) + /sizeof(asn_DEF_Number_of_Antennaports_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Number_of_Antennaports_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Number_of_Antennaports_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Number-of-Antennaports.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Number-of-Antennaports.h new file mode 100644 index 0000000..fedf59b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Number-of-Antennaports.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Number_of_Antennaports_H_ +#define _Number_of_Antennaports_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Number_of_Antennaports { + Number_of_Antennaports_an1 = 0, + Number_of_Antennaports_an2 = 1, + Number_of_Antennaports_an4 = 2 + /* + * Enumeration is extensible + */ +} e_Number_of_Antennaports; + +/* Number-of-Antennaports */ +typedef long Number_of_Antennaports_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Number_of_Antennaports_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Number_of_Antennaports; +extern const asn_INTEGER_specifics_t asn_SPC_Number_of_Antennaports_specs_1; +asn_struct_free_f Number_of_Antennaports_free; +asn_struct_print_f Number_of_Antennaports_print; +asn_constr_check_f Number_of_Antennaports_constraint; +ber_type_decoder_f Number_of_Antennaports_decode_ber; +der_type_encoder_f Number_of_Antennaports_encode_der; +xer_type_decoder_f Number_of_Antennaports_decode_xer; +xer_type_encoder_f Number_of_Antennaports_encode_xer; +per_type_decoder_f Number_of_Antennaports_decode_uper; +per_type_encoder_f Number_of_Antennaports_encode_uper; +per_type_decoder_f Number_of_Antennaports_decode_aper; +per_type_encoder_f Number_of_Antennaports_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Number_of_Antennaports_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c new file mode 100644 index 0000000..94c91fc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.c @@ -0,0 +1,657 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include /* for CHAR_BIT */ +#include + +/* + * OBJECT IDENTIFIER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)) +}; +asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = { + ASN__PRIMITIVE_TYPE_free, + OBJECT_IDENTIFIER_print, + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ + ber_decode_primitive, + der_encode_primitive, + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OBJECT_IDENTIFIER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + &asn_OP_OBJECT_IDENTIFIER, + asn_DEF_OBJECT_IDENTIFIER_tags, + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */ + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + { 0, 0, OBJECT_IDENTIFIER_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + asn_oid_arc_t upper_limit = (ASN_OID_ARC_MAX >> 7); + /* When the value reaches "upper_limit", it can take */ + /* at most one more digit. If it exceeds "upper_limit" */ + /* but there are more digits - it's an Overflow condition */ + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { // no more digits + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } else { // to make sure we aren't wrapping around + if(accum > upper_limit) { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +static ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[32]; + asn_oid_arc_t arc0, arc1; + size_t produced = 0; + size_t off = 0; + ssize_t rd; + int ret; + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + + ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) + return -1; + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + assert(off <= st->size); + ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) return -1; + } + } + + if(off != st->size) { + ASN_DEBUG("Could not scan to the end of Object Identifier"); + return -1; + } + + return produced; +} + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr; + const char *chunk_end = (const char *)chunk_buf + chunk_size; + const char *endptr; + asn_oid_arc_t s_arcs[10]; + asn_oid_arc_t *arcs = s_arcs; + ssize_t num_arcs; + ssize_t ret; + + (void)td; + + num_arcs = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr); + if(num_arcs < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(num_arcs == 0) { + return XPBD_NOT_BODY_IGNORE; + } + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +int +OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb("{ ", 2, app_key) < 0) + return -1; + + if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) { + return -1; + } + + return (cb(" }", 2, app_key) < 0) ? -1 : 0; +} + +ssize_t +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs, + size_t arc_slots) { + asn_oid_arc_t arc0, arc1; + size_t num_arcs = 0; + size_t off; + ssize_t rd; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + num_arcs = 2; + switch(arc_slots) { + default: + case 2: + arcs[1] = arc1; + /* Fall through */ + case 1: + arcs[0] = arc0; + /* Fall through */ + case 0: + break; + } + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + if(num_arcs < arc_slots) { + arcs[num_arcs] = arc; + } + num_arcs++; + } + } + + if(off != st->size) { + return -1; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +ssize_t +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t value) { + /* + * The following conditions must hold: + * assert(arcbuf); + */ + uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)]; + uint8_t *scratch_end = &scratch[sizeof(scratch)-1]; + uint8_t *b; + size_t result_len; + uint8_t mask; + + for(b = scratch_end, mask = 0; ; mask = 0x80, b--) { + *b = mask | (value & 0x7f); + value >>= 7; + if(!value) { + break; + } + } + + result_len = (scratch_end - b) + 1; + + if(result_len > arcbuf_len) { + return -1; + } + + memcpy(arcbuf, b, result_len); + + return result_len; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs, + size_t arc_slots) { + uint8_t *buf; + uint8_t *bp; + ssize_t wrote; + asn_oid_arc_t arc0; + asn_oid_arc_t arc1; + size_t size; + size_t i; + + if(!st || !arcs || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + arc0 = arcs[0]; + arc1 = arcs[1]; + + if(arc0 <= 1) { + if(arc1 >= 40) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + errno = ERANGE; + return -1; + } + } else if(arc0 == 2) { + if(arc1 > ASN_OID_ARC_MAX - 80) { + errno = ERANGE; + return -1; + } + } else if(arc0 > 2) { + /* 8.19.4: Only three values are allocated from the root node */ + errno = ERANGE; + return -1; + } + + /* + * After above tests it is known that the value of arc0 is completely + * trustworthy (0..2). However, the arc1's value is still meaningless. + */ + + /* + * Roughly estimate the maximum size necessary to encode these arcs. + * This estimation implicitly takes in account the following facts, + * that cancel each other: + * * the first two arcs are encoded in a single value. + * * the first value may require more space (+1 byte) + * * the value of the first arc which is in range (0..2) + */ + size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + + for(i = 2; i < arc_slots; i++) { + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + } + + /* + * Replace buffer. + */ + st->size = bp - buf; + bp = st->buf; + st->buf = buf; + st->buf[st->size] = '\0'; + if(bp) FREEMEM(bp); + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end) { + size_t num_arcs = 0; + const char *oid_end; + enum { + ST_LEADSPACE, + ST_TAILSPACE, + ST_AFTERVALUE, /* Next character ought to be '.' or a space */ + ST_WAITDIGITS /* Next character is expected to be a digit */ + } state = ST_LEADSPACE; + + if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) { + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + errno = EINVAL; + return -1; + } + + if(oid_txt_length == -1) + oid_txt_length = strlen(oid_text); + +#define _OID_CAPTURE_ARC(oid_text, oid_end) \ + do { \ + const char *endp = oid_end; \ + unsigned long value; \ + switch(asn_strtoul_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOX_EXTRA_DATA: \ + case ASN_STRTOX_OK: \ + if(value <= ASN_OID_ARC_MAX) { \ + if(num_arcs < arcs_count) arcs[num_arcs] = value; \ + num_arcs++; \ + oid_text = endp - 1; \ + break; \ + } \ + /* Fall through */ \ + case ASN_STRTOX_ERROR_RANGE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOX_ERROR_INVAL: \ + case ASN_STRTOX_EXPECT_MORE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = EINVAL; \ + return -1; \ + } \ + } while(0) + + for(oid_end = oid_text + oid_txt_length; oid_text broken OID */ + return -1; + case ST_LEADSPACE: + case ST_WAITDIGITS: + _OID_CAPTURE_ARC(oid_text, oid_end); + state = ST_AFTERVALUE; + continue; + } + break; + default: + /* Unexpected symbols */ + state = ST_WAITDIGITS; + break; + } /* switch() */ + break; + } /* for() */ + + + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + + /* Finalize last arc */ + switch(state) { + case ST_LEADSPACE: + return 0; /* No OID found in input data */ + case ST_WAITDIGITS: + errno = EINVAL; /* Broken OID */ + return -1; + case ST_AFTERVALUE: + case ST_TAILSPACE: + return num_arcs; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} + +/* + * Generate values from the list of interesting values, or just a random + * value up to the upper limit. + */ +static asn_oid_arc_t +OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) { + const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256}; + size_t idx; + + switch(asn_random_between(0, 2)) { + case 0: + idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1); + if(values[idx] < upper_bound) { + return values[idx]; + } + /* Fall through */ + case 1: + return asn_random_between(0, upper_bound); + case 2: + default: + return upper_bound; + } +} + +asn_random_fill_result_t +OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + OBJECT_IDENTIFIER_t *st; + asn_oid_arc_t arcs[5]; + size_t arcs_len = asn_random_between(2, 5); + size_t i; + + (void)constraints; + + if(max_length < arcs_len) return result_skipped; + + if(*sptr) { + st = *sptr; + } else { + st = CALLOC(1, sizeof(*st)); + } + + arcs[0] = asn_random_between(0, 2); + arcs[1] = OBJECT_IDENTIFIER__biased_random_arc( + arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80)); + for(i = 2; i < arcs_len; i++) { + arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX); + } + + if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) { + if(st != *sptr) { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + *sptr = st; + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h new file mode 100644 index 0000000..5c70aac --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OBJECT_IDENTIFIER.h @@ -0,0 +1,157 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t asn_oid_arc_t; +#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0)) + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER; +extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER; + +asn_struct_print_f OBJECT_IDENTIFIER_print; +asn_constr_check_f OBJECT_IDENTIFIER_constraint; +der_type_encoder_f OBJECT_IDENTIFIER_encode_der; +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* + * This function fills an (arcs) array with OBJECT IDENTIFIER arcs + * up to specified (arc_slots) elements. + * + * EXAMPLE: + * void print_arcs(OBJECT_IDENTIFIER_t *oid) { + * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first + * asn_oid_arc_t *arcs = fixed_arcs; + * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * ssize_t count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%"PRIu32"\n", arcs[i]); + * + * // Avoid memory leak. + * if(arcs != fixed_arcs) free(arcs); + * } + * + * RETURN VALUES: + * -1/EINVAL: Invalid arguments (oid is missing) + * -1/ERANGE: One or more arcs have value out of array cell type range. + * >=0: Number of arcs contained in the OBJECT IDENTIFIER + * + * WARNING: The function always returns the actual number of arcs, + * even if there is no sufficient (arc_slots) provided. + */ +ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, + asn_oid_arc_t *arcs, size_t arc_slots); + +/* + * This functions initializes the OBJECT IDENTIFIER object with + * the given set of arcs. + * The minimum of two arcs must be present; some restrictions apply. + * RETURN VALUES: + * -1/EINVAL: Invalid arguments + * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions. + * -1/ENOMEM: Memory allocation failed + * 0: The object was initialized with new arcs. + */ +int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, + const asn_oid_arc_t *arcs, size_t arcs_count); + + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX). + * This function is not specific to OBJECT IDENTIFIER, it may be used to parse + * the RELATIVE-OID data, or any other data consisting of dot-separated + * series of numeric values. + * + * If (oid_txt_length == -1), the strlen() will be invoked to determine the + * size of the (oid_text) string. + * + * After return, the optional (opt_oid_text_end) is set to the character after + * the last parsed one. (opt_oid_text_end) is never less than (oid_text). + * + * RETURN VALUES: + * -1: Parse error. + * >= 0: Number of arcs contained in the OBJECT IDENTIFIER. + * + * WARNING: The function always returns the real number of arcs, + * even if there is no sufficient (arc_slots) provided. + * This is useful for (arc_slots) value estimation. + */ +ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, + ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ + +/* + * Retrieve a single arc of size from the (arcbuf) buffer. + * RETURN VALUES: + * -1: Failed to retrieve the value from the (arcbuf). + * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, + size_t arcbuf_len, + asn_oid_arc_t *ret_value); + +/* + * Write the unterminated arc value into the (arcbuf) which has the size at + * least (arcbuf_len). + * RETURN VALUES: + * -1: (arcbuf_len) size is not sufficient to write the value. + * : Number of bytes appended to the arcbuf (<= arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t arc_value); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OCTET_STRING.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OCTET_STRING.c new file mode 100644 index 0000000..cb0c779 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OCTET_STRING.c @@ -0,0 +1,2410 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; + +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +#undef _CH_PHASE +#undef NEXT_PHASE +#undef PREV_PHASE +#define _CH_PHASE(ctx, inc) do { \ + if(ctx->phase == 0) \ + ctx->context = 0; \ + ctx->phase += inc; \ + } while(0) +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do { \ + size_t _bs = (bufsize); /* Append size */ \ + size_t _ns = ctx->context; /* Allocated now */ \ + size_t _es = st->size + _bs; /* Expected size */ \ + /* int is really a typeof(st->size): */ \ + if((int)_es < 0) RETURN(RC_FAIL); \ + if(_ns <= _es) { \ + void *ptr; \ + /* Be nice and round to the memory allocator */ \ + do { _ns = _ns ? _ns << 1 : 16; } \ + while(_ns <= _es); \ + /* int is really a typeof(st->size): */ \ + if((int)_ns < 0) RETURN(RC_FAIL); \ + ptr = REALLOC(st->buf, _ns); \ + if(ptr) { \ + st->buf = (uint8_t *)ptr; \ + ctx->context = _ns; \ + } else { \ + RETURN(RC_FAIL); \ + } \ + ASN_DEBUG("Reallocating into %ld", (long)_ns); \ + } \ + memcpy(st->buf + st->size, bufptr, _bs); \ + /* Convenient nul-termination */ \ + st->buf[_es] = '\0'; \ + st->size = _es; \ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that aquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; + +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + /sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, + app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +static int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +static int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); + repeat = 0; + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + if (raw_len > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], raw_len, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + /* case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; + */ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, sizeinunits, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); + if(ret) ASN__ENCODE_FAILED; + } + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %lu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = aper_put_length(po, -1, sizeinunits); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, + maySave, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + + /* + * Remove decode-time stack. + */ + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + + return rnd_len; +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OCTET_STRING.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OCTET_STRING.h new file mode 100644 index 0000000..4e9877d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OCTET_STRING.h @@ -0,0 +1,103 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +asn_struct_compare_f OCTET_STRING_compare; +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +asn_random_fill_f OCTET_STRING_random_fill; + +#define OCTET_STRING_constraint asn_generic_no_constraint +#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OPEN_TYPE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OPEN_TYPE.c new file mode 100644 index 0000000..3e7d785 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OPEN_TYPE.c @@ -0,0 +1,510 @@ + +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, + OPEN_TYPE_print, + OPEN_TYPE_compare, + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, 0, /* No OER support, use "-gen-OER" to enable */ +#else + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#endif + 0, /* Random fill is not supported for open type */ + 0 /* Use generic outmost tag fetcher */ +}; + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} + + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OPEN_TYPE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OPEN_TYPE.h new file mode 100644 index 0000000..55c961f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OPEN_TYPE.h @@ -0,0 +1,78 @@ + +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPEN_TYPE_free CHOICE_free +#define OPEN_TYPE_print CHOICE_print +#define OPEN_TYPE_compare CHOICE_compare +#define OPEN_TYPE_constraint CHOICE_constraint +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#define OPEN_TYPE_decode_uper NULL +#define OPEN_TYPE_decode_aper NULL + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ +asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); + +asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c new file mode 100644 index 0000000..7520deb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "OffsetOfNbiotChannelNumberToEARFCN.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_OffsetOfNbiotChannelNumberToEARFCN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 20 } /* (0..20,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_value2enum_1[] = { + { 0, 8, "minusTen" }, + { 1, 9, "minusNine" }, + { 2, 10, "minusEight" }, + { 3, 10, "minusSeven" }, + { 4, 8, "minusSix" }, + { 5, 9, "minusFive" }, + { 6, 9, "minusFour" }, + { 7, 10, "minusThree" }, + { 8, 8, "minusTwo" }, + { 9, 8, "minusOne" }, + { 10, 16, "minusZeroDotFive" }, + { 11, 4, "zero" }, + { 12, 3, "one" }, + { 13, 3, "two" }, + { 14, 5, "three" }, + { 15, 4, "four" }, + { 16, 4, "five" }, + { 17, 3, "six" }, + { 18, 5, "seven" }, + { 19, 5, "eight" }, + { 20, 4, "nine" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_enum2value_1[] = { + 19, /* eight(19) */ + 16, /* five(16) */ + 15, /* four(15) */ + 2, /* minusEight(2) */ + 5, /* minusFive(5) */ + 6, /* minusFour(6) */ + 1, /* minusNine(1) */ + 9, /* minusOne(9) */ + 3, /* minusSeven(3) */ + 4, /* minusSix(4) */ + 0, /* minusTen(0) */ + 7, /* minusThree(7) */ + 8, /* minusTwo(8) */ + 10, /* minusZeroDotFive(10) */ + 20, /* nine(20) */ + 12, /* one(12) */ + 18, /* seven(18) */ + 17, /* six(17) */ + 14, /* three(14) */ + 13, /* two(13) */ + 11 /* zero(11) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_OffsetOfNbiotChannelNumberToEARFCN_specs_1 = { + asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_OffsetOfNbiotChannelNumberToEARFCN_enum2value_1, /* N => "tag"; sorted by N */ + 21, /* Number of elements in the maps */ + 22, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN = { + "OffsetOfNbiotChannelNumberToEARFCN", + "OffsetOfNbiotChannelNumberToEARFCN", + &asn_OP_NativeEnumerated, + asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1, + sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1) + /sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1[0]), /* 1 */ + asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1, /* Same as above */ + sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1) + /sizeof(asn_DEF_OffsetOfNbiotChannelNumberToEARFCN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_OffsetOfNbiotChannelNumberToEARFCN_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_OffsetOfNbiotChannelNumberToEARFCN_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h new file mode 100644 index 0000000..898b18c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/OffsetOfNbiotChannelNumberToEARFCN.h @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _OffsetOfNbiotChannelNumberToEARFCN_H_ +#define _OffsetOfNbiotChannelNumberToEARFCN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum OffsetOfNbiotChannelNumberToEARFCN { + OffsetOfNbiotChannelNumberToEARFCN_minusTen = 0, + OffsetOfNbiotChannelNumberToEARFCN_minusNine = 1, + OffsetOfNbiotChannelNumberToEARFCN_minusEight = 2, + OffsetOfNbiotChannelNumberToEARFCN_minusSeven = 3, + OffsetOfNbiotChannelNumberToEARFCN_minusSix = 4, + OffsetOfNbiotChannelNumberToEARFCN_minusFive = 5, + OffsetOfNbiotChannelNumberToEARFCN_minusFour = 6, + OffsetOfNbiotChannelNumberToEARFCN_minusThree = 7, + OffsetOfNbiotChannelNumberToEARFCN_minusTwo = 8, + OffsetOfNbiotChannelNumberToEARFCN_minusOne = 9, + OffsetOfNbiotChannelNumberToEARFCN_minusZeroDotFive = 10, + OffsetOfNbiotChannelNumberToEARFCN_zero = 11, + OffsetOfNbiotChannelNumberToEARFCN_one = 12, + OffsetOfNbiotChannelNumberToEARFCN_two = 13, + OffsetOfNbiotChannelNumberToEARFCN_three = 14, + OffsetOfNbiotChannelNumberToEARFCN_four = 15, + OffsetOfNbiotChannelNumberToEARFCN_five = 16, + OffsetOfNbiotChannelNumberToEARFCN_six = 17, + OffsetOfNbiotChannelNumberToEARFCN_seven = 18, + OffsetOfNbiotChannelNumberToEARFCN_eight = 19, + OffsetOfNbiotChannelNumberToEARFCN_nine = 20 + /* + * Enumeration is extensible + */ +} e_OffsetOfNbiotChannelNumberToEARFCN; + +/* OffsetOfNbiotChannelNumberToEARFCN */ +typedef long OffsetOfNbiotChannelNumberToEARFCN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_OffsetOfNbiotChannelNumberToEARFCN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_OffsetOfNbiotChannelNumberToEARFCN; +extern const asn_INTEGER_specifics_t asn_SPC_OffsetOfNbiotChannelNumberToEARFCN_specs_1; +asn_struct_free_f OffsetOfNbiotChannelNumberToEARFCN_free; +asn_struct_print_f OffsetOfNbiotChannelNumberToEARFCN_print; +asn_constr_check_f OffsetOfNbiotChannelNumberToEARFCN_constraint; +ber_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_ber; +der_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_der; +xer_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_xer; +xer_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_xer; +per_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_uper; +per_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_uper; +per_type_decoder_f OffsetOfNbiotChannelNumberToEARFCN_decode_aper; +per_type_encoder_f OffsetOfNbiotChannelNumberToEARFCN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _OffsetOfNbiotChannelNumberToEARFCN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Old-ECGIs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Old-ECGIs.c new file mode 100644 index 0000000..9df9301 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Old-ECGIs.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Old-ECGIs.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_Old_ECGIs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Old_ECGIs_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_Old_ECGIs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_Old_ECGIs_specs_1 = { + sizeof(struct Old_ECGIs), + offsetof(struct Old_ECGIs, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_Old_ECGIs = { + "Old-ECGIs", + "Old-ECGIs", + &asn_OP_SEQUENCE_OF, + asn_DEF_Old_ECGIs_tags_1, + sizeof(asn_DEF_Old_ECGIs_tags_1) + /sizeof(asn_DEF_Old_ECGIs_tags_1[0]), /* 1 */ + asn_DEF_Old_ECGIs_tags_1, /* Same as above */ + sizeof(asn_DEF_Old_ECGIs_tags_1) + /sizeof(asn_DEF_Old_ECGIs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Old_ECGIs_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_Old_ECGIs_1, + 1, /* Single element */ + &asn_SPC_Old_ECGIs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Old-ECGIs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Old-ECGIs.h new file mode 100644 index 0000000..ed2c70a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Old-ECGIs.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Old_ECGIs_H_ +#define _Old_ECGIs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* Old-ECGIs */ +typedef struct Old_ECGIs { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Old_ECGIs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Old_ECGIs; + +#ifdef __cplusplus +} +#endif + +#endif /* _Old_ECGIs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Oneframe.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Oneframe.c new file mode 100644 index 0000000..c8b8843 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Oneframe.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Oneframe.h" + +int +Oneframe_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 6)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Oneframe_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 6, 6 } /* (SIZE(6..6)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Oneframe_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Oneframe = { + "Oneframe", + "Oneframe", + &asn_OP_BIT_STRING, + asn_DEF_Oneframe_tags_1, + sizeof(asn_DEF_Oneframe_tags_1) + /sizeof(asn_DEF_Oneframe_tags_1[0]), /* 1 */ + asn_DEF_Oneframe_tags_1, /* Same as above */ + sizeof(asn_DEF_Oneframe_tags_1) + /sizeof(asn_DEF_Oneframe_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Oneframe_constr_1, Oneframe_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Oneframe.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Oneframe.h new file mode 100644 index 0000000..e28c5ff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Oneframe.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Oneframe_H_ +#define _Oneframe_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Oneframe */ +typedef BIT_STRING_t Oneframe_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Oneframe_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Oneframe; +asn_struct_free_f Oneframe_free; +asn_struct_print_f Oneframe_print; +asn_constr_check_f Oneframe_constraint; +ber_type_decoder_f Oneframe_decode_ber; +der_type_encoder_f Oneframe_encode_der; +xer_type_decoder_f Oneframe_decode_xer; +xer_type_encoder_f Oneframe_encode_xer; +per_type_decoder_f Oneframe_decode_uper; +per_type_encoder_f Oneframe_encode_uper; +per_type_decoder_f Oneframe_decode_aper; +per_type_encoder_f Oneframe_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Oneframe_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PA-Values.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PA-Values.c new file mode 100644 index 0000000..5dc100d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PA-Values.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PA-Values.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PA_Values_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PA_Values_value2enum_1[] = { + { 0, 4, "dB-6" }, + { 1, 9, "dB-4dot77" }, + { 2, 4, "dB-3" }, + { 3, 9, "dB-1dot77" }, + { 4, 3, "dB0" }, + { 5, 3, "dB1" }, + { 6, 3, "dB2" }, + { 7, 3, "dB3" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PA_Values_enum2value_1[] = { + 3, /* dB-1dot77(3) */ + 2, /* dB-3(2) */ + 1, /* dB-4dot77(1) */ + 0, /* dB-6(0) */ + 4, /* dB0(4) */ + 5, /* dB1(5) */ + 6, /* dB2(6) */ + 7 /* dB3(7) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PA_Values_specs_1 = { + asn_MAP_PA_Values_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PA_Values_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 9, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PA_Values_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PA_Values = { + "PA-Values", + "PA-Values", + &asn_OP_NativeEnumerated, + asn_DEF_PA_Values_tags_1, + sizeof(asn_DEF_PA_Values_tags_1) + /sizeof(asn_DEF_PA_Values_tags_1[0]), /* 1 */ + asn_DEF_PA_Values_tags_1, /* Same as above */ + sizeof(asn_DEF_PA_Values_tags_1) + /sizeof(asn_DEF_PA_Values_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PA_Values_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PA_Values_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PA-Values.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PA-Values.h new file mode 100644 index 0000000..1737a66 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PA-Values.h @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PA_Values_H_ +#define _PA_Values_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PA_Values { + PA_Values_dB_6 = 0, + PA_Values_dB_4dot77 = 1, + PA_Values_dB_3 = 2, + PA_Values_dB_1dot77 = 3, + PA_Values_dB0 = 4, + PA_Values_dB1 = 5, + PA_Values_dB2 = 6, + PA_Values_dB3 = 7 + /* + * Enumeration is extensible + */ +} e_PA_Values; + +/* PA-Values */ +typedef long PA_Values_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PA_Values_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PA_Values; +extern const asn_INTEGER_specifics_t asn_SPC_PA_Values_specs_1; +asn_struct_free_f PA_Values_free; +asn_struct_print_f PA_Values_print; +asn_constr_check_f PA_Values_constraint; +ber_type_decoder_f PA_Values_decode_ber; +der_type_encoder_f PA_Values_encode_der; +xer_type_decoder_f PA_Values_decode_xer; +xer_type_encoder_f PA_Values_encode_xer; +per_type_decoder_f PA_Values_decode_uper; +per_type_encoder_f PA_Values_encode_uper; +per_type_decoder_f PA_Values_decode_aper; +per_type_encoder_f PA_Values_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PA_Values_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PCI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PCI.c new file mode 100644 index 0000000..6c15ab7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PCI.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PCI.h" + +int +PCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 503)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 0, 503 } /* (0..503,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PCI = { + "PCI", + "PCI", + &asn_OP_NativeInteger, + asn_DEF_PCI_tags_1, + sizeof(asn_DEF_PCI_tags_1) + /sizeof(asn_DEF_PCI_tags_1[0]), /* 1 */ + asn_DEF_PCI_tags_1, /* Same as above */ + sizeof(asn_DEF_PCI_tags_1) + /sizeof(asn_DEF_PCI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PCI_constr_1, PCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PCI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PCI.h new file mode 100644 index 0000000..f027ecf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PCI.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PCI_H_ +#define _PCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PCI */ +typedef long PCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PCI; +asn_struct_free_f PCI_free; +asn_struct_print_f PCI_print; +asn_constr_check_f PCI_constraint; +ber_type_decoder_f PCI_decode_ber; +der_type_encoder_f PCI_encode_der; +xer_type_decoder_f PCI_decode_xer; +xer_type_encoder_f PCI_encode_xer; +per_type_decoder_f PCI_decode_uper; +per_type_encoder_f PCI_encode_uper; +per_type_decoder_f PCI_decode_aper; +per_type_encoder_f PCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PCI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SN.c new file mode 100644 index 0000000..3581b63 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SN.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCP-SN.h" + +int +PDCP_SN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCP_SN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PDCP_SN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCP_SN = { + "PDCP-SN", + "PDCP-SN", + &asn_OP_NativeInteger, + asn_DEF_PDCP_SN_tags_1, + sizeof(asn_DEF_PDCP_SN_tags_1) + /sizeof(asn_DEF_PDCP_SN_tags_1[0]), /* 1 */ + asn_DEF_PDCP_SN_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCP_SN_tags_1) + /sizeof(asn_DEF_PDCP_SN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCP_SN_constr_1, PDCP_SN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SN.h new file mode 100644 index 0000000..d3c5d1b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SN.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCP_SN_H_ +#define _PDCP_SN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PDCP-SN */ +typedef long PDCP_SN_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCP_SN_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCP_SN; +asn_struct_free_f PDCP_SN_free; +asn_struct_print_f PDCP_SN_print; +asn_constr_check_f PDCP_SN_constraint; +ber_type_decoder_f PDCP_SN_decode_ber; +der_type_encoder_f PDCP_SN_encode_der; +xer_type_decoder_f PDCP_SN_decode_xer; +xer_type_encoder_f PDCP_SN_encode_xer; +per_type_decoder_f PDCP_SN_decode_uper; +per_type_encoder_f PDCP_SN_encode_uper; +per_type_decoder_f PDCP_SN_decode_aper; +per_type_encoder_f PDCP_SN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCP_SN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNExtended.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNExtended.c new file mode 100644 index 0000000..663b031 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNExtended.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCP-SNExtended.h" + +int +PDCP_SNExtended_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 32767)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCP_SNExtended_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 15, 15, 0, 32767 } /* (0..32767) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PDCP_SNExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCP_SNExtended = { + "PDCP-SNExtended", + "PDCP-SNExtended", + &asn_OP_NativeInteger, + asn_DEF_PDCP_SNExtended_tags_1, + sizeof(asn_DEF_PDCP_SNExtended_tags_1) + /sizeof(asn_DEF_PDCP_SNExtended_tags_1[0]), /* 1 */ + asn_DEF_PDCP_SNExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCP_SNExtended_tags_1) + /sizeof(asn_DEF_PDCP_SNExtended_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCP_SNExtended_constr_1, PDCP_SNExtended_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNExtended.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNExtended.h new file mode 100644 index 0000000..89ec2d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNExtended.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCP_SNExtended_H_ +#define _PDCP_SNExtended_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PDCP-SNExtended */ +typedef long PDCP_SNExtended_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCP_SNExtended_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCP_SNExtended; +asn_struct_free_f PDCP_SNExtended_free; +asn_struct_print_f PDCP_SNExtended_print; +asn_constr_check_f PDCP_SNExtended_constraint; +ber_type_decoder_f PDCP_SNExtended_decode_ber; +der_type_encoder_f PDCP_SNExtended_encode_der; +xer_type_decoder_f PDCP_SNExtended_decode_xer; +xer_type_encoder_f PDCP_SNExtended_encode_xer; +per_type_decoder_f PDCP_SNExtended_decode_uper; +per_type_encoder_f PDCP_SNExtended_encode_uper; +per_type_decoder_f PDCP_SNExtended_decode_aper; +per_type_encoder_f PDCP_SNExtended_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCP_SNExtended_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNlength18.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNlength18.c new file mode 100644 index 0000000..1345b18 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNlength18.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCP-SNlength18.h" + +int +PDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 262143)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 18, -1, 0, 262143 } /* (0..262143) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCP_SNlength18 = { + "PDCP-SNlength18", + "PDCP-SNlength18", + &asn_OP_NativeInteger, + asn_DEF_PDCP_SNlength18_tags_1, + sizeof(asn_DEF_PDCP_SNlength18_tags_1) + /sizeof(asn_DEF_PDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_PDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCP_SNlength18_tags_1) + /sizeof(asn_DEF_PDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCP_SNlength18_constr_1, PDCP_SNlength18_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNlength18.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNlength18.h new file mode 100644 index 0000000..7bae62f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCP-SNlength18.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCP_SNlength18_H_ +#define _PDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PDCP-SNlength18 */ +typedef long PDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCP_SNlength18; +asn_struct_free_f PDCP_SNlength18_free; +asn_struct_print_f PDCP_SNlength18_print; +asn_constr_check_f PDCP_SNlength18_constraint; +ber_type_decoder_f PDCP_SNlength18_decode_ber; +der_type_encoder_f PDCP_SNlength18_encode_der; +xer_type_decoder_f PDCP_SNlength18_decode_xer; +xer_type_encoder_f PDCP_SNlength18_encode_xer; +per_type_decoder_f PDCP_SNlength18_decode_uper; +per_type_encoder_f PDCP_SNlength18_encode_uper; +per_type_decoder_f PDCP_SNlength18_decode_aper; +per_type_encoder_f PDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPChangeIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPChangeIndication.c new file mode 100644 index 0000000..7a0e227 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPChangeIndication.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCPChangeIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCPChangeIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PDCPChangeIndication_value2enum_1[] = { + { 0, 22, "s-KgNB-update-required" }, + { 1, 27, "pDCP-data-recovery-required" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PDCPChangeIndication_enum2value_1[] = { + 1, /* pDCP-data-recovery-required(1) */ + 0 /* s-KgNB-update-required(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PDCPChangeIndication_specs_1 = { + asn_MAP_PDCPChangeIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PDCPChangeIndication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PDCPChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCPChangeIndication = { + "PDCPChangeIndication", + "PDCPChangeIndication", + &asn_OP_NativeEnumerated, + asn_DEF_PDCPChangeIndication_tags_1, + sizeof(asn_DEF_PDCPChangeIndication_tags_1) + /sizeof(asn_DEF_PDCPChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_PDCPChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCPChangeIndication_tags_1) + /sizeof(asn_DEF_PDCPChangeIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCPChangeIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PDCPChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPChangeIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPChangeIndication.h new file mode 100644 index 0000000..7155547 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPChangeIndication.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCPChangeIndication_H_ +#define _PDCPChangeIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PDCPChangeIndication { + PDCPChangeIndication_s_KgNB_update_required = 0, + PDCPChangeIndication_pDCP_data_recovery_required = 1 + /* + * Enumeration is extensible + */ +} e_PDCPChangeIndication; + +/* PDCPChangeIndication */ +typedef long PDCPChangeIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCPChangeIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCPChangeIndication; +extern const asn_INTEGER_specifics_t asn_SPC_PDCPChangeIndication_specs_1; +asn_struct_free_f PDCPChangeIndication_free; +asn_struct_print_f PDCPChangeIndication_print; +asn_constr_check_f PDCPChangeIndication_constraint; +ber_type_decoder_f PDCPChangeIndication_decode_ber; +der_type_encoder_f PDCPChangeIndication_encode_der; +xer_type_decoder_f PDCPChangeIndication_decode_xer; +xer_type_encoder_f PDCPChangeIndication_encode_xer; +per_type_decoder_f PDCPChangeIndication_decode_uper; +per_type_encoder_f PDCPChangeIndication_encode_uper; +per_type_decoder_f PDCPChangeIndication_decode_aper; +per_type_encoder_f PDCPChangeIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCPChangeIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPSnLength.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPSnLength.c new file mode 100644 index 0000000..4c93375 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPSnLength.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PDCPSnLength.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PDCPSnLength_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PDCPSnLength_value2enum_1[] = { + { 0, 11, "twelve-bits" }, + { 1, 13, "eighteen-bits" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PDCPSnLength_enum2value_1[] = { + 1, /* eighteen-bits(1) */ + 0 /* twelve-bits(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PDCPSnLength_specs_1 = { + asn_MAP_PDCPSnLength_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PDCPSnLength_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PDCPSnLength_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PDCPSnLength = { + "PDCPSnLength", + "PDCPSnLength", + &asn_OP_NativeEnumerated, + asn_DEF_PDCPSnLength_tags_1, + sizeof(asn_DEF_PDCPSnLength_tags_1) + /sizeof(asn_DEF_PDCPSnLength_tags_1[0]), /* 1 */ + asn_DEF_PDCPSnLength_tags_1, /* Same as above */ + sizeof(asn_DEF_PDCPSnLength_tags_1) + /sizeof(asn_DEF_PDCPSnLength_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PDCPSnLength_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PDCPSnLength_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPSnLength.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPSnLength.h new file mode 100644 index 0000000..67f0f40 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PDCPSnLength.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PDCPSnLength_H_ +#define _PDCPSnLength_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PDCPSnLength { + PDCPSnLength_twelve_bits = 0, + PDCPSnLength_eighteen_bits = 1 + /* + * Enumeration is extensible + */ +} e_PDCPSnLength; + +/* PDCPSnLength */ +typedef long PDCPSnLength_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PDCPSnLength_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PDCPSnLength; +extern const asn_INTEGER_specifics_t asn_SPC_PDCPSnLength_specs_1; +asn_struct_free_f PDCPSnLength_free; +asn_struct_print_f PDCPSnLength_print; +asn_constr_check_f PDCPSnLength_constraint; +ber_type_decoder_f PDCPSnLength_decode_ber; +der_type_encoder_f PDCPSnLength_encode_der; +xer_type_decoder_f PDCPSnLength_decode_xer; +xer_type_encoder_f PDCPSnLength_encode_xer; +per_type_decoder_f PDCPSnLength_decode_uper; +per_type_encoder_f PDCPSnLength_encode_uper; +per_type_decoder_f PDCPSnLength_decode_aper; +per_type_encoder_f PDCPSnLength_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PDCPSnLength_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMN-Identity.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMN-Identity.c new file mode 100644 index 0000000..884af33 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMN-Identity.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMN-Identity.h" + +int +PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { + "PLMN-Identity", + "PLMN-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMN_Identity_tags_1, + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + asn_DEF_PLMN_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMN-Identity.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMN-Identity.h new file mode 100644 index 0000000..7a3f85c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMN-Identity.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMN_Identity_H_ +#define _PLMN_Identity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMN-Identity */ +typedef OCTET_STRING_t PLMN_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; +asn_struct_free_f PLMN_Identity_free; +asn_struct_print_f PLMN_Identity_print; +asn_constr_check_f PLMN_Identity_constraint; +ber_type_decoder_f PLMN_Identity_decode_ber; +der_type_encoder_f PLMN_Identity_encode_der; +xer_type_decoder_f PLMN_Identity_decode_xer; +xer_type_encoder_f PLMN_Identity_encode_xer; +per_type_decoder_f PLMN_Identity_decode_uper; +per_type_encoder_f PLMN_Identity_encode_uper; +per_type_decoder_f PLMN_Identity_decode_aper; +per_type_encoder_f PLMN_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMN_Identity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c new file mode 100644 index 0000000..5c95de2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNAreaBasedQMC.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMNAreaBasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC, plmnListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMNListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmnListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct PLMNAreaBasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P178, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_PLMNAreaBasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_PLMNAreaBasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PLMNAreaBasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmnListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_specs_1 = { + sizeof(struct PLMNAreaBasedQMC), + offsetof(struct PLMNAreaBasedQMC, _asn_ctx), + asn_MAP_PLMNAreaBasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_PLMNAreaBasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC = { + "PLMNAreaBasedQMC", + "PLMNAreaBasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_PLMNAreaBasedQMC_tags_1, + sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1) + /sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1[0]), /* 1 */ + asn_DEF_PLMNAreaBasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1) + /sizeof(asn_DEF_PLMNAreaBasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PLMNAreaBasedQMC_1, + 2, /* Elements count */ + &asn_SPC_PLMNAreaBasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h new file mode 100644 index 0000000..8f7cf0f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNAreaBasedQMC.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMNAreaBasedQMC_H_ +#define _PLMNAreaBasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMNListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* PLMNAreaBasedQMC */ +typedef struct PLMNAreaBasedQMC { + PLMNListforQMC_t plmnListforQMC; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PLMNAreaBasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMNAreaBasedQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNListforQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNListforQMC.c new file mode 100644 index 0000000..abbc908 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNListforQMC.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PLMNListforQMC.h" + +asn_per_constraints_t asn_PER_type_PLMNListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PLMNListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PLMNListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PLMNListforQMC_specs_1 = { + sizeof(struct PLMNListforQMC), + offsetof(struct PLMNListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PLMNListforQMC = { + "PLMNListforQMC", + "PLMNListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_PLMNListforQMC_tags_1, + sizeof(asn_DEF_PLMNListforQMC_tags_1) + /sizeof(asn_DEF_PLMNListforQMC_tags_1[0]), /* 1 */ + asn_DEF_PLMNListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMNListforQMC_tags_1) + /sizeof(asn_DEF_PLMNListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMNListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_PLMNListforQMC_1, + 1, /* Single element */ + &asn_SPC_PLMNListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNListforQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNListforQMC.h new file mode 100644 index 0000000..5570331 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PLMNListforQMC.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PLMNListforQMC_H_ +#define _PLMNListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMNListforQMC */ +typedef struct PLMNListforQMC { + A_SEQUENCE_OF(PLMN_Identity_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PLMNListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PLMNListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_PLMNListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_PLMNListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_PLMNListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMNListforQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PRACH-Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PRACH-Configuration.c new file mode 100644 index 0000000..ed991b4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PRACH-Configuration.c @@ -0,0 +1,246 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PRACH-Configuration.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_rootSequenceIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 837)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_zeroCorrelationIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_prach_FreqOffset_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 94)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_prach_ConfigIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 63)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_rootSequenceIndex_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 837 } /* (0..837) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_zeroCorrelationIndex_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_prach_FreqOffset_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 94 } /* (0..94) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_prach_ConfigIndex_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 63 } /* (0..63) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PRACH_Configuration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, rootSequenceIndex), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_rootSequenceIndex_constr_2, memb_rootSequenceIndex_constraint_1 }, + 0, 0, /* No default value */ + "rootSequenceIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, zeroCorrelationIndex), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_zeroCorrelationIndex_constr_3, memb_zeroCorrelationIndex_constraint_1 }, + 0, 0, /* No default value */ + "zeroCorrelationIndex" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, highSpeedFlag), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BOOLEAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "highSpeedFlag" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration, prach_FreqOffset), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_prach_FreqOffset_constr_5, memb_prach_FreqOffset_constraint_1 }, + 0, 0, /* No default value */ + "prach-FreqOffset" + }, + { ATF_POINTER, 2, offsetof(struct PRACH_Configuration, prach_ConfigIndex), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_prach_ConfigIndex_constr_6, memb_prach_ConfigIndex_constraint_1 }, + 0, 0, /* No default value */ + "prach-ConfigIndex" + }, + { ATF_POINTER, 1, offsetof(struct PRACH_Configuration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P177, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_PRACH_Configuration_oms_1[] = { 4, 5 }; +static const ber_tlv_tag_t asn_DEF_PRACH_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PRACH_Configuration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rootSequenceIndex */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* zeroCorrelationIndex */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* highSpeedFlag */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* prach-FreqOffset */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* prach-ConfigIndex */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_specs_1 = { + sizeof(struct PRACH_Configuration), + offsetof(struct PRACH_Configuration, _asn_ctx), + asn_MAP_PRACH_Configuration_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_PRACH_Configuration_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration = { + "PRACH-Configuration", + "PRACH-Configuration", + &asn_OP_SEQUENCE, + asn_DEF_PRACH_Configuration_tags_1, + sizeof(asn_DEF_PRACH_Configuration_tags_1) + /sizeof(asn_DEF_PRACH_Configuration_tags_1[0]), /* 1 */ + asn_DEF_PRACH_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_PRACH_Configuration_tags_1) + /sizeof(asn_DEF_PRACH_Configuration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PRACH_Configuration_1, + 6, /* Elements count */ + &asn_SPC_PRACH_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PRACH-Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PRACH-Configuration.h new file mode 100644 index 0000000..15802ff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PRACH-Configuration.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PRACH_Configuration_H_ +#define _PRACH_Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "BOOLEAN.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* PRACH-Configuration */ +typedef struct PRACH_Configuration { + long rootSequenceIndex; + long zeroCorrelationIndex; + BOOLEAN_t highSpeedFlag; + long prach_FreqOffset; + long *prach_ConfigIndex; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PRACH_Configuration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration; +extern asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_specs_1; +extern asn_TYPE_member_t asn_MBR_PRACH_Configuration_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PRACH_Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Packet-LossRate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Packet-LossRate.c new file mode 100644 index 0000000..e2944c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Packet-LossRate.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Packet-LossRate.h" + +int +Packet_LossRate_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Packet_LossRate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1000 } /* (0..1000) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Packet_LossRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Packet_LossRate = { + "Packet-LossRate", + "Packet-LossRate", + &asn_OP_NativeInteger, + asn_DEF_Packet_LossRate_tags_1, + sizeof(asn_DEF_Packet_LossRate_tags_1) + /sizeof(asn_DEF_Packet_LossRate_tags_1[0]), /* 1 */ + asn_DEF_Packet_LossRate_tags_1, /* Same as above */ + sizeof(asn_DEF_Packet_LossRate_tags_1) + /sizeof(asn_DEF_Packet_LossRate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Packet_LossRate_constr_1, Packet_LossRate_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Packet-LossRate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Packet-LossRate.h new file mode 100644 index 0000000..d87dac8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Packet-LossRate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Packet_LossRate_H_ +#define _Packet_LossRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Packet-LossRate */ +typedef long Packet_LossRate_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Packet_LossRate_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Packet_LossRate; +asn_struct_free_f Packet_LossRate_free; +asn_struct_print_f Packet_LossRate_print; +asn_constr_check_f Packet_LossRate_constraint; +ber_type_decoder_f Packet_LossRate_decode_ber; +der_type_encoder_f Packet_LossRate_encode_der; +xer_type_decoder_f Packet_LossRate_decode_xer; +xer_type_encoder_f Packet_LossRate_encode_xer; +per_type_decoder_f Packet_LossRate_decode_uper; +per_type_encoder_f Packet_LossRate_encode_uper; +per_type_decoder_f Packet_LossRate_decode_aper; +per_type_encoder_f Packet_LossRate_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Packet_LossRate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PartialSuccessIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PartialSuccessIndicator.c new file mode 100644 index 0000000..edcccb6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PartialSuccessIndicator.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PartialSuccessIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_PartialSuccessIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PartialSuccessIndicator_value2enum_1[] = { + { 0, 23, "partial-success-allowed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PartialSuccessIndicator_enum2value_1[] = { + 0 /* partial-success-allowed(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_PartialSuccessIndicator_specs_1 = { + asn_MAP_PartialSuccessIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PartialSuccessIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PartialSuccessIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PartialSuccessIndicator = { + "PartialSuccessIndicator", + "PartialSuccessIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_PartialSuccessIndicator_tags_1, + sizeof(asn_DEF_PartialSuccessIndicator_tags_1) + /sizeof(asn_DEF_PartialSuccessIndicator_tags_1[0]), /* 1 */ + asn_DEF_PartialSuccessIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_PartialSuccessIndicator_tags_1) + /sizeof(asn_DEF_PartialSuccessIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PartialSuccessIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PartialSuccessIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PartialSuccessIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PartialSuccessIndicator.h new file mode 100644 index 0000000..e7a6028 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PartialSuccessIndicator.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PartialSuccessIndicator_H_ +#define _PartialSuccessIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PartialSuccessIndicator { + PartialSuccessIndicator_partial_success_allowed = 0 + /* + * Enumeration is extensible + */ +} e_PartialSuccessIndicator; + +/* PartialSuccessIndicator */ +typedef long PartialSuccessIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PartialSuccessIndicator; +asn_struct_free_f PartialSuccessIndicator_free; +asn_struct_print_f PartialSuccessIndicator_print; +asn_constr_check_f PartialSuccessIndicator_constraint; +ber_type_decoder_f PartialSuccessIndicator_decode_ber; +der_type_encoder_f PartialSuccessIndicator_encode_der; +xer_type_decoder_f PartialSuccessIndicator_decode_xer; +xer_type_encoder_f PartialSuccessIndicator_encode_xer; +per_type_decoder_f PartialSuccessIndicator_decode_uper; +per_type_encoder_f PartialSuccessIndicator_encode_uper; +per_type_decoder_f PartialSuccessIndicator_decode_aper; +per_type_encoder_f PartialSuccessIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PartialSuccessIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PedestrianUE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PedestrianUE.c new file mode 100644 index 0000000..f9b973a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PedestrianUE.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PedestrianUE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PedestrianUE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_PedestrianUE_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_PedestrianUE_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_PedestrianUE_specs_1 = { + asn_MAP_PedestrianUE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_PedestrianUE_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_PedestrianUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PedestrianUE = { + "PedestrianUE", + "PedestrianUE", + &asn_OP_NativeEnumerated, + asn_DEF_PedestrianUE_tags_1, + sizeof(asn_DEF_PedestrianUE_tags_1) + /sizeof(asn_DEF_PedestrianUE_tags_1[0]), /* 1 */ + asn_DEF_PedestrianUE_tags_1, /* Same as above */ + sizeof(asn_DEF_PedestrianUE_tags_1) + /sizeof(asn_DEF_PedestrianUE_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PedestrianUE_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_PedestrianUE_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PedestrianUE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PedestrianUE.h new file mode 100644 index 0000000..10e30d8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PedestrianUE.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PedestrianUE_H_ +#define _PedestrianUE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PedestrianUE { + PedestrianUE_authorized = 0, + PedestrianUE_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_PedestrianUE; + +/* PedestrianUE */ +typedef long PedestrianUE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PedestrianUE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PedestrianUE; +extern const asn_INTEGER_specifics_t asn_SPC_PedestrianUE_specs_1; +asn_struct_free_f PedestrianUE_free; +asn_struct_print_f PedestrianUE_print; +asn_constr_check_f PedestrianUE_constraint; +ber_type_decoder_f PedestrianUE_decode_ber; +der_type_encoder_f PedestrianUE_encode_der; +xer_type_decoder_f PedestrianUE_decode_xer; +xer_type_encoder_f PedestrianUE_encode_xer; +per_type_decoder_f PedestrianUE_decode_uper; +per_type_encoder_f PedestrianUE_encode_uper; +per_type_decoder_f PedestrianUE_decode_aper; +per_type_encoder_f PedestrianUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PedestrianUE_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Port-Number.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Port-Number.c new file mode 100644 index 0000000..6da0f12 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Port-Number.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Port-Number.h" + +int +Port_Number_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Port_Number_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Port_Number_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Port_Number = { + "Port-Number", + "Port-Number", + &asn_OP_OCTET_STRING, + asn_DEF_Port_Number_tags_1, + sizeof(asn_DEF_Port_Number_tags_1) + /sizeof(asn_DEF_Port_Number_tags_1[0]), /* 1 */ + asn_DEF_Port_Number_tags_1, /* Same as above */ + sizeof(asn_DEF_Port_Number_tags_1) + /sizeof(asn_DEF_Port_Number_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Port_Number_constr_1, Port_Number_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Port-Number.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Port-Number.h new file mode 100644 index 0000000..b020252 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Port-Number.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Port_Number_H_ +#define _Port_Number_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Port-Number */ +typedef OCTET_STRING_t Port_Number_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Port_Number_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Port_Number; +asn_struct_free_f Port_Number_free; +asn_struct_print_f Port_Number_print; +asn_constr_check_f Port_Number_constraint; +ber_type_decoder_f Port_Number_decode_ber; +der_type_encoder_f Port_Number_encode_der; +xer_type_decoder_f Port_Number_decode_xer; +xer_type_encoder_f Port_Number_encode_xer; +per_type_decoder_f Port_Number_decode_uper; +per_type_encoder_f Port_Number_encode_uper; +per_type_decoder_f Port_Number_decode_aper; +per_type_encoder_f Port_Number_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Port_Number_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionCapability.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionCapability.c new file mode 100644 index 0000000..47df0fc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionCapability.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Pre-emptionCapability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Pre_emptionCapability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Pre_emptionCapability_value2enum_1[] = { + { 0, 29, "shall-not-trigger-pre-emption" }, + { 1, 23, "may-trigger-pre-emption" } +}; +static const unsigned int asn_MAP_Pre_emptionCapability_enum2value_1[] = { + 1, /* may-trigger-pre-emption(1) */ + 0 /* shall-not-trigger-pre-emption(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Pre_emptionCapability_specs_1 = { + asn_MAP_Pre_emptionCapability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Pre_emptionCapability_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Pre_emptionCapability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Pre_emptionCapability = { + "Pre-emptionCapability", + "Pre-emptionCapability", + &asn_OP_NativeEnumerated, + asn_DEF_Pre_emptionCapability_tags_1, + sizeof(asn_DEF_Pre_emptionCapability_tags_1) + /sizeof(asn_DEF_Pre_emptionCapability_tags_1[0]), /* 1 */ + asn_DEF_Pre_emptionCapability_tags_1, /* Same as above */ + sizeof(asn_DEF_Pre_emptionCapability_tags_1) + /sizeof(asn_DEF_Pre_emptionCapability_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Pre_emptionCapability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Pre_emptionCapability_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionCapability.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionCapability.h new file mode 100644 index 0000000..ab8aba4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionCapability.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Pre_emptionCapability_H_ +#define _Pre_emptionCapability_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Pre_emptionCapability { + Pre_emptionCapability_shall_not_trigger_pre_emption = 0, + Pre_emptionCapability_may_trigger_pre_emption = 1 +} e_Pre_emptionCapability; + +/* Pre-emptionCapability */ +typedef long Pre_emptionCapability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Pre_emptionCapability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Pre_emptionCapability; +extern const asn_INTEGER_specifics_t asn_SPC_Pre_emptionCapability_specs_1; +asn_struct_free_f Pre_emptionCapability_free; +asn_struct_print_f Pre_emptionCapability_print; +asn_constr_check_f Pre_emptionCapability_constraint; +ber_type_decoder_f Pre_emptionCapability_decode_ber; +der_type_encoder_f Pre_emptionCapability_encode_der; +xer_type_decoder_f Pre_emptionCapability_decode_xer; +xer_type_encoder_f Pre_emptionCapability_encode_xer; +per_type_decoder_f Pre_emptionCapability_decode_uper; +per_type_encoder_f Pre_emptionCapability_encode_uper; +per_type_decoder_f Pre_emptionCapability_decode_aper; +per_type_encoder_f Pre_emptionCapability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Pre_emptionCapability_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionVulnerability.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionVulnerability.c new file mode 100644 index 0000000..6406864 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionVulnerability.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Pre-emptionVulnerability.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Pre_emptionVulnerability_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Pre_emptionVulnerability_value2enum_1[] = { + { 0, 16, "not-pre-emptable" }, + { 1, 12, "pre-emptable" } +}; +static const unsigned int asn_MAP_Pre_emptionVulnerability_enum2value_1[] = { + 0, /* not-pre-emptable(0) */ + 1 /* pre-emptable(1) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Pre_emptionVulnerability_specs_1 = { + asn_MAP_Pre_emptionVulnerability_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Pre_emptionVulnerability_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Pre_emptionVulnerability_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Pre_emptionVulnerability = { + "Pre-emptionVulnerability", + "Pre-emptionVulnerability", + &asn_OP_NativeEnumerated, + asn_DEF_Pre_emptionVulnerability_tags_1, + sizeof(asn_DEF_Pre_emptionVulnerability_tags_1) + /sizeof(asn_DEF_Pre_emptionVulnerability_tags_1[0]), /* 1 */ + asn_DEF_Pre_emptionVulnerability_tags_1, /* Same as above */ + sizeof(asn_DEF_Pre_emptionVulnerability_tags_1) + /sizeof(asn_DEF_Pre_emptionVulnerability_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Pre_emptionVulnerability_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Pre_emptionVulnerability_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionVulnerability.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionVulnerability.h new file mode 100644 index 0000000..cd900d3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Pre-emptionVulnerability.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Pre_emptionVulnerability_H_ +#define _Pre_emptionVulnerability_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Pre_emptionVulnerability { + Pre_emptionVulnerability_not_pre_emptable = 0, + Pre_emptionVulnerability_pre_emptable = 1 +} e_Pre_emptionVulnerability; + +/* Pre-emptionVulnerability */ +typedef long Pre_emptionVulnerability_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Pre_emptionVulnerability_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Pre_emptionVulnerability; +extern const asn_INTEGER_specifics_t asn_SPC_Pre_emptionVulnerability_specs_1; +asn_struct_free_f Pre_emptionVulnerability_free; +asn_struct_print_f Pre_emptionVulnerability_print; +asn_constr_check_f Pre_emptionVulnerability_constraint; +ber_type_decoder_f Pre_emptionVulnerability_decode_ber; +der_type_encoder_f Pre_emptionVulnerability_encode_der; +xer_type_decoder_f Pre_emptionVulnerability_decode_xer; +xer_type_encoder_f Pre_emptionVulnerability_encode_xer; +per_type_decoder_f Pre_emptionVulnerability_decode_uper; +per_type_encoder_f Pre_emptionVulnerability_encode_uper; +per_type_decoder_f Pre_emptionVulnerability_decode_aper; +per_type_encoder_f Pre_emptionVulnerability_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Pre_emptionVulnerability_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Presence.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Presence.c new file mode 100644 index 0000000..eaa21e1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Presence.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Presence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { + asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Presence = { + "Presence", + "Presence", + &asn_OP_NativeEnumerated, + asn_DEF_Presence_tags_1, + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + asn_DEF_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Presence_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Presence.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Presence.h new file mode 100644 index 0000000..fc7d2d7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Presence.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Presence_H_ +#define _Presence_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Presence { + Presence_optional = 0, + Presence_conditional = 1, + Presence_mandatory = 2 +} e_Presence; + +/* Presence */ +typedef long Presence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Presence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Presence; +extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Presence_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrintableString.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrintableString.c new file mode 100644 index 0000000..ac4621a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrintableString.c @@ -0,0 +1,131 @@ + +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ASN.1:1984 (X.409) + */ +static const int _PrintableString_alphabet[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int _PrintableString_code2value[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122}; + +/* + * PrintableString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +static int asn_DEF_PrintableString_v2c(unsigned int value) { + return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; +} +static int asn_DEF_PrintableString_c2v(unsigned int code) { + if(code < 74) + return _PrintableString_code2value[code]; + return -1; +} +static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { + { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + asn_DEF_PrintableString_v2c, + asn_DEF_PrintableString_c2v +}; +asn_TYPE_operation_t asn_OP_PrintableString = { + OCTET_STRING_free, + OCTET_STRING_print_utf8, /* ASCII subset */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_PrintableString = { + "PrintableString", + "PrintableString", + &asn_OP_PrintableString, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]) - 1, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]), + { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + + /* + * Check the alphabet of the PrintableString. + * ASN.1:1984 (X.409) + */ + for(; buf < end; buf++) { + if(!_PrintableString_alphabet[*buf]) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld (%d) " + "not in PrintableString alphabet " + "(%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrintableString.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrintableString.h new file mode 100644 index 0000000..9a3fbcf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrintableString.h @@ -0,0 +1,38 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PrintableString_H_ +#define _PrintableString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_PrintableString; +extern asn_TYPE_operation_t asn_OP_PrintableString; + +asn_constr_check_f PrintableString_constraint; + +#define PrintableString_free OCTET_STRING_free +#define PrintableString_print OCTET_STRING_print_utf8 +#define PrintableString_compare OCTET_STRING_compare +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper +#define PrintableString_decode_aper OCTET_STRING_decode_aper +#define PrintableString_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PriorityLevel.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PriorityLevel.c new file mode 100644 index 0000000..3c71e4e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PriorityLevel.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PriorityLevel.h" + +int +PriorityLevel_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PriorityLevel_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 15 } /* (0..15) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PriorityLevel_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PriorityLevel = { + "PriorityLevel", + "PriorityLevel", + &asn_OP_NativeInteger, + asn_DEF_PriorityLevel_tags_1, + sizeof(asn_DEF_PriorityLevel_tags_1) + /sizeof(asn_DEF_PriorityLevel_tags_1[0]), /* 1 */ + asn_DEF_PriorityLevel_tags_1, /* Same as above */ + sizeof(asn_DEF_PriorityLevel_tags_1) + /sizeof(asn_DEF_PriorityLevel_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PriorityLevel_constr_1, PriorityLevel_constraint }, + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PriorityLevel.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PriorityLevel.h new file mode 100644 index 0000000..8e4a710 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PriorityLevel.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PriorityLevel_H_ +#define _PriorityLevel_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PriorityLevel { + PriorityLevel_spare = 0, + PriorityLevel_highest = 1, + PriorityLevel_lowest = 14, + PriorityLevel_no_priority = 15 +} e_PriorityLevel; + +/* PriorityLevel */ +typedef long PriorityLevel_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PriorityLevel_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PriorityLevel; +asn_struct_free_f PriorityLevel_free; +asn_struct_print_f PriorityLevel_print; +asn_constr_check_f PriorityLevel_constraint; +ber_type_decoder_f PriorityLevel_decode_ber; +der_type_encoder_f PriorityLevel_encode_der; +xer_type_decoder_f PriorityLevel_decode_xer; +xer_type_encoder_f PriorityLevel_encode_xer; +per_type_decoder_f PriorityLevel_decode_uper; +per_type_encoder_f PriorityLevel_encode_uper; +per_type_decoder_f PriorityLevel_decode_aper; +per_type_encoder_f PriorityLevel_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PriorityLevel_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Container.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Container.c new file mode 100644 index 0000000..7253d56 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Container.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateIE-Container.h" + +#include "PrivateIE-Field.h" +asn_per_constraints_t asn_PER_type_PrivateIE_Container_186P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PrivateIE_Container_186P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PrivateMessage_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateIE_Container_186P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_PrivateIE_Container_186P0_specs_1 = { + sizeof(struct PrivateIE_Container_186P0), + offsetof(struct PrivateIE_Container_186P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_Container_186P0 = { + "PrivateIE-Container", + "PrivateIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_PrivateIE_Container_186P0_tags_1, + sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1[0]), /* 1 */ + asn_DEF_PrivateIE_Container_186P0_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1) + /sizeof(asn_DEF_PrivateIE_Container_186P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PrivateIE_Container_186P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_PrivateIE_Container_186P0_1, + 1, /* Single element */ + &asn_SPC_PrivateIE_Container_186P0_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Container.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Container.h new file mode 100644 index 0000000..a870a48 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Container.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateIE_Container_H_ +#define _PrivateIE_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct PrivateMessage_IEs; + +/* PrivateIE-Container */ +typedef struct PrivateIE_Container_186P0 { + A_SEQUENCE_OF(struct PrivateMessage_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_Container_186P0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_Container_186P0; +extern asn_SET_OF_specifics_t asn_SPC_PrivateIE_Container_186P0_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivateIE_Container_186P0_1[1]; +extern asn_per_constraints_t asn_PER_type_PrivateIE_Container_186P0_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_Container_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Field.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Field.c new file mode 100644 index 0000000..d1de932 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Field.c @@ -0,0 +1,189 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateIE-Field.h" + +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct PrivateMessage_IEs__value), + offsetof(struct PrivateMessage_IEs__value, _asn_ctx), + offsetof(struct PrivateMessage_IEs__value, present), + sizeof(((struct PrivateMessage_IEs__value *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PrivateMessage_IEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_PrivateIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct PrivateMessage_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + 0, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateMessage_IEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateMessage_IEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_IEs_specs_1 = { + sizeof(struct PrivateMessage_IEs), + offsetof(struct PrivateMessage_IEs, _asn_ctx), + asn_MAP_PrivateMessage_IEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateMessage_IEs = { + "PrivateMessage-IEs", + "PrivateMessage-IEs", + &asn_OP_SEQUENCE, + asn_DEF_PrivateMessage_IEs_tags_1, + sizeof(asn_DEF_PrivateMessage_IEs_tags_1) + /sizeof(asn_DEF_PrivateMessage_IEs_tags_1[0]), /* 1 */ + asn_DEF_PrivateMessage_IEs_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateMessage_IEs_tags_1) + /sizeof(asn_DEF_PrivateMessage_IEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PrivateMessage_IEs_1, + 3, /* Elements count */ + &asn_SPC_PrivateMessage_IEs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Field.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Field.h new file mode 100644 index 0000000..dfcde4b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-Field.h @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateIE_Field_H_ +#define _PrivateIE_Field_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrivateIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrivateMessage_IEs__value_PR { + PrivateMessage_IEs__value_PR_NOTHING /* No components present */ + +} PrivateMessage_IEs__value_PR; + +/* PrivateIE-Field */ +typedef struct PrivateMessage_IEs { + PrivateIE_ID_t id; + Criticality_t criticality; + struct PrivateMessage_IEs__value { + PrivateMessage_IEs__value_PR present; + union PrivateMessage_IEs__value_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateMessage_IEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateMessage_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_IEs_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivateMessage_IEs_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_Field_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-ID.c new file mode 100644 index 0000000..21bd59b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-ID.c @@ -0,0 +1,115 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateIE-ID.h" + +static int +memb_local_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_local_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_PrivateIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 1, 1, 0, 1 } /* (0..1) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_PrivateIE_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.local), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_local_constr_2, memb_local_constraint_1 }, + 0, 0, /* No default value */ + "local" + }, + { ATF_NOFLAGS, 0, offsetof(struct PrivateIE_ID, choice.global), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OBJECT_IDENTIFIER, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateIE_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* local */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* global */ +}; +asn_CHOICE_specifics_t asn_SPC_PrivateIE_ID_specs_1 = { + sizeof(struct PrivateIE_ID), + offsetof(struct PrivateIE_ID, _asn_ctx), + offsetof(struct PrivateIE_ID, present), + sizeof(((struct PrivateIE_ID *)0)->present), + asn_MAP_PrivateIE_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID = { + "PrivateIE-ID", + "PrivateIE-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_PrivateIE_ID_constr_1, CHOICE_constraint }, + asn_MBR_PrivateIE_ID_1, + 2, /* Elements count */ + &asn_SPC_PrivateIE_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-ID.h new file mode 100644 index 0000000..49453d7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateIE-ID.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateIE_ID_H_ +#define _PrivateIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "OBJECT_IDENTIFIER.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum PrivateIE_ID_PR { + PrivateIE_ID_PR_NOTHING, /* No components present */ + PrivateIE_ID_PR_local, + PrivateIE_ID_PR_global +} PrivateIE_ID_PR; + +/* PrivateIE-ID */ +typedef struct PrivateIE_ID { + PrivateIE_ID_PR present; + union PrivateIE_ID_u { + long local; + OBJECT_IDENTIFIER_t global; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateIE_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateIE_ID; +extern asn_CHOICE_specifics_t asn_SPC_PrivateIE_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_PrivateIE_ID_1[2]; +extern asn_per_constraints_t asn_PER_type_PrivateIE_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateIE_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateMessage.c new file mode 100644 index 0000000..4679976 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateMessage.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "PrivateMessage.h" + +static asn_TYPE_member_t asn_MBR_PrivateMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct PrivateMessage, privateIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PrivateIE_Container_186P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "privateIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_PrivateMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PrivateMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* privateIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_PrivateMessage_specs_1 = { + sizeof(struct PrivateMessage), + offsetof(struct PrivateMessage, _asn_ctx), + asn_MAP_PrivateMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PrivateMessage = { + "PrivateMessage", + "PrivateMessage", + &asn_OP_SEQUENCE, + asn_DEF_PrivateMessage_tags_1, + sizeof(asn_DEF_PrivateMessage_tags_1) + /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */ + asn_DEF_PrivateMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_PrivateMessage_tags_1) + /sizeof(asn_DEF_PrivateMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PrivateMessage_1, + 1, /* Elements count */ + &asn_SPC_PrivateMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateMessage.h new file mode 100644 index 0000000..25d93d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/PrivateMessage.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _PrivateMessage_H_ +#define _PrivateMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PrivateIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* PrivateMessage */ +typedef struct PrivateMessage { + PrivateIE_Container_186P0_t privateIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PrivateMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_PrivateMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _PrivateMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeAuthorized.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeAuthorized.c new file mode 100644 index 0000000..4352dcc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeAuthorized.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeAuthorized.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ProSeAuthorized_1[] = { + { ATF_POINTER, 3, offsetof(struct ProSeAuthorized, proSeDirectDiscovery), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProSeDirectDiscovery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "proSeDirectDiscovery" + }, + { ATF_POINTER, 2, offsetof(struct ProSeAuthorized, proSeDirectCommunication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProSeDirectCommunication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "proSeDirectCommunication" + }, + { ATF_POINTER, 1, offsetof(struct ProSeAuthorized, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P179, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProSeAuthorized_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ProSeAuthorized_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProSeAuthorized_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* proSeDirectDiscovery */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* proSeDirectCommunication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_specs_1 = { + sizeof(struct ProSeAuthorized), + offsetof(struct ProSeAuthorized, _asn_ctx), + asn_MAP_ProSeAuthorized_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ProSeAuthorized_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized = { + "ProSeAuthorized", + "ProSeAuthorized", + &asn_OP_SEQUENCE, + asn_DEF_ProSeAuthorized_tags_1, + sizeof(asn_DEF_ProSeAuthorized_tags_1) + /sizeof(asn_DEF_ProSeAuthorized_tags_1[0]), /* 1 */ + asn_DEF_ProSeAuthorized_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeAuthorized_tags_1) + /sizeof(asn_DEF_ProSeAuthorized_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProSeAuthorized_1, + 3, /* Elements count */ + &asn_SPC_ProSeAuthorized_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeAuthorized.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeAuthorized.h new file mode 100644 index 0000000..0cf7364 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeAuthorized.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeAuthorized_H_ +#define _ProSeAuthorized_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProSeDirectDiscovery.h" +#include "ProSeDirectCommunication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProSeAuthorized */ +typedef struct ProSeAuthorized { + ProSeDirectDiscovery_t *proSeDirectDiscovery; /* OPTIONAL */ + ProSeDirectCommunication_t *proSeDirectCommunication; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProSeAuthorized_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized; +extern asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_specs_1; +extern asn_TYPE_member_t asn_MBR_ProSeAuthorized_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeAuthorized_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectCommunication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectCommunication.c new file mode 100644 index 0000000..a2ba4fb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectCommunication.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeDirectCommunication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProSeDirectCommunication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ProSeDirectCommunication_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProSeDirectCommunication_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProSeDirectCommunication_specs_1 = { + asn_MAP_ProSeDirectCommunication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProSeDirectCommunication_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProSeDirectCommunication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProSeDirectCommunication = { + "ProSeDirectCommunication", + "ProSeDirectCommunication", + &asn_OP_NativeEnumerated, + asn_DEF_ProSeDirectCommunication_tags_1, + sizeof(asn_DEF_ProSeDirectCommunication_tags_1) + /sizeof(asn_DEF_ProSeDirectCommunication_tags_1[0]), /* 1 */ + asn_DEF_ProSeDirectCommunication_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeDirectCommunication_tags_1) + /sizeof(asn_DEF_ProSeDirectCommunication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProSeDirectCommunication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProSeDirectCommunication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectCommunication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectCommunication.h new file mode 100644 index 0000000..adb3583 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectCommunication.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeDirectCommunication_H_ +#define _ProSeDirectCommunication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProSeDirectCommunication { + ProSeDirectCommunication_authorized = 0, + ProSeDirectCommunication_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_ProSeDirectCommunication; + +/* ProSeDirectCommunication */ +typedef long ProSeDirectCommunication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProSeDirectCommunication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProSeDirectCommunication; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeDirectCommunication_specs_1; +asn_struct_free_f ProSeDirectCommunication_free; +asn_struct_print_f ProSeDirectCommunication_print; +asn_constr_check_f ProSeDirectCommunication_constraint; +ber_type_decoder_f ProSeDirectCommunication_decode_ber; +der_type_encoder_f ProSeDirectCommunication_encode_der; +xer_type_decoder_f ProSeDirectCommunication_decode_xer; +xer_type_encoder_f ProSeDirectCommunication_encode_xer; +per_type_decoder_f ProSeDirectCommunication_decode_uper; +per_type_encoder_f ProSeDirectCommunication_encode_uper; +per_type_decoder_f ProSeDirectCommunication_decode_aper; +per_type_encoder_f ProSeDirectCommunication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeDirectCommunication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectDiscovery.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectDiscovery.c new file mode 100644 index 0000000..6831c53 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectDiscovery.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeDirectDiscovery.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProSeDirectDiscovery_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ProSeDirectDiscovery_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProSeDirectDiscovery_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProSeDirectDiscovery_specs_1 = { + asn_MAP_ProSeDirectDiscovery_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProSeDirectDiscovery_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProSeDirectDiscovery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProSeDirectDiscovery = { + "ProSeDirectDiscovery", + "ProSeDirectDiscovery", + &asn_OP_NativeEnumerated, + asn_DEF_ProSeDirectDiscovery_tags_1, + sizeof(asn_DEF_ProSeDirectDiscovery_tags_1) + /sizeof(asn_DEF_ProSeDirectDiscovery_tags_1[0]), /* 1 */ + asn_DEF_ProSeDirectDiscovery_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeDirectDiscovery_tags_1) + /sizeof(asn_DEF_ProSeDirectDiscovery_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProSeDirectDiscovery_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProSeDirectDiscovery_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectDiscovery.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectDiscovery.h new file mode 100644 index 0000000..3b29573 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeDirectDiscovery.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeDirectDiscovery_H_ +#define _ProSeDirectDiscovery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProSeDirectDiscovery { + ProSeDirectDiscovery_authorized = 0, + ProSeDirectDiscovery_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_ProSeDirectDiscovery; + +/* ProSeDirectDiscovery */ +typedef long ProSeDirectDiscovery_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProSeDirectDiscovery_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProSeDirectDiscovery; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeDirectDiscovery_specs_1; +asn_struct_free_f ProSeDirectDiscovery_free; +asn_struct_print_f ProSeDirectDiscovery_print; +asn_constr_check_f ProSeDirectDiscovery_constraint; +ber_type_decoder_f ProSeDirectDiscovery_decode_ber; +der_type_encoder_f ProSeDirectDiscovery_encode_der; +xer_type_decoder_f ProSeDirectDiscovery_decode_xer; +xer_type_encoder_f ProSeDirectDiscovery_encode_xer; +per_type_decoder_f ProSeDirectDiscovery_decode_uper; +per_type_encoder_f ProSeDirectDiscovery_encode_uper; +per_type_decoder_f ProSeDirectDiscovery_decode_aper; +per_type_encoder_f ProSeDirectDiscovery_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeDirectDiscovery_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c new file mode 100644 index 0000000..fd6b6ff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProSeUEtoNetworkRelaying.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProSeUEtoNetworkRelaying_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ProSeUEtoNetworkRelaying_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ProSeUEtoNetworkRelaying_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ProSeUEtoNetworkRelaying_specs_1 = { + asn_MAP_ProSeUEtoNetworkRelaying_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ProSeUEtoNetworkRelaying_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ProSeUEtoNetworkRelaying_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProSeUEtoNetworkRelaying = { + "ProSeUEtoNetworkRelaying", + "ProSeUEtoNetworkRelaying", + &asn_OP_NativeEnumerated, + asn_DEF_ProSeUEtoNetworkRelaying_tags_1, + sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1) + /sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1[0]), /* 1 */ + asn_DEF_ProSeUEtoNetworkRelaying_tags_1, /* Same as above */ + sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1) + /sizeof(asn_DEF_ProSeUEtoNetworkRelaying_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProSeUEtoNetworkRelaying_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ProSeUEtoNetworkRelaying_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h new file mode 100644 index 0000000..8ff96a5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProSeUEtoNetworkRelaying.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProSeUEtoNetworkRelaying_H_ +#define _ProSeUEtoNetworkRelaying_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ProSeUEtoNetworkRelaying { + ProSeUEtoNetworkRelaying_authorized = 0, + ProSeUEtoNetworkRelaying_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_ProSeUEtoNetworkRelaying; + +/* ProSeUEtoNetworkRelaying */ +typedef long ProSeUEtoNetworkRelaying_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProSeUEtoNetworkRelaying_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProSeUEtoNetworkRelaying; +extern const asn_INTEGER_specifics_t asn_SPC_ProSeUEtoNetworkRelaying_specs_1; +asn_struct_free_f ProSeUEtoNetworkRelaying_free; +asn_struct_print_f ProSeUEtoNetworkRelaying_print; +asn_constr_check_f ProSeUEtoNetworkRelaying_constraint; +ber_type_decoder_f ProSeUEtoNetworkRelaying_decode_ber; +der_type_encoder_f ProSeUEtoNetworkRelaying_encode_der; +xer_type_decoder_f ProSeUEtoNetworkRelaying_decode_xer; +xer_type_encoder_f ProSeUEtoNetworkRelaying_encode_xer; +per_type_decoder_f ProSeUEtoNetworkRelaying_decode_uper; +per_type_encoder_f ProSeUEtoNetworkRelaying_encode_uper; +per_type_decoder_f ProSeUEtoNetworkRelaying_decode_aper; +per_type_encoder_f ProSeUEtoNetworkRelaying_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProSeUEtoNetworkRelaying_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProcedureCode.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProcedureCode.c new file mode 100644 index 0000000..c6d4e22 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProcedureCode.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProcedureCode.h" + +int +ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + &asn_OP_NativeInteger, + asn_DEF_ProcedureCode_tags_1, + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProcedureCode.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProcedureCode.h new file mode 100644 index 0000000..907f83f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProcedureCode.h @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProcedureCode_H_ +#define _ProcedureCode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProcedureCode */ +typedef long ProcedureCode_t; + +/* Implementation */ +#define ProcedureCode_id_ricSubscription ((ProcedureCode_t)201) +#define ProcedureCode_id_ricSubscriptionDelete ((ProcedureCode_t)202) +#define ProcedureCode_id_ricServiceUpdate ((ProcedureCode_t)203) +#define ProcedureCode_id_ricControl ((ProcedureCode_t)204) +#define ProcedureCode_id_ricIndication ((ProcedureCode_t)205) +#define ProcedureCode_id_ricServiceQuery ((ProcedureCode_t)206) +#define ProcedureCode_id_handoverPreparation ((ProcedureCode_t)0) +#define ProcedureCode_id_handoverCancel ((ProcedureCode_t)1) +#define ProcedureCode_id_loadIndication ((ProcedureCode_t)2) +#define ProcedureCode_id_errorIndication ((ProcedureCode_t)3) +#define ProcedureCode_id_snStatusTransfer ((ProcedureCode_t)4) +#define ProcedureCode_id_uEContextRelease ((ProcedureCode_t)5) +#define ProcedureCode_id_x2Setup ((ProcedureCode_t)6) +#define ProcedureCode_id_reset ((ProcedureCode_t)7) +#define ProcedureCode_id_eNBConfigurationUpdate ((ProcedureCode_t)8) +#define ProcedureCode_id_resourceStatusReportingInitiation ((ProcedureCode_t)9) +#define ProcedureCode_id_resourceStatusReporting ((ProcedureCode_t)10) +#define ProcedureCode_id_privateMessage ((ProcedureCode_t)11) +#define ProcedureCode_id_mobilitySettingsChange ((ProcedureCode_t)12) +#define ProcedureCode_id_rLFIndication ((ProcedureCode_t)13) +#define ProcedureCode_id_handoverReport ((ProcedureCode_t)14) +#define ProcedureCode_id_cellActivation ((ProcedureCode_t)15) +#define ProcedureCode_id_x2Release ((ProcedureCode_t)16) +#define ProcedureCode_id_x2APMessageTransfer ((ProcedureCode_t)17) +#define ProcedureCode_id_x2Removal ((ProcedureCode_t)18) +#define ProcedureCode_id_seNBAdditionPreparation ((ProcedureCode_t)19) +#define ProcedureCode_id_seNBReconfigurationCompletion ((ProcedureCode_t)20) +#define ProcedureCode_id_meNBinitiatedSeNBModificationPreparation ((ProcedureCode_t)21) +#define ProcedureCode_id_seNBinitiatedSeNBModification ((ProcedureCode_t)22) +#define ProcedureCode_id_meNBinitiatedSeNBRelease ((ProcedureCode_t)23) +#define ProcedureCode_id_seNBinitiatedSeNBRelease ((ProcedureCode_t)24) +#define ProcedureCode_id_seNBCounterCheck ((ProcedureCode_t)25) +#define ProcedureCode_id_retrieveUEContext ((ProcedureCode_t)26) +#define ProcedureCode_id_sgNBAdditionPreparation ((ProcedureCode_t)27) +#define ProcedureCode_id_sgNBReconfigurationCompletion ((ProcedureCode_t)28) +#define ProcedureCode_id_meNBinitiatedSgNBModificationPreparation ((ProcedureCode_t)29) +#define ProcedureCode_id_sgNBinitiatedSgNBModification ((ProcedureCode_t)30) +#define ProcedureCode_id_meNBinitiatedSgNBRelease ((ProcedureCode_t)31) +#define ProcedureCode_id_sgNBinitiatedSgNBRelease ((ProcedureCode_t)32) +#define ProcedureCode_id_sgNBCounterCheck ((ProcedureCode_t)33) +#define ProcedureCode_id_sgNBChange ((ProcedureCode_t)34) +#define ProcedureCode_id_rRCTransfer ((ProcedureCode_t)35) +#define ProcedureCode_id_endcX2Setup ((ProcedureCode_t)36) +#define ProcedureCode_id_endcConfigurationUpdate ((ProcedureCode_t)37) +#define ProcedureCode_id_secondaryRATDataUsageReport ((ProcedureCode_t)38) +#define ProcedureCode_id_endcCellActivation ((ProcedureCode_t)39) +#define ProcedureCode_id_endcPartialReset ((ProcedureCode_t)40) +#define ProcedureCode_id_eUTRANRCellResourceCoordination ((ProcedureCode_t)41) +#define ProcedureCode_id_SgNBActivityNotification ((ProcedureCode_t)42) +#define ProcedureCode_id_endcX2Removal ((ProcedureCode_t)43) +#define ProcedureCode_id_dataForwardingAddressIndication ((ProcedureCode_t)44) +#define ProcedureCode_id_gNBStatusIndication ((ProcedureCode_t)45) +extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; +asn_struct_free_f ProcedureCode_free; +asn_struct_print_f ProcedureCode_print; +asn_constr_check_f ProcedureCode_constraint; +ber_type_decoder_f ProcedureCode_decode_ber; +der_type_encoder_f ProcedureCode_encode_der; +xer_type_decoder_f ProcedureCode_decode_xer; +xer_type_encoder_f ProcedureCode_encode_xer; +per_type_decoder_f ProcedureCode_decode_uper; +per_type_encoder_f ProcedureCode_encode_uper; +per_type_decoder_f ProcedureCode_decode_aper; +per_type_encoder_f ProcedureCode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProcedureCode_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c new file mode 100644 index 0000000..010430e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.c @@ -0,0 +1,206 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedEUTRAResourceIndication.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_activationSFN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 1023)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_mBSFNControlRegionLength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_pDCCHRegionLength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_activationSFN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 10, 10, 0, 1023 } /* (0..1023) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_mBSFNControlRegionLength_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pDCCHRegionLength_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 1, 3 } /* (1..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication, activationSFN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_activationSFN_constr_2, memb_activationSFN_constraint_1 }, + 0, 0, /* No default value */ + "activationSFN" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication, protectedResourceList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedResourceList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protectedResourceList" + }, + { ATF_POINTER, 3, offsetof(struct ProtectedEUTRAResourceIndication, mBSFNControlRegionLength), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_mBSFNControlRegionLength_constr_4, memb_mBSFNControlRegionLength_constraint_1 }, + 0, 0, /* No default value */ + "mBSFNControlRegionLength" + }, + { ATF_POINTER, 2, offsetof(struct ProtectedEUTRAResourceIndication, pDCCHRegionLength), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_pDCCHRegionLength_constr_5, memb_pDCCHRegionLength_constraint_1 }, + 0, 0, /* No default value */ + "pDCCHRegionLength" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedEUTRAResourceIndication, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P180, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProtectedEUTRAResourceIndication_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_ProtectedEUTRAResourceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedEUTRAResourceIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* activationSFN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* protectedResourceList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mBSFNControlRegionLength */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pDCCHRegionLength */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_specs_1 = { + sizeof(struct ProtectedEUTRAResourceIndication), + offsetof(struct ProtectedEUTRAResourceIndication, _asn_ctx), + asn_MAP_ProtectedEUTRAResourceIndication_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_ProtectedEUTRAResourceIndication_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication = { + "ProtectedEUTRAResourceIndication", + "ProtectedEUTRAResourceIndication", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedEUTRAResourceIndication_tags_1, + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1[0]), /* 1 */ + asn_DEF_ProtectedEUTRAResourceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedEUTRAResourceIndication_1, + 5, /* Elements count */ + &asn_SPC_ProtectedEUTRAResourceIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h new file mode 100644 index 0000000..0c1c8af --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedEUTRAResourceIndication.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedEUTRAResourceIndication_H_ +#define _ProtectedEUTRAResourceIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "ProtectedResourceList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProtectedEUTRAResourceIndication */ +typedef struct ProtectedEUTRAResourceIndication { + long activationSFN; + ProtectedResourceList_t protectedResourceList; + long *mBSFNControlRegionLength; /* OPTIONAL */ + long *pDCCHRegionLength; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedEUTRAResourceIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedEUTRAResourceIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c new file mode 100644 index 0000000..919ce93 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.c @@ -0,0 +1,156 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedFootprintTimePattern.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_protectedFootprintTimePeriodicity_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 320)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_protectedFootprintStartTime_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_protectedFootprintTimePeriodicity_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 9, 9, 1, 320 } /* (1..320,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_protectedFootprintStartTime_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 1, 20 } /* (1..20,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern, protectedFootprintTimePeriodicity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_protectedFootprintTimePeriodicity_constr_2, memb_protectedFootprintTimePeriodicity_constraint_1 }, + 0, 0, /* No default value */ + "protectedFootprintTimePeriodicity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern, protectedFootprintStartTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_protectedFootprintStartTime_constr_3, memb_protectedFootprintStartTime_constraint_1 }, + 0, 0, /* No default value */ + "protectedFootprintStartTime" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedFootprintTimePattern, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P181, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProtectedFootprintTimePattern_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ProtectedFootprintTimePattern_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedFootprintTimePattern_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* protectedFootprintTimePeriodicity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* protectedFootprintStartTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_specs_1 = { + sizeof(struct ProtectedFootprintTimePattern), + offsetof(struct ProtectedFootprintTimePattern, _asn_ctx), + asn_MAP_ProtectedFootprintTimePattern_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ProtectedFootprintTimePattern_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern = { + "ProtectedFootprintTimePattern", + "ProtectedFootprintTimePattern", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedFootprintTimePattern_tags_1, + sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1[0]), /* 1 */ + asn_DEF_ProtectedFootprintTimePattern_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedFootprintTimePattern_1, + 3, /* Elements count */ + &asn_SPC_ProtectedFootprintTimePattern_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h new file mode 100644 index 0000000..1866f3c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedFootprintTimePattern.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedFootprintTimePattern_H_ +#define _ProtectedFootprintTimePattern_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProtectedFootprintTimePattern */ +typedef struct ProtectedFootprintTimePattern { + long protectedFootprintTimePeriodicity; + long protectedFootprintStartTime; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedFootprintTimePattern_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedFootprintTimePattern_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList-Item.c new file mode 100644 index 0000000..c7fa9a5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList-Item.c @@ -0,0 +1,188 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedResourceList-Item.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_intraPRBProtectedResourceFootprint_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 84)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_protectedFootprintFrequencyPattern_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 110)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_intraPRBProtectedResourceFootprint_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 84, 84 } /* (SIZE(84..84,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_protectedFootprintFrequencyPattern_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 6, 110 } /* (SIZE(6..110,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, resourceType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResourceType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "resourceType" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, intraPRBProtectedResourceFootprint), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_intraPRBProtectedResourceFootprint_constr_3, memb_intraPRBProtectedResourceFootprint_constraint_1 }, + 0, 0, /* No default value */ + "intraPRBProtectedResourceFootprint" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, protectedFootprintFrequencyPattern), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_protectedFootprintFrequencyPattern_constr_4, memb_protectedFootprintFrequencyPattern_constraint_1 }, + 0, 0, /* No default value */ + "protectedFootprintFrequencyPattern" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item, protectedFootprintTimePattern), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtectedFootprintTimePattern, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protectedFootprintTimePattern" + }, + { ATF_POINTER, 1, offsetof(struct ProtectedResourceList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P182, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ProtectedResourceList_Item_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_ProtectedResourceList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedResourceList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resourceType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* intraPRBProtectedResourceFootprint */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protectedFootprintFrequencyPattern */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protectedFootprintTimePattern */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_specs_1 = { + sizeof(struct ProtectedResourceList_Item), + offsetof(struct ProtectedResourceList_Item, _asn_ctx), + asn_MAP_ProtectedResourceList_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_ProtectedResourceList_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item = { + "ProtectedResourceList-Item", + "ProtectedResourceList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedResourceList_Item_tags_1, + sizeof(asn_DEF_ProtectedResourceList_Item_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_Item_tags_1[0]), /* 1 */ + asn_DEF_ProtectedResourceList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedResourceList_Item_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedResourceList_Item_1, + 5, /* Elements count */ + &asn_SPC_ProtectedResourceList_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList-Item.h new file mode 100644 index 0000000..9cf4673 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList-Item.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedResourceList_Item_H_ +#define _ProtectedResourceList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ResourceType.h" +#include "BIT_STRING.h" +#include "ProtectedFootprintTimePattern.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ProtectedResourceList-Item */ +typedef struct ProtectedResourceList_Item { + ResourceType_t resourceType; + BIT_STRING_t intraPRBProtectedResourceFootprint; + BIT_STRING_t protectedFootprintFrequencyPattern; + ProtectedFootprintTimePattern_t protectedFootprintTimePattern; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedResourceList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedResourceList_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList.c new file mode 100644 index 0000000..5d95b67 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtectedResourceList.h" + +#include "ProtectedResourceList-Item.h" +asn_per_constraints_t asn_PER_type_ProtectedResourceList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtectedResourceList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedResourceList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedResourceList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtectedResourceList_specs_1 = { + sizeof(struct ProtectedResourceList), + offsetof(struct ProtectedResourceList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList = { + "ProtectedResourceList", + "ProtectedResourceList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtectedResourceList_tags_1, + sizeof(asn_DEF_ProtectedResourceList_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_tags_1[0]), /* 1 */ + asn_DEF_ProtectedResourceList_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtectedResourceList_tags_1) + /sizeof(asn_DEF_ProtectedResourceList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtectedResourceList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtectedResourceList_1, + 1, /* Single element */ + &asn_SPC_ProtectedResourceList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList.h new file mode 100644 index 0000000..8c725f1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtectedResourceList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtectedResourceList_H_ +#define _ProtectedResourceList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtectedResourceList_Item; + +/* ProtectedResourceList */ +typedef struct ProtectedResourceList { + A_SEQUENCE_OF(struct ProtectedResourceList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedResourceList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList; +extern asn_SET_OF_specifics_t asn_SPC_ProtectedResourceList_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtectedResourceList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtectedResourceList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionContainer.c new file mode 100644 index 0000000..a612df6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionContainer.c @@ -0,0 +1,8953 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolExtensionContainer.h" + +#include "ProtocolExtensionField.h" +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P39_constr_79 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P40_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P41_constr_83 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P42_constr_85 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P43_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P44_constr_89 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P45_constr_91 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P46_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P47_constr_95 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P48_constr_97 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P49_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P50_constr_101 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P51_constr_103 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P52_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P53_constr_107 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P54_constr_109 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P55_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P56_constr_113 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P57_constr_115 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P58_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P59_constr_119 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P60_constr_121 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P61_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P62_constr_125 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P63_constr_127 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P64_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P65_constr_131 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P66_constr_133 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P67_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P68_constr_137 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P69_constr_139 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P70_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P71_constr_143 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P72_constr_145 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P73_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P74_constr_149 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P75_constr_151 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P76_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P77_constr_155 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P78_constr_157 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P79_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P80_constr_161 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P81_constr_163 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P82_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P83_constr_167 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P84_constr_169 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P85_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P86_constr_173 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P87_constr_175 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P88_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P89_constr_179 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P90_constr_181 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P91_constr_183 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P92_constr_185 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P93_constr_187 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P94_constr_189 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P95_constr_191 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P96_constr_193 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P97_constr_195 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P98_constr_197 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P99_constr_199 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P100_constr_201 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P101_constr_203 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P102_constr_205 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P103_constr_207 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P104_constr_209 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P105_constr_211 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P106_constr_213 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P107_constr_215 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P108_constr_217 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P109_constr_219 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P110_constr_221 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P111_constr_223 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P112_constr_225 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P113_constr_227 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P114_constr_229 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P115_constr_231 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P116_constr_233 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P117_constr_235 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P118_constr_237 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P119_constr_239 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P120_constr_241 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P121_constr_243 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P122_constr_245 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P123_constr_247 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P124_constr_249 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P125_constr_251 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P126_constr_253 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P127_constr_255 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P128_constr_257 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P129_constr_259 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P130_constr_261 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P131_constr_263 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P132_constr_265 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P133_constr_267 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P134_constr_269 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P135_constr_271 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P136_constr_273 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P137_constr_275 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P138_constr_277 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P139_constr_279 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P140_constr_281 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P141_constr_283 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P142_constr_285 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P143_constr_287 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P144_constr_289 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P145_constr_291 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P146_constr_293 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P147_constr_295 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P148_constr_297 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P149_constr_299 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P150_constr_301 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P151_constr_303 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P152_constr_305 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P153_constr_307 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P154_constr_309 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P155_constr_311 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P156_constr_313 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P157_constr_315 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P158_constr_317 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P159_constr_319 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P160_constr_321 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P161_constr_323 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P162_constr_325 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P163_constr_327 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P164_constr_329 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P165_constr_331 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P166_constr_333 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P167_constr_335 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P168_constr_337 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P169_constr_339 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P170_constr_341 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P171_constr_343 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P172_constr_345 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P173_constr_347 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P174_constr_349 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P175_constr_351 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P176_constr_353 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P177_constr_355 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P178_constr_357 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P179_constr_359 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P180_constr_361 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P181_constr_363 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P182_constr_365 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P183_constr_367 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P184_constr_369 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P185_constr_371 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P186_constr_373 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P187_constr_375 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P188_constr_377 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P189_constr_379 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P190_constr_381 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P191_constr_383 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P192_constr_385 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P193_constr_387 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P194_constr_389 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P195_constr_391 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P196_constr_393 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P197_constr_395 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P198_constr_397 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P199_constr_399 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P200_constr_401 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P201_constr_403 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P202_constr_405 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P203_constr_407 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P204_constr_409 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P205_constr_411 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P206_constr_413 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P207_constr_415 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P208_constr_417 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P209_constr_419 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P210_constr_421 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P211_constr_423 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P212_constr_425 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P213_constr_427 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P214_constr_429 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P215_constr_431 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P216_constr_433 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P217_constr_435 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P218_constr_437 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P219_constr_439 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P220_constr_441 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P221_constr_443 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P222_constr_445 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 1, 65535 } /* (SIZE(1..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P0_specs_1 = { + sizeof(struct ProtocolExtensionContainer_170P0), + offsetof(struct ProtocolExtensionContainer_170P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P0 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P0_tags_1, + sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetup_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P1_specs_3 = { + sizeof(struct ProtocolExtensionContainer_170P1), + offsetof(struct ProtocolExtensionContainer_170P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P1 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P1_tags_3, + sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P1_tags_3[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P2_specs_5 = { + sizeof(struct ProtocolExtensionContainer_170P2), + offsetof(struct ProtocolExtensionContainer_170P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P2 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P2_tags_5, + sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P2_tags_5[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P3_specs_7 = { + sizeof(struct ProtocolExtensionContainer_170P3), + offsetof(struct ProtocolExtensionContainer_170P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P3 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P3_tags_7, + sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P3_tags_7[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P4_specs_9 = { + sizeof(struct ProtocolExtensionContainer_170P4), + offsetof(struct ProtocolExtensionContainer_170P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P4 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P4_tags_9, + sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P4_tags_9[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P5_specs_11 = { + sizeof(struct ProtocolExtensionContainer_170P5), + offsetof(struct ProtocolExtensionContainer_170P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P5 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P5_tags_11, + sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P5_tags_11[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P6_specs_13 = { + sizeof(struct ProtocolExtensionContainer_170P6), + offsetof(struct ProtocolExtensionContainer_170P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P6 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P6_tags_13, + sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P6_tags_13[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellInformation_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P7_specs_15 = { + sizeof(struct ProtocolExtensionContainer_170P7), + offsetof(struct ProtocolExtensionContainer_170P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P7 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P7_tags_15, + sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P7_tags_15[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToModify_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P8_specs_17 = { + sizeof(struct ProtocolExtensionContainer_170P8), + offsetof(struct ProtocolExtensionContainer_170P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P8 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P8_tags_17, + sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P8_tags_17[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellToReport_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P9_specs_19 = { + sizeof(struct ProtocolExtensionContainer_170P9), + offsetof(struct ProtocolExtensionContainer_170P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P9 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P9_tags_19, + sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P9_tags_19[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInitiationResult_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P10_specs_21 = { + sizeof(struct ProtocolExtensionContainer_170P10), + offsetof(struct ProtocolExtensionContainer_170P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P10 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P10_tags_21, + sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P10_tags_21[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementFailureCause_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P11_specs_23 = { + sizeof(struct ProtocolExtensionContainer_170P11), + offsetof(struct ProtocolExtensionContainer_170P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P11 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P11_tags_23, + sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P11_tags_23[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P12_specs_25 = { + sizeof(struct ProtocolExtensionContainer_170P12), + offsetof(struct ProtocolExtensionContainer_170P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P12 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P12_tags_25, + sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P12_tags_25[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellMeasurementResult_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P13_specs_27 = { + sizeof(struct ProtocolExtensionContainer_170P13), + offsetof(struct ProtocolExtensionContainer_170P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P13 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P13_tags_27, + sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P13_tags_27[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToActivate_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P14_specs_29 = { + sizeof(struct ProtocolExtensionContainer_170P14), + offsetof(struct ProtocolExtensionContainer_170P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P14 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P14_tags_29, + sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P14_tags_29[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedCellList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P15_specs_31 = { + sizeof(struct ProtocolExtensionContainer_170P15), + offsetof(struct ProtocolExtensionContainer_170P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P15 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P15_tags_31, + sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P15_tags_31[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RNL_Header_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P16_specs_33 = { + sizeof(struct ProtocolExtensionContainer_170P16), + offsetof(struct ProtocolExtensionContainer_170P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P16 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P16_tags_33, + sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P16_tags_33[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P17_specs_35 = { + sizeof(struct ProtocolExtensionContainer_170P17), + offsetof(struct ProtocolExtensionContainer_170P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P17 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P17_tags_35, + sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P17_tags_35[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P18_specs_37 = { + sizeof(struct ProtocolExtensionContainer_170P18), + offsetof(struct ProtocolExtensionContainer_170P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P18 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P18_tags_37, + sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P18_tags_37[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P19_specs_39 = { + sizeof(struct ProtocolExtensionContainer_170P19), + offsetof(struct ProtocolExtensionContainer_170P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P19 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P19_tags_39, + sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P19_tags_39[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P20_specs_41 = { + sizeof(struct ProtocolExtensionContainer_170P20), + offsetof(struct ProtocolExtensionContainer_170P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P20 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P20_tags_41, + sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P20_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P20_tags_41[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P20_constr_41, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P20_41, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P21_specs_43 = { + sizeof(struct ProtocolExtensionContainer_170P21), + offsetof(struct ProtocolExtensionContainer_170P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P21 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P21_tags_43, + sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P21_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P21_tags_43[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P21_constr_43, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P21_43, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P22_specs_45 = { + sizeof(struct ProtocolExtensionContainer_170P22), + offsetof(struct ProtocolExtensionContainer_170P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P22 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P22_tags_45, + sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P22_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P22_tags_45[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P22_constr_45, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P22_45, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationSeNBModReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P23_specs_47 = { + sizeof(struct ProtocolExtensionContainer_170P23), + offsetof(struct ProtocolExtensionContainer_170P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P23 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P23_tags_47, + sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P23_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P23_tags_47[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P23_constr_47, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P23_47, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P24_specs_49 = { + sizeof(struct ProtocolExtensionContainer_170P24), + offsetof(struct ProtocolExtensionContainer_170P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P24 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P24_tags_49, + sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P24_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P24_tags_49[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P24_constr_49, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P24_49, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P25_specs_51 = { + sizeof(struct ProtocolExtensionContainer_170P25), + offsetof(struct ProtocolExtensionContainer_170P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P25 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P25_tags_51, + sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P25_tags_51, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P25_tags_51[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P25_constr_51, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P25_51, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P26_specs_53 = { + sizeof(struct ProtocolExtensionContainer_170P26), + offsetof(struct ProtocolExtensionContainer_170P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P26 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P26_tags_53, + sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P26_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P26_tags_53[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P26_constr_53, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P26_53, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P27_specs_55 = { + sizeof(struct ProtocolExtensionContainer_170P27), + offsetof(struct ProtocolExtensionContainer_170P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P27 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P27_tags_55, + sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P27_tags_55, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P27_tags_55[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P27_constr_55, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P27_55, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P28_specs_57 = { + sizeof(struct ProtocolExtensionContainer_170P28), + offsetof(struct ProtocolExtensionContainer_170P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P28 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P28_tags_57, + sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P28_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P28_tags_57[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P28_constr_57, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P28_57, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P29_specs_59 = { + sizeof(struct ProtocolExtensionContainer_170P29), + offsetof(struct ProtocolExtensionContainer_170P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P29 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P29_tags_59, + sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P29_tags_59, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P29_tags_59[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P29_constr_59, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P29_59, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P30_specs_61 = { + sizeof(struct ProtocolExtensionContainer_170P30), + offsetof(struct ProtocolExtensionContainer_170P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P30 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P30_tags_61, + sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P30_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P30_tags_61[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P30_constr_61, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P30_61, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P31_specs_63 = { + sizeof(struct ProtocolExtensionContainer_170P31), + offsetof(struct ProtocolExtensionContainer_170P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P31 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P31_tags_63, + sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P31_tags_63, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P31_tags_63[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P31_constr_63, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P31_63, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P32_specs_65 = { + sizeof(struct ProtocolExtensionContainer_170P32), + offsetof(struct ProtocolExtensionContainer_170P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P32 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P32_tags_65, + sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P32_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P32_tags_65[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P32_constr_65, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P32_65, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P33_specs_67 = { + sizeof(struct ProtocolExtensionContainer_170P33), + offsetof(struct ProtocolExtensionContainer_170P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P33 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P33_tags_67, + sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P33_tags_67, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P33_tags_67[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P33_constr_67, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P33_67, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P34_specs_69 = { + sizeof(struct ProtocolExtensionContainer_170P34), + offsetof(struct ProtocolExtensionContainer_170P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P34 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P34_tags_69, + sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P34_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P34_tags_69[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P34_constr_69, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P34_69, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P35_specs_71 = { + sizeof(struct ProtocolExtensionContainer_170P35), + offsetof(struct ProtocolExtensionContainer_170P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P35 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P35_tags_71, + sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P35_tags_71, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P35_tags_71[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P35_constr_71, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P35_71, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P36_specs_73 = { + sizeof(struct ProtocolExtensionContainer_170P36), + offsetof(struct ProtocolExtensionContainer_170P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P36 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P36_tags_73, + sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P36_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P36_tags_73[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P36_constr_73, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P36_73, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P37_specs_75 = { + sizeof(struct ProtocolExtensionContainer_170P37), + offsetof(struct ProtocolExtensionContainer_170P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P37 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P37_tags_75, + sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P37_tags_75, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P37_tags_75[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P37_constr_75, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P37_75, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P38_specs_77 = { + sizeof(struct ProtocolExtensionContainer_170P38), + offsetof(struct ProtocolExtensionContainer_170P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P38 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P38_tags_77, + sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P38_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P38_tags_77[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P38_constr_77, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P38_77, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P38_specs_77 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P39_specs_79 = { + sizeof(struct ProtocolExtensionContainer_170P39), + offsetof(struct ProtocolExtensionContainer_170P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P39 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P39_tags_79, + sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P39_tags_79, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P39_tags_79[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P39_constr_79, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P39_79, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P39_specs_79 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P40_specs_81 = { + sizeof(struct ProtocolExtensionContainer_170P40), + offsetof(struct ProtocolExtensionContainer_170P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P40 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P40_tags_81, + sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P40_tags_81, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P40_tags_81[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P40_constr_81, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P40_81, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P40_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P41_specs_83 = { + sizeof(struct ProtocolExtensionContainer_170P41), + offsetof(struct ProtocolExtensionContainer_170P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P41 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P41_tags_83, + sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P41_tags_83, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P41_tags_83[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P41_constr_83, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P41_83, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P41_specs_83 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationRetrieve_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P42_specs_85 = { + sizeof(struct ProtocolExtensionContainer_170P42), + offsetof(struct ProtocolExtensionContainer_170P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P42 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P42_tags_85, + sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P42_tags_85, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P42_tags_85[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P42_constr_85, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P42_85, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P42_specs_85 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P43_specs_87 = { + sizeof(struct ProtocolExtensionContainer_170P43), + offsetof(struct ProtocolExtensionContainer_170P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P43 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P43_tags_87, + sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P43_tags_87, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P43_tags_87[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P43_constr_87, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P43_87, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P43_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P44_specs_89 = { + sizeof(struct ProtocolExtensionContainer_170P44), + offsetof(struct ProtocolExtensionContainer_170P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P44 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P44_tags_89, + sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P44_tags_89, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P44_tags_89[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P44_constr_89, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P44_89, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P44_specs_89 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P45_specs_91 = { + sizeof(struct ProtocolExtensionContainer_170P45), + offsetof(struct ProtocolExtensionContainer_170P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P45 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P45_tags_91, + sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P45_tags_91, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P45_tags_91[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P45_constr_91, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P45_91, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P45_specs_91 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P46_specs_93 = { + sizeof(struct ProtocolExtensionContainer_170P46), + offsetof(struct ProtocolExtensionContainer_170P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P46 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P46_tags_93, + sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P46_tags_93, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P46_tags_93[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P46_constr_93, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P46_93, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P46_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P47_specs_95 = { + sizeof(struct ProtocolExtensionContainer_170P47), + offsetof(struct ProtocolExtensionContainer_170P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P47 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P47_tags_95, + sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P47_tags_95, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P47_tags_95[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P47_constr_95, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P47_95, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P47_specs_95 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P48_specs_97 = { + sizeof(struct ProtocolExtensionContainer_170P48), + offsetof(struct ProtocolExtensionContainer_170P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P48 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P48_tags_97, + sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P48_tags_97, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P48_tags_97[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P48_constr_97, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P48_97, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P48_specs_97 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P49_specs_99 = { + sizeof(struct ProtocolExtensionContainer_170P49), + offsetof(struct ProtocolExtensionContainer_170P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P49 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P49_tags_99, + sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P49_tags_99, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P49_tags_99[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P49_constr_99, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P49_99, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P49_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P50_specs_101 = { + sizeof(struct ProtocolExtensionContainer_170P50), + offsetof(struct ProtocolExtensionContainer_170P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P50 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P50_tags_101, + sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P50_tags_101, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P50_tags_101[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P50_constr_101, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P50_101, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P50_specs_101 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P51_specs_103 = { + sizeof(struct ProtocolExtensionContainer_170P51), + offsetof(struct ProtocolExtensionContainer_170P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P51 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P51_tags_103, + sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P51_tags_103, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P51_tags_103[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P51_constr_103, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P51_103, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P51_specs_103 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationSgNBModReqExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P52_specs_105 = { + sizeof(struct ProtocolExtensionContainer_170P52), + offsetof(struct ProtocolExtensionContainer_170P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P52 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P52_tags_105, + sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P52_tags_105, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P52_tags_105[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P52_constr_105, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P52_105, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P52_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P53_specs_107 = { + sizeof(struct ProtocolExtensionContainer_170P53), + offsetof(struct ProtocolExtensionContainer_170P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P53 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P53_tags_107, + sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P53_tags_107, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P53_tags_107[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P53_constr_107, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P53_107, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P53_specs_107 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P54_specs_109 = { + sizeof(struct ProtocolExtensionContainer_170P54), + offsetof(struct ProtocolExtensionContainer_170P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P54 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P54_tags_109, + sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P54_tags_109, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P54_tags_109[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P54_constr_109, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P54_109, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P54_specs_109 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P55_specs_111 = { + sizeof(struct ProtocolExtensionContainer_170P55), + offsetof(struct ProtocolExtensionContainer_170P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P55 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P55_tags_111, + sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P55_tags_111, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P55_tags_111[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P55_constr_111, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P55_111, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P55_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P56_specs_113 = { + sizeof(struct ProtocolExtensionContainer_170P56), + offsetof(struct ProtocolExtensionContainer_170P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P56 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P56_tags_113, + sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P56_tags_113, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P56_tags_113[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P56_constr_113, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P56_113, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P56_specs_113 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P57_specs_115 = { + sizeof(struct ProtocolExtensionContainer_170P57), + offsetof(struct ProtocolExtensionContainer_170P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P57 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P57_tags_115, + sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P57_tags_115, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P57_tags_115[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P57_constr_115, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P57_115, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P57_specs_115 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P58_specs_117 = { + sizeof(struct ProtocolExtensionContainer_170P58), + offsetof(struct ProtocolExtensionContainer_170P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P58 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P58_tags_117, + sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P58_tags_117, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P58_tags_117[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P58_constr_117, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P58_117, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P58_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P59_specs_119 = { + sizeof(struct ProtocolExtensionContainer_170P59), + offsetof(struct ProtocolExtensionContainer_170P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P59 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P59_tags_119, + sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P59_tags_119, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P59_tags_119[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P59_constr_119, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P59_119, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P59_specs_119 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P60_specs_121 = { + sizeof(struct ProtocolExtensionContainer_170P60), + offsetof(struct ProtocolExtensionContainer_170P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P60 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P60_tags_121, + sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P60_tags_121, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P60_tags_121[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P60_constr_121, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P60_121, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P60_specs_121 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P61_specs_123 = { + sizeof(struct ProtocolExtensionContainer_170P61), + offsetof(struct ProtocolExtensionContainer_170P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P61 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P61_tags_123, + sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P61_tags_123, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P61_tags_123[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P61_constr_123, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P61_123, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P61_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P62_specs_125 = { + sizeof(struct ProtocolExtensionContainer_170P62), + offsetof(struct ProtocolExtensionContainer_170P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P62 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P62_tags_125, + sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P62_tags_125, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P62_tags_125[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P62_constr_125, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P62_125, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P62_specs_125 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P63_specs_127 = { + sizeof(struct ProtocolExtensionContainer_170P63), + offsetof(struct ProtocolExtensionContainer_170P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P63 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P63_tags_127, + sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P63_tags_127, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P63_tags_127[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P63_constr_127, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P63_127, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P63_specs_127 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P64_specs_129 = { + sizeof(struct ProtocolExtensionContainer_170P64), + offsetof(struct ProtocolExtensionContainer_170P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P64 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P64_tags_129, + sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P64_tags_129, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P64_tags_129[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P64_constr_129, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P64_129, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P64_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P65_specs_131 = { + sizeof(struct ProtocolExtensionContainer_170P65), + offsetof(struct ProtocolExtensionContainer_170P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P65 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P65_tags_131, + sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P65_tags_131, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P65_tags_131[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P65_constr_131, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P65_131, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P65_specs_131 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P66_specs_133 = { + sizeof(struct ProtocolExtensionContainer_170P66), + offsetof(struct ProtocolExtensionContainer_170P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P66 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P66_tags_133, + sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P66_tags_133, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P66_tags_133[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P66_constr_133, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P66_133, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P66_specs_133 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P67_specs_135 = { + sizeof(struct ProtocolExtensionContainer_170P67), + offsetof(struct ProtocolExtensionContainer_170P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P67 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P67_tags_135, + sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P67_tags_135, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P67_tags_135[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P67_constr_135, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P67_135, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P67_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P68_specs_137 = { + sizeof(struct ProtocolExtensionContainer_170P68), + offsetof(struct ProtocolExtensionContainer_170P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P68 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P68_tags_137, + sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P68_tags_137, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P68_tags_137[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P68_constr_137, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P68_137, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P68_specs_137 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P69_specs_139 = { + sizeof(struct ProtocolExtensionContainer_170P69), + offsetof(struct ProtocolExtensionContainer_170P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P69 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P69_tags_139, + sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P69_tags_139, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P69_tags_139[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P69_constr_139, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P69_139, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P69_specs_139 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P70_specs_141 = { + sizeof(struct ProtocolExtensionContainer_170P70), + offsetof(struct ProtocolExtensionContainer_170P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P70 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P70_tags_141, + sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P70_tags_141, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P70_tags_141[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P70_constr_141, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P70_141, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P70_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P71_specs_143 = { + sizeof(struct ProtocolExtensionContainer_170P71), + offsetof(struct ProtocolExtensionContainer_170P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P71 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P71_tags_143, + sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P71_tags_143, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P71_tags_143[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P71_constr_143, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P71_143, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P71_specs_143 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P72_specs_145 = { + sizeof(struct ProtocolExtensionContainer_170P72), + offsetof(struct ProtocolExtensionContainer_170P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P72 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P72_tags_145, + sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P72_tags_145, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P72_tags_145[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P72_constr_145, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P72_145, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P72_specs_145 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P73_specs_147 = { + sizeof(struct ProtocolExtensionContainer_170P73), + offsetof(struct ProtocolExtensionContainer_170P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P73 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P73_tags_147, + sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P73_tags_147, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P73_tags_147[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P73_constr_147, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P73_147, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P73_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P74_specs_149 = { + sizeof(struct ProtocolExtensionContainer_170P74), + offsetof(struct ProtocolExtensionContainer_170P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P74 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P74_tags_149, + sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P74_tags_149, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P74_tags_149[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P74_constr_149, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P74_149, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P74_specs_149 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P75_specs_151 = { + sizeof(struct ProtocolExtensionContainer_170P75), + offsetof(struct ProtocolExtensionContainer_170P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P75 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P75_tags_151, + sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P75_tags_151, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P75_tags_151[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P75_constr_151, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P75_151, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P75_specs_151 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P76_153[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P76_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P76_specs_153 = { + sizeof(struct ProtocolExtensionContainer_170P76), + offsetof(struct ProtocolExtensionContainer_170P76, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P76 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P76_tags_153, + sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P76_tags_153, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P76_tags_153[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P76_constr_153, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P76_153, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P76_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P77_155[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P77_tags_155[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P77_specs_155 = { + sizeof(struct ProtocolExtensionContainer_170P77), + offsetof(struct ProtocolExtensionContainer_170P77, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P77 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P77_tags_155, + sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P77_tags_155, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P77_tags_155[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P77_constr_155, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P77_155, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P77_specs_155 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P78_157[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P78_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P78_specs_157 = { + sizeof(struct ProtocolExtensionContainer_170P78), + offsetof(struct ProtocolExtensionContainer_170P78, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P78 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P78_tags_157, + sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P78_tags_157, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P78_tags_157[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P78_constr_157, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P78_157, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P78_specs_157 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P79_159[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P79_tags_159[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P79_specs_159 = { + sizeof(struct ProtocolExtensionContainer_170P79), + offsetof(struct ProtocolExtensionContainer_170P79, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P79 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P79_tags_159, + sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P79_tags_159, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P79_tags_159[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P79_constr_159, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P79_159, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P79_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P80_161[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P80_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P80_specs_161 = { + sizeof(struct ProtocolExtensionContainer_170P80), + offsetof(struct ProtocolExtensionContainer_170P80, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P80 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P80_tags_161, + sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P80_tags_161, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P80_tags_161[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P80_constr_161, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P80_161, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P80_specs_161 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P81_163[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P81_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P81_specs_163 = { + sizeof(struct ProtocolExtensionContainer_170P81), + offsetof(struct ProtocolExtensionContainer_170P81, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P81 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P81_tags_163, + sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P81_tags_163, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P81_tags_163[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P81_constr_163, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P81_163, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P81_specs_163 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P82_165[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P82_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P82_specs_165 = { + sizeof(struct ProtocolExtensionContainer_170P82), + offsetof(struct ProtocolExtensionContainer_170P82, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P82 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P82_tags_165, + sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P82_tags_165, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P82_tags_165[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P82_constr_165, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P82_165, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P82_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P83_167[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P83_tags_167[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P83_specs_167 = { + sizeof(struct ProtocolExtensionContainer_170P83), + offsetof(struct ProtocolExtensionContainer_170P83, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P83 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P83_tags_167, + sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P83_tags_167, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P83_tags_167[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P83_constr_167, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P83_167, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P83_specs_167 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P84_169[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P84_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P84_specs_169 = { + sizeof(struct ProtocolExtensionContainer_170P84), + offsetof(struct ProtocolExtensionContainer_170P84, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P84 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P84_tags_169, + sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P84_tags_169, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P84_tags_169[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P84_constr_169, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P84_169, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P84_specs_169 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P85_171[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P85_tags_171[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P85_specs_171 = { + sizeof(struct ProtocolExtensionContainer_170P85), + offsetof(struct ProtocolExtensionContainer_170P85, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P85 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P85_tags_171, + sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P85_tags_171, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P85_tags_171[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P85_constr_171, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P85_171, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P85_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P86_173[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P86_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P86_specs_173 = { + sizeof(struct ProtocolExtensionContainer_170P86), + offsetof(struct ProtocolExtensionContainer_170P86, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P86 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P86_tags_173, + sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P86_tags_173, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P86_tags_173[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P86_constr_173, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P86_173, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P86_specs_173 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P87_175[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P87_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P87_specs_175 = { + sizeof(struct ProtocolExtensionContainer_170P87), + offsetof(struct ProtocolExtensionContainer_170P87, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P87 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P87_tags_175, + sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P87_tags_175, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P87_tags_175[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P87_constr_175, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P87_175, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P87_specs_175 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P88_177[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P88_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P88_specs_177 = { + sizeof(struct ProtocolExtensionContainer_170P88), + offsetof(struct ProtocolExtensionContainer_170P88, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P88 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P88_tags_177, + sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P88_tags_177, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P88_tags_177[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P88_constr_177, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P88_177, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P88_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P89_179[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P89_tags_179[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P89_specs_179 = { + sizeof(struct ProtocolExtensionContainer_170P89), + offsetof(struct ProtocolExtensionContainer_170P89, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P89 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P89_tags_179, + sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P89_tags_179, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P89_tags_179[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P89_constr_179, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P89_179, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P89_specs_179 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P90_181[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P90_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P90_specs_181 = { + sizeof(struct ProtocolExtensionContainer_170P90), + offsetof(struct ProtocolExtensionContainer_170P90, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P90 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P90_tags_181, + sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P90_tags_181, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P90_tags_181[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P90_constr_181, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P90_181, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P90_specs_181 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P91_183[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNBServedCells_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P91_tags_183[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P91_specs_183 = { + sizeof(struct ProtocolExtensionContainer_170P91), + offsetof(struct ProtocolExtensionContainer_170P91, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P91 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P91_tags_183, + sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P91_tags_183, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P91_tags_183[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P91_constr_183, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P91_183, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P91_specs_183 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P92_185[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P92_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P92_specs_185 = { + sizeof(struct ProtocolExtensionContainer_170P92), + offsetof(struct ProtocolExtensionContainer_170P92, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P92 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P92_tags_185, + sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P92_tags_185, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P92_tags_185[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P92_constr_185, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P92_185, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P92_specs_185 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P93_187[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P93_tags_187[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P93_specs_187 = { + sizeof(struct ProtocolExtensionContainer_170P93), + offsetof(struct ProtocolExtensionContainer_170P93, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P93 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P93_tags_187, + sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P93_tags_187, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P93_tags_187[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P93_constr_187, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P93_187, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P93_specs_187 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P94_189[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P94_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P94_specs_189 = { + sizeof(struct ProtocolExtensionContainer_170P94), + offsetof(struct ProtocolExtensionContainer_170P94, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P94 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P94_tags_189, + sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P94_tags_189, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P94_tags_189[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P94_constr_189, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P94_189, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P94_specs_189 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P95_191[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P95_tags_191[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P95_specs_191 = { + sizeof(struct ProtocolExtensionContainer_170P95), + offsetof(struct ProtocolExtensionContainer_170P95, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P95 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P95_tags_191, + sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P95_tags_191, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P95_tags_191[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P95_constr_191, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P95_191, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P95_specs_191 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P96_193[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P96_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P96_specs_193 = { + sizeof(struct ProtocolExtensionContainer_170P96), + offsetof(struct ProtocolExtensionContainer_170P96, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P96 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P96_tags_193, + sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P96_tags_193, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P96_tags_193[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P96_constr_193, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P96_193, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P96_specs_193 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P97_195[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRNeighbour_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P97_tags_195[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P97_specs_195 = { + sizeof(struct ProtocolExtensionContainer_170P97), + offsetof(struct ProtocolExtensionContainer_170P97, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P97 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P97_tags_195, + sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P97_tags_195, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P97_tags_195[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P97_constr_195, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P97_195, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P97_specs_195 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P98_197[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Limited_list_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P98_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P98_specs_197 = { + sizeof(struct ProtocolExtensionContainer_170P98), + offsetof(struct ProtocolExtensionContainer_170P98, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P98 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P98_tags_197, + sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P98_tags_197, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P98_tags_197[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P98_constr_197, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P98_197, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P98_specs_197 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P99_199[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P99_tags_199[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P99_specs_199 = { + sizeof(struct ProtocolExtensionContainer_170P99), + offsetof(struct ProtocolExtensionContainer_170P99, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P99 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P99_tags_199, + sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P99_tags_199, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P99_tags_199[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P99_constr_199, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P99_199, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P99_specs_199 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P100_201[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToModify_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P100_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P100_specs_201 = { + sizeof(struct ProtocolExtensionContainer_170P100), + offsetof(struct ProtocolExtensionContainer_170P100, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P100 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P100_tags_201, + sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P100_tags_201, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P100_tags_201[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P100_constr_201, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P100_201, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P100_specs_201 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P101_203[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToActivate_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P101_tags_203[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P101_specs_203 = { + sizeof(struct ProtocolExtensionContainer_170P101), + offsetof(struct ProtocolExtensionContainer_170P101, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P101 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P101_tags_203, + sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P101_tags_203, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P101_tags_203[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P101_constr_203, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P101_203, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P101_specs_203 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P102_205[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedNRCellList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P102_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P102_specs_205 = { + sizeof(struct ProtocolExtensionContainer_170P102), + offsetof(struct ProtocolExtensionContainer_170P102, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P102 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P102_tags_205, + sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P102_tags_205, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P102_tags_205[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P102_constr_205, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P102_205, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P102_specs_205 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P103_207[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P103_tags_207[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P103_specs_207 = { + sizeof(struct ProtocolExtensionContainer_170P103), + offsetof(struct ProtocolExtensionContainer_170P103, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P103 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P103_tags_207, + sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P103_tags_207, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P103_tags_207[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P103_constr_207, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P103_207, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P103_specs_207 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P104_209[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABSInformationFDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P104_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P104_specs_209 = { + sizeof(struct ProtocolExtensionContainer_170P104), + offsetof(struct ProtocolExtensionContainer_170P104, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P104 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P104_tags_209, + sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P104_tags_209, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P104_tags_209[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P104_constr_209, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P104_209, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P104_specs_209 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P105_211[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABSInformationTDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P105_tags_211[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P105_specs_211 = { + sizeof(struct ProtocolExtensionContainer_170P105), + offsetof(struct ProtocolExtensionContainer_170P105, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P105 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P105_tags_211, + sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P105_tags_211, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P105_tags_211[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P105_constr_211, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P105_211, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P105_specs_211 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P106_213[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABS_Status_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P106_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P106_specs_213 = { + sizeof(struct ProtocolExtensionContainer_170P106), + offsetof(struct ProtocolExtensionContainer_170P106, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P106 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P106_tags_213, + sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P106_tags_213, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P106_tags_213[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P106_constr_213, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P106_213, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P106_specs_213 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P107_215[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P107_tags_215[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P107_specs_215 = { + sizeof(struct ProtocolExtensionContainer_170P107), + offsetof(struct ProtocolExtensionContainer_170P107, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P107 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P107_tags_215, + sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P107_tags_215, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P107_tags_215[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P107_constr_215, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P107_215, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P107_specs_215 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P108_217[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P108_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P108_specs_217 = { + sizeof(struct ProtocolExtensionContainer_170P108), + offsetof(struct ProtocolExtensionContainer_170P108, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P108 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P108_tags_217, + sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P108_tags_217, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P108_tags_217[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P108_constr_217, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P108_217, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P108_specs_217 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P109_219[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AllocationAndRetentionPriority_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P109_tags_219[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P109_specs_219 = { + sizeof(struct ProtocolExtensionContainer_170P109), + offsetof(struct ProtocolExtensionContainer_170P109, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P109 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P109_tags_219, + sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P109_tags_219, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P109_tags_219[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P109_constr_219, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P109_219, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P109_specs_219 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P110_221[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AS_SecurityInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P110_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P110_specs_221 = { + sizeof(struct ProtocolExtensionContainer_170P110), + offsetof(struct ProtocolExtensionContainer_170P110, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P110 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P110_tags_221, + sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P110_tags_221, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P110_tags_221[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P110_constr_221, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P110_221, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P110_specs_221 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P111_223[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BluetoothMeasurementConfiguration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P111_tags_223[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P111_specs_223 = { + sizeof(struct ProtocolExtensionContainer_170P111), + offsetof(struct ProtocolExtensionContainer_170P111, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P111 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P111_tags_223, + sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P111_tags_223, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P111_tags_223[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P111_constr_223, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P111_223, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P111_specs_223 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P112_225[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellBasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P112_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P112_specs_225 = { + sizeof(struct ProtocolExtensionContainer_170P112), + offsetof(struct ProtocolExtensionContainer_170P112, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P112 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P112_tags_225, + sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P112_tags_225, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P112_tags_225[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P112_constr_225, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P112_225, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P112_specs_225 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P113_227[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellBasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P113_tags_227[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P113_specs_227 = { + sizeof(struct ProtocolExtensionContainer_170P113), + offsetof(struct ProtocolExtensionContainer_170P113, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P113 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P113_tags_227, + sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P113_tags_227, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P113_tags_227[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P113_constr_227, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P113_227, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P113_specs_227 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P114_229[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellReplacingInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P114_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P114_specs_229 = { + sizeof(struct ProtocolExtensionContainer_170P114), + offsetof(struct ProtocolExtensionContainer_170P114, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P114 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P114_tags_229, + sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P114_tags_229, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P114_tags_229[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P114_constr_229, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P114_229, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P114_specs_229 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P115_231[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellType_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P115_tags_231[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P115_specs_231 = { + sizeof(struct ProtocolExtensionContainer_170P115), + offsetof(struct ProtocolExtensionContainer_170P115, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P115 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P115_tags_231, + sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P115_tags_231, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P115_tags_231[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P115_constr_231, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P115_231, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P115_specs_231 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P116_233[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CNTypeRestrictionsItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P116_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P116_specs_233 = { + sizeof(struct ProtocolExtensionContainer_170P116), + offsetof(struct ProtocolExtensionContainer_170P116, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P116 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P116_tags_233, + sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P116_tags_233, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P116_tags_233[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P116_constr_233, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P116_233, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P116_specs_233 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P117_235[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPHypothesisSetItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P117_tags_235[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P117_specs_235 = { + sizeof(struct ProtocolExtensionContainer_170P117), + offsetof(struct ProtocolExtensionContainer_170P117, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P117 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P117_tags_235, + sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P117_tags_235, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P117_tags_235[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P117_constr_235, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P117_235, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P117_specs_235 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P118_237[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P118_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P118_specs_237 = { + sizeof(struct ProtocolExtensionContainer_170P118), + offsetof(struct ProtocolExtensionContainer_170P118, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P118 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P118_tags_237, + sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P118_tags_237, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P118_tags_237[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P118_constr_237, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P118_237, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P118_specs_237 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P119_239[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformationItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P119_tags_239[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P119_specs_239 = { + sizeof(struct ProtocolExtensionContainer_170P119), + offsetof(struct ProtocolExtensionContainer_170P119, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P119 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P119_tags_239, + sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P119_tags_239, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P119_tags_239[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P119_constr_239, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P119_239, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P119_specs_239 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P120_241[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformationStartTime_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P120_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P120_specs_241 = { + sizeof(struct ProtocolExtensionContainer_170P120), + offsetof(struct ProtocolExtensionContainer_170P120, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P120 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P120_tags_241, + sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P120_tags_241, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P120_tags_241[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P120_constr_241, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P120_241, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P120_specs_241 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P121_243[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompositeAvailableCapacity_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P121_tags_243[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P121_specs_243 = { + sizeof(struct ProtocolExtensionContainer_170P121), + offsetof(struct ProtocolExtensionContainer_170P121, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P121 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P121_tags_243, + sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P121_tags_243, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P121_tags_243[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P121_constr_243, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P121_243, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P121_specs_243 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P122_245[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompositeAvailableCapacityGroup_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P122_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P122_specs_245 = { + sizeof(struct ProtocolExtensionContainer_170P122), + offsetof(struct ProtocolExtensionContainer_170P122, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P122 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P122_tags_245, + sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P122_tags_245, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P122_tags_245[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P122_constr_245, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P122_245, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P122_specs_245 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P123_247[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTvalue_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P123_tags_247[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P123_specs_247 = { + sizeof(struct ProtocolExtensionContainer_170P123), + offsetof(struct ProtocolExtensionContainer_170P123, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P123 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P123_tags_247, + sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P123_tags_247, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P123_tags_247[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P123_constr_247, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P123_247, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P123_specs_247 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P124_249[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTValueExtended_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P124_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P124_specs_249 = { + sizeof(struct ProtocolExtensionContainer_170P124), + offsetof(struct ProtocolExtensionContainer_170P124, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P124 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P124_tags_249, + sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P124_tags_249, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P124_tags_249[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P124_constr_249, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P124_249, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P124_specs_249 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P125_251[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P125_tags_251[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P125_specs_251 = { + sizeof(struct ProtocolExtensionContainer_170P125), + offsetof(struct ProtocolExtensionContainer_170P125, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P125 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P125_tags_251, + sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P125_tags_251, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P125_tags_251[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P125_constr_251, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P125_251, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P125_specs_251 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P126_253[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P126_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P126_specs_253 = { + sizeof(struct ProtocolExtensionContainer_170P126), + offsetof(struct ProtocolExtensionContainer_170P126, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P126 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P126_tags_253, + sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P126_tags_253, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P126_tags_253[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P126_constr_253, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P126_253, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P126_specs_253 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P127_255[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P127_tags_255[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P127_specs_255 = { + sizeof(struct ProtocolExtensionContainer_170P127), + offsetof(struct ProtocolExtensionContainer_170P127, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P127 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P127_tags_255, + sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P127_tags_255, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P127_tags_255[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P127_constr_255, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P127_255, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P127_specs_255 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P128_257[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P128_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P128_specs_257 = { + sizeof(struct ProtocolExtensionContainer_170P128), + offsetof(struct ProtocolExtensionContainer_170P128, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P128 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P128_tags_257, + sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P128_tags_257, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P128_tags_257[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P128_constr_257, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P128_257, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P128_specs_257 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P129_259[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportPerCSIProcess_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P129_tags_259[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P129_specs_259 = { + sizeof(struct ProtocolExtensionContainer_170P129), + offsetof(struct ProtocolExtensionContainer_170P129, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P129 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P129_tags_259, + sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P129_tags_259, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P129_tags_259[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P129_constr_259, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P129_259, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P129_specs_259 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P130_261[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportPerCSIProcessItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P130_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P130_specs_261 = { + sizeof(struct ProtocolExtensionContainer_170P130), + offsetof(struct ProtocolExtensionContainer_170P130, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P130 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P130_tags_261, + sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P130_tags_261, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P130_tags_261[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P130_constr_261, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P130_261, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P130_specs_261 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P131_263[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P131_tags_263[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P131_specs_263 = { + sizeof(struct ProtocolExtensionContainer_170P131), + offsetof(struct ProtocolExtensionContainer_170P131, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P131 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P131_tags_263, + sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P131_tags_263, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P131_tags_263[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P131_constr_263, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P131_263, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P131_specs_263 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P132_265[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DeliveryStatus_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P132_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P132_specs_265 = { + sizeof(struct ProtocolExtensionContainer_170P132), + offsetof(struct ProtocolExtensionContainer_170P132, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P132 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P132_tags_265, + sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P132_tags_265, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P132_tags_265[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P132_constr_265, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P132_265, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P132_specs_265 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P133_267[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DynamicNAICSInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P133_tags_267[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P133_specs_267 = { + sizeof(struct ProtocolExtensionContainer_170P133), + offsetof(struct ProtocolExtensionContainer_170P133, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P133 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P133_tags_267, + sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P133_tags_267, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P133_tags_267[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P133_constr_267, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P133_267, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P133_specs_267 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P134_269[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P134_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P134_specs_269 = { + sizeof(struct ProtocolExtensionContainer_170P134), + offsetof(struct ProtocolExtensionContainer_170P134, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P134 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P134_tags_269, + sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P134_tags_269, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P134_tags_269[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P134_constr_269, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P134_269, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P134_specs_269 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P135_271[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EnhancedRNTP_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P135_tags_271[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P135_specs_271 = { + sizeof(struct ProtocolExtensionContainer_170P135), + offsetof(struct ProtocolExtensionContainer_170P135, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P135 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P135_tags_271, + sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P135_tags_271, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P135_tags_271[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P135_constr_271, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P135_271, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P135_specs_271 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P136_273[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EnhancedRNTPStartTime_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P136_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P136_specs_273 = { + sizeof(struct ProtocolExtensionContainer_170P136), + offsetof(struct ProtocolExtensionContainer_170P136, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P136 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P136_tags_273, + sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P136_tags_273, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P136_tags_273[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P136_constr_273, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P136_273, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P136_specs_273 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P137_275[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EN_DC_ResourceConfigurationExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P137_tags_275[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P137_specs_275 = { + sizeof(struct ProtocolExtensionContainer_170P137), + offsetof(struct ProtocolExtensionContainer_170P137, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P137 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P137_tags_275, + sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P137_tags_275, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P137_tags_275[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P137_constr_275, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P137_275, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P137_specs_275 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P138_277[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ERABActivityNotifyItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P138_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P138_specs_277 = { + sizeof(struct ProtocolExtensionContainer_170P138), + offsetof(struct ProtocolExtensionContainer_170P138, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P138 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P138_tags_277, + sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P138_tags_277, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P138_tags_277[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P138_constr_277, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P138_277, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P138_specs_277 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P139_279[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P139_tags_279[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P139_specs_279 = { + sizeof(struct ProtocolExtensionContainer_170P139), + offsetof(struct ProtocolExtensionContainer_170P139, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P139 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P139_tags_279, + sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P139_tags_279, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P139_tags_279[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P139_constr_279, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P139_279, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P139_specs_279 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P140_281[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P140_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P140_specs_281 = { + sizeof(struct ProtocolExtensionContainer_170P140), + offsetof(struct ProtocolExtensionContainer_170P140, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P140 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P140_tags_281, + sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P140_tags_281, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P140_tags_281[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P140_constr_281, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P140_281, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P140_specs_281 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P141_283[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABUsageReport_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P141_tags_283[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P141_specs_283 = { + sizeof(struct ProtocolExtensionContainer_170P141), + offsetof(struct ProtocolExtensionContainer_170P141, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P141 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P141_tags_283, + sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P141_tags_283, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P141_tags_283[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P141_constr_283, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P141_283, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P141_specs_283 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P142_285[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P142_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P142_specs_285 = { + sizeof(struct ProtocolExtensionContainer_170P142), + offsetof(struct ProtocolExtensionContainer_170P142, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P142 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P142_tags_285, + sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P142_tags_285, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P142_tags_285[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P142_constr_285, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P142_285, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P142_specs_285 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P143_287[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEActivityBehaviour_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P143_tags_287[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P143_specs_287 = { + sizeof(struct ProtocolExtensionContainer_170P143), + offsetof(struct ProtocolExtensionContainer_170P143, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P143 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P143_tags_287, + sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P143_tags_287, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P143_tags_287[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P143_constr_287, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P143_287, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P143_specs_287 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P144_289[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P144_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P144_specs_289 = { + sizeof(struct ProtocolExtensionContainer_170P144), + offsetof(struct ProtocolExtensionContainer_170P144, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P144 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P144_tags_289, + sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P144_tags_289, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P144_tags_289[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P144_constr_289, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P144_289, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P144_specs_289 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P145_291[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FDD_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P145_tags_291[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P145_specs_291 = { + sizeof(struct ProtocolExtensionContainer_170P145), + offsetof(struct ProtocolExtensionContainer_170P145, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P145 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P145_tags_291, + sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P145_tags_291, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P145_tags_291[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P145_constr_291, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P145_291, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P145_specs_291 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P146_293[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenTAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P146_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P146_specs_293 = { + sizeof(struct ProtocolExtensionContainer_170P146), + offsetof(struct ProtocolExtensionContainer_170P146, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P146 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P146_tags_293, + sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P146_tags_293, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P146_tags_293[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P146_constr_293, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P146_293, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P146_specs_293 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P147_295[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ForbiddenLAs_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P147_tags_295[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P147_specs_295 = { + sizeof(struct ProtocolExtensionContainer_170P147), + offsetof(struct ProtocolExtensionContainer_170P147, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P147 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P147_tags_295, + sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P147_tags_295, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P147_tags_295[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P147_constr_295, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P147_295, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P147_specs_295 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P148_297[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_FreqBandNrItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P148_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P148_specs_297 = { + sizeof(struct ProtocolExtensionContainer_170P148), + offsetof(struct ProtocolExtensionContainer_170P148, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P148 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P148_tags_297, + sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P148_tags_297, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P148_tags_297[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P148_constr_297, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P148_297, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P148_specs_297 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P149_299[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GBR_QosInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P149_tags_299[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P149_specs_299 = { + sizeof(struct ProtocolExtensionContainer_170P149), + offsetof(struct ProtocolExtensionContainer_170P149, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P149 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P149_tags_299, + sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P149_tags_299, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P149_tags_299[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P149_constr_299, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P149_299, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P149_specs_299 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P150_301[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P150_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P150_specs_301 = { + sizeof(struct ProtocolExtensionContainer_170P150), + offsetof(struct ProtocolExtensionContainer_170P150, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P150 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P150_tags_301, + sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P150_tags_301, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P150_tags_301[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P150_constr_301, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P150_301, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P150_specs_301 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P151_303[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P151_tags_303[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P151_specs_303 = { + sizeof(struct ProtocolExtensionContainer_170P151), + offsetof(struct ProtocolExtensionContainer_170P151, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P151 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P151_tags_303, + sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P151_tags_303, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P151_tags_303[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P151_constr_303, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P151_303, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P151_specs_303 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P152_305[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P152_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P152_specs_305 = { + sizeof(struct ProtocolExtensionContainer_170P152), + offsetof(struct ProtocolExtensionContainer_170P152, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P152 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P152_tags_305, + sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P152_tags_305, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P152_tags_305[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P152_constr_305, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P152_305, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P152_specs_305 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P153_307[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GU_Group_ID_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P153_tags_307[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P153_specs_307 = { + sizeof(struct ProtocolExtensionContainer_170P153), + offsetof(struct ProtocolExtensionContainer_170P153, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P153 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P153_tags_307, + sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P153_tags_307, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P153_tags_307[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P153_constr_307, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P153_307, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P153_specs_307 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P154_309[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUMMEI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P154_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P154_specs_309 = { + sizeof(struct ProtocolExtensionContainer_170P154), + offsetof(struct ProtocolExtensionContainer_170P154, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P154 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P154_tags_309, + sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P154_tags_309, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P154_tags_309[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P154_constr_309, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P154_309, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P154_specs_309 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P155_311[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRestrictionList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P155_tags_311[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P155_specs_311 = { + sizeof(struct ProtocolExtensionContainer_170P155), + offsetof(struct ProtocolExtensionContainer_170P155, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P155 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P155_tags_311, + sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P155_tags_311, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P155_tags_311[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P155_constr_311, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P155_311, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P155_specs_311 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P156_313[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HWLoadIndicator_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P156_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P156_specs_313 = { + sizeof(struct ProtocolExtensionContainer_170P156), + offsetof(struct ProtocolExtensionContainer_170P156, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P156 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P156_tags_313, + sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P156_tags_313, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P156_tags_313[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P156_constr_313, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P156_313, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P156_specs_313 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P157_315[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P157_tags_315[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P157_specs_315 = { + sizeof(struct ProtocolExtensionContainer_170P157), + offsetof(struct ProtocolExtensionContainer_170P157, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P157 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P157_tags_315, + sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P157_tags_315, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P157_tags_315[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P157_constr_315, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P157_315, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P157_specs_315 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P158_317[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LocationReportingInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P158_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P158_specs_317 = { + sizeof(struct ProtocolExtensionContainer_170P158), + offsetof(struct ProtocolExtensionContainer_170P158, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P158 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P158_tags_317, + sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P158_tags_317, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P158_tags_317[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P158_constr_317, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P158_317, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P158_specs_317 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P159_319[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M1PeriodicReporting_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P159_tags_319[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P159_specs_319 = { + sizeof(struct ProtocolExtensionContainer_170P159), + offsetof(struct ProtocolExtensionContainer_170P159, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P159 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P159_tags_319, + sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P159_tags_319, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P159_tags_319[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P159_constr_319, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P159_319, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P159_specs_319 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P160_321[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M1ThresholdEventA2_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P160_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P160_specs_321 = { + sizeof(struct ProtocolExtensionContainer_170P160), + offsetof(struct ProtocolExtensionContainer_170P160, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P160 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P160_tags_321, + sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P160_tags_321, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P160_tags_321[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P160_constr_321, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P160_321, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P160_specs_321 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P161_323[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M3Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P161_tags_323[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P161_specs_323 = { + sizeof(struct ProtocolExtensionContainer_170P161), + offsetof(struct ProtocolExtensionContainer_170P161, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P161 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P161_tags_323, + sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P161_tags_323, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P161_tags_323[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P161_constr_323, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P161_323, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P161_specs_323 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P162_325[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M4Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P162_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P162_specs_325 = { + sizeof(struct ProtocolExtensionContainer_170P162), + offsetof(struct ProtocolExtensionContainer_170P162, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P162 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P162_tags_325, + sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P162_tags_325, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P162_tags_325[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P162_constr_325, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P162_325, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P162_specs_325 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P163_327[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M5Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P163_tags_327[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P163_specs_327 = { + sizeof(struct ProtocolExtensionContainer_170P163), + offsetof(struct ProtocolExtensionContainer_170P163, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P163 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P163_tags_327, + sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P163_tags_327, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P163_tags_327[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P163_constr_327, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P163_327, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P163_specs_327 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P164_329[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M6Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P164_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P164_specs_329 = { + sizeof(struct ProtocolExtensionContainer_170P164), + offsetof(struct ProtocolExtensionContainer_170P164, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P164 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P164_tags_329, + sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P164_tags_329, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P164_tags_329[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P164_constr_329, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P164_329, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P164_specs_329 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P165_331[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M7Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P165_tags_331[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P165_specs_331 = { + sizeof(struct ProtocolExtensionContainer_170P165), + offsetof(struct ProtocolExtensionContainer_170P165, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P165 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P165_tags_331, + sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P165_tags_331, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P165_tags_331[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P165_constr_331, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P165_331, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P165_specs_331 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P166_333[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDT_Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P166_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P166_specs_333 = { + sizeof(struct ProtocolExtensionContainer_170P166), + offsetof(struct ProtocolExtensionContainer_170P166, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P166 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P166_tags_333, + sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P166_tags_333, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P166_tags_333[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P166_constr_333, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P166_333, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P166_specs_333 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P167_335[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformationExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P167_tags_335[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P167_specs_335 = { + sizeof(struct ProtocolExtensionContainer_170P167), + offsetof(struct ProtocolExtensionContainer_170P167, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P167 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P167_tags_335, + sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P167_tags_335, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P167_tags_335[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P167_constr_335, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P167_335, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P167_specs_335 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P168_337[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBSFN_Subframe_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P168_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P168_specs_337 = { + sizeof(struct ProtocolExtensionContainer_170P168), + offsetof(struct ProtocolExtensionContainer_170P168, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P168 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P168_tags_337, + sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P168_tags_337, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P168_tags_337[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P168_constr_337, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P168_337, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P168_specs_337 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P169_339[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BandInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P169_tags_339[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P169_specs_339 = { + sizeof(struct ProtocolExtensionContainer_170P169), + offsetof(struct ProtocolExtensionContainer_170P169, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P169 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P169_tags_339, + sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P169_tags_339, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P169_tags_339[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P169_constr_339, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P169_339, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P169_specs_339 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P170_341[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SplitSRB_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P170_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P170_specs_341 = { + sizeof(struct ProtocolExtensionContainer_170P170), + offsetof(struct ProtocolExtensionContainer_170P170, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P170 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P170_tags_341, + sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P170_tags_341, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P170_tags_341[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P170_constr_341, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P170_341, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P170_specs_341 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P171_343[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UENRMeasurement_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P171_tags_343[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P171_specs_343 = { + sizeof(struct ProtocolExtensionContainer_170P171), + offsetof(struct ProtocolExtensionContainer_170P171, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P171 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P171_tags_343, + sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P171_tags_343, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P171_tags_343[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P171_constr_343, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P171_343, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P171_specs_343 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P172_345[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Neighbour_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P172_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P172_specs_345 = { + sizeof(struct ProtocolExtensionContainer_170P172), + offsetof(struct ProtocolExtensionContainer_170P172, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P172 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P172_tags_345, + sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P172_tags_345, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P172_tags_345[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P172_constr_345, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P172_345, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P172_specs_345 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P173_347[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRFreqInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P173_tags_347[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P173_specs_347 = { + sizeof(struct ProtocolExtensionContainer_170P173), + offsetof(struct ProtocolExtensionContainer_170P173, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P173 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P173_tags_347, + sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P173_tags_347, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P173_tags_347[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P173_constr_347, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P173_347, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P173_specs_347 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P174_349[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P174_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P174_specs_349 = { + sizeof(struct ProtocolExtensionContainer_170P174), + offsetof(struct ProtocolExtensionContainer_170P174, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P174 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P174_tags_349, + sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P174_tags_349, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P174_tags_349[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P174_constr_349, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P174_349, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P174_specs_349 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P175_351[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NR_TxBW_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P175_tags_351[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P175_specs_351 = { + sizeof(struct ProtocolExtensionContainer_170P175), + offsetof(struct ProtocolExtensionContainer_170P175, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P175 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P175_tags_351, + sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P175_tags_351, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P175_tags_351[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P175_constr_351, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P175_351, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P175_specs_351 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P176_353[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRUESecurityCapabilities_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P176_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P176_specs_353 = { + sizeof(struct ProtocolExtensionContainer_170P176), + offsetof(struct ProtocolExtensionContainer_170P176, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P176 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P176_tags_353, + sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P176_tags_353, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P176_tags_353[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P176_constr_353, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P176_353, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P176_specs_353 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P177_355[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PRACH_Configuration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P177_tags_355[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P177_specs_355 = { + sizeof(struct ProtocolExtensionContainer_170P177), + offsetof(struct ProtocolExtensionContainer_170P177, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P177 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P177_tags_355, + sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P177_tags_355, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P177_tags_355[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P177_constr_355, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P177_355, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P177_specs_355 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P178_357[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PLMNAreaBasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P178_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P178_specs_357 = { + sizeof(struct ProtocolExtensionContainer_170P178), + offsetof(struct ProtocolExtensionContainer_170P178, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P178 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P178_tags_357, + sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P178_tags_357, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P178_tags_357[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P178_constr_357, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P178_357, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P178_specs_357 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P179_359[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProSeAuthorized_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P179_tags_359[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P179_specs_359 = { + sizeof(struct ProtocolExtensionContainer_170P179), + offsetof(struct ProtocolExtensionContainer_170P179, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P179 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P179_tags_359, + sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P179_tags_359, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P179_tags_359[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P179_constr_359, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P179_359, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P179_specs_359 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P180_361[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P180_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P180_specs_361 = { + sizeof(struct ProtocolExtensionContainer_170P180), + offsetof(struct ProtocolExtensionContainer_170P180, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P180 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P180_tags_361, + sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P180_tags_361, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P180_tags_361[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P180_constr_361, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P180_361, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P180_specs_361 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P181_363[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedFootprintTimePattern_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P181_tags_363[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P181_specs_363 = { + sizeof(struct ProtocolExtensionContainer_170P181), + offsetof(struct ProtocolExtensionContainer_170P181, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P181 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P181_tags_363, + sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P181_tags_363, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P181_tags_363[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P181_constr_363, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P181_363, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P181_specs_363 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P182_365[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedResourceList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P182_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P182_specs_365 = { + sizeof(struct ProtocolExtensionContainer_170P182), + offsetof(struct ProtocolExtensionContainer_170P182, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P182 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P182_tags_365, + sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P182_tags_365, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P182_tags_365[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P182_constr_365, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P182_365, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P182_specs_365 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P183_367[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RadioResourceStatus_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P183_tags_367[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P183_specs_367 = { + sizeof(struct ProtocolExtensionContainer_170P183), + offsetof(struct ProtocolExtensionContainer_170P183, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P183 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P183_tags_367, + sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P183_tags_367, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P183_tags_367[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P183_constr_367, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P183_367, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P183_specs_367 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P184_369[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RelativeNarrowbandTxPower_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P184_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P184_specs_369 = { + sizeof(struct ProtocolExtensionContainer_170P184), + offsetof(struct ProtocolExtensionContainer_170P184, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P184 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P184_tags_369, + sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P184_tags_369, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P184_tags_369[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P184_constr_369, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P184_369, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P184_specs_369 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P185_371[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ReservedSubframePattern_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P185_tags_371[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P185_specs_371 = { + sizeof(struct ProtocolExtensionContainer_170P185), + offsetof(struct ProtocolExtensionContainer_170P185, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P185 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P185_tags_371, + sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P185_tags_371, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P185_tags_371[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P185_constr_371, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P185_371, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P185_specs_371 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P186_373[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P186_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P186_specs_373 = { + sizeof(struct ProtocolExtensionContainer_170P186), + offsetof(struct ProtocolExtensionContainer_170P186, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P186 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P186_tags_373, + sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P186_tags_373, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P186_tags_373[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P186_constr_373, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P186_373, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P186_specs_373 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P187_375[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RSRPMeasurementResult_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P187_tags_375[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P187_specs_375 = { + sizeof(struct ProtocolExtensionContainer_170P187), + offsetof(struct ProtocolExtensionContainer_170P187, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P187 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P187_tags_375, + sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P187_tags_375, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P187_tags_375[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P187_constr_375, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P187_375, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P187_specs_375 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P188_377[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RSRPMRList_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P188_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P188_specs_377 = { + sizeof(struct ProtocolExtensionContainer_170P188), + offsetof(struct ProtocolExtensionContainer_170P188, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P188 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P188_tags_377, + sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P188_tags_377, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P188_tags_377[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P188_constr_377, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P188_377, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P188_specs_377 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P189_379[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_S1TNLLoadIndicator_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P189_tags_379[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P189_specs_379 = { + sizeof(struct ProtocolExtensionContainer_170P189), + offsetof(struct ProtocolExtensionContainer_170P189, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P189 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P189_tags_379, + sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P189_tags_379, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P189_tags_379[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P189_constr_379, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P189_379, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P189_specs_379 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P190_381[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATUsageReport_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P190_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P190_specs_381 = { + sizeof(struct ProtocolExtensionContainer_170P190), + offsetof(struct ProtocolExtensionContainer_170P190, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P190 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P190_tags_381, + sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P190_tags_381, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P190_tags_381[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P190_constr_381, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P190_381, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P190_specs_381 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P191_383[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCell_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P191_tags_383[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P191_specs_383 = { + sizeof(struct ProtocolExtensionContainer_170P191), + offsetof(struct ProtocolExtensionContainer_170P191, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P191 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P191_tags_383, + sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P191_tags_383, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P191_tags_383[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P191_constr_383, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P191_383, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P191_specs_383 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P192_385[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCell_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P192_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P192_specs_385 = { + sizeof(struct ProtocolExtensionContainer_170P192), + offsetof(struct ProtocolExtensionContainer_170P192, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P192 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P192_tags_385, + sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P192_tags_385, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P192_tags_385[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P192_constr_385, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P192_385, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P192_specs_385 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P193_387[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformationExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P193_tags_387[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P193_specs_387 = { + sizeof(struct ProtocolExtensionContainer_170P193), + offsetof(struct ProtocolExtensionContainer_170P193, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P193 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P193_tags_387, + sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P193_tags_387, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P193_tags_387[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P193_constr_387, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P193_387, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P193_specs_387 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P194_389[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SpecialSubframe_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P194_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P194_specs_389 = { + sizeof(struct ProtocolExtensionContainer_170P194), + offsetof(struct ProtocolExtensionContainer_170P194, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P194 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P194_tags_389, + sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P194_tags_389, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P194_tags_389[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P194_constr_389, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P194_389, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P194_specs_389 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P195_391[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SubbandCQI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P195_tags_391[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P195_specs_391 = { + sizeof(struct ProtocolExtensionContainer_170P195), + offsetof(struct ProtocolExtensionContainer_170P195, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P195 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P195_tags_391, + sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P195_tags_391, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P195_tags_391[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P195_constr_391, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P195_391, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P195_specs_391 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P196_393[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P196_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P196_specs_393 = { + sizeof(struct ProtocolExtensionContainer_170P196), + offsetof(struct ProtocolExtensionContainer_170P196, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P196 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P196_tags_393, + sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P196_tags_393, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P196_tags_393[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P196_constr_393, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P196_393, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P196_specs_393 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P197_395[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ScheduledCommunicationTime_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P197_tags_395[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P197_specs_395 = { + sizeof(struct ProtocolExtensionContainer_170P197), + offsetof(struct ProtocolExtensionContainer_170P197, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P197 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P197_tags_395, + sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P197_tags_395, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P197_tags_395[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P197_constr_395, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P197_395, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P197_specs_395 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P198_397[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SubbandCQIItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P198_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P198_specs_397 = { + sizeof(struct ProtocolExtensionContainer_170P198), + offsetof(struct ProtocolExtensionContainer_170P198, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P198 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P198_tags_397, + sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P198_tags_397, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P198_tags_397[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P198_constr_397, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P198_397, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P198_specs_397 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P199_399[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SULInformation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P199_tags_399[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P199_specs_399 = { + sizeof(struct ProtocolExtensionContainer_170P199), + offsetof(struct ProtocolExtensionContainer_170P199, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P199 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P199_tags_399, + sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P199_tags_399, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P199_tags_399[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P199_constr_399, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P199_399, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P199_specs_399 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P200_401[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SupportedSULFreqBandItem_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P200_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P200_specs_401 = { + sizeof(struct ProtocolExtensionContainer_170P200), + offsetof(struct ProtocolExtensionContainer_170P200, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P200 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P200_tags_401, + sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P200_tags_401, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P200_tags_401[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P200_constr_401, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P200_401, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P200_specs_401 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P201_403[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TABasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P201_tags_403[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P201_specs_403 = { + sizeof(struct ProtocolExtensionContainer_170P201), + offsetof(struct ProtocolExtensionContainer_170P201, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P201 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P201_tags_403, + sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P201_tags_403, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P201_tags_403[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P201_constr_403, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P201_403, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P201_specs_403 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P202_405[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAIBasedMDT_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P202_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P202_specs_405 = { + sizeof(struct ProtocolExtensionContainer_170P202), + offsetof(struct ProtocolExtensionContainer_170P202, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P202 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P202_tags_405, + sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P202_tags_405, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P202_tags_405[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P202_constr_405, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P202_405, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P202_specs_405 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P203_407[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAI_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P203_tags_407[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P203_specs_407 = { + sizeof(struct ProtocolExtensionContainer_170P203), + offsetof(struct ProtocolExtensionContainer_170P203, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P203 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P203_tags_407, + sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P203_tags_407, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P203_tags_407[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P203_constr_407, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P203_407, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P203_specs_407 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P204_409[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TABasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P204_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P204_specs_409 = { + sizeof(struct ProtocolExtensionContainer_170P204), + offsetof(struct ProtocolExtensionContainer_170P204, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P204 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P204_tags_409, + sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P204_tags_409, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P204_tags_409[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P204_constr_409, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P204_409, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P204_specs_409 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P205_411[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAIBasedQMC_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P205_tags_411[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P205_specs_411 = { + sizeof(struct ProtocolExtensionContainer_170P205), + offsetof(struct ProtocolExtensionContainer_170P205, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P205 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P205_tags_411, + sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P205_tags_411, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P205_tags_411[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P205_constr_411, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P205_411, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P205_specs_411 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P206_413[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TDD_Info_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P206_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P206_specs_413 = { + sizeof(struct ProtocolExtensionContainer_170P206), + offsetof(struct ProtocolExtensionContainer_170P206, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P206 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P206_tags_413, + sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P206_tags_413, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P206_tags_413[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P206_constr_413, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P206_413, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P206_specs_413 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P207_415[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TraceActivation_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P207_tags_415[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P207_specs_415 = { + sizeof(struct ProtocolExtensionContainer_170P207), + offsetof(struct ProtocolExtensionContainer_170P207, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P207 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P207_tags_415, + sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P207_tags_415, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P207_tags_415[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P207_constr_415, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P207_415, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P207_specs_415 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P208_417[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Tunnel_Information_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P208_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P208_specs_417 = { + sizeof(struct ProtocolExtensionContainer_170P208), + offsetof(struct ProtocolExtensionContainer_170P208, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P208 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P208_tags_417, + sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P208_tags_417, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P208_tags_417[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P208_constr_417, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P208_417, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P208_specs_417 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P209_419[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAggregate_MaximumBitrate_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P209_tags_419[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P209_specs_419 = { + sizeof(struct ProtocolExtensionContainer_170P209), + offsetof(struct ProtocolExtensionContainer_170P209, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P209 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P209_tags_419, + sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P209_tags_419, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P209_tags_419[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P209_constr_419, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P209_419, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P209_specs_419 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P210_421[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAppLayerMeasConfig_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P210_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P210_specs_421 = { + sizeof(struct ProtocolExtensionContainer_170P210), + offsetof(struct ProtocolExtensionContainer_170P210, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P210 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P210_tags_421, + sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P210_tags_421, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P210_tags_421[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P210_constr_421, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P210_421, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P210_specs_421 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P211_423[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESecurityCapabilities_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P211_tags_423[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P211_specs_423 = { + sizeof(struct ProtocolExtensionContainer_170P211), + offsetof(struct ProtocolExtensionContainer_170P211, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P211 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P211_tags_423, + sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P211_tags_423, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P211_tags_423[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P211_constr_423, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P211_423, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P211_specs_423 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P212_425[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P212_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P212_specs_425 = { + sizeof(struct ProtocolExtensionContainer_170P212), + offsetof(struct ProtocolExtensionContainer_170P212, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P212 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P212_tags_425, + sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P212_tags_425, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P212_tags_425[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P212_constr_425, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P212_425, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P212_specs_425 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P213_427[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P213_tags_427[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P213_specs_427 = { + sizeof(struct ProtocolExtensionContainer_170P213), + offsetof(struct ProtocolExtensionContainer_170P213, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P213 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P213_tags_427, + sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P213_tags_427, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P213_tags_427[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P213_constr_427, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P213_427, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P213_specs_427 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P214_429[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ULandDLSharing_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P214_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P214_specs_429 = { + sizeof(struct ProtocolExtensionContainer_170P214), + offsetof(struct ProtocolExtensionContainer_170P214, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P214 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P214_tags_429, + sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P214_tags_429, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P214_tags_429[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P214_constr_429, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P214_429, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P214_specs_429 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P215_431[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ULConfiguration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P215_tags_431[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P215_specs_431 = { + sizeof(struct ProtocolExtensionContainer_170P215), + offsetof(struct ProtocolExtensionContainer_170P215, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P215 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P215_tags_431, + sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P215_tags_431, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P215_tags_431[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P215_constr_431, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P215_431, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P215_specs_431 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P216_433[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P216_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P216_specs_433 = { + sizeof(struct ProtocolExtensionContainer_170P216), + offsetof(struct ProtocolExtensionContainer_170P216, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P216 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P216_tags_433, + sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P216_tags_433, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P216_tags_433[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P216_constr_433, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P216_433, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P216_specs_433 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P217_435[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ULOnlySharing_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P217_tags_435[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P217_specs_435 = { + sizeof(struct ProtocolExtensionContainer_170P217), + offsetof(struct ProtocolExtensionContainer_170P217, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P217 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P217_tags_435, + sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P217_tags_435, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P217_tags_435[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P217_constr_435, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P217_435, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P217_specs_435 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P218_437[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UsableABSInformationFDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P218_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P218_specs_437 = { + sizeof(struct ProtocolExtensionContainer_170P218), + offsetof(struct ProtocolExtensionContainer_170P218, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P218 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P218_tags_437, + sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P218_tags_437, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P218_tags_437[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P218_constr_437, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P218_437, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P218_specs_437 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P219_439[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UsableABSInformationTDD_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P219_tags_439[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P219_specs_439 = { + sizeof(struct ProtocolExtensionContainer_170P219), + offsetof(struct ProtocolExtensionContainer_170P219, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P219 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P219_tags_439, + sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P219_tags_439, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P219_tags_439[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P219_constr_439, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P219_439, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P219_specs_439 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P220_441[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_V2XServicesAuthorized_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P220_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P220_specs_441 = { + sizeof(struct ProtocolExtensionContainer_170P220), + offsetof(struct ProtocolExtensionContainer_170P220, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P220 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P220_tags_441, + sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P220_tags_441, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P220_tags_441[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P220_constr_441, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P220_441, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P220_specs_441 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P221_443[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WidebandCQI_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P221_tags_443[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P221_specs_443 = { + sizeof(struct ProtocolExtensionContainer_170P221), + offsetof(struct ProtocolExtensionContainer_170P221, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P221 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P221_tags_443, + sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P221_tags_443, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P221_tags_443[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P221_constr_443, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P221_443, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P221_specs_443 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P222_445[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WLANMeasurementConfiguration_ExtIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_170P222_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P222_specs_445 = { + sizeof(struct ProtocolExtensionContainer_170P222), + offsetof(struct ProtocolExtensionContainer_170P222, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P222 = { + "ProtocolExtensionContainer", + "ProtocolExtensionContainer", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolExtensionContainer_170P222_tags_445, + sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445[0]), /* 1 */ + asn_DEF_ProtocolExtensionContainer_170P222_tags_445, /* Same as above */ + sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445) + /sizeof(asn_DEF_ProtocolExtensionContainer_170P222_tags_445[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolExtensionContainer_170P222_constr_445, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolExtensionContainer_170P222_445, + 1, /* Single element */ + &asn_SPC_ProtocolExtensionContainer_170P222_specs_445 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionContainer.h new file mode 100644 index 0000000..f8599d0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionContainer.h @@ -0,0 +1,2509 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolExtensionContainer_H_ +#define _ProtocolExtensionContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UE_ContextInformation_ExtIEs; +struct E_RABs_ToBeSetup_ItemExtIEs; +struct UE_ContextReferenceAtSeNB_ItemExtIEs; +struct UE_ContextReferenceAtWT_ItemExtIEs; +struct UE_ContextReferenceAtSgNB_ItemExtIEs; +struct E_RABs_Admitted_Item_ExtIEs; +struct E_RABs_SubjectToStatusTransfer_ItemExtIEs; +struct CellInformation_Item_ExtIEs; +struct ServedCellsToModify_Item_ExtIEs; +struct CellToReport_Item_ExtIEs; +struct MeasurementInitiationResult_Item_ExtIEs; +struct MeasurementFailureCause_Item_ExtIEs; +struct CompleteFailureCauseInformation_Item_ExtIEs; +struct CellMeasurementResult_Item_ExtIEs; +struct ServedCellsToActivate_Item_ExtIEs; +struct ActivatedCellList_Item_ExtIEs; +struct RNL_Header_Item_ExtIEs; +struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs; +struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs; +struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs; +struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs; +struct UE_ContextInformationSeNBModReqExtIEs; +struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs; +struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs; +struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs; +struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs; +struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs; +struct E_RABs_ToBeReleased_ModReqdItemExtIEs; +struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs; +struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs; +struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs; +struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs; +struct E_RABs_SubjectToCounterCheckItemExtIEs; +struct UE_ContextInformationRetrieve_ExtIEs; +struct E_RABs_ToBeSetupRetrieve_ItemExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs; +struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs; +struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs; +struct UE_ContextInformationSgNBModReqExtIEs; +struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs; +struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs; +struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs; +struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs; +struct ServedEUTRAcellsENDCX2Management_ExtIEs; +struct En_gNBServedCells_ExtIEs; +struct ServedNRCell_Information_ExtIEs; +struct FDD_InfoServedNRCell_Information_ExtIEs; +struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs; +struct TDD_InfoServedNRCell_Information_ExtIEs; +struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs; +struct NRNeighbour_Information_ExtIEs; +struct Limited_list_ExtIEs; +struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs; +struct ServedNRCellsToModify_Item_ExtIEs; +struct ServedNRCellsToActivate_Item_ExtIEs; +struct ActivatedNRCellList_Item_ExtIEs; +struct E_RABs_DataForwardingAddress_ItemExtIEs; +struct ABSInformationFDD_ExtIEs; +struct ABSInformationTDD_ExtIEs; +struct ABS_Status_ExtIEs; +struct AdditionalSpecialSubframe_Info_ExtIEs; +struct AdditionalSpecialSubframeExtension_Info_ExtIEs; +struct AllocationAndRetentionPriority_ExtIEs; +struct AS_SecurityInformation_ExtIEs; +struct BluetoothMeasurementConfiguration_ExtIEs; +struct CellBasedMDT_ExtIEs; +struct CellBasedQMC_ExtIEs; +struct CellReplacingInfo_ExtIEs; +struct CellType_ExtIEs; +struct CNTypeRestrictionsItem_ExtIEs; +struct CoMPHypothesisSetItem_ExtIEs; +struct CoMPInformation_ExtIEs; +struct CoMPInformationItem_ExtIEs; +struct CoMPInformationStartTime_ExtIEs; +struct CompositeAvailableCapacity_ExtIEs; +struct CompositeAvailableCapacityGroup_ExtIEs; +struct COUNTvalue_ExtIEs; +struct COUNTValueExtended_ExtIEs; +struct COUNTvaluePDCP_SNlength18_ExtIEs; +struct CriticalityDiagnostics_ExtIEs; +struct CriticalityDiagnostics_IE_List_ExtIEs; +struct CSIReportList_ExtIEs; +struct CSIReportPerCSIProcess_ExtIEs; +struct CSIReportPerCSIProcessItem_ExtIEs; +struct DataTrafficResourceIndication_ExtIEs; +struct DeliveryStatus_ExtIEs; +struct DynamicNAICSInformation_ExtIEs; +struct ECGI_ExtIEs; +struct EnhancedRNTP_ExtIEs; +struct EnhancedRNTPStartTime_ExtIEs; +struct EN_DC_ResourceConfigurationExtIEs; +struct ERABActivityNotifyItem_ExtIEs; +struct E_RAB_Level_QoS_Parameters_ExtIEs; +struct E_RAB_Item_ExtIEs; +struct E_RABUsageReport_Item_ExtIEs; +struct ExpectedUEBehaviour_ExtIEs; +struct ExpectedUEActivityBehaviour_ExtIEs; +struct ExtendedULInterferenceOverloadInfo_ExtIEs; +struct FDD_Info_ExtIEs; +struct ForbiddenTAs_Item_ExtIEs; +struct ForbiddenLAs_Item_ExtIEs; +struct FreqBandNrItem_ExtIEs; +struct GBR_QosInformation_ExtIEs; +struct GlobalENB_ID_ExtIEs; +struct GlobalGNB_ID_ExtIEs; +struct GTPtunnelEndpoint_ExtIEs; +struct GU_Group_ID_ExtIEs; +struct GUMMEI_ExtIEs; +struct HandoverRestrictionList_ExtIEs; +struct HWLoadIndicator_ExtIEs; +struct LastVisitedEUTRANCellInformation_ExtIEs; +struct LocationReportingInformation_ExtIEs; +struct M1PeriodicReporting_ExtIEs; +struct M1ThresholdEventA2_ExtIEs; +struct M3Configuration_ExtIEs; +struct M4Configuration_ExtIEs; +struct M5Configuration_ExtIEs; +struct M6Configuration_ExtIEs; +struct M7Configuration_ExtIEs; +struct MDT_Configuration_ExtIEs; +struct MeNBResourceCoordinationInformationExtIEs; +struct MBSFN_Subframe_Info_ExtIEs; +struct BandInfo_ExtIEs; +struct SplitSRB_ExtIEs; +struct UENRMeasurement_ExtIEs; +struct Neighbour_Information_ExtIEs; +struct NRFreqInfo_ExtIEs; +struct NRCGI_ExtIEs; +struct NR_TxBW_ExtIEs; +struct NRUESecurityCapabilities_ExtIEs; +struct PRACH_Configuration_ExtIEs; +struct PLMNAreaBasedQMC_ExtIEs; +struct ProSeAuthorized_ExtIEs; +struct ProtectedEUTRAResourceIndication_ExtIEs; +struct ProtectedFootprintTimePattern_ExtIEs; +struct ProtectedResourceList_Item_ExtIEs; +struct RadioResourceStatus_ExtIEs; +struct RelativeNarrowbandTxPower_ExtIEs; +struct ReservedSubframePattern_ExtIEs; +struct RLC_Status_ExtIEs; +struct RSRPMeasurementResult_ExtIEs; +struct RSRPMRList_ExtIEs; +struct S1TNLLoadIndicator_ExtIEs; +struct SecondaryRATUsageReport_Item_ExtIEs; +struct ServedCell_ExtIEs; +struct ServedCell_Information_ExtIEs; +struct SgNBResourceCoordinationInformationExtIEs; +struct SpecialSubframe_Info_ExtIEs; +struct SubbandCQI_ExtIEs; +struct Subscription_Based_UE_DifferentiationInfo_ExtIEs; +struct ScheduledCommunicationTime_ExtIEs; +struct SubbandCQIItem_ExtIEs; +struct SULInformation_ExtIEs; +struct SupportedSULFreqBandItem_ExtIEs; +struct TABasedMDT_ExtIEs; +struct TAIBasedMDT_ExtIEs; +struct TAI_Item_ExtIEs; +struct TABasedQMC_ExtIEs; +struct TAIBasedQMC_ExtIEs; +struct TDD_Info_ExtIEs; +struct TraceActivation_ExtIEs; +struct Tunnel_Information_ExtIEs; +struct UEAggregate_MaximumBitrate_ExtIEs; +struct UEAppLayerMeasConfig_ExtIEs; +struct UESecurityCapabilities_ExtIEs; +struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs; +struct UEsToBeResetList_Item_ExtIEs; +struct ULandDLSharing_ExtIEs; +struct ULConfiguration_ExtIEs; +struct UL_HighInterferenceIndicationInfo_Item_ExtIEs; +struct ULOnlySharing_ExtIEs; +struct UsableABSInformationFDD_ExtIEs; +struct UsableABSInformationTDD_ExtIEs; +struct V2XServicesAuthorized_ExtIEs; +struct WidebandCQI_ExtIEs; +struct WLANMeasurementConfiguration_ExtIEs; + +/* ProtocolExtensionContainer */ +typedef struct ProtocolExtensionContainer_170P0 { + A_SEQUENCE_OF(struct UE_ContextInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P0_t; +typedef struct ProtocolExtensionContainer_170P1 { + A_SEQUENCE_OF(struct E_RABs_ToBeSetup_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P1_t; +typedef struct ProtocolExtensionContainer_170P2 { + A_SEQUENCE_OF(struct UE_ContextReferenceAtSeNB_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P2_t; +typedef struct ProtocolExtensionContainer_170P3 { + A_SEQUENCE_OF(struct UE_ContextReferenceAtWT_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P3_t; +typedef struct ProtocolExtensionContainer_170P4 { + A_SEQUENCE_OF(struct UE_ContextReferenceAtSgNB_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P4_t; +typedef struct ProtocolExtensionContainer_170P5 { + A_SEQUENCE_OF(struct E_RABs_Admitted_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P5_t; +typedef struct ProtocolExtensionContainer_170P6 { + A_SEQUENCE_OF(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P6_t; +typedef struct ProtocolExtensionContainer_170P7 { + A_SEQUENCE_OF(struct CellInformation_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P7_t; +typedef struct ProtocolExtensionContainer_170P8 { + A_SEQUENCE_OF(struct ServedCellsToModify_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P8_t; +typedef struct ProtocolExtensionContainer_170P9 { + A_SEQUENCE_OF(struct CellToReport_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P9_t; +typedef struct ProtocolExtensionContainer_170P10 { + A_SEQUENCE_OF(struct MeasurementInitiationResult_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P10_t; +typedef struct ProtocolExtensionContainer_170P11 { + A_SEQUENCE_OF(struct MeasurementFailureCause_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P11_t; +typedef struct ProtocolExtensionContainer_170P12 { + A_SEQUENCE_OF(struct CompleteFailureCauseInformation_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P12_t; +typedef struct ProtocolExtensionContainer_170P13 { + A_SEQUENCE_OF(struct CellMeasurementResult_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P13_t; +typedef struct ProtocolExtensionContainer_170P14 { + A_SEQUENCE_OF(struct ServedCellsToActivate_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P14_t; +typedef struct ProtocolExtensionContainer_170P15 { + A_SEQUENCE_OF(struct ActivatedCellList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P15_t; +typedef struct ProtocolExtensionContainer_170P16 { + A_SEQUENCE_OF(struct RNL_Header_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P16_t; +typedef struct ProtocolExtensionContainer_170P17 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P17_t; +typedef struct ProtocolExtensionContainer_170P18 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P18_t; +typedef struct ProtocolExtensionContainer_170P19 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P19_t; +typedef struct ProtocolExtensionContainer_170P20 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P20_t; +typedef struct ProtocolExtensionContainer_170P21 { + A_SEQUENCE_OF(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P21_t; +typedef struct ProtocolExtensionContainer_170P22 { + A_SEQUENCE_OF(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P22_t; +typedef struct ProtocolExtensionContainer_170P23 { + A_SEQUENCE_OF(struct UE_ContextInformationSeNBModReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P23_t; +typedef struct ProtocolExtensionContainer_170P24 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P24_t; +typedef struct ProtocolExtensionContainer_170P25 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P25_t; +typedef struct ProtocolExtensionContainer_170P26 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P26_t; +typedef struct ProtocolExtensionContainer_170P27 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P27_t; +typedef struct ProtocolExtensionContainer_170P28 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P28_t; +typedef struct ProtocolExtensionContainer_170P29 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P29_t; +typedef struct ProtocolExtensionContainer_170P30 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P30_t; +typedef struct ProtocolExtensionContainer_170P31 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P31_t; +typedef struct ProtocolExtensionContainer_170P32 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P32_t; +typedef struct ProtocolExtensionContainer_170P33 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P33_t; +typedef struct ProtocolExtensionContainer_170P34 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P34_t; +typedef struct ProtocolExtensionContainer_170P35 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P35_t; +typedef struct ProtocolExtensionContainer_170P36 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_ModReqdItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P36_t; +typedef struct ProtocolExtensionContainer_170P37 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P37_t; +typedef struct ProtocolExtensionContainer_170P38 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P38_t; +typedef struct ProtocolExtensionContainer_170P39 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P39_t; +typedef struct ProtocolExtensionContainer_170P40 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P40_t; +typedef struct ProtocolExtensionContainer_170P41 { + A_SEQUENCE_OF(struct E_RABs_SubjectToCounterCheckItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P41_t; +typedef struct ProtocolExtensionContainer_170P42 { + A_SEQUENCE_OF(struct UE_ContextInformationRetrieve_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P42_t; +typedef struct ProtocolExtensionContainer_170P43 { + A_SEQUENCE_OF(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P43_t; +typedef struct ProtocolExtensionContainer_170P44 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P44_t; +typedef struct ProtocolExtensionContainer_170P45 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P45_t; +typedef struct ProtocolExtensionContainer_170P46 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P46_t; +typedef struct ProtocolExtensionContainer_170P47 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P47_t; +typedef struct ProtocolExtensionContainer_170P48 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P48_t; +typedef struct ProtocolExtensionContainer_170P49 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P49_t; +typedef struct ProtocolExtensionContainer_170P50 { + A_SEQUENCE_OF(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P50_t; +typedef struct ProtocolExtensionContainer_170P51 { + A_SEQUENCE_OF(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P51_t; +typedef struct ProtocolExtensionContainer_170P52 { + A_SEQUENCE_OF(struct UE_ContextInformationSgNBModReqExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P52_t; +typedef struct ProtocolExtensionContainer_170P53 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P53_t; +typedef struct ProtocolExtensionContainer_170P54 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P54_t; +typedef struct ProtocolExtensionContainer_170P55 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P55_t; +typedef struct ProtocolExtensionContainer_170P56 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P56_t; +typedef struct ProtocolExtensionContainer_170P57 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P57_t; +typedef struct ProtocolExtensionContainer_170P58 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P58_t; +typedef struct ProtocolExtensionContainer_170P59 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P59_t; +typedef struct ProtocolExtensionContainer_170P60 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P60_t; +typedef struct ProtocolExtensionContainer_170P61 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P61_t; +typedef struct ProtocolExtensionContainer_170P62 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P62_t; +typedef struct ProtocolExtensionContainer_170P63 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P63_t; +typedef struct ProtocolExtensionContainer_170P64 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P64_t; +typedef struct ProtocolExtensionContainer_170P65 { + A_SEQUENCE_OF(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P65_t; +typedef struct ProtocolExtensionContainer_170P66 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P66_t; +typedef struct ProtocolExtensionContainer_170P67 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P67_t; +typedef struct ProtocolExtensionContainer_170P68 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P68_t; +typedef struct ProtocolExtensionContainer_170P69 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P69_t; +typedef struct ProtocolExtensionContainer_170P70 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P70_t; +typedef struct ProtocolExtensionContainer_170P71 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P71_t; +typedef struct ProtocolExtensionContainer_170P72 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P72_t; +typedef struct ProtocolExtensionContainer_170P73 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P73_t; +typedef struct ProtocolExtensionContainer_170P74 { + A_SEQUENCE_OF(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P74_t; +typedef struct ProtocolExtensionContainer_170P75 { + A_SEQUENCE_OF(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P75_t; +typedef struct ProtocolExtensionContainer_170P76 { + A_SEQUENCE_OF(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P76_t; +typedef struct ProtocolExtensionContainer_170P77 { + A_SEQUENCE_OF(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P77_t; +typedef struct ProtocolExtensionContainer_170P78 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P78_t; +typedef struct ProtocolExtensionContainer_170P79 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P79_t; +typedef struct ProtocolExtensionContainer_170P80 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P80_t; +typedef struct ProtocolExtensionContainer_170P81 { + A_SEQUENCE_OF(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P81_t; +typedef struct ProtocolExtensionContainer_170P82 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P82_t; +typedef struct ProtocolExtensionContainer_170P83 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P83_t; +typedef struct ProtocolExtensionContainer_170P84 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P84_t; +typedef struct ProtocolExtensionContainer_170P85 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P85_t; +typedef struct ProtocolExtensionContainer_170P86 { + A_SEQUENCE_OF(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P86_t; +typedef struct ProtocolExtensionContainer_170P87 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P87_t; +typedef struct ProtocolExtensionContainer_170P88 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P88_t; +typedef struct ProtocolExtensionContainer_170P89 { + A_SEQUENCE_OF(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P89_t; +typedef struct ProtocolExtensionContainer_170P90 { + A_SEQUENCE_OF(struct ServedEUTRAcellsENDCX2Management_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P90_t; +typedef struct ProtocolExtensionContainer_170P91 { + A_SEQUENCE_OF(struct En_gNBServedCells_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P91_t; +typedef struct ProtocolExtensionContainer_170P92 { + A_SEQUENCE_OF(struct ServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P92_t; +typedef struct ProtocolExtensionContainer_170P93 { + A_SEQUENCE_OF(struct FDD_InfoServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P93_t; +typedef struct ProtocolExtensionContainer_170P94 { + A_SEQUENCE_OF(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P94_t; +typedef struct ProtocolExtensionContainer_170P95 { + A_SEQUENCE_OF(struct TDD_InfoServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P95_t; +typedef struct ProtocolExtensionContainer_170P96 { + A_SEQUENCE_OF(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P96_t; +typedef struct ProtocolExtensionContainer_170P97 { + A_SEQUENCE_OF(struct NRNeighbour_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P97_t; +typedef struct ProtocolExtensionContainer_170P98 { + A_SEQUENCE_OF(struct Limited_list_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P98_t; +typedef struct ProtocolExtensionContainer_170P99 { + A_SEQUENCE_OF(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P99_t; +typedef struct ProtocolExtensionContainer_170P100 { + A_SEQUENCE_OF(struct ServedNRCellsToModify_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P100_t; +typedef struct ProtocolExtensionContainer_170P101 { + A_SEQUENCE_OF(struct ServedNRCellsToActivate_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P101_t; +typedef struct ProtocolExtensionContainer_170P102 { + A_SEQUENCE_OF(struct ActivatedNRCellList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P102_t; +typedef struct ProtocolExtensionContainer_170P103 { + A_SEQUENCE_OF(struct E_RABs_DataForwardingAddress_ItemExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P103_t; +typedef struct ProtocolExtensionContainer_170P104 { + A_SEQUENCE_OF(struct ABSInformationFDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P104_t; +typedef struct ProtocolExtensionContainer_170P105 { + A_SEQUENCE_OF(struct ABSInformationTDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P105_t; +typedef struct ProtocolExtensionContainer_170P106 { + A_SEQUENCE_OF(struct ABS_Status_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P106_t; +typedef struct ProtocolExtensionContainer_170P107 { + A_SEQUENCE_OF(struct AdditionalSpecialSubframe_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P107_t; +typedef struct ProtocolExtensionContainer_170P108 { + A_SEQUENCE_OF(struct AdditionalSpecialSubframeExtension_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P108_t; +typedef struct ProtocolExtensionContainer_170P109 { + A_SEQUENCE_OF(struct AllocationAndRetentionPriority_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P109_t; +typedef struct ProtocolExtensionContainer_170P110 { + A_SEQUENCE_OF(struct AS_SecurityInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P110_t; +typedef struct ProtocolExtensionContainer_170P111 { + A_SEQUENCE_OF(struct BluetoothMeasurementConfiguration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P111_t; +typedef struct ProtocolExtensionContainer_170P112 { + A_SEQUENCE_OF(struct CellBasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P112_t; +typedef struct ProtocolExtensionContainer_170P113 { + A_SEQUENCE_OF(struct CellBasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P113_t; +typedef struct ProtocolExtensionContainer_170P114 { + A_SEQUENCE_OF(struct CellReplacingInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P114_t; +typedef struct ProtocolExtensionContainer_170P115 { + A_SEQUENCE_OF(struct CellType_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P115_t; +typedef struct ProtocolExtensionContainer_170P116 { + A_SEQUENCE_OF(struct CNTypeRestrictionsItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P116_t; +typedef struct ProtocolExtensionContainer_170P117 { + A_SEQUENCE_OF(struct CoMPHypothesisSetItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P117_t; +typedef struct ProtocolExtensionContainer_170P118 { + A_SEQUENCE_OF(struct CoMPInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P118_t; +typedef struct ProtocolExtensionContainer_170P119 { + A_SEQUENCE_OF(struct CoMPInformationItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P119_t; +typedef struct ProtocolExtensionContainer_170P120 { + A_SEQUENCE_OF(struct CoMPInformationStartTime_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P120_t; +typedef struct ProtocolExtensionContainer_170P121 { + A_SEQUENCE_OF(struct CompositeAvailableCapacity_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P121_t; +typedef struct ProtocolExtensionContainer_170P122 { + A_SEQUENCE_OF(struct CompositeAvailableCapacityGroup_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P122_t; +typedef struct ProtocolExtensionContainer_170P123 { + A_SEQUENCE_OF(struct COUNTvalue_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P123_t; +typedef struct ProtocolExtensionContainer_170P124 { + A_SEQUENCE_OF(struct COUNTValueExtended_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P124_t; +typedef struct ProtocolExtensionContainer_170P125 { + A_SEQUENCE_OF(struct COUNTvaluePDCP_SNlength18_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P125_t; +typedef struct ProtocolExtensionContainer_170P126 { + A_SEQUENCE_OF(struct CriticalityDiagnostics_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P126_t; +typedef struct ProtocolExtensionContainer_170P127 { + A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_List_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P127_t; +typedef struct ProtocolExtensionContainer_170P128 { + A_SEQUENCE_OF(struct CSIReportList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P128_t; +typedef struct ProtocolExtensionContainer_170P129 { + A_SEQUENCE_OF(struct CSIReportPerCSIProcess_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P129_t; +typedef struct ProtocolExtensionContainer_170P130 { + A_SEQUENCE_OF(struct CSIReportPerCSIProcessItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P130_t; +typedef struct ProtocolExtensionContainer_170P131 { + A_SEQUENCE_OF(struct DataTrafficResourceIndication_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P131_t; +typedef struct ProtocolExtensionContainer_170P132 { + A_SEQUENCE_OF(struct DeliveryStatus_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P132_t; +typedef struct ProtocolExtensionContainer_170P133 { + A_SEQUENCE_OF(struct DynamicNAICSInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P133_t; +typedef struct ProtocolExtensionContainer_170P134 { + A_SEQUENCE_OF(struct ECGI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P134_t; +typedef struct ProtocolExtensionContainer_170P135 { + A_SEQUENCE_OF(struct EnhancedRNTP_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P135_t; +typedef struct ProtocolExtensionContainer_170P136 { + A_SEQUENCE_OF(struct EnhancedRNTPStartTime_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P136_t; +typedef struct ProtocolExtensionContainer_170P137 { + A_SEQUENCE_OF(struct EN_DC_ResourceConfigurationExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P137_t; +typedef struct ProtocolExtensionContainer_170P138 { + A_SEQUENCE_OF(struct ERABActivityNotifyItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P138_t; +typedef struct ProtocolExtensionContainer_170P139 { + A_SEQUENCE_OF(struct E_RAB_Level_QoS_Parameters_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P139_t; +typedef struct ProtocolExtensionContainer_170P140 { + A_SEQUENCE_OF(struct E_RAB_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P140_t; +typedef struct ProtocolExtensionContainer_170P141 { + A_SEQUENCE_OF(struct E_RABUsageReport_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P141_t; +typedef struct ProtocolExtensionContainer_170P142 { + A_SEQUENCE_OF(struct ExpectedUEBehaviour_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P142_t; +typedef struct ProtocolExtensionContainer_170P143 { + A_SEQUENCE_OF(struct ExpectedUEActivityBehaviour_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P143_t; +typedef struct ProtocolExtensionContainer_170P144 { + A_SEQUENCE_OF(struct ExtendedULInterferenceOverloadInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P144_t; +typedef struct ProtocolExtensionContainer_170P145 { + A_SEQUENCE_OF(struct FDD_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P145_t; +typedef struct ProtocolExtensionContainer_170P146 { + A_SEQUENCE_OF(struct ForbiddenTAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P146_t; +typedef struct ProtocolExtensionContainer_170P147 { + A_SEQUENCE_OF(struct ForbiddenLAs_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P147_t; +typedef struct ProtocolExtensionContainer_170P148 { + A_SEQUENCE_OF(struct FreqBandNrItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P148_t; +typedef struct ProtocolExtensionContainer_170P149 { + A_SEQUENCE_OF(struct GBR_QosInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P149_t; +typedef struct ProtocolExtensionContainer_170P150 { + A_SEQUENCE_OF(struct GlobalENB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P150_t; +typedef struct ProtocolExtensionContainer_170P151 { + A_SEQUENCE_OF(struct GlobalGNB_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P151_t; +typedef struct ProtocolExtensionContainer_170P152 { + A_SEQUENCE_OF(struct GTPtunnelEndpoint_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P152_t; +typedef struct ProtocolExtensionContainer_170P153 { + A_SEQUENCE_OF(struct GU_Group_ID_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P153_t; +typedef struct ProtocolExtensionContainer_170P154 { + A_SEQUENCE_OF(struct GUMMEI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P154_t; +typedef struct ProtocolExtensionContainer_170P155 { + A_SEQUENCE_OF(struct HandoverRestrictionList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P155_t; +typedef struct ProtocolExtensionContainer_170P156 { + A_SEQUENCE_OF(struct HWLoadIndicator_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P156_t; +typedef struct ProtocolExtensionContainer_170P157 { + A_SEQUENCE_OF(struct LastVisitedEUTRANCellInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P157_t; +typedef struct ProtocolExtensionContainer_170P158 { + A_SEQUENCE_OF(struct LocationReportingInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P158_t; +typedef struct ProtocolExtensionContainer_170P159 { + A_SEQUENCE_OF(struct M1PeriodicReporting_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P159_t; +typedef struct ProtocolExtensionContainer_170P160 { + A_SEQUENCE_OF(struct M1ThresholdEventA2_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P160_t; +typedef struct ProtocolExtensionContainer_170P161 { + A_SEQUENCE_OF(struct M3Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P161_t; +typedef struct ProtocolExtensionContainer_170P162 { + A_SEQUENCE_OF(struct M4Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P162_t; +typedef struct ProtocolExtensionContainer_170P163 { + A_SEQUENCE_OF(struct M5Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P163_t; +typedef struct ProtocolExtensionContainer_170P164 { + A_SEQUENCE_OF(struct M6Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P164_t; +typedef struct ProtocolExtensionContainer_170P165 { + A_SEQUENCE_OF(struct M7Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P165_t; +typedef struct ProtocolExtensionContainer_170P166 { + A_SEQUENCE_OF(struct MDT_Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P166_t; +typedef struct ProtocolExtensionContainer_170P167 { + A_SEQUENCE_OF(struct MeNBResourceCoordinationInformationExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P167_t; +typedef struct ProtocolExtensionContainer_170P168 { + A_SEQUENCE_OF(struct MBSFN_Subframe_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P168_t; +typedef struct ProtocolExtensionContainer_170P169 { + A_SEQUENCE_OF(struct BandInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P169_t; +typedef struct ProtocolExtensionContainer_170P170 { + A_SEQUENCE_OF(struct SplitSRB_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P170_t; +typedef struct ProtocolExtensionContainer_170P171 { + A_SEQUENCE_OF(struct UENRMeasurement_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P171_t; +typedef struct ProtocolExtensionContainer_170P172 { + A_SEQUENCE_OF(struct Neighbour_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P172_t; +typedef struct ProtocolExtensionContainer_170P173 { + A_SEQUENCE_OF(struct NRFreqInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P173_t; +typedef struct ProtocolExtensionContainer_170P174 { + A_SEQUENCE_OF(struct NRCGI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P174_t; +typedef struct ProtocolExtensionContainer_170P175 { + A_SEQUENCE_OF(struct NR_TxBW_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P175_t; +typedef struct ProtocolExtensionContainer_170P176 { + A_SEQUENCE_OF(struct NRUESecurityCapabilities_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P176_t; +typedef struct ProtocolExtensionContainer_170P177 { + A_SEQUENCE_OF(struct PRACH_Configuration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P177_t; +typedef struct ProtocolExtensionContainer_170P178 { + A_SEQUENCE_OF(struct PLMNAreaBasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P178_t; +typedef struct ProtocolExtensionContainer_170P179 { + A_SEQUENCE_OF(struct ProSeAuthorized_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P179_t; +typedef struct ProtocolExtensionContainer_170P180 { + A_SEQUENCE_OF(struct ProtectedEUTRAResourceIndication_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P180_t; +typedef struct ProtocolExtensionContainer_170P181 { + A_SEQUENCE_OF(struct ProtectedFootprintTimePattern_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P181_t; +typedef struct ProtocolExtensionContainer_170P182 { + A_SEQUENCE_OF(struct ProtectedResourceList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P182_t; +typedef struct ProtocolExtensionContainer_170P183 { + A_SEQUENCE_OF(struct RadioResourceStatus_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P183_t; +typedef struct ProtocolExtensionContainer_170P184 { + A_SEQUENCE_OF(struct RelativeNarrowbandTxPower_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P184_t; +typedef struct ProtocolExtensionContainer_170P185 { + A_SEQUENCE_OF(struct ReservedSubframePattern_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P185_t; +typedef struct ProtocolExtensionContainer_170P186 { + A_SEQUENCE_OF(struct RLC_Status_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P186_t; +typedef struct ProtocolExtensionContainer_170P187 { + A_SEQUENCE_OF(struct RSRPMeasurementResult_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P187_t; +typedef struct ProtocolExtensionContainer_170P188 { + A_SEQUENCE_OF(struct RSRPMRList_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P188_t; +typedef struct ProtocolExtensionContainer_170P189 { + A_SEQUENCE_OF(struct S1TNLLoadIndicator_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P189_t; +typedef struct ProtocolExtensionContainer_170P190 { + A_SEQUENCE_OF(struct SecondaryRATUsageReport_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P190_t; +typedef struct ProtocolExtensionContainer_170P191 { + A_SEQUENCE_OF(struct ServedCell_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P191_t; +typedef struct ProtocolExtensionContainer_170P192 { + A_SEQUENCE_OF(struct ServedCell_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P192_t; +typedef struct ProtocolExtensionContainer_170P193 { + A_SEQUENCE_OF(struct SgNBResourceCoordinationInformationExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P193_t; +typedef struct ProtocolExtensionContainer_170P194 { + A_SEQUENCE_OF(struct SpecialSubframe_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P194_t; +typedef struct ProtocolExtensionContainer_170P195 { + A_SEQUENCE_OF(struct SubbandCQI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P195_t; +typedef struct ProtocolExtensionContainer_170P196 { + A_SEQUENCE_OF(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P196_t; +typedef struct ProtocolExtensionContainer_170P197 { + A_SEQUENCE_OF(struct ScheduledCommunicationTime_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P197_t; +typedef struct ProtocolExtensionContainer_170P198 { + A_SEQUENCE_OF(struct SubbandCQIItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P198_t; +typedef struct ProtocolExtensionContainer_170P199 { + A_SEQUENCE_OF(struct SULInformation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P199_t; +typedef struct ProtocolExtensionContainer_170P200 { + A_SEQUENCE_OF(struct SupportedSULFreqBandItem_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P200_t; +typedef struct ProtocolExtensionContainer_170P201 { + A_SEQUENCE_OF(struct TABasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P201_t; +typedef struct ProtocolExtensionContainer_170P202 { + A_SEQUENCE_OF(struct TAIBasedMDT_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P202_t; +typedef struct ProtocolExtensionContainer_170P203 { + A_SEQUENCE_OF(struct TAI_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P203_t; +typedef struct ProtocolExtensionContainer_170P204 { + A_SEQUENCE_OF(struct TABasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P204_t; +typedef struct ProtocolExtensionContainer_170P205 { + A_SEQUENCE_OF(struct TAIBasedQMC_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P205_t; +typedef struct ProtocolExtensionContainer_170P206 { + A_SEQUENCE_OF(struct TDD_Info_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P206_t; +typedef struct ProtocolExtensionContainer_170P207 { + A_SEQUENCE_OF(struct TraceActivation_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P207_t; +typedef struct ProtocolExtensionContainer_170P208 { + A_SEQUENCE_OF(struct Tunnel_Information_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P208_t; +typedef struct ProtocolExtensionContainer_170P209 { + A_SEQUENCE_OF(struct UEAggregate_MaximumBitrate_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P209_t; +typedef struct ProtocolExtensionContainer_170P210 { + A_SEQUENCE_OF(struct UEAppLayerMeasConfig_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P210_t; +typedef struct ProtocolExtensionContainer_170P211 { + A_SEQUENCE_OF(struct UESecurityCapabilities_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P211_t; +typedef struct ProtocolExtensionContainer_170P212 { + A_SEQUENCE_OF(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P212_t; +typedef struct ProtocolExtensionContainer_170P213 { + A_SEQUENCE_OF(struct UEsToBeResetList_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P213_t; +typedef struct ProtocolExtensionContainer_170P214 { + A_SEQUENCE_OF(struct ULandDLSharing_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P214_t; +typedef struct ProtocolExtensionContainer_170P215 { + A_SEQUENCE_OF(struct ULConfiguration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P215_t; +typedef struct ProtocolExtensionContainer_170P216 { + A_SEQUENCE_OF(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P216_t; +typedef struct ProtocolExtensionContainer_170P217 { + A_SEQUENCE_OF(struct ULOnlySharing_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P217_t; +typedef struct ProtocolExtensionContainer_170P218 { + A_SEQUENCE_OF(struct UsableABSInformationFDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P218_t; +typedef struct ProtocolExtensionContainer_170P219 { + A_SEQUENCE_OF(struct UsableABSInformationTDD_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P219_t; +typedef struct ProtocolExtensionContainer_170P220 { + A_SEQUENCE_OF(struct V2XServicesAuthorized_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P220_t; +typedef struct ProtocolExtensionContainer_170P221 { + A_SEQUENCE_OF(struct WidebandCQI_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P221_t; +typedef struct ProtocolExtensionContainer_170P222 { + A_SEQUENCE_OF(struct WLANMeasurementConfiguration_ExtIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolExtensionContainer_170P222_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P20; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P20_specs_41; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P20_41[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P21; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P21_specs_43; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P21_43[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P22; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P22_specs_45; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P22_45[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P23; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P23_specs_47; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P23_47[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P24; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P24_specs_49; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P24_49[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P25; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P25_specs_51; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P25_51[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P26; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P26_specs_53; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P26_53[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P27; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P27_specs_55; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P27_55[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P28; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P28_specs_57; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P28_57[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P29; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P29_specs_59; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P29_59[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P30; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P30_specs_61; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P30_61[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P31; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P31_specs_63; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P31_63[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P32; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P32_specs_65; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P32_65[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P33; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P33_specs_67; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P33_67[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P34; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P34_specs_69; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P34_69[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P35; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P35_specs_71; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P35_71[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P36; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P36_specs_73; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P36_73[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P37; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P37_specs_75; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P37_75[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P38; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P38_specs_77; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P38_77[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P38_constr_77; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P39; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P39_specs_79; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P39_79[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P39_constr_79; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P40; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P40_specs_81; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P40_81[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P40_constr_81; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P41; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P41_specs_83; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P41_83[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P41_constr_83; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P42; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P42_specs_85; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P42_85[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P42_constr_85; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P43; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P43_specs_87; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P43_87[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P43_constr_87; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P44; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P44_specs_89; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P44_89[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P44_constr_89; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P45; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P45_specs_91; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P45_91[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P45_constr_91; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P46; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P46_specs_93; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P46_93[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P46_constr_93; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P47; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P47_specs_95; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P47_95[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P47_constr_95; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P48; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P48_specs_97; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P48_97[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P48_constr_97; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P49; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P49_specs_99; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P49_99[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P49_constr_99; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P50; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P50_specs_101; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P50_101[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P50_constr_101; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P51; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P51_specs_103; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P51_103[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P51_constr_103; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P52; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P52_specs_105; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P52_105[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P52_constr_105; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P53; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P53_specs_107; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P53_107[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P53_constr_107; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P54; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P54_specs_109; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P54_109[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P54_constr_109; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P55; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P55_specs_111; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P55_111[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P55_constr_111; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P56; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P56_specs_113; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P56_113[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P56_constr_113; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P57; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P57_specs_115; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P57_115[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P57_constr_115; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P58; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P58_specs_117; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P58_117[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P58_constr_117; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P59; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P59_specs_119; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P59_119[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P59_constr_119; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P60; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P60_specs_121; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P60_121[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P60_constr_121; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P61; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P61_specs_123; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P61_123[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P61_constr_123; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P62; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P62_specs_125; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P62_125[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P62_constr_125; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P63; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P63_specs_127; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P63_127[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P63_constr_127; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P64; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P64_specs_129; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P64_129[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P64_constr_129; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P65; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P65_specs_131; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P65_131[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P65_constr_131; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P66; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P66_specs_133; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P66_133[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P66_constr_133; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P67; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P67_specs_135; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P67_135[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P67_constr_135; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P68; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P68_specs_137; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P68_137[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P68_constr_137; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P69; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P69_specs_139; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P69_139[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P69_constr_139; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P70; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P70_specs_141; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P70_141[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P70_constr_141; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P71; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P71_specs_143; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P71_143[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P71_constr_143; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P72; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P72_specs_145; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P72_145[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P72_constr_145; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P73; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P73_specs_147; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P73_147[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P73_constr_147; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P74; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P74_specs_149; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P74_149[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P74_constr_149; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P75; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P75_specs_151; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P75_151[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P75_constr_151; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P76; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P76_specs_153; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P76_153[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P76_constr_153; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P77; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P77_specs_155; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P77_155[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P77_constr_155; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P78; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P78_specs_157; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P78_157[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P78_constr_157; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P79; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P79_specs_159; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P79_159[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P79_constr_159; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P80; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P80_specs_161; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P80_161[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P80_constr_161; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P81; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P81_specs_163; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P81_163[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P81_constr_163; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P82; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P82_specs_165; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P82_165[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P82_constr_165; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P83; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P83_specs_167; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P83_167[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P83_constr_167; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P84; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P84_specs_169; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P84_169[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P84_constr_169; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P85; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P85_specs_171; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P85_171[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P85_constr_171; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P86; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P86_specs_173; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P86_173[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P86_constr_173; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P87; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P87_specs_175; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P87_175[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P87_constr_175; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P88; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P88_specs_177; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P88_177[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P88_constr_177; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P89; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P89_specs_179; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P89_179[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P89_constr_179; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P90; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P90_specs_181; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P90_181[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P90_constr_181; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P91; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P91_specs_183; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P91_183[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P91_constr_183; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P92; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P92_specs_185; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P92_185[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P92_constr_185; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P93; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P93_specs_187; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P93_187[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P93_constr_187; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P94; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P94_specs_189; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P94_189[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P94_constr_189; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P95; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P95_specs_191; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P95_191[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P95_constr_191; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P96; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P96_specs_193; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P96_193[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P96_constr_193; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P97; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P97_specs_195; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P97_195[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P97_constr_195; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P98; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P98_specs_197; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P98_197[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P98_constr_197; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P99; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P99_specs_199; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P99_199[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P99_constr_199; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P100; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P100_specs_201; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P100_201[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P100_constr_201; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P101; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P101_specs_203; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P101_203[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P101_constr_203; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P102; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P102_specs_205; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P102_205[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P102_constr_205; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P103; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P103_specs_207; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P103_207[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P103_constr_207; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P104; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P104_specs_209; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P104_209[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P104_constr_209; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P105; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P105_specs_211; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P105_211[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P105_constr_211; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P106; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P106_specs_213; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P106_213[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P106_constr_213; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P107; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P107_specs_215; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P107_215[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P107_constr_215; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P108; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P108_specs_217; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P108_217[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P108_constr_217; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P109; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P109_specs_219; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P109_219[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P109_constr_219; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P110; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P110_specs_221; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P110_221[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P110_constr_221; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P111; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P111_specs_223; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P111_223[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P111_constr_223; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P112; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P112_specs_225; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P112_225[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P112_constr_225; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P113; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P113_specs_227; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P113_227[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P113_constr_227; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P114; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P114_specs_229; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P114_229[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P114_constr_229; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P115; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P115_specs_231; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P115_231[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P115_constr_231; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P116; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P116_specs_233; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P116_233[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P116_constr_233; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P117; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P117_specs_235; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P117_235[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P117_constr_235; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P118; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P118_specs_237; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P118_237[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P118_constr_237; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P119; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P119_specs_239; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P119_239[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P119_constr_239; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P120; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P120_specs_241; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P120_241[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P120_constr_241; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P121; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P121_specs_243; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P121_243[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P121_constr_243; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P122; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P122_specs_245; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P122_245[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P122_constr_245; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P123; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P123_specs_247; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P123_247[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P123_constr_247; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P124; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P124_specs_249; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P124_249[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P124_constr_249; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P125; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P125_specs_251; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P125_251[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P125_constr_251; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P126; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P126_specs_253; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P126_253[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P126_constr_253; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P127; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P127_specs_255; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P127_255[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P127_constr_255; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P128; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P128_specs_257; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P128_257[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P128_constr_257; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P129; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P129_specs_259; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P129_259[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P129_constr_259; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P130; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P130_specs_261; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P130_261[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P130_constr_261; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P131; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P131_specs_263; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P131_263[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P131_constr_263; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P132; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P132_specs_265; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P132_265[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P132_constr_265; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P133; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P133_specs_267; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P133_267[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P133_constr_267; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P134; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P134_specs_269; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P134_269[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P134_constr_269; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P135; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P135_specs_271; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P135_271[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P135_constr_271; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P136; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P136_specs_273; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P136_273[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P136_constr_273; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P137; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P137_specs_275; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P137_275[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P137_constr_275; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P138; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P138_specs_277; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P138_277[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P138_constr_277; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P139; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P139_specs_279; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P139_279[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P139_constr_279; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P140; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P140_specs_281; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P140_281[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P140_constr_281; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P141; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P141_specs_283; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P141_283[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P141_constr_283; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P142; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P142_specs_285; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P142_285[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P142_constr_285; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P143; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P143_specs_287; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P143_287[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P143_constr_287; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P144; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P144_specs_289; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P144_289[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P144_constr_289; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P145; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P145_specs_291; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P145_291[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P145_constr_291; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P146; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P146_specs_293; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P146_293[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P146_constr_293; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P147; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P147_specs_295; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P147_295[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P147_constr_295; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P148; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P148_specs_297; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P148_297[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P148_constr_297; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P149; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P149_specs_299; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P149_299[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P149_constr_299; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P150; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P150_specs_301; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P150_301[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P150_constr_301; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P151; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P151_specs_303; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P151_303[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P151_constr_303; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P152; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P152_specs_305; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P152_305[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P152_constr_305; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P153; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P153_specs_307; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P153_307[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P153_constr_307; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P154; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P154_specs_309; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P154_309[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P154_constr_309; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P155; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P155_specs_311; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P155_311[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P155_constr_311; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P156; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P156_specs_313; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P156_313[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P156_constr_313; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P157; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P157_specs_315; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P157_315[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P157_constr_315; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P158; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P158_specs_317; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P158_317[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P158_constr_317; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P159; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P159_specs_319; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P159_319[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P159_constr_319; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P160; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P160_specs_321; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P160_321[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P160_constr_321; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P161; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P161_specs_323; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P161_323[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P161_constr_323; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P162; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P162_specs_325; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P162_325[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P162_constr_325; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P163; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P163_specs_327; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P163_327[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P163_constr_327; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P164; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P164_specs_329; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P164_329[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P164_constr_329; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P165; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P165_specs_331; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P165_331[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P165_constr_331; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P166; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P166_specs_333; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P166_333[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P166_constr_333; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P167; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P167_specs_335; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P167_335[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P167_constr_335; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P168; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P168_specs_337; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P168_337[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P168_constr_337; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P169; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P169_specs_339; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P169_339[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P169_constr_339; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P170; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P170_specs_341; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P170_341[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P170_constr_341; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P171; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P171_specs_343; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P171_343[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P171_constr_343; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P172; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P172_specs_345; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P172_345[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P172_constr_345; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P173; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P173_specs_347; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P173_347[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P173_constr_347; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P174; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P174_specs_349; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P174_349[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P174_constr_349; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P175; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P175_specs_351; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P175_351[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P175_constr_351; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P176; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P176_specs_353; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P176_353[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P176_constr_353; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P177; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P177_specs_355; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P177_355[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P177_constr_355; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P178; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P178_specs_357; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P178_357[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P178_constr_357; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P179; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P179_specs_359; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P179_359[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P179_constr_359; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P180; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P180_specs_361; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P180_361[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P180_constr_361; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P181; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P181_specs_363; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P181_363[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P181_constr_363; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P182; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P182_specs_365; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P182_365[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P182_constr_365; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P183; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P183_specs_367; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P183_367[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P183_constr_367; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P184; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P184_specs_369; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P184_369[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P184_constr_369; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P185; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P185_specs_371; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P185_371[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P185_constr_371; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P186; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P186_specs_373; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P186_373[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P186_constr_373; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P187; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P187_specs_375; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P187_375[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P187_constr_375; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P188; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P188_specs_377; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P188_377[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P188_constr_377; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P189; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P189_specs_379; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P189_379[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P189_constr_379; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P190; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P190_specs_381; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P190_381[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P190_constr_381; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P191; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P191_specs_383; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P191_383[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P191_constr_383; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P192; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P192_specs_385; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P192_385[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P192_constr_385; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P193; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P193_specs_387; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P193_387[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P193_constr_387; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P194; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P194_specs_389; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P194_389[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P194_constr_389; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P195; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P195_specs_391; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P195_391[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P195_constr_391; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P196; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P196_specs_393; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P196_393[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P196_constr_393; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P197; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P197_specs_395; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P197_395[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P197_constr_395; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P198; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P198_specs_397; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P198_397[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P198_constr_397; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P199; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P199_specs_399; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P199_399[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P199_constr_399; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P200; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P200_specs_401; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P200_401[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P200_constr_401; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P201; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P201_specs_403; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P201_403[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P201_constr_403; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P202; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P202_specs_405; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P202_405[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P202_constr_405; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P203; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P203_specs_407; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P203_407[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P203_constr_407; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P204; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P204_specs_409; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P204_409[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P204_constr_409; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P205; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P205_specs_411; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P205_411[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P205_constr_411; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P206; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P206_specs_413; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P206_413[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P206_constr_413; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P207; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P207_specs_415; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P207_415[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P207_constr_415; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P208; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P208_specs_417; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P208_417[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P208_constr_417; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P209; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P209_specs_419; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P209_419[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P209_constr_419; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P210; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P210_specs_421; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P210_421[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P210_constr_421; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P211; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P211_specs_423; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P211_423[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P211_constr_423; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P212; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P212_specs_425; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P212_425[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P212_constr_425; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P213; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P213_specs_427; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P213_427[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P213_constr_427; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P214; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P214_specs_429; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P214_429[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P214_constr_429; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P215; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P215_specs_431; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P215_431[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P215_constr_431; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P216; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P216_specs_433; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P216_433[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P216_constr_433; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P217; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P217_specs_435; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P217_435[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P217_constr_435; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P218; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P218_specs_437; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P218_437[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P218_constr_437; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P219; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P219_specs_439; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P219_439[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P219_constr_439; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P220; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P220_specs_441; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P220_441[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P220_constr_441; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P221; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P221_specs_443; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P221_443[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P221_constr_443; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_170P222; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_170P222_specs_445; +extern asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_170P222_445[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_170P222_constr_445; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolExtensionContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionField.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionField.c new file mode 100644 index 0000000..9e4550b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionField.c @@ -0,0 +1,40932 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolExtensionField.h" + +static const long asn_VAL_1_id_ManagementBasedMDTallowed = 74; +static const long asn_VAL_1_ignore = 1; +static const long asn_VAL_1_optional = 0; +static const long asn_VAL_2_id_ManagementBasedMDTPLMNList = 89; +static const long asn_VAL_2_ignore = 1; +static const long asn_VAL_2_optional = 0; +static const long asn_VAL_3_id_UESidelinkAggregateMaximumBitRate = 184; +static const long asn_VAL_3_ignore = 1; +static const long asn_VAL_3_optional = 0; +static const asn_ioc_cell_t asn_IOS_UE_ContextInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_ManagementBasedMDTallowed }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_ignore }, + { "&Extension", aioc__type, &asn_DEF_ManagementBasedMDTallowed }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_ManagementBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_UESidelinkAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_ignore }, + { "&Extension", aioc__type, &asn_DEF_UESidelinkAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_optional } +}; +static const asn_ioc_set_t asn_IOS_UE_ContextInformation_ExtIEs_1[] = { + { 3, 4, asn_IOS_UE_ContextInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_4_id_BearerType = 171; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_4_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_BearerType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&Extension", aioc__type, &asn_DEF_BearerType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1_rows } +}; +static const long asn_VAL_5_id_ReceiveStatusOfULPDCPSDUsExtended = 91; +static const long asn_VAL_5_ignore = 1; +static const long asn_VAL_5_optional = 0; +static const long asn_VAL_6_id_ULCOUNTValueExtended = 92; +static const long asn_VAL_6_ignore = 1; +static const long asn_VAL_6_optional = 0; +static const long asn_VAL_7_id_DLCOUNTValueExtended = 93; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_7_optional = 0; +static const long asn_VAL_8_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 = 150; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_8_optional = 0; +static const long asn_VAL_9_id_ULCOUNTValuePDCP_SNlength18 = 151; +static const long asn_VAL_9_ignore = 1; +static const long asn_VAL_9_optional = 0; +static const long asn_VAL_10_id_DLCOUNTValuePDCP_SNlength18 = 152; +static const long asn_VAL_10_ignore = 1; +static const long asn_VAL_10_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_ReceiveStatusOfULPDCPSDUsExtended }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_ignore }, + { "&Extension", aioc__type, &asn_DEF_ReceiveStatusOfULPDCPSDUsExtended }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_ULCOUNTValueExtended }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTValueExtended }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_DLCOUNTValueExtended }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTValueExtended }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&Extension", aioc__type, &asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_ULCOUNTValuePDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTvaluePDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_DLCOUNTValuePDCP_SNlength18 }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, + { "&Extension", aioc__type, &asn_DEF_COUNTvaluePDCP_SNlength18 }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1[] = { + { 6, 4, asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1_rows } +}; +static const long asn_VAL_11_id_ABSInformation = 61; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_11_optional = 0; +static const long asn_VAL_12_id_InvokeIndication = 62; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_12_optional = 0; +static const long asn_VAL_13_id_IntendedULDLConfiguration = 99; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_13_optional = 0; +static const long asn_VAL_14_id_ExtendedULInterferenceOverloadInfo = 100; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_14_optional = 0; +static const long asn_VAL_15_id_CoMPInformation = 108; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_15_optional = 0; +static const long asn_VAL_16_id_DynamicDLTransmissionInformation = 106; +static const long asn_VAL_16_ignore = 1; +static const long asn_VAL_16_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellInformation_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_ABSInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&Extension", aioc__type, &asn_DEF_ABSInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_InvokeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&Extension", aioc__type, &asn_DEF_InvokeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_IntendedULDLConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&Extension", aioc__type, &asn_DEF_SubframeAssignment }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_ExtendedULInterferenceOverloadInfo }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedULInterferenceOverloadInfo }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_CoMPInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&Extension", aioc__type, &asn_DEF_CoMPInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_DynamicDLTransmissionInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore }, + { "&Extension", aioc__type, &asn_DEF_DynamicDLTransmissionInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_optional } +}; +static const asn_ioc_set_t asn_IOS_CellInformation_Item_ExtIEs_1[] = { + { 6, 4, asn_IOS_CellInformation_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_17_id_DeactivationIndication = 59; +static const long asn_VAL_17_ignore = 1; +static const long asn_VAL_17_optional = 0; +static const asn_ioc_cell_t asn_IOS_ServedCellsToModify_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_DeactivationIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_ignore }, + { "&Extension", aioc__type, &asn_DEF_DeactivationIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_optional } +}; +static const asn_ioc_set_t asn_IOS_ServedCellsToModify_Item_ExtIEs_1[] = { + { 1, 4, asn_IOS_ServedCellsToModify_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_18_id_CompositeAvailableCapacityGroup = 42; +static const long asn_VAL_18_ignore = 1; +static const long asn_VAL_18_optional = 0; +static const long asn_VAL_19_id_ABS_Status = 63; +static const long asn_VAL_19_ignore = 1; +static const long asn_VAL_19_optional = 0; +static const long asn_VAL_20_id_RSRPMRList = 110; +static const long asn_VAL_20_ignore = 1; +static const long asn_VAL_20_optional = 0; +static const long asn_VAL_21_id_CSIReportList = 146; +static const long asn_VAL_21_ignore = 1; +static const long asn_VAL_21_optional = 0; +static const long asn_VAL_22_id_CellReportingIndicator = 170; +static const long asn_VAL_22_ignore = 1; +static const long asn_VAL_22_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellMeasurementResult_Item_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_CompositeAvailableCapacityGroup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_ignore }, + { "&Extension", aioc__type, &asn_DEF_CompositeAvailableCapacityGroup }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_ABS_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_ignore }, + { "&Extension", aioc__type, &asn_DEF_ABS_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RSRPMRList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_ignore }, + { "&Extension", aioc__type, &asn_DEF_RSRPMRList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_CSIReportList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, + { "&Extension", aioc__type, &asn_DEF_CSIReportList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CellReportingIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, + { "&Extension", aioc__type, &asn_DEF_CellReportingIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } +}; +static const asn_ioc_set_t asn_IOS_CellMeasurementResult_Item_ExtIEs_1[] = { + { 5, 4, asn_IOS_CellMeasurementResult_Item_ExtIEs_1_rows } +}; +static const long asn_VAL_23_id_Correlation_ID = 166; +static const long asn_VAL_23_ignore = 1; +static const long asn_VAL_23_optional = 0; +static const long asn_VAL_24_id_SIPTO_Correlation_ID = 167; +static const long asn_VAL_24_ignore = 1; +static const long asn_VAL_24_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_SIPTO_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1_rows } +}; +static const long asn_VAL_25_id_Correlation_ID = 166; +static const long asn_VAL_25_ignore = 1; +static const long asn_VAL_25_optional = 0; +static const long asn_VAL_26_id_SIPTO_Correlation_ID = 167; +static const long asn_VAL_26_ignore = 1; +static const long asn_VAL_26_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_SIPTO_Correlation_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_ignore }, + { "&Extension", aioc__type, &asn_DEF_Correlation_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1_rows } +}; +static const long asn_VAL_27_id_UESidelinkAggregateMaximumBitRate = 184; +static const long asn_VAL_27_ignore = 1; +static const long asn_VAL_27_optional = 0; +static const asn_ioc_cell_t asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_UESidelinkAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_ignore }, + { "&Extension", aioc__type, &asn_DEF_UESidelinkAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_optional } +}; +static const asn_ioc_set_t asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1[] = { + { 1, 4, asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1_rows } +}; +static const long asn_VAL_28_id_uL_GTPtunnelEndpoint = 185; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_dL_Forwarding = 306; +static const long asn_VAL_29_ignore = 1; +static const long asn_VAL_29_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_uL_GTPtunnelEndpoint }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Extension", aioc__type, &asn_DEF_GTPtunnelEndpoint }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_dL_Forwarding }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_ignore }, + { "&Extension", aioc__type, &asn_DEF_DL_Forwarding }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1_rows } +}; +static const long asn_VAL_30_id_RLCMode_transferred = 317; +static const long asn_VAL_30_ignore = 1; +static const long asn_VAL_30_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RLCMode_transferred }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLCMode }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_31_id_uLpDCPSnLength = 302; +static const long asn_VAL_31_ignore = 1; +static const long asn_VAL_31_optional = 0; +static const long asn_VAL_32_id_dLPDCPSnLength = 311; +static const long asn_VAL_32_ignore = 1; +static const long asn_VAL_32_optional = 0; +static const long asn_VAL_33_id_duplicationActivation = 315; +static const long asn_VAL_33_ignore = 1; +static const long asn_VAL_33_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_duplicationActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_ignore }, + { "&Extension", aioc__type, &asn_DEF_DuplicationActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_34_id_uLpDCPSnLength = 302; +static const long asn_VAL_34_ignore = 1; +static const long asn_VAL_34_optional = 0; +static const long asn_VAL_35_id_dLPDCPSnLength = 311; +static const long asn_VAL_35_ignore = 1; +static const long asn_VAL_35_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_36_id_lCID = 314; +static const long asn_VAL_36_ignore = 1; +static const long asn_VAL_36_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_lCID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_ignore }, + { "&Extension", aioc__type, &asn_DEF_LCID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_37_id_SubscriberProfileIDforRFP = 275; +static const long asn_VAL_37_ignore = 1; +static const long asn_VAL_37_optional = 0; +static const asn_ioc_cell_t asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_ignore }, + { "&Extension", aioc__type, &asn_DEF_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_optional } +}; +static const asn_ioc_set_t asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1[] = { + { 1, 4, asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1_rows } +}; +static const long asn_VAL_38_id_RLCMode_transferred = 317; +static const long asn_VAL_38_ignore = 1; +static const long asn_VAL_38_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RLCMode_transferred }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLCMode }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_39_id_uLpDCPSnLength = 302; +static const long asn_VAL_39_ignore = 1; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_dLPDCPSnLength = 311; +static const long asn_VAL_40_ignore = 1; +static const long asn_VAL_40_optional = 0; +static const long asn_VAL_41_id_duplicationActivation = 315; +static const long asn_VAL_41_ignore = 1; +static const long asn_VAL_41_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_duplicationActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_ignore }, + { "&Extension", aioc__type, &asn_DEF_DuplicationActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_42_id_RLC_Status = 300; +static const long asn_VAL_42_ignore = 1; +static const long asn_VAL_42_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RLC_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLC_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_43_id_uLpDCPSnLength = 302; +static const long asn_VAL_43_ignore = 1; +static const long asn_VAL_43_optional = 0; +static const long asn_VAL_44_id_dLPDCPSnLength = 311; +static const long asn_VAL_44_ignore = 1; +static const long asn_VAL_44_optional = 0; +static const long asn_VAL_45_id_secondarymeNBULGTPTEIDatPDCP = 313; +static const long asn_VAL_45_ignore = 1; +static const long asn_VAL_45_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_secondarymeNBULGTPTEIDatPDCP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_ignore }, + { "&Extension", aioc__type, &asn_DEF_GTPtunnelEndpoint }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_46_id_uLpDCPSnLength = 302; +static const long asn_VAL_46_ignore = 1; +static const long asn_VAL_46_optional = 0; +static const long asn_VAL_47_id_dLPDCPSnLength = 311; +static const long asn_VAL_47_ignore = 1; +static const long asn_VAL_47_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_48_id_lCID = 314; +static const long asn_VAL_48_ignore = 1; +static const long asn_VAL_48_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_lCID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_ignore }, + { "&Extension", aioc__type, &asn_DEF_LCID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_49_id_uLpDCPSnLength = 302; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_optional = 0; +static const long asn_VAL_50_id_dLPDCPSnLength = 311; +static const long asn_VAL_50_ignore = 1; +static const long asn_VAL_50_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_51_id_secondarysgNBDLGTPTEIDatPDCP = 312; +static const long asn_VAL_51_ignore = 1; +static const long asn_VAL_51_optional = 0; +static const long asn_VAL_52_id_RLC_Status = 300; +static const long asn_VAL_52_ignore = 1; +static const long asn_VAL_52_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_secondarysgNBDLGTPTEIDatPDCP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_ignore }, + { "&Extension", aioc__type, &asn_DEF_GTPtunnelEndpoint }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RLC_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLC_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_53_id_RLCMode_transferred = 317; +static const long asn_VAL_53_ignore = 1; +static const long asn_VAL_53_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_RLCMode_transferred }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLCMode }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1_rows } +}; +static const long asn_VAL_54_id_uLpDCPSnLength = 302; +static const long asn_VAL_54_ignore = 1; +static const long asn_VAL_54_optional = 0; +static const long asn_VAL_55_id_dLPDCPSnLength = 311; +static const long asn_VAL_55_ignore = 1; +static const long asn_VAL_55_optional = 0; +static const long asn_VAL_56_id_new_drb_ID_req = 325; +static const long asn_VAL_56_ignore = 1; +static const long asn_VAL_56_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_new_drb_ID_req }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_ignore }, + { "&Extension", aioc__type, &asn_DEF_NewDRBIDrequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1[] = { + { 3, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1_rows } +}; +static const long asn_VAL_57_id_RLC_Status = 300; +static const long asn_VAL_57_ignore = 1; +static const long asn_VAL_57_optional = 0; +static const long asn_VAL_58_id_lCID = 314; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_RLC_Status }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_ignore }, + { "&Extension", aioc__type, &asn_DEF_RLC_Status }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_lCID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Extension", aioc__type, &asn_DEF_LCID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_59_id_uLpDCPSnLength = 302; +static const long asn_VAL_59_ignore = 1; +static const long asn_VAL_59_optional = 0; +static const long asn_VAL_60_id_dLPDCPSnLength = 311; +static const long asn_VAL_60_ignore = 1; +static const long asn_VAL_60_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_uLpDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_dLPDCPSnLength }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_ignore }, + { "&Extension", aioc__type, &asn_DEF_PDCPSnLength }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1[] = { + { 2, 4, asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1_rows } +}; +static const long asn_VAL_61_id_DownlinkPacketLossRate = 273; +static const long asn_VAL_61_ignore = 1; +static const long asn_VAL_61_optional = 0; +static const long asn_VAL_62_id_UplinkPacketLossRate = 274; +static const long asn_VAL_62_ignore = 1; +static const long asn_VAL_62_optional = 0; +static const asn_ioc_cell_t asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_DownlinkPacketLossRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_ignore }, + { "&Extension", aioc__type, &asn_DEF_Packet_LossRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_UplinkPacketLossRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_ignore }, + { "&Extension", aioc__type, &asn_DEF_Packet_LossRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_optional } +}; +static const asn_ioc_set_t asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1[] = { + { 2, 4, asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1_rows } +}; +static const long asn_VAL_63_id_UL_EARFCNExtension = 95; +static const long asn_VAL_63_reject = 0; +static const long asn_VAL_63_optional = 0; +static const long asn_VAL_64_id_DL_EARFCNExtension = 96; +static const long asn_VAL_64_reject = 0; +static const long asn_VAL_64_optional = 0; +static const long asn_VAL_65_id_OffsetOfNbiotChannelNumberToDL_EARFCN = 177; +static const long asn_VAL_65_reject = 0; +static const long asn_VAL_65_optional = 0; +static const long asn_VAL_66_id_OffsetOfNbiotChannelNumberToUL_EARFCN = 178; +static const long asn_VAL_66_reject = 0; +static const long asn_VAL_66_optional = 0; +static const long asn_VAL_67_id_NRS_NSSS_PowerOffset = 282; +static const long asn_VAL_67_ignore = 1; +static const long asn_VAL_67_optional = 0; +static const long asn_VAL_68_id_NSSS_NumOccasionDifferentPrecoder = 283; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_optional = 0; +static const asn_ioc_cell_t asn_IOS_FDD_Info_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_UL_EARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_DL_EARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_OffsetOfNbiotChannelNumberToDL_EARFCN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_reject }, + { "&Extension", aioc__type, &asn_DEF_OffsetOfNbiotChannelNumberToEARFCN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_OffsetOfNbiotChannelNumberToUL_EARFCN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_reject }, + { "&Extension", aioc__type, &asn_DEF_OffsetOfNbiotChannelNumberToEARFCN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_NRS_NSSS_PowerOffset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRS_NSSS_PowerOffset }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_NSSS_NumOccasionDifferentPrecoder }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Extension", aioc__type, &asn_DEF_NSSS_NumOccasionDifferentPrecoder }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_optional } +}; +static const asn_ioc_set_t asn_IOS_FDD_Info_ExtIEs_1[] = { + { 6, 4, asn_IOS_FDD_Info_ExtIEs_1_rows } +}; +static const long asn_VAL_69_id_extended_e_RAB_MaximumBitrateDL = 196; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_optional = 0; +static const long asn_VAL_70_id_extended_e_RAB_MaximumBitrateUL = 197; +static const long asn_VAL_70_ignore = 1; +static const long asn_VAL_70_optional = 0; +static const long asn_VAL_71_id_extended_e_RAB_GuaranteedBitrateDL = 198; +static const long asn_VAL_71_ignore = 1; +static const long asn_VAL_71_optional = 0; +static const long asn_VAL_72_id_extended_e_RAB_GuaranteedBitrateUL = 199; +static const long asn_VAL_72_ignore = 1; +static const long asn_VAL_72_optional = 0; +static const asn_ioc_cell_t asn_IOS_GBR_QosInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_extended_e_RAB_MaximumBitrateDL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_extended_e_RAB_MaximumBitrateUL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_extended_e_RAB_GuaranteedBitrateDL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_extended_e_RAB_GuaranteedBitrateUL }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional } +}; +static const asn_ioc_set_t asn_IOS_GBR_QosInformation_ExtIEs_1[] = { + { 4, 4, asn_IOS_GBR_QosInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_73_id_NRrestrictioninEPSasSecondaryRAT = 202; +static const long asn_VAL_73_ignore = 1; +static const long asn_VAL_73_optional = 0; +static const long asn_VAL_74_id_CNTypeRestrictions = 301; +static const long asn_VAL_74_ignore = 1; +static const long asn_VAL_74_optional = 0; +static const long asn_VAL_75_id_NRrestrictionin5GS = 305; +static const long asn_VAL_75_ignore = 1; +static const long asn_VAL_75_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverRestrictionList_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_NRrestrictioninEPSasSecondaryRAT }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRrestrictioninEPSasSecondaryRAT }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_CNTypeRestrictions }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_ignore }, + { "&Extension", aioc__type, &asn_DEF_CNTypeRestrictions }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_NRrestrictionin5GS }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRrestrictionin5GS }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverRestrictionList_ExtIEs_1[] = { + { 3, 4, asn_IOS_HandoverRestrictionList_ExtIEs_1_rows } +}; +static const long asn_VAL_76_id_Time_UE_StayedInCell_EnhancedGranularity = 77; +static const long asn_VAL_76_ignore = 1; +static const long asn_VAL_76_optional = 0; +static const long asn_VAL_77_id_HO_cause = 80; +static const long asn_VAL_77_ignore = 1; +static const long asn_VAL_77_optional = 0; +static const asn_ioc_cell_t asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_Time_UE_StayedInCell_EnhancedGranularity }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_ignore }, + { "&Extension", aioc__type, &asn_DEF_Time_UE_StayedInCell_EnhancedGranularity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_HO_cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_ignore }, + { "&Extension", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_optional } +}; +static const asn_ioc_set_t asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1[] = { + { 2, 4, asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1_rows } +}; +static const long asn_VAL_78_id_M3Configuration = 85; +static const long asn_VAL_78_ignore = 1; +static const long asn_VAL_78_conditional = 1; +static const long asn_VAL_79_id_M4Configuration = 86; +static const long asn_VAL_79_ignore = 1; +static const long asn_VAL_79_conditional = 1; +static const long asn_VAL_80_id_M5Configuration = 87; +static const long asn_VAL_80_ignore = 1; +static const long asn_VAL_80_conditional = 1; +static const long asn_VAL_81_id_MDT_Location_Info = 88; +static const long asn_VAL_81_ignore = 1; +static const long asn_VAL_81_optional = 0; +static const long asn_VAL_82_id_SignallingBasedMDTPLMNList = 90; +static const long asn_VAL_82_ignore = 1; +static const long asn_VAL_82_optional = 0; +static const long asn_VAL_83_id_M6Configuration = 161; +static const long asn_VAL_83_ignore = 1; +static const long asn_VAL_83_conditional = 1; +static const long asn_VAL_84_id_M7Configuration = 162; +static const long asn_VAL_84_ignore = 1; +static const long asn_VAL_84_conditional = 1; +static const long asn_VAL_85_id_BluetoothMeasurementConfiguration = 303; +static const long asn_VAL_85_ignore = 1; +static const long asn_VAL_85_optional = 0; +static const long asn_VAL_86_id_WLANMeasurementConfiguration = 304; +static const long asn_VAL_86_ignore = 1; +static const long asn_VAL_86_optional = 0; +static const asn_ioc_cell_t asn_IOS_MDT_Configuration_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_M3Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_ignore }, + { "&Extension", aioc__type, &asn_DEF_M3Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_M4Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_ignore }, + { "&Extension", aioc__type, &asn_DEF_M4Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_M5Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_ignore }, + { "&Extension", aioc__type, &asn_DEF_M5Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_MDT_Location_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDT_Location_Info }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_SignallingBasedMDTPLMNList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDTPLMNList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_M6Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_ignore }, + { "&Extension", aioc__type, &asn_DEF_M6Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_M7Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_ignore }, + { "&Extension", aioc__type, &asn_DEF_M7Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_BluetoothMeasurementConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_ignore }, + { "&Extension", aioc__type, &asn_DEF_BluetoothMeasurementConfiguration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_WLANMeasurementConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_ignore }, + { "&Extension", aioc__type, &asn_DEF_WLANMeasurementConfiguration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_optional } +}; +static const asn_ioc_set_t asn_IOS_MDT_Configuration_ExtIEs_1[] = { + { 9, 4, asn_IOS_MDT_Configuration_ExtIEs_1_rows } +}; +static const long asn_VAL_87_id_NRCGI = 322; +static const long asn_VAL_87_ignore = 1; +static const long asn_VAL_87_optional = 0; +static const long asn_VAL_88_id_MeNBCoordinationAssistanceInformation = 323; +static const long asn_VAL_88_reject = 0; +static const long asn_VAL_88_optional = 0; +static const asn_ioc_cell_t asn_IOS_MeNBResourceCoordinationInformationExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_NRCGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_ignore }, + { "&Extension", aioc__type, &asn_DEF_NRCGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_MeNBCoordinationAssistanceInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_reject }, + { "&Extension", aioc__type, &asn_DEF_MeNBCoordinationAssistanceInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_optional } +}; +static const asn_ioc_set_t asn_IOS_MeNBResourceCoordinationInformationExtIEs_1[] = { + { 2, 4, asn_IOS_MeNBResourceCoordinationInformationExtIEs_1_rows } +}; +static const long asn_VAL_89_id_NeighbourTAC = 76; +static const long asn_VAL_89_ignore = 1; +static const long asn_VAL_89_optional = 0; +static const long asn_VAL_90_id_eARFCNExtension = 94; +static const long asn_VAL_90_reject = 0; +static const long asn_VAL_90_optional = 0; +static const asn_ioc_cell_t asn_IOS_Neighbour_Information_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_NeighbourTAC }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_ignore }, + { "&Extension", aioc__type, &asn_DEF_TAC }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_eARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_optional } +}; +static const asn_ioc_set_t asn_IOS_Neighbour_Information_ExtIEs_1[] = { + { 2, 4, asn_IOS_Neighbour_Information_ExtIEs_1_rows } +}; +static const long asn_VAL_91_id_ProSeUEtoNetworkRelaying = 149; +static const long asn_VAL_91_ignore = 1; +static const long asn_VAL_91_optional = 0; +static const asn_ioc_cell_t asn_IOS_ProSeAuthorized_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_ProSeUEtoNetworkRelaying }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_ignore }, + { "&Extension", aioc__type, &asn_DEF_ProSeUEtoNetworkRelaying }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_optional } +}; +static const asn_ioc_set_t asn_IOS_ProSeAuthorized_ExtIEs_1[] = { + { 1, 4, asn_IOS_ProSeAuthorized_ExtIEs_1_rows } +}; +static const long asn_VAL_92_id_DL_scheduling_PDCCH_CCE_usage = 193; +static const long asn_VAL_92_ignore = 1; +static const long asn_VAL_92_optional = 0; +static const long asn_VAL_93_id_UL_scheduling_PDCCH_CCE_usage = 194; +static const long asn_VAL_93_ignore = 1; +static const long asn_VAL_93_optional = 0; +static const asn_ioc_cell_t asn_IOS_RadioResourceStatus_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_DL_scheduling_PDCCH_CCE_usage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_ignore }, + { "&Extension", aioc__type, &asn_DEF_DL_scheduling_PDCCH_CCE_usage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_UL_scheduling_PDCCH_CCE_usage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_ignore }, + { "&Extension", aioc__type, &asn_DEF_UL_scheduling_PDCCH_CCE_usage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_optional } +}; +static const asn_ioc_set_t asn_IOS_RadioResourceStatus_ExtIEs_1[] = { + { 2, 4, asn_IOS_RadioResourceStatus_ExtIEs_1_rows } +}; +static const long asn_VAL_94_id_enhancedRNTP = 148; +static const long asn_VAL_94_ignore = 1; +static const long asn_VAL_94_optional = 0; +static const asn_ioc_cell_t asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_enhancedRNTP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_ignore }, + { "&Extension", aioc__type, &asn_DEF_EnhancedRNTP }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional } +}; +static const asn_ioc_set_t asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1[] = { + { 1, 4, asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1_rows } +}; +static const long asn_VAL_95_id_UEID = 147; +static const long asn_VAL_95_ignore = 1; +static const long asn_VAL_95_optional = 0; +static const asn_ioc_cell_t asn_IOS_RSRPMRList_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_UEID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_ignore }, + { "&Extension", aioc__type, &asn_DEF_UEID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_optional } +}; +static const asn_ioc_set_t asn_IOS_RSRPMRList_ExtIEs_1[] = { + { 1, 4, asn_IOS_RSRPMRList_ExtIEs_1_rows } +}; +static const long asn_VAL_96_id_Number_of_Antennaports = 41; +static const long asn_VAL_96_ignore = 1; +static const long asn_VAL_96_optional = 0; +static const long asn_VAL_97_id_PRACH_Configuration = 55; +static const long asn_VAL_97_ignore = 1; +static const long asn_VAL_97_optional = 0; +static const long asn_VAL_98_id_MBSFN_Subframe_Info = 56; +static const long asn_VAL_98_ignore = 1; +static const long asn_VAL_98_optional = 0; +static const long asn_VAL_99_id_CSG_Id = 70; +static const long asn_VAL_99_ignore = 1; +static const long asn_VAL_99_optional = 0; +static const long asn_VAL_100_id_MBMS_Service_Area_List = 79; +static const long asn_VAL_100_ignore = 1; +static const long asn_VAL_100_optional = 0; +static const long asn_VAL_101_id_MultibandInfoList = 84; +static const long asn_VAL_101_ignore = 1; +static const long asn_VAL_101_optional = 0; +static const long asn_VAL_102_id_FreqBandIndicatorPriority = 160; +static const long asn_VAL_102_ignore = 1; +static const long asn_VAL_102_optional = 0; +static const long asn_VAL_103_id_BandwidthReducedSI = 180; +static const long asn_VAL_103_ignore = 1; +static const long asn_VAL_103_optional = 0; +static const long asn_VAL_104_id_ProtectedEUTRAResourceIndication = 284; +static const long asn_VAL_104_ignore = 1; +static const long asn_VAL_104_optional = 0; +static const asn_ioc_cell_t asn_IOS_ServedCell_Information_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_Number_of_Antennaports }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_ignore }, + { "&Extension", aioc__type, &asn_DEF_Number_of_Antennaports }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_PRACH_Configuration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_ignore }, + { "&Extension", aioc__type, &asn_DEF_PRACH_Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_MBSFN_Subframe_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_ignore }, + { "&Extension", aioc__type, &asn_DEF_MBSFN_Subframe_Infolist }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_CSG_Id }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_ignore }, + { "&Extension", aioc__type, &asn_DEF_CSG_Id }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_MBMS_Service_Area_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_ignore }, + { "&Extension", aioc__type, &asn_DEF_MBMS_Service_Area_Identity_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_MultibandInfoList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_ignore }, + { "&Extension", aioc__type, &asn_DEF_MultibandInfoList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_FreqBandIndicatorPriority }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_ignore }, + { "&Extension", aioc__type, &asn_DEF_FreqBandIndicatorPriority }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_BandwidthReducedSI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_ignore }, + { "&Extension", aioc__type, &asn_DEF_BandwidthReducedSI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_ProtectedEUTRAResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_ignore }, + { "&Extension", aioc__type, &asn_DEF_ProtectedEUTRAResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_optional } +}; +static const asn_ioc_set_t asn_IOS_ServedCell_Information_ExtIEs_1[] = { + { 9, 4, asn_IOS_ServedCell_Information_ExtIEs_1_rows } +}; +static const long asn_VAL_105_id_ECGI = 316; +static const long asn_VAL_105_ignore = 1; +static const long asn_VAL_105_optional = 0; +static const long asn_VAL_106_id_SgNBCoordinationAssistanceInformation = 324; +static const long asn_VAL_106_reject = 0; +static const long asn_VAL_106_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBResourceCoordinationInformationExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_ECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_ignore }, + { "&Extension", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_SgNBCoordinationAssistanceInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, + { "&Extension", aioc__type, &asn_DEF_SgNBCoordinationAssistanceInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBResourceCoordinationInformationExtIEs_1[] = { + { 2, 4, asn_IOS_SgNBResourceCoordinationInformationExtIEs_1_rows } +}; +static const long asn_VAL_107_id_AdditionalSpecialSubframe_Info = 97; +static const long asn_VAL_107_ignore = 1; +static const long asn_VAL_107_optional = 0; +static const long asn_VAL_108_id_eARFCNExtension = 94; +static const long asn_VAL_108_reject = 0; +static const long asn_VAL_108_optional = 0; +static const long asn_VAL_109_id_AdditionalSpecialSubframeExtension_Info = 179; +static const long asn_VAL_109_ignore = 1; +static const long asn_VAL_109_optional = 0; +static const asn_ioc_cell_t asn_IOS_TDD_Info_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_AdditionalSpecialSubframe_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_ignore }, + { "&Extension", aioc__type, &asn_DEF_AdditionalSpecialSubframe_Info }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_eARFCNExtension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_reject }, + { "&Extension", aioc__type, &asn_DEF_EARFCNExtension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_AdditionalSpecialSubframeExtension_Info }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_ignore }, + { "&Extension", aioc__type, &asn_DEF_AdditionalSpecialSubframeExtension_Info }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional } +}; +static const asn_ioc_set_t asn_IOS_TDD_Info_ExtIEs_1[] = { + { 3, 4, asn_IOS_TDD_Info_ExtIEs_1_rows } +}; +static const long asn_VAL_110_id_MDTConfiguration = 72; +static const long asn_VAL_110_ignore = 1; +static const long asn_VAL_110_optional = 0; +static const long asn_VAL_111_id_UEAppLayerMeasConfig = 195; +static const long asn_VAL_111_ignore = 1; +static const long asn_VAL_111_optional = 0; +static const asn_ioc_cell_t asn_IOS_TraceActivation_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_MDTConfiguration }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_ignore }, + { "&Extension", aioc__type, &asn_DEF_MDT_Configuration }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_UEAppLayerMeasConfig }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_ignore }, + { "&Extension", aioc__type, &asn_DEF_UEAppLayerMeasConfig }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_optional } +}; +static const asn_ioc_set_t asn_IOS_TraceActivation_ExtIEs_1[] = { + { 2, 4, asn_IOS_TraceActivation_ExtIEs_1_rows } +}; +static const long asn_VAL_112_id_extended_uEaggregateMaximumBitRateDownlink = 200; +static const long asn_VAL_112_ignore = 1; +static const long asn_VAL_112_optional = 0; +static const long asn_VAL_113_id_extended_uEaggregateMaximumBitRateUplink = 201; +static const long asn_VAL_113_ignore = 1; +static const long asn_VAL_113_optional = 0; +static const asn_ioc_cell_t asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_extended_uEaggregateMaximumBitRateDownlink }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_extended_uEaggregateMaximumBitRateUplink }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_ignore }, + { "&Extension", aioc__type, &asn_DEF_ExtendedBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_optional } +}; +static const asn_ioc_set_t asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1[] = { + { 2, 4, asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1_rows } +}; +static const long asn_VAL_114_id_serviceType = 276; +static const long asn_VAL_114_ignore = 1; +static const long asn_VAL_114_optional = 0; +static const asn_ioc_cell_t asn_IOS_UEAppLayerMeasConfig_ExtIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_serviceType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_ignore }, + { "&Extension", aioc__type, &asn_DEF_ServiceType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_optional } +}; +static const asn_ioc_set_t asn_IOS_UEAppLayerMeasConfig_ExtIEs_1[] = { + { 1, 4, asn_IOS_UEAppLayerMeasConfig_ExtIEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_ContextInformation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_ContextInformation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellInformation_Item_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellInformation_Item_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ServedCellsToModify_Item_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCellsToModify_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCellsToModify_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ServedCellsToModify_Item_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCellsToModify_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCellsToModify_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellMeasurementResult_Item_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellMeasurementResult_Item_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_Item_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_Item_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_ContextInformationRetrieve_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationRetrieve_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_ContextInformationRetrieve_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationRetrieve_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationRetrieve_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UE_ContextInformationSgNBModReqExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationSgNBModReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UE_ContextInformationSgNBModReqExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UE_ContextInformationSgNBModReqExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UE_ContextInformationSgNBModReqExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RAB_Level_QoS_Parameters_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RAB_Level_QoS_Parameters_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_Level_QoS_Parameters_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_FDD_Info_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_FDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct FDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_FDD_Info_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_FDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct FDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_GBR_QosInformation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GBR_QosInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GBR_QosInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_GBR_QosInformation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GBR_QosInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GBR_QosInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRestrictionList_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRestrictionList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRestrictionList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRestrictionList_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRestrictionList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRestrictionList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LastVisitedEUTRANCellInformation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LastVisitedEUTRANCellInformation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LastVisitedEUTRANCellInformation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MDT_Configuration_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MDT_Configuration_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MDT_Configuration_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MDT_Configuration_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MDT_Configuration_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MDT_Configuration_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MeNBResourceCoordinationInformationExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MeNBResourceCoordinationInformationExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_677(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_677(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_677(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_681(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_681(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_681(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_685(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_685(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_685(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_689(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_Neighbour_Information_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Neighbour_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Neighbour_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_689(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_Neighbour_Information_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_Neighbour_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct Neighbour_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_689(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_693(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_693(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_693(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_697(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_697(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_697(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_701(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_701(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_701(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_705(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_705(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_705(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_709(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_709(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_709(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_713(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_713(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_713(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_717(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ProSeAuthorized_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ProSeAuthorized_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ProSeAuthorized_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_717(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ProSeAuthorized_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ProSeAuthorized_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ProSeAuthorized_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_717(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_721(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_721(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_721(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_725(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_725(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_725(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_729(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_729(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_729(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_733(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RadioResourceStatus_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RadioResourceStatus_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RadioResourceStatus_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_733(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RadioResourceStatus_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RadioResourceStatus_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RadioResourceStatus_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_733(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_737(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RelativeNarrowbandTxPower_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RelativeNarrowbandTxPower_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_737(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RelativeNarrowbandTxPower_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RelativeNarrowbandTxPower_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RelativeNarrowbandTxPower_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_737(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_741(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_741(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_741(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_745(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_745(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_745(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_749(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_749(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_749(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_753(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RSRPMRList_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RSRPMRList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RSRPMRList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_753(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RSRPMRList_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RSRPMRList_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RSRPMRList_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_753(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_757(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_757(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_757(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_761(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_761(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_761(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_765(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_765(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_765(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_769(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ServedCell_Information_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCell_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCell_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_769(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ServedCell_Information_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ServedCell_Information_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ServedCell_Information_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_769(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_773(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBResourceCoordinationInformationExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_773(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBResourceCoordinationInformationExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBResourceCoordinationInformationExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBResourceCoordinationInformationExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_773(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_777(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_777(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_777(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_781(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_781(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_781(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_785(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_785(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_785(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_789(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_789(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_789(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_793(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_793(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_793(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_797(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_797(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_797(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_801(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_801(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_801(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_805(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_805(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_805(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_809(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_809(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_809(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_813(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_813(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_813(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_817(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_817(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_817(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_821(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_821(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_821(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_825(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TDD_Info_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_825(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TDD_Info_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TDD_Info_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TDD_Info_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_825(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_829(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_TraceActivation_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TraceActivation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TraceActivation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_829(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_TraceActivation_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_TraceActivation_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct TraceActivation_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_829(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_833(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_833(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_833(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_837(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEAggregate_MaximumBitrate_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_837(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEAggregate_MaximumBitrate_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAggregate_MaximumBitrate_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_837(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_841(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEAppLayerMeasConfig_ExtIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAppLayerMeasConfig_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAppLayerMeasConfig_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_841(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEAppLayerMeasConfig_ExtIEs_extensionValue_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEAppLayerMeasConfig_ExtIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Extension */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEAppLayerMeasConfig_ExtIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_extensionValue_constraint_841(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_845(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_845(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_845(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_849(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_849(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_849(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_853(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_853(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_853(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_857(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_857(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_857(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_861(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_861(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_861(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_865(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_865(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_865(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_869(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_869(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_869(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_873(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_873(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_873(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_877(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_877(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_877(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_881(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_881(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_881(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_885(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_885(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_885(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_889(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_889(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_extensionValue_constraint_889(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_286 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_287 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_288 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_290 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_291 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_292 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_294 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_295 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_296 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_298 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_299 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_300 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_302 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_303 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_304 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_306 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_307 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_308 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_310 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_311 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_312 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_314 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_315 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_316 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_318 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_319 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_320 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_322 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_323 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_324 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_326 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_327 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_328 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_330 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_331 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_332 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_334 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_335 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_336 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_338 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_339 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_340 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_342 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_343 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_344 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_346 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_347 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_348 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_350 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_351 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_352 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_354 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_355 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_356 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_358 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_359 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_360 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_362 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_363 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_364 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_366 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_367 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_368 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_370 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_371 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_372 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_374 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_375 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_376 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_378 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_379 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_380 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_382 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_383 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_384 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_386 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_387 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_388 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_390 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_391 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_392 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_394 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_395 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_396 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_398 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_399 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_400 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_402 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_403 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_404 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_406 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_407 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_408 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_410 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_411 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_412 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_414 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_415 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_416 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_418 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_419 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_420 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_422 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_423 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_424 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_426 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_427 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_428 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_430 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_431 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_432 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_434 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_435 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_436 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_438 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_439 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_440 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_442 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_443 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_444 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_446 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_447 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_448 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_450 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_451 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_452 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_454 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_455 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_456 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_458 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_459 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_460 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_462 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_463 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_464 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_466 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_467 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_468 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_470 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_471 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_472 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_474 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_475 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_476 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_478 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_479 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_480 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_482 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_483 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_484 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_486 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_487 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_488 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_490 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_491 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_492 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_494 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_495 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_496 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_498 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_499 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_500 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_502 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_503 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_504 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_506 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_507 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_508 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_510 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_511 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_512 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_514 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_515 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_516 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_518 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_519 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_520 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_522 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_523 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_524 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_526 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_527 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_528 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_530 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_531 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_532 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_534 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_535 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_536 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_538 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_539 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_540 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_542 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_543 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_544 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_546 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_547 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_548 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_550 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_551 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_552 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_554 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_555 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_556 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_558 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_559 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_560 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_562 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_563 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_564 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_566 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_567 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_568 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_570 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_571 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_572 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_574 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_575 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_576 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_578 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_579 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_580 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_582 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_583 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_584 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_586 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_587 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_588 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_590 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_591 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_592 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_594 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_595 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_596 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_598 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_599 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_600 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_602 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_603 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_604 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_606 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_607 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_608 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_610 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_611 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_612 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_614 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_615 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_616 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_618 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_619 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_620 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_622 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_623 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_624 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_626 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_627 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_628 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_630 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_631 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_632 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_634 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_635 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_636 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_638 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_639 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_640 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_642 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_643 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_644 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_646 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_647 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_648 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_650 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_651 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_652 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_654 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_655 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_656 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_658 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_659 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_660 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_662 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_663 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_664 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_666 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_667 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_668 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_670 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_671 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_672 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_674 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_675 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_676 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_678 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_679 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_680 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_682 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_683 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_684 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_686 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_687 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_688 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_690 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_691 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_692 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_694 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_695 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_696 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_698 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_699 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_700 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_702 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_703 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_704 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_706 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_707 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_708 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_710 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_711 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_712 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_714 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_715 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_716 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_718 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_719 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_720 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_722 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_723 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_724 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_726 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_727 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_728 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_730 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_731 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_732 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_734 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_735 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_736 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_738 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_739 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_740 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_742 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_743 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_744 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_746 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_747 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_748 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_750 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_751 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_752 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_754 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_755 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_756 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_758 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_759 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_760 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_762 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_763 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_764 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_766 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_767 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_768 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_770 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_771 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_772 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_774 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_775 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_776 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_778 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_779 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_780 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_782 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_783 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_784 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_786 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_787 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_788 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_790 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_791 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_792 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_794 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_795 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_796 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_798 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_799 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_800 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_802 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_803 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_804 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_806 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_807 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_808 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_810 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_811 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_812 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_814 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_815 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_816 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_818 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_819 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_820 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_822 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_823 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_824 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_826 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_827 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_828 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_830 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_831 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_832 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_834 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_835 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_836 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_838 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_839 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_840 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_842 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_843 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_844 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_846 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_847 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_848 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_850 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_851 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_852 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_854 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_855 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_856 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_858 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_859 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_860 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_862 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_863 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_864 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_866 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_867 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_868 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_870 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_871 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_872 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_874 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_875 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_876 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_878 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_879 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_880 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_882 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_883 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_884 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_886 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_887 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_888 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_890 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_891 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_extensionValue_constr_892 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_extensionValue_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, choice.ManagementBasedMDTallowed), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ManagementBasedMDTallowed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ManagementBasedMDTallowed" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, choice.UESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESidelinkAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* ManagementBasedMDTallowed */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* MDTPLMNList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* UESidelinkAggregateMaximumBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_4 = { + sizeof(struct UE_ContextInformation_ExtIEs__extensionValue), + offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformation_ExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_4, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_4 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_4, + 3, /* Elements count */ + &asn_SPC_extensionValue_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformation_ExtIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UE_ContextInformation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_4, + select_UE_ContextInformation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_4, memb_extensionValue_constraint_1 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformation_ExtIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformation_ExtIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_ExtIEs_specs_1 = { + sizeof(struct UE_ContextInformation_ExtIEs), + offsetof(struct UE_ContextInformation_ExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformation_ExtIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_ExtIEs = { + "UE-ContextInformation-ExtIEs", + "UE-ContextInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformation_ExtIEs_tags_1, + sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformation_ExtIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_ExtIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformation_ExtIEs_1, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformation_ExtIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue, choice.BearerType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_BearerType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BearerType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* BearerType */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_8 = { + sizeof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_8 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_8, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemExtIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetup_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_8, + select_E_RABs_ToBeSetup_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_8, memb_extensionValue_constraint_5 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetup_ItemExtIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemExtIEs_specs_5 = { + sizeof(struct E_RABs_ToBeSetup_ItemExtIEs), + offsetof(struct E_RABs_ToBeSetup_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetup_ItemExtIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemExtIEs = { + "E-RABs-ToBeSetup-ItemExtIEs", + "E-RABs-ToBeSetup-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5, + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemExtIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_ItemExtIEs_5, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_ItemExtIEs_specs_5 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_12 = { + sizeof(struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue), + offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue, present), + sizeof(((struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_12 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSeNB_ItemExtIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_12, + 0, + { 0, &asn_PER_memb_extensionValue_constr_12, memb_extensionValue_constraint_9 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSeNB_ItemExtIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSeNB_ItemExtIEs_specs_9 = { + sizeof(struct UE_ContextReferenceAtSeNB_ItemExtIEs), + offsetof(struct UE_ContextReferenceAtSeNB_ItemExtIEs, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSeNB_ItemExtIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs = { + "UE-ContextReferenceAtSeNB-ItemExtIEs", + "UE-ContextReferenceAtSeNB-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9, + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSeNB_ItemExtIEs_9, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSeNB_ItemExtIEs_specs_9 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_16 = { + sizeof(struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue), + offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue, present), + sizeof(((struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_16 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtWT_ItemExtIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_16, + 0, + { 0, &asn_PER_memb_extensionValue_constr_16, memb_extensionValue_constraint_13 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtWT_ItemExtIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtWT_ItemExtIEs_specs_13 = { + sizeof(struct UE_ContextReferenceAtWT_ItemExtIEs), + offsetof(struct UE_ContextReferenceAtWT_ItemExtIEs, _asn_ctx), + asn_MAP_UE_ContextReferenceAtWT_ItemExtIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs = { + "UE-ContextReferenceAtWT-ItemExtIEs", + "UE-ContextReferenceAtWT-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13, + sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtWT_ItemExtIEs_13, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtWT_ItemExtIEs_specs_13 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_20 = { + sizeof(struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue), + offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue, present), + sizeof(((struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_20 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSgNB_ItemExtIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_20, + 0, + { 0, &asn_PER_memb_extensionValue_constr_20, memb_extensionValue_constraint_17 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSgNB_ItemExtIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSgNB_ItemExtIEs_specs_17 = { + sizeof(struct UE_ContextReferenceAtSgNB_ItemExtIEs), + offsetof(struct UE_ContextReferenceAtSgNB_ItemExtIEs, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSgNB_ItemExtIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs = { + "UE-ContextReferenceAtSgNB-ItemExtIEs", + "UE-ContextReferenceAtSgNB-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17, + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSgNB_ItemExtIEs_17, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSgNB_ItemExtIEs_specs_17 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_24 = { + sizeof(struct E_RABs_Admitted_Item_ExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_Item_ExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_24 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_Item_ExtIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_24, + 0, + { 0, &asn_PER_memb_extensionValue_constr_24, memb_extensionValue_constraint_21 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_Item_ExtIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_Item_ExtIEs_specs_21 = { + sizeof(struct E_RABs_Admitted_Item_ExtIEs), + offsetof(struct E_RABs_Admitted_Item_ExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_Item_ExtIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item_ExtIEs = { + "E-RABs-Admitted-Item-ExtIEs", + "E-RABs-Admitted-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21, + sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21) + /sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21) + /sizeof(asn_DEF_E_RABs_Admitted_Item_ExtIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_Item_ExtIEs_21, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_Item_ExtIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.ReceiveStatusOfULPDCPSDUsExtended), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ReceiveStatusOfULPDCPSDUsExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReceiveStatusOfULPDCPSDUsExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.COUNTValueExtended), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTValueExtended, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "COUNTValueExtended" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.ReceiveStatusOfULPDCPSDUsPDCP_SNlength18), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, choice.COUNTvaluePDCP_SNlength18), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_COUNTvaluePDCP_SNlength18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "COUNTvaluePDCP-SNlength18" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_28[] = { 0, 2, 1, 3 }; +static const unsigned asn_MAP_extensionValue_from_canonical_28[] = { 0, 2, 1, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 1 }, /* ReceiveStatusOfULPDCPSDUsExtended */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, -1, 0 }, /* ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* COUNTValueExtended */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* COUNTvaluePDCP-SNlength18 */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_28 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_28, + 4, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_28, + asn_MAP_extensionValue_from_canonical_28, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_28 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_28, + 4, /* Elements count */ + &asn_SPC_extensionValue_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemExtIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_28, + select_E_RABs_SubjectToStatusTransfer_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_28, memb_extensionValue_constraint_25 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemExtIEs_specs_25 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs = { + "E-RABs-SubjectToStatusTransfer-ItemExtIEs", + "E-RABs-SubjectToStatusTransfer-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_ItemExtIEs_25, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_ItemExtIEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.ABSInformation), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ABSInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ABSInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.InvokeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_InvokeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InvokeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.SubframeAssignment), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SubframeAssignment, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubframeAssignment" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.ExtendedULInterferenceOverloadInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExtendedULInterferenceOverloadInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedULInterferenceOverloadInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.CoMPInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoMPInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CoMPInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs__extensionValue, choice.DynamicDLTransmissionInformation), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_DynamicDLTransmissionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DynamicDLTransmissionInformation" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_32[] = { 1, 2, 3, 4, 0, 5 }; +static const unsigned asn_MAP_extensionValue_from_canonical_32[] = { 4, 0, 1, 2, 3, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 1 }, /* InvokeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -1, 0 }, /* SubframeAssignment */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 1 }, /* ExtendedULInterferenceOverloadInfo */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 }, /* CoMPInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 1 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 5, -1, 0 }, /* naics-active */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 1 }, /* tdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 5, -1, 0 }, /* naics-inactive */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 } /* abs-inactive */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_32 = { + sizeof(struct CellInformation_Item_ExtIEs__extensionValue), + offsetof(struct CellInformation_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellInformation_Item_ExtIEs__extensionValue, present), + sizeof(((struct CellInformation_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_32, + 9, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_32, + asn_MAP_extensionValue_from_canonical_32, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_32 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_32, + 6, /* Elements count */ + &asn_SPC_extensionValue_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellInformation_Item_ExtIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellInformation_Item_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellInformation_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_32, + select_CellInformation_Item_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_32, memb_extensionValue_constraint_29 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellInformation_Item_ExtIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellInformation_Item_ExtIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_ExtIEs_specs_29 = { + sizeof(struct CellInformation_Item_ExtIEs), + offsetof(struct CellInformation_Item_ExtIEs, _asn_ctx), + asn_MAP_CellInformation_Item_ExtIEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_Item_ExtIEs = { + "CellInformation-Item-ExtIEs", + "CellInformation-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellInformation_Item_ExtIEs_tags_29, + sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29) + /sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29[0]), /* 1 */ + asn_DEF_CellInformation_Item_ExtIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29) + /sizeof(asn_DEF_CellInformation_Item_ExtIEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_Item_ExtIEs_29, + 3, /* Elements count */ + &asn_SPC_CellInformation_Item_ExtIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs__extensionValue, choice.DeactivationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DeactivationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DeactivationIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* DeactivationIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_36 = { + sizeof(struct ServedCellsToModify_Item_ExtIEs__extensionValue), + offsetof(struct ServedCellsToModify_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCellsToModify_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedCellsToModify_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_36 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_36, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_ExtIEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ServedCellsToModify_Item_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_36, + select_ServedCellsToModify_Item_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_36, memb_extensionValue_constraint_33 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToModify_Item_ExtIEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_33 = { + sizeof(struct ServedCellsToModify_Item_ExtIEs), + offsetof(struct ServedCellsToModify_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedCellsToModify_Item_ExtIEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item_ExtIEs = { + "ServedCellsToModify-Item-ExtIEs", + "ServedCellsToModify-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33, + sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33) + /sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33[0]), /* 1 */ + asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33, /* Same as above */ + sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33) + /sizeof(asn_DEF_ServedCellsToModify_Item_ExtIEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToModify_Item_ExtIEs_33, + 3, /* Elements count */ + &asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_33 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_40 = { + sizeof(struct CellToReport_Item_ExtIEs__extensionValue), + offsetof(struct CellToReport_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellToReport_Item_ExtIEs__extensionValue, present), + sizeof(((struct CellToReport_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_40 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellToReport_Item_ExtIEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellToReport_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_40, + 0, + { 0, &asn_PER_memb_extensionValue_constr_40, memb_extensionValue_constraint_37 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellToReport_Item_ExtIEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellToReport_Item_ExtIEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_ExtIEs_specs_37 = { + sizeof(struct CellToReport_Item_ExtIEs), + offsetof(struct CellToReport_Item_ExtIEs, _asn_ctx), + asn_MAP_CellToReport_Item_ExtIEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_Item_ExtIEs = { + "CellToReport-Item-ExtIEs", + "CellToReport-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellToReport_Item_ExtIEs_tags_37, + sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37) + /sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37[0]), /* 1 */ + asn_DEF_CellToReport_Item_ExtIEs_tags_37, /* Same as above */ + sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37) + /sizeof(asn_DEF_CellToReport_Item_ExtIEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_Item_ExtIEs_37, + 3, /* Elements count */ + &asn_SPC_CellToReport_Item_ExtIEs_specs_37 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_44 = { + sizeof(struct MeasurementInitiationResult_Item_ExtIEs__extensionValue), + offsetof(struct MeasurementInitiationResult_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MeasurementInitiationResult_Item_ExtIEs__extensionValue, present), + sizeof(((struct MeasurementInitiationResult_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_44 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_ExtIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_44, + 0, + { 0, &asn_PER_memb_extensionValue_constr_44, memb_extensionValue_constraint_41 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInitiationResult_Item_ExtIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_41 = { + sizeof(struct MeasurementInitiationResult_Item_ExtIEs), + offsetof(struct MeasurementInitiationResult_Item_ExtIEs, _asn_ctx), + asn_MAP_MeasurementInitiationResult_Item_ExtIEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs = { + "MeasurementInitiationResult-Item-ExtIEs", + "MeasurementInitiationResult-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41, + sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41) + /sizeof(asn_DEF_MeasurementInitiationResult_Item_ExtIEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_Item_ExtIEs_41, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_41 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_48 = { + sizeof(struct MeasurementFailureCause_Item_ExtIEs__extensionValue), + offsetof(struct MeasurementFailureCause_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MeasurementFailureCause_Item_ExtIEs__extensionValue, present), + sizeof(((struct MeasurementFailureCause_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_48 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_ExtIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_48, + 0, + { 0, &asn_PER_memb_extensionValue_constr_48, memb_extensionValue_constraint_45 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementFailureCause_Item_ExtIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_45 = { + sizeof(struct MeasurementFailureCause_Item_ExtIEs), + offsetof(struct MeasurementFailureCause_Item_ExtIEs, _asn_ctx), + asn_MAP_MeasurementFailureCause_Item_ExtIEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item_ExtIEs = { + "MeasurementFailureCause-Item-ExtIEs", + "MeasurementFailureCause-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45, + sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45) + /sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45) + /sizeof(asn_DEF_MeasurementFailureCause_Item_ExtIEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_Item_ExtIEs_45, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_45 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_52 = { + sizeof(struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue), + offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue, present), + sizeof(((struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_52 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_52, + 0, + { 0, &asn_PER_memb_extensionValue_constr_52, memb_extensionValue_constraint_49 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompleteFailureCauseInformation_Item_ExtIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_49 = { + sizeof(struct CompleteFailureCauseInformation_Item_ExtIEs), + offsetof(struct CompleteFailureCauseInformation_Item_ExtIEs, _asn_ctx), + asn_MAP_CompleteFailureCauseInformation_Item_ExtIEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs = { + "CompleteFailureCauseInformation-Item-ExtIEs", + "CompleteFailureCauseInformation-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49, + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49) + /sizeof(asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_49, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.CompositeAvailableCapacityGroup), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompositeAvailableCapacityGroup, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CompositeAvailableCapacityGroup" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.ABS_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ABS_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ABS-Status" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.RSRPMRList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RSRPMRList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RSRPMRList" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.CSIReportList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CSIReportList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSIReportList" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, choice.CellReportingIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CellReportingIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellReportingIndicator" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_56[] = { 4, 0, 1, 2, 3 }; +static const unsigned asn_MAP_extensionValue_from_canonical_56[] = { 1, 2, 3, 4, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* CellReportingIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 3 }, /* CompositeAvailableCapacityGroup */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 2 }, /* ABS-Status */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 1 }, /* RSRPMRList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 0 } /* CSIReportList */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_56 = { + sizeof(struct CellMeasurementResult_Item_ExtIEs__extensionValue), + offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellMeasurementResult_Item_ExtIEs__extensionValue, present), + sizeof(((struct CellMeasurementResult_Item_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_56, + 5, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_56, + asn_MAP_extensionValue_from_canonical_56, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_56 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_56, + 5, /* Elements count */ + &asn_SPC_extensionValue_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_ExtIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellMeasurementResult_Item_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_56, + select_CellMeasurementResult_Item_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_56, memb_extensionValue_constraint_53 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellMeasurementResult_Item_ExtIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_53 = { + sizeof(struct CellMeasurementResult_Item_ExtIEs), + offsetof(struct CellMeasurementResult_Item_ExtIEs, _asn_ctx), + asn_MAP_CellMeasurementResult_Item_ExtIEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item_ExtIEs = { + "CellMeasurementResult-Item-ExtIEs", + "CellMeasurementResult-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53, + sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53) + /sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53[0]), /* 1 */ + asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53) + /sizeof(asn_DEF_CellMeasurementResult_Item_ExtIEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_Item_ExtIEs_53, + 3, /* Elements count */ + &asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_53 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_60 = { + sizeof(struct ServedCellsToActivate_Item_ExtIEs__extensionValue), + offsetof(struct ServedCellsToActivate_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCellsToActivate_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedCellsToActivate_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_60 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_ExtIEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_60, + 0, + { 0, &asn_PER_memb_extensionValue_constr_60, memb_extensionValue_constraint_57 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToActivate_Item_ExtIEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_ExtIEs_specs_57 = { + sizeof(struct ServedCellsToActivate_Item_ExtIEs), + offsetof(struct ServedCellsToActivate_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedCellsToActivate_Item_ExtIEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item_ExtIEs = { + "ServedCellsToActivate-Item-ExtIEs", + "ServedCellsToActivate-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57, + sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57) + /sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57[0]), /* 1 */ + asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57, /* Same as above */ + sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57) + /sizeof(asn_DEF_ServedCellsToActivate_Item_ExtIEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToActivate_Item_ExtIEs_57, + 3, /* Elements count */ + &asn_SPC_ServedCellsToActivate_Item_ExtIEs_specs_57 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_64 = { + sizeof(struct ActivatedCellList_Item_ExtIEs__extensionValue), + offsetof(struct ActivatedCellList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ActivatedCellList_Item_ExtIEs__extensionValue, present), + sizeof(((struct ActivatedCellList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_64 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_ExtIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ActivatedCellList_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_64, + 0, + { 0, &asn_PER_memb_extensionValue_constr_64, memb_extensionValue_constraint_61 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedCellList_Item_ExtIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_ExtIEs_specs_61 = { + sizeof(struct ActivatedCellList_Item_ExtIEs), + offsetof(struct ActivatedCellList_Item_ExtIEs, _asn_ctx), + asn_MAP_ActivatedCellList_Item_ExtIEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item_ExtIEs = { + "ActivatedCellList-Item-ExtIEs", + "ActivatedCellList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61, + sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61) + /sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61[0]), /* 1 */ + asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61) + /sizeof(asn_DEF_ActivatedCellList_Item_ExtIEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedCellList_Item_ExtIEs_61, + 3, /* Elements count */ + &asn_SPC_ActivatedCellList_Item_ExtIEs_specs_61 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_68 = { + sizeof(struct RNL_Header_Item_ExtIEs__extensionValue), + offsetof(struct RNL_Header_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RNL_Header_Item_ExtIEs__extensionValue, present), + sizeof(((struct RNL_Header_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_68 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RNL_Header_Item_ExtIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct RNL_Header_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RNL_Header_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RNL_Header_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_68, + 0, + { 0, &asn_PER_memb_extensionValue_constr_68, memb_extensionValue_constraint_65 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RNL_Header_Item_ExtIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RNL_Header_Item_ExtIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RNL_Header_Item_ExtIEs_specs_65 = { + sizeof(struct RNL_Header_Item_ExtIEs), + offsetof(struct RNL_Header_Item_ExtIEs, _asn_ctx), + asn_MAP_RNL_Header_Item_ExtIEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RNL_Header_Item_ExtIEs = { + "RNL-Header-Item-ExtIEs", + "RNL-Header-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RNL_Header_Item_ExtIEs_tags_65, + sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65) + /sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65[0]), /* 1 */ + asn_DEF_RNL_Header_Item_ExtIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65) + /sizeof(asn_DEF_RNL_Header_Item_ExtIEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RNL_Header_Item_ExtIEs_65, + 3, /* Elements count */ + &asn_SPC_RNL_Header_Item_ExtIEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, choice.Correlation_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Correlation_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Correlation-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_72[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 } /* Correlation-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_72 = { + sizeof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_72, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_72 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_72, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_72, + select_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_72, memb_extensionValue_constraint_69 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_specs_69 = { + sizeof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs = { + "E-RABs-ToBeAdded-Item-SCG-BearerExtIEs", + "E-RABs-ToBeAdded-Item-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_69, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_specs_69 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_76 = { + sizeof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_76 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_76, + 0, + { 0, &asn_PER_memb_extensionValue_constr_76, memb_extensionValue_constraint_73 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_specs_73 = { + sizeof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs = { + "E-RABs-ToBeAdded-Item-Split-BearerExtIEs", + "E-RABs-ToBeAdded-Item-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73, + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_73, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_specs_73 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_80 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_80 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_80, + 0, + { 0, &asn_PER_memb_extensionValue_constr_80, memb_extensionValue_constraint_77 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_specs_77 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_77, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_specs_77 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_84 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_84 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_84, + 0, + { 0, &asn_PER_memb_extensionValue_constr_84, memb_extensionValue_constraint_81 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_specs_81 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_81, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_specs_81 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_88 = { + sizeof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_88 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_88, + 0, + { 0, &asn_PER_memb_extensionValue_constr_88, memb_extensionValue_constraint_85 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_85 = { + sizeof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs = { + "ResponseInformationSeNBReconfComp-SuccessItemExtIEs", + "ResponseInformationSeNBReconfComp-SuccessItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_85, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_85 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_92 = { + sizeof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_92 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_92, + 0, + { 0, &asn_PER_memb_extensionValue_constr_92, memb_extensionValue_constraint_89 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_89 = { + sizeof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs = { + "ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs", + "ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_89, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_89 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_96 = { + sizeof(struct UE_ContextInformationSeNBModReqExtIEs__extensionValue), + offsetof(struct UE_ContextInformationSeNBModReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformationSeNBModReqExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformationSeNBModReqExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_96 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformationSeNBModReqExtIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSeNBModReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSeNBModReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSeNBModReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_96, + 0, + { 0, &asn_PER_memb_extensionValue_constr_96, memb_extensionValue_constraint_93 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationSeNBModReqExtIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSeNBModReqExtIEs_specs_93 = { + sizeof(struct UE_ContextInformationSeNBModReqExtIEs), + offsetof(struct UE_ContextInformationSeNBModReqExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformationSeNBModReqExtIEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReqExtIEs = { + "UE-ContextInformationSeNBModReqExtIEs", + "UE-ContextInformationSeNBModReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93, + sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93[0]), /* 1 */ + asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReqExtIEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationSeNBModReqExtIEs_93, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformationSeNBModReqExtIEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue, choice.Correlation_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_Correlation_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Correlation-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 } /* Correlation-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_100 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_100, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_100 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_100, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_100, + select_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_100, memb_extensionValue_constraint_97 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_specs_97 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_97, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_specs_97 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_104 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_104 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_104, + 0, + { 0, &asn_PER_memb_extensionValue_constr_104, memb_extensionValue_constraint_101 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_specs_101 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs", + "E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_101, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_specs_101 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_108 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_108 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_106, memb_id_constraint_105 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_107, memb_criticality_constraint_105 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_108, + 0, + { 0, &asn_PER_memb_extensionValue_constr_108, memb_extensionValue_constraint_105 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_specs_105 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_tags_105[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_105, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_specs_105 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_112 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_112 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_110, memb_id_constraint_109 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_111, memb_criticality_constraint_109 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_112, + 0, + { 0, &asn_PER_memb_extensionValue_constr_112, memb_extensionValue_constraint_109 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_specs_109 = { + sizeof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs", + "E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_tags_109[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_109, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_specs_109 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_116 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_116 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_114, memb_id_constraint_113 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_115, memb_criticality_constraint_113 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_116, + 0, + { 0, &asn_PER_memb_extensionValue_constr_116, memb_extensionValue_constraint_113 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_specs_113 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_tags_113[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_113, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_specs_113 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_120 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_120 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_118, memb_id_constraint_117 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_119, memb_criticality_constraint_117 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_120, + 0, + { 0, &asn_PER_memb_extensionValue_constr_120, memb_extensionValue_constraint_117 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_specs_117 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs", + "E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_tags_117[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_117, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_specs_117 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_124 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_124 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_122, memb_id_constraint_121 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_123, memb_criticality_constraint_121 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_124, + 0, + { 0, &asn_PER_memb_extensionValue_constr_124, memb_extensionValue_constraint_121 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_specs_121 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_tags_121[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_121, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_specs_121 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_128 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_128 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_126, memb_id_constraint_125 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_127, memb_criticality_constraint_125 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_128, + 0, + { 0, &asn_PER_memb_extensionValue_constr_128, memb_extensionValue_constraint_125 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_specs_125 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_tags_125[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_125, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_specs_125 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_132 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_132 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_130, memb_id_constraint_129 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_131, memb_criticality_constraint_129 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_132, + 0, + { 0, &asn_PER_memb_extensionValue_constr_132, memb_extensionValue_constraint_129 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tag2el_129[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_specs_129 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_tags_129[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_129, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_specs_129 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_136 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_136 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_134, memb_id_constraint_133 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_135, memb_criticality_constraint_133 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_136, + 0, + { 0, &asn_PER_memb_extensionValue_constr_136, memb_extensionValue_constraint_133 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tag2el_133[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_specs_133 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_tags_133[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_133, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_specs_133 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_140 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_140 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_138, memb_id_constraint_137 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_139, memb_criticality_constraint_137 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_140, + 0, + { 0, &asn_PER_memb_extensionValue_constr_140, memb_extensionValue_constraint_137 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tag2el_137[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_specs_137 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs", + "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_tags_137[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_137, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_specs_137 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_144 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_144 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_142, memb_id_constraint_141 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_143, memb_criticality_constraint_141 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_144, + 0, + { 0, &asn_PER_memb_extensionValue_constr_144, memb_extensionValue_constraint_141 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tag2el_141[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_specs_141 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs = { + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs", + "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_tags_141[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_141, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_specs_141 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_148 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_148 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemExtIEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_146, memb_id_constraint_145 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_147, memb_criticality_constraint_145 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_148, + 0, + { 0, &asn_PER_memb_extensionValue_constr_148, memb_extensionValue_constraint_145 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqdItemExtIEs_tag2el_145[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemExtIEs_specs_145 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqdItemExtIEs_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs = { + "E-RABs-ToBeReleased-ModReqdItemExtIEs", + "E-RABs-ToBeReleased-ModReqdItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs_tags_145[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItemExtIEs_145, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItemExtIEs_specs_145 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_152 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_152 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_150, memb_id_constraint_149 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_151, memb_criticality_constraint_149 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_152, + 0, + { 0, &asn_PER_memb_extensionValue_constr_152, memb_extensionValue_constraint_149 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tag2el_149[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_specs_149 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs = { + "E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs", + "E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_tags_149[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_149, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_specs_149 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_156 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_156 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_154, memb_id_constraint_153 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_155, memb_criticality_constraint_153 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_156, + 0, + { 0, &asn_PER_memb_extensionValue_constr_156, memb_extensionValue_constraint_153 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tag2el_153[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_specs_153 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs = { + "E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs", + "E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_tags_153[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_153, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_specs_153 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_160 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_160 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_158, memb_id_constraint_157 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_159, memb_criticality_constraint_157 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_160, + 0, + { 0, &asn_PER_memb_extensionValue_constr_160, memb_extensionValue_constraint_157 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tag2el_157[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_specs_157 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs = { + "E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs", + "E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_tags_157[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_157, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_specs_157 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_164 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_164 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_162, memb_id_constraint_161 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_163, memb_criticality_constraint_161 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_164, + 0, + { 0, &asn_PER_memb_extensionValue_constr_164, memb_extensionValue_constraint_161 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tag2el_161[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_specs_161 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs), + offsetof(struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs = { + "E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs", + "E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_tags_161[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_161, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_specs_161 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_168 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue), + offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_168 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemExtIEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_166, memb_id_constraint_165 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_167, memb_criticality_constraint_165 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_168, + 0, + { 0, &asn_PER_memb_extensionValue_constr_168, memb_extensionValue_constraint_165 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToCounterCheckItemExtIEs_tag2el_165[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemExtIEs_specs_165 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemExtIEs), + offsetof(struct E_RABs_SubjectToCounterCheckItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToCounterCheckItemExtIEs_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs = { + "E-RABs-SubjectToCounterCheckItemExtIEs", + "E-RABs-SubjectToCounterCheckItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs_tags_165[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItemExtIEs_165, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItemExtIEs_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue, choice.UESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESidelinkAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESidelinkAggregateMaximumBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_172[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* UESidelinkAggregateMaximumBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_172 = { + sizeof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue), + offsetof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformationRetrieve_ExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformationRetrieve_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_172, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_172 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_172, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformationRetrieve_ExtIEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_170, memb_id_constraint_169 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UE_ContextInformationRetrieve_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_171, memb_criticality_constraint_169 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_172, + select_UE_ContextInformationRetrieve_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_172, memb_extensionValue_constraint_169 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationRetrieve_ExtIEs_tag2el_169[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationRetrieve_ExtIEs_specs_169 = { + sizeof(struct UE_ContextInformationRetrieve_ExtIEs), + offsetof(struct UE_ContextInformationRetrieve_ExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformationRetrieve_ExtIEs_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve_ExtIEs = { + "UE-ContextInformationRetrieve-ExtIEs", + "UE-ContextInformationRetrieve-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169, + sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169[0]), /* 1 */ + asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_ExtIEs_tags_169[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationRetrieve_ExtIEs_169, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformationRetrieve_ExtIEs_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_176[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, choice.GTPtunnelEndpoint), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GTPtunnelEndpoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, choice.DL_Forwarding), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DL_Forwarding, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DL-Forwarding" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_176[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_176[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_176[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* DL-Forwarding */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GTPtunnelEndpoint */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_176 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_176, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_176, + asn_MAP_extensionValue_from_canonical_176, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_176 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_176, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemExtIEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_174, memb_id_constraint_173 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_175, memb_criticality_constraint_173 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_176, + select_E_RABs_ToBeSetupRetrieve_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_176, memb_extensionValue_constraint_173 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tag2el_173[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemExtIEs_specs_173 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs = { + "E-RABs-ToBeSetupRetrieve-ItemExtIEs", + "E-RABs-ToBeSetupRetrieve-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173, + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs_tags_173[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_ItemExtIEs_173, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_ItemExtIEs_specs_173 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_180 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_180 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_178, memb_id_constraint_177 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_179, memb_criticality_constraint_177 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_180, + 0, + { 0, &asn_PER_memb_extensionValue_constr_180, memb_extensionValue_constraint_177 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tag2el_177[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_specs_177 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_tags_177[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_177, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_184[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.RLCMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLCMode" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_184[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RLCMode */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_184 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_184, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_184 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_184, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_182, memb_id_constraint_181 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_183, memb_criticality_constraint_181 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_184, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_184, memb_extensionValue_constraint_181 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tag2el_181[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_specs_181 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_tags_181[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_181, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_188[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.DuplicationActivation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DuplicationActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DuplicationActivation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_188[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* DuplicationActivation */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_188 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_188, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_188 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_188, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_186, memb_id_constraint_185 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_187, memb_criticality_constraint_185 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_188, + select_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_188, memb_extensionValue_constraint_185 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_185[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_specs_185 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_tags_185[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_185, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_specs_185 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_192 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_192 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_190, memb_id_constraint_189 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_191, memb_criticality_constraint_189 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_192, + 0, + { 0, &asn_PER_memb_extensionValue_constr_192, memb_extensionValue_constraint_189 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tag2el_189[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_specs_189 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_tags_189[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_189, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_196[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_196[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_196 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_196, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_196 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_196, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_194, memb_id_constraint_193 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_195, memb_criticality_constraint_193 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_196, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_196, memb_extensionValue_constraint_193 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tag2el_193[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_specs_193 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_tags_193[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_193, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_200[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.LCID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LCID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LCID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_200[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* LCID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_200 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_200, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_200 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_200, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_198, memb_id_constraint_197 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_199, memb_criticality_constraint_197 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_200, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_200, memb_extensionValue_constraint_197 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_197[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_specs_197 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_tags_197[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_197, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_specs_197 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_204 = { + sizeof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_204 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_202, memb_id_constraint_201 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_203, memb_criticality_constraint_201 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_204, + 0, + { 0, &asn_PER_memb_extensionValue_constr_204, memb_extensionValue_constraint_201 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tag2el_201[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_specs_201 = { + sizeof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs = { + "ResponseInformationSgNBReconfComp-SuccessItemExtIEs", + "ResponseInformationSgNBReconfComp-SuccessItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_tags_201[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_201, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_specs_201 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_208 = { + sizeof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue, present), + sizeof(((struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_208 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_206, memb_id_constraint_205 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_207, memb_criticality_constraint_205 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_208, + 0, + { 0, &asn_PER_memb_extensionValue_constr_208, memb_extensionValue_constraint_205 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tag2el_205[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_specs_205 = { + sizeof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs = { + "ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs", + "ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_tags_205[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_205, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_212[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_212[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* SubscriberProfileIDforRFP */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_212 = { + sizeof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue), + offsetof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_ContextInformationSgNBModReqExtIEs__extensionValue, present), + sizeof(((struct UE_ContextInformationSgNBModReqExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_212, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_212 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_212, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_ContextInformationSgNBModReqExtIEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_210, memb_id_constraint_209 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UE_ContextInformationSgNBModReqExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_211, memb_criticality_constraint_209 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationSgNBModReqExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_212, + select_UE_ContextInformationSgNBModReqExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_212, memb_extensionValue_constraint_209 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationSgNBModReqExtIEs_tag2el_209[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSgNBModReqExtIEs_specs_209 = { + sizeof(struct UE_ContextInformationSgNBModReqExtIEs), + offsetof(struct UE_ContextInformationSgNBModReqExtIEs, _asn_ctx), + asn_MAP_UE_ContextInformationSgNBModReqExtIEs_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSgNBModReqExtIEs = { + "UE-ContextInformationSgNBModReqExtIEs", + "UE-ContextInformationSgNBModReqExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209, + sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209) + /sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209[0]), /* 1 */ + asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209) + /sizeof(asn_DEF_UE_ContextInformationSgNBModReqExtIEs_tags_209[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationSgNBModReqExtIEs_209, + 3, /* Elements count */ + &asn_SPC_UE_ContextInformationSgNBModReqExtIEs_specs_209 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_216 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_216 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_214, memb_id_constraint_213 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_215, memb_criticality_constraint_213 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_216, + 0, + { 0, &asn_PER_memb_extensionValue_constr_216, memb_extensionValue_constraint_213 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tag2el_213[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_specs_213 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_tags_213[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_213, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_specs_213 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_220[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.RLCMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLCMode" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_220[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RLCMode */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_220 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_220, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_220 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_220, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_218, memb_id_constraint_217 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_219, memb_criticality_constraint_217 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_220, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_220, memb_extensionValue_constraint_217 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_217[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_217 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_217[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_217, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_224[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.DuplicationActivation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_DuplicationActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DuplicationActivation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_224[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* DuplicationActivation */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_224 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_224, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_224 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_224, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_222, memb_id_constraint_221 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_223, memb_criticality_constraint_221 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_224, + select_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_224, memb_extensionValue_constraint_221 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_221[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_221 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_221[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_221, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_221 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_228 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_228 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_226, memb_id_constraint_225 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_227, memb_criticality_constraint_225 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_228, + 0, + { 0, &asn_PER_memb_extensionValue_constr_228, memb_extensionValue_constraint_225 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tag2el_225[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_specs_225 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs = { + "E-RABs-ToBeModified-SgNBModReq-ItemExtIEs", + "E-RABs-ToBeModified-SgNBModReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_tags_225[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_225, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_232[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.RLC_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLC-Status" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_232[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RLC-Status */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_232 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_232, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_232 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_232, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_230, memb_id_constraint_229 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_231, memb_criticality_constraint_229 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_232, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_232, memb_extensionValue_constraint_229 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_229[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_229 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_229[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_229, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_236[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.GTPtunnelEndpoint), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GTPtunnelEndpoint" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_236[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* GTPtunnelEndpoint */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_236 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_236, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_236 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_236, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_234, memb_id_constraint_233 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_235, memb_criticality_constraint_233 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_236, + select_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_236, memb_extensionValue_constraint_233 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_233[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_233 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_233[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_233, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_233 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_240 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_240 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_238, memb_id_constraint_237 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_239, memb_criticality_constraint_237 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_240, + 0, + { 0, &asn_PER_memb_extensionValue_constr_240, memb_extensionValue_constraint_237 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tag2el_237[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_specs_237 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_tags_237[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_237, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_specs_237 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_244 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_244 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_242, memb_id_constraint_241 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_243, memb_criticality_constraint_241 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_244, + 0, + { 0, &asn_PER_memb_extensionValue_constr_244, memb_extensionValue_constraint_241 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_241[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_241 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_tags_241[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_241, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_241 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_248 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_248 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_246, memb_id_constraint_245 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_247, memb_criticality_constraint_245 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_248, + 0, + { 0, &asn_PER_memb_extensionValue_constr_248, memb_extensionValue_constraint_245 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_245[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_245 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_tags_245[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_245, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_245 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_252 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_252 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_250, memb_id_constraint_249 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_251, memb_criticality_constraint_249 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_252, + 0, + { 0, &asn_PER_memb_extensionValue_constr_252, memb_extensionValue_constraint_249 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_249[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_specs_249 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_tags_249[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_249, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_256 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_256, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_256 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_256, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_254, memb_id_constraint_253 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_255, memb_criticality_constraint_253 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_256, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_256, memb_extensionValue_constraint_253 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_253[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_253 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_253[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_253, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_260[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.LCID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LCID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LCID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_260[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* LCID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_260 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_260, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_260 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_260, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_258, memb_id_constraint_257 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_259, memb_criticality_constraint_257 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_260, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_260, memb_extensionValue_constraint_257 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_257[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_257 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_257[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_257, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_257 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_264 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_264 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_262, memb_id_constraint_261 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_263, memb_criticality_constraint_261 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_264, + 0, + { 0, &asn_PER_memb_extensionValue_constr_264, memb_extensionValue_constraint_261 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_261[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_specs_261 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs = { + "E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs", + "E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_tags_261[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_261, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_268[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_268[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_268 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_268, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_268 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_268, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_266, memb_id_constraint_265 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_267, memb_criticality_constraint_265 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_268, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_268, memb_extensionValue_constraint_265 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_265[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_265 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_265[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_265, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_272[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.GTPtunnelEndpoint), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GTPtunnelEndpoint, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GTPtunnelEndpoint" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.RLC_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLC-Status" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_272[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GTPtunnelEndpoint */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RLC-Status */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_272 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_272, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_272 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_272, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_270, memb_id_constraint_269 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_271, memb_criticality_constraint_269 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_272, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_272, memb_extensionValue_constraint_269 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_269[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_269 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_269[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_269, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_269 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_276 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_276 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_274, memb_id_constraint_273 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_275, memb_criticality_constraint_273 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_276, + 0, + { 0, &asn_PER_memb_extensionValue_constr_276, memb_extensionValue_constraint_273 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tag2el_273[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_specs_273 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_tags_273[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_273, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_specs_273 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_280 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_280 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_278, memb_id_constraint_277 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_279, memb_criticality_constraint_277 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_280, + 0, + { 0, &asn_PER_memb_extensionValue_constr_280, memb_extensionValue_constraint_277 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_277[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_277 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_tags_277[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_277, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_277 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_284 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_284 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_282, memb_id_constraint_281 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_283, memb_criticality_constraint_281 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_284, + 0, + { 0, &asn_PER_memb_extensionValue_constr_284, memb_extensionValue_constraint_281 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_281[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_281 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_tags_281[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_281, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_281 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_288[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue, choice.RLCMode), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RLCMode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLCMode" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_288[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* RLCMode */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_288 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_288, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_288 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_288, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_288 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_286, memb_id_constraint_285 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_287, memb_criticality_constraint_285 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_288, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_288, memb_extensionValue_constraint_285 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tag2el_285[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_specs_285 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_tags_285[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_285, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_specs_285 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_292 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_292 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_292 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_290, memb_id_constraint_289 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_291, memb_criticality_constraint_289 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_292, + 0, + { 0, &asn_PER_memb_extensionValue_constr_292, memb_extensionValue_constraint_289 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tag2el_289[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_specs_289 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs = { + "E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs", + "E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_tags_289[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_289, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_specs_289 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_296[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, choice.NewDRBIDrequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NewDRBIDrequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NewDRBIDrequest" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_296[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* PDCPSnLength */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 0 } /* NewDRBIDrequest */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_296 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_296, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_296 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_296, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_296 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_294, memb_id_constraint_293 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_295, memb_criticality_constraint_293 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_296, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_296, memb_extensionValue_constraint_293 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tag2el_293[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_specs_293 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_tags_293[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_293, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_specs_293 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_300[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.RLC_Status), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLC_Status, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RLC-Status" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.LCID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_LCID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LCID" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_300[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_300[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_300[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* LCID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RLC-Status */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_300 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_300, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_300, + asn_MAP_extensionValue_from_canonical_300, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_300 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_300, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_300 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_298, memb_id_constraint_297 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_299, memb_criticality_constraint_297 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_300, + select_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_300, memb_extensionValue_constraint_297 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tag2el_297[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_specs_297 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_tags_297[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_297, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_specs_297 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_304 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_304 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_304 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_302, memb_id_constraint_301 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_303, memb_criticality_constraint_301 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_304, + 0, + { 0, &asn_PER_memb_extensionValue_constr_304, memb_extensionValue_constraint_301 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tag2el_301[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_specs_301 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_tags_301[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_301, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_specs_301 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_308 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_308 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_308 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_305[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_306, memb_id_constraint_305 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_307, memb_criticality_constraint_305 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_308, + 0, + { 0, &asn_PER_memb_extensionValue_constr_308, memb_extensionValue_constraint_305 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tag2el_305[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_specs_305 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tag2el_305, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_tags_305[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_305, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_specs_305 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_312[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, choice.PDCPSnLength), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPSnLength, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPSnLength" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_312[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* PDCPSnLength */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_312 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_312, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_312 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_312, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_312 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_309[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_310, memb_id_constraint_309 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_311, memb_criticality_constraint_309 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_312, + select_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_312, memb_extensionValue_constraint_309 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_309[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_specs_309 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_309, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_tags_309[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_309, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_specs_309 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_316 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_316 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_316 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_313[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_314, memb_id_constraint_313 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_315, memb_criticality_constraint_313 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_316, + 0, + { 0, &asn_PER_memb_extensionValue_constr_316, memb_extensionValue_constraint_313 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tag2el_313[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_specs_313 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tag2el_313, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_tags_313[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_313, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_specs_313 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_320 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_320 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_320 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_317[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_318, memb_id_constraint_317 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_319, memb_criticality_constraint_317 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_320, + 0, + { 0, &asn_PER_memb_extensionValue_constr_320, memb_extensionValue_constraint_317 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tag2el_317[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_specs_317 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tag2el_317, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_tags_317[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_317, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_specs_317 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_324 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_324 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_324 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_321[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_322, memb_id_constraint_321 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_323, memb_criticality_constraint_321 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_324, + 0, + { 0, &asn_PER_memb_extensionValue_constr_324, memb_extensionValue_constraint_321 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_321[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_specs_321 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tag2el_321, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_tags_321[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_321, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_specs_321 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_328 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_328 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_328 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_325[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_326, memb_id_constraint_325 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_327, memb_criticality_constraint_325 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_328, + 0, + { 0, &asn_PER_memb_extensionValue_constr_328, memb_extensionValue_constraint_325 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tag2el_325[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_specs_325 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tag2el_325, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_tags_325[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_325, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_specs_325 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_332 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_332 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_332 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_329[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_330, memb_id_constraint_329 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_331, memb_criticality_constraint_329 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_332, + 0, + { 0, &asn_PER_memb_extensionValue_constr_332, memb_extensionValue_constraint_329 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tag2el_329[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_specs_329 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tag2el_329, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_tags_329[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_329, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_specs_329 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_336 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_336 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_336 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_333[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_334, memb_id_constraint_333 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_335, memb_criticality_constraint_333 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_336, + 0, + { 0, &asn_PER_memb_extensionValue_constr_336, memb_extensionValue_constraint_333 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tag2el_333[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_specs_333 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tag2el_333, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_tags_333[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_333, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_specs_333 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_340 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_340 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_340 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_337[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_338, memb_id_constraint_337 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_339, memb_criticality_constraint_337 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_340, + 0, + { 0, &asn_PER_memb_extensionValue_constr_340, memb_extensionValue_constraint_337 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tag2el_337[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_specs_337 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tag2el_337, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_tags_337[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_337, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_specs_337 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_344 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_344 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_344 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_341[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_342, memb_id_constraint_341 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_343, memb_criticality_constraint_341 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_344, + 0, + { 0, &asn_PER_memb_extensionValue_constr_344, memb_extensionValue_constraint_341 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_341[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_specs_341 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_341, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_tags_341[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_341, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_specs_341 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_348 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_348 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_348 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_345[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_346, memb_id_constraint_345 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_347, memb_criticality_constraint_345 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_348, + 0, + { 0, &asn_PER_memb_extensionValue_constr_348, memb_extensionValue_constraint_345 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tag2el_345[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_specs_345 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tag2el_345, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs = { + "E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs", + "E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_tags_345[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_345, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_specs_345 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_352 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_352 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_352 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_349[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_350, memb_id_constraint_349 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_351, memb_criticality_constraint_349 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_352, + 0, + { 0, &asn_PER_memb_extensionValue_constr_352, memb_extensionValue_constraint_349 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tag2el_349[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_specs_349 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tag2el_349, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs", + "E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_tags_349[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_349, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_specs_349 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_356 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_356 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_356 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_353[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_354, memb_id_constraint_353 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_355, memb_criticality_constraint_353 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_356, + 0, + { 0, &asn_PER_memb_extensionValue_constr_356, memb_extensionValue_constraint_353 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tag2el_353[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_specs_353 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tag2el_353, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_tags_353[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_353, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_specs_353 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_360 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_360 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_360 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_357[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_358, memb_id_constraint_357 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_359, memb_criticality_constraint_357 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_360, + 0, + { 0, &asn_PER_memb_extensionValue_constr_360, memb_extensionValue_constraint_357 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_357[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_specs_357 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tag2el_357, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs", + "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_tags_357[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_357, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_specs_357 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_364 = { + sizeof(struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue), + offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue, present), + sizeof(((struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_364 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_364 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_361[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_362, memb_id_constraint_361 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_363, memb_criticality_constraint_361 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_364, + 0, + { 0, &asn_PER_memb_extensionValue_constr_364, memb_extensionValue_constraint_361 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedEUTRAcellsENDCX2Management_ExtIEs_tag2el_361[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_361 = { + sizeof(struct ServedEUTRAcellsENDCX2Management_ExtIEs), + offsetof(struct ServedEUTRAcellsENDCX2Management_ExtIEs, _asn_ctx), + asn_MAP_ServedEUTRAcellsENDCX2Management_ExtIEs_tag2el_361, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs = { + "ServedEUTRAcellsENDCX2Management-ExtIEs", + "ServedEUTRAcellsENDCX2Management-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361, + sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs_tags_361[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_361, + 3, /* Elements count */ + &asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_361 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_368 = { + sizeof(struct En_gNBServedCells_ExtIEs__extensionValue), + offsetof(struct En_gNBServedCells_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct En_gNBServedCells_ExtIEs__extensionValue, present), + sizeof(((struct En_gNBServedCells_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_368 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_368 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNBServedCells_ExtIEs_365[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNBServedCells_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_366, memb_id_constraint_365 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNBServedCells_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_367, memb_criticality_constraint_365 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNBServedCells_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_368, + 0, + { 0, &asn_PER_memb_extensionValue_constr_368, memb_extensionValue_constraint_365 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNBServedCells_ExtIEs_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNBServedCells_ExtIEs_tag2el_365[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNBServedCells_ExtIEs_specs_365 = { + sizeof(struct En_gNBServedCells_ExtIEs), + offsetof(struct En_gNBServedCells_ExtIEs, _asn_ctx), + asn_MAP_En_gNBServedCells_ExtIEs_tag2el_365, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNBServedCells_ExtIEs = { + "En-gNBServedCells-ExtIEs", + "En-gNBServedCells-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNBServedCells_ExtIEs_tags_365, + sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365) + /sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365[0]), /* 1 */ + asn_DEF_En_gNBServedCells_ExtIEs_tags_365, /* Same as above */ + sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365) + /sizeof(asn_DEF_En_gNBServedCells_ExtIEs_tags_365[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNBServedCells_ExtIEs_365, + 3, /* Elements count */ + &asn_SPC_En_gNBServedCells_ExtIEs_specs_365 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_372 = { + sizeof(struct ServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct ServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct ServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_372 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_372 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCell_Information_ExtIEs_369[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_370, memb_id_constraint_369 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_371, memb_criticality_constraint_369 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_372, + 0, + { 0, &asn_PER_memb_extensionValue_constr_372, memb_extensionValue_constraint_369 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCell_Information_ExtIEs_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCell_Information_ExtIEs_tag2el_369[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_ExtIEs_specs_369 = { + sizeof(struct ServedNRCell_Information_ExtIEs), + offsetof(struct ServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_ServedNRCell_Information_ExtIEs_tag2el_369, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information_ExtIEs = { + "ServedNRCell-Information-ExtIEs", + "ServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCell_Information_ExtIEs_tags_369, + sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369) + /sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369[0]), /* 1 */ + asn_DEF_ServedNRCell_Information_ExtIEs_tags_369, /* Same as above */ + sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369) + /sizeof(asn_DEF_ServedNRCell_Information_ExtIEs_tags_369[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCell_Information_ExtIEs_369, + 3, /* Elements count */ + &asn_SPC_ServedNRCell_Information_ExtIEs_specs_369 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_376 = { + sizeof(struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_376 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_376 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_373[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_374, memb_id_constraint_373 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_375, memb_criticality_constraint_373 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_376, + 0, + { 0, &asn_PER_memb_extensionValue_constr_376, memb_extensionValue_constraint_373 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoServedNRCell_Information_ExtIEs_tag2el_373[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_373 = { + sizeof(struct FDD_InfoServedNRCell_Information_ExtIEs), + offsetof(struct FDD_InfoServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_FDD_InfoServedNRCell_Information_ExtIEs_tag2el_373, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs = { + "FDD-InfoServedNRCell-Information-ExtIEs", + "FDD-InfoServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373, + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373[0]), /* 1 */ + asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373, /* Same as above */ + sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373) + /sizeof(asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs_tags_373[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_373, + 3, /* Elements count */ + &asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_373 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_380 = { + sizeof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_380 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_380 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_377[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_378, memb_id_constraint_377 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_379, memb_criticality_constraint_377 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_380, + 0, + { 0, &asn_PER_memb_extensionValue_constr_380, memb_extensionValue_constraint_377 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_377[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_377 = { + sizeof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs), + offsetof(struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_377, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs = { + "FDD-InfoNeighbourServedNRCell-Information-ExtIEs", + "FDD-InfoNeighbourServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377, + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377[0]), /* 1 */ + asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377, /* Same as above */ + sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377) + /sizeof(asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_377[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_377, + 3, /* Elements count */ + &asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_377 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_384 = { + sizeof(struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_384 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_384 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_381[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_382, memb_id_constraint_381 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_383, memb_criticality_constraint_381 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_384, + 0, + { 0, &asn_PER_memb_extensionValue_constr_384, memb_extensionValue_constraint_381 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoServedNRCell_Information_ExtIEs_tag2el_381[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_381 = { + sizeof(struct TDD_InfoServedNRCell_Information_ExtIEs), + offsetof(struct TDD_InfoServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_TDD_InfoServedNRCell_Information_ExtIEs_tag2el_381, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs = { + "TDD-InfoServedNRCell-Information-ExtIEs", + "TDD-InfoServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381, + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381[0]), /* 1 */ + asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381, /* Same as above */ + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs_tags_381[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_381, + 3, /* Elements count */ + &asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_381 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_388 = { + sizeof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_388 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_388 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_385[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_386, memb_id_constraint_385 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_387, memb_criticality_constraint_385 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_388, + 0, + { 0, &asn_PER_memb_extensionValue_constr_388, memb_extensionValue_constraint_385 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_385[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_385 = { + sizeof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs, _asn_ctx), + asn_MAP_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tag2el_385, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs = { + "TDD-InfoNeighbourServedNRCell-Information-ExtIEs", + "TDD-InfoNeighbourServedNRCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385, + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385[0]), /* 1 */ + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385, /* Same as above */ + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_tags_385[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_385, + 3, /* Elements count */ + &asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_385 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_392 = { + sizeof(struct NRNeighbour_Information_ExtIEs__extensionValue), + offsetof(struct NRNeighbour_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRNeighbour_Information_ExtIEs__extensionValue, present), + sizeof(((struct NRNeighbour_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_392 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_392 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRNeighbour_Information_ExtIEs_389[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_390, memb_id_constraint_389 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_391, memb_criticality_constraint_389 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRNeighbour_Information_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_392, + 0, + { 0, &asn_PER_memb_extensionValue_constr_392, memb_extensionValue_constraint_389 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRNeighbour_Information_ExtIEs_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRNeighbour_Information_ExtIEs_tag2el_389[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRNeighbour_Information_ExtIEs_specs_389 = { + sizeof(struct NRNeighbour_Information_ExtIEs), + offsetof(struct NRNeighbour_Information_ExtIEs, _asn_ctx), + asn_MAP_NRNeighbour_Information_ExtIEs_tag2el_389, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information_ExtIEs = { + "NRNeighbour-Information-ExtIEs", + "NRNeighbour-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRNeighbour_Information_ExtIEs_tags_389, + sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389) + /sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389[0]), /* 1 */ + asn_DEF_NRNeighbour_Information_ExtIEs_tags_389, /* Same as above */ + sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389) + /sizeof(asn_DEF_NRNeighbour_Information_ExtIEs_tags_389[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRNeighbour_Information_ExtIEs_389, + 3, /* Elements count */ + &asn_SPC_NRNeighbour_Information_ExtIEs_specs_389 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_396 = { + sizeof(struct Limited_list_ExtIEs__extensionValue), + offsetof(struct Limited_list_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Limited_list_ExtIEs__extensionValue, present), + sizeof(((struct Limited_list_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_396 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_396 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Limited_list_ExtIEs_393[] = { + { ATF_NOFLAGS, 0, offsetof(struct Limited_list_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_394, memb_id_constraint_393 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Limited_list_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_395, memb_criticality_constraint_393 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Limited_list_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_396, + 0, + { 0, &asn_PER_memb_extensionValue_constr_396, memb_extensionValue_constraint_393 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Limited_list_ExtIEs_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Limited_list_ExtIEs_tag2el_393[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Limited_list_ExtIEs_specs_393 = { + sizeof(struct Limited_list_ExtIEs), + offsetof(struct Limited_list_ExtIEs, _asn_ctx), + asn_MAP_Limited_list_ExtIEs_tag2el_393, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Limited_list_ExtIEs = { + "Limited-list-ExtIEs", + "Limited-list-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Limited_list_ExtIEs_tags_393, + sizeof(asn_DEF_Limited_list_ExtIEs_tags_393) + /sizeof(asn_DEF_Limited_list_ExtIEs_tags_393[0]), /* 1 */ + asn_DEF_Limited_list_ExtIEs_tags_393, /* Same as above */ + sizeof(asn_DEF_Limited_list_ExtIEs_tags_393) + /sizeof(asn_DEF_Limited_list_ExtIEs_tags_393[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Limited_list_ExtIEs_393, + 3, /* Elements count */ + &asn_SPC_Limited_list_ExtIEs_specs_393 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_400 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue, present), + sizeof(((struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_400 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_400 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_397[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_398, memb_id_constraint_397 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_399, memb_criticality_constraint_397 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_400, + 0, + { 0, &asn_PER_memb_extensionValue_constr_400, memb_extensionValue_constraint_397 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tag2el_397[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_397 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs, _asn_ctx), + asn_MAP_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tag2el_397, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs = { + "ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs", + "ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397, + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_tags_397[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_397, + 3, /* Elements count */ + &asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_397 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_404 = { + sizeof(struct ServedNRCellsToModify_Item_ExtIEs__extensionValue), + offsetof(struct ServedNRCellsToModify_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedNRCellsToModify_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedNRCellsToModify_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_404 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_404 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_ExtIEs_401[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_402, memb_id_constraint_401 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_403, memb_criticality_constraint_401 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_404, + 0, + { 0, &asn_PER_memb_extensionValue_constr_404, memb_extensionValue_constraint_401 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToModify_Item_ExtIEs_tag2el_401[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_401 = { + sizeof(struct ServedNRCellsToModify_Item_ExtIEs), + offsetof(struct ServedNRCellsToModify_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedNRCellsToModify_Item_ExtIEs_tag2el_401, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs = { + "ServedNRCellsToModify-Item-ExtIEs", + "ServedNRCellsToModify-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401, + sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401[0]), /* 1 */ + asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_ExtIEs_tags_401[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToModify_Item_ExtIEs_401, + 3, /* Elements count */ + &asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_401 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_408 = { + sizeof(struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue), + offsetof(struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue, present), + sizeof(((struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_408 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_408 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_ExtIEs_405[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_406, memb_id_constraint_405 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_407, memb_criticality_constraint_405 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_408, + 0, + { 0, &asn_PER_memb_extensionValue_constr_408, memb_extensionValue_constraint_405 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToActivate_Item_ExtIEs_tag2el_405[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_ExtIEs_specs_405 = { + sizeof(struct ServedNRCellsToActivate_Item_ExtIEs), + offsetof(struct ServedNRCellsToActivate_Item_ExtIEs, _asn_ctx), + asn_MAP_ServedNRCellsToActivate_Item_ExtIEs_tag2el_405, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item_ExtIEs = { + "ServedNRCellsToActivate-Item-ExtIEs", + "ServedNRCellsToActivate-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405, + sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405[0]), /* 1 */ + asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_ExtIEs_tags_405[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToActivate_Item_ExtIEs_405, + 3, /* Elements count */ + &asn_SPC_ServedNRCellsToActivate_Item_ExtIEs_specs_405 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_412 = { + sizeof(struct ActivatedNRCellList_Item_ExtIEs__extensionValue), + offsetof(struct ActivatedNRCellList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ActivatedNRCellList_Item_ExtIEs__extensionValue, present), + sizeof(((struct ActivatedNRCellList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_412 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_412 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_ExtIEs_409[] = { + { ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item_ExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_410, memb_id_constraint_409 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_411, memb_criticality_constraint_409 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ActivatedNRCellList_Item_ExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_412, + 0, + { 0, &asn_PER_memb_extensionValue_constr_412, memb_extensionValue_constraint_409 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ActivatedNRCellList_Item_ExtIEs_tag2el_409[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_ExtIEs_specs_409 = { + sizeof(struct ActivatedNRCellList_Item_ExtIEs), + offsetof(struct ActivatedNRCellList_Item_ExtIEs, _asn_ctx), + asn_MAP_ActivatedNRCellList_Item_ExtIEs_tag2el_409, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item_ExtIEs = { + "ActivatedNRCellList-Item-ExtIEs", + "ActivatedNRCellList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409, + sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409) + /sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409[0]), /* 1 */ + asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409, /* Same as above */ + sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409) + /sizeof(asn_DEF_ActivatedNRCellList_Item_ExtIEs_tags_409[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ActivatedNRCellList_Item_ExtIEs_409, + 3, /* Elements count */ + &asn_SPC_ActivatedNRCellList_Item_ExtIEs_specs_409 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_416 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue), + offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue, present), + sizeof(((struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_416 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_416 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemExtIEs_413[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_414, memb_id_constraint_413 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_415, memb_criticality_constraint_413 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, extensionValue), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_extensionValue_416, + 0, + { 0, &asn_PER_memb_extensionValue_constr_416, memb_extensionValue_constraint_413 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_DataForwardingAddress_ItemExtIEs_tag2el_413[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* extensionValue */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemExtIEs_specs_413 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemExtIEs), + offsetof(struct E_RABs_DataForwardingAddress_ItemExtIEs, _asn_ctx), + asn_MAP_E_RABs_DataForwardingAddress_ItemExtIEs_tag2el_413, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs = { + "E-RABs-DataForwardingAddress-ItemExtIEs", + "E-RABs-DataForwardingAddress-ItemExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs_tags_413[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_ItemExtIEs_413, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_ItemExtIEs_specs_413 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_420 = { + sizeof(struct ABSInformationFDD_ExtIEs__extensionValue), + offsetof(struct ABSInformationFDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ABSInformationFDD_ExtIEs__extensionValue, present), + sizeof(((struct ABSInformationFDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_420 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_420 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationFDD_ExtIEs_417[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_418, memb_id_constraint_417 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_419, memb_criticality_constraint_417 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ABSInformationFDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_420, + 0, + { 0, &asn_PER_memb_extensionValue_constr_420, memb_extensionValue_constraint_417 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ABSInformationFDD_ExtIEs_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationFDD_ExtIEs_tag2el_417[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_ExtIEs_specs_417 = { + sizeof(struct ABSInformationFDD_ExtIEs), + offsetof(struct ABSInformationFDD_ExtIEs, _asn_ctx), + asn_MAP_ABSInformationFDD_ExtIEs_tag2el_417, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD_ExtIEs = { + "ABSInformationFDD-ExtIEs", + "ABSInformationFDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationFDD_ExtIEs_tags_417, + sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417) + /sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417[0]), /* 1 */ + asn_DEF_ABSInformationFDD_ExtIEs_tags_417, /* Same as above */ + sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417) + /sizeof(asn_DEF_ABSInformationFDD_ExtIEs_tags_417[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationFDD_ExtIEs_417, + 3, /* Elements count */ + &asn_SPC_ABSInformationFDD_ExtIEs_specs_417 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_424 = { + sizeof(struct ABSInformationTDD_ExtIEs__extensionValue), + offsetof(struct ABSInformationTDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ABSInformationTDD_ExtIEs__extensionValue, present), + sizeof(((struct ABSInformationTDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_424 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_424 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABSInformationTDD_ExtIEs_421[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_422, memb_id_constraint_421 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_423, memb_criticality_constraint_421 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ABSInformationTDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_424, + 0, + { 0, &asn_PER_memb_extensionValue_constr_424, memb_extensionValue_constraint_421 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ABSInformationTDD_ExtIEs_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABSInformationTDD_ExtIEs_tag2el_421[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_ExtIEs_specs_421 = { + sizeof(struct ABSInformationTDD_ExtIEs), + offsetof(struct ABSInformationTDD_ExtIEs, _asn_ctx), + asn_MAP_ABSInformationTDD_ExtIEs_tag2el_421, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD_ExtIEs = { + "ABSInformationTDD-ExtIEs", + "ABSInformationTDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ABSInformationTDD_ExtIEs_tags_421, + sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421) + /sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421[0]), /* 1 */ + asn_DEF_ABSInformationTDD_ExtIEs_tags_421, /* Same as above */ + sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421) + /sizeof(asn_DEF_ABSInformationTDD_ExtIEs_tags_421[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABSInformationTDD_ExtIEs_421, + 3, /* Elements count */ + &asn_SPC_ABSInformationTDD_ExtIEs_specs_421 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_428 = { + sizeof(struct ABS_Status_ExtIEs__extensionValue), + offsetof(struct ABS_Status_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ABS_Status_ExtIEs__extensionValue, present), + sizeof(((struct ABS_Status_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_428 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_428 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ABS_Status_ExtIEs_425[] = { + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_426, memb_id_constraint_425 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ABS_Status_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_427, memb_criticality_constraint_425 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ABS_Status_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_428, + 0, + { 0, &asn_PER_memb_extensionValue_constr_428, memb_extensionValue_constraint_425 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ABS_Status_ExtIEs_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ABS_Status_ExtIEs_tag2el_425[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_ExtIEs_specs_425 = { + sizeof(struct ABS_Status_ExtIEs), + offsetof(struct ABS_Status_ExtIEs, _asn_ctx), + asn_MAP_ABS_Status_ExtIEs_tag2el_425, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ABS_Status_ExtIEs = { + "ABS-Status-ExtIEs", + "ABS-Status-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ABS_Status_ExtIEs_tags_425, + sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425) + /sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425[0]), /* 1 */ + asn_DEF_ABS_Status_ExtIEs_tags_425, /* Same as above */ + sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425) + /sizeof(asn_DEF_ABS_Status_ExtIEs_tags_425[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ABS_Status_ExtIEs_425, + 3, /* Elements count */ + &asn_SPC_ABS_Status_ExtIEs_specs_425 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_432 = { + sizeof(struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue), + offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue, present), + sizeof(((struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_432 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_432 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_429[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_430, memb_id_constraint_429 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_431, memb_criticality_constraint_429 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_432, + 0, + { 0, &asn_PER_memb_extensionValue_constr_432, memb_extensionValue_constraint_429 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframe_Info_ExtIEs_tag2el_429[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_429 = { + sizeof(struct AdditionalSpecialSubframe_Info_ExtIEs), + offsetof(struct AdditionalSpecialSubframe_Info_ExtIEs, _asn_ctx), + asn_MAP_AdditionalSpecialSubframe_Info_ExtIEs_tag2el_429, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs = { + "AdditionalSpecialSubframe-Info-ExtIEs", + "AdditionalSpecialSubframe-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429, + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429) + /sizeof(asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs_tags_429[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_429, + 3, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_429 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_436 = { + sizeof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue), + offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue, present), + sizeof(((struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_436 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_436 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_433[] = { + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_434, memb_id_constraint_433 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_435, memb_criticality_constraint_433 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_436, + 0, + { 0, &asn_PER_memb_extensionValue_constr_436, memb_extensionValue_constraint_433 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AdditionalSpecialSubframeExtension_Info_ExtIEs_tag2el_433[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_433 = { + sizeof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs), + offsetof(struct AdditionalSpecialSubframeExtension_Info_ExtIEs, _asn_ctx), + asn_MAP_AdditionalSpecialSubframeExtension_Info_ExtIEs_tag2el_433, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs = { + "AdditionalSpecialSubframeExtension-Info-ExtIEs", + "AdditionalSpecialSubframeExtension-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433, + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433[0]), /* 1 */ + asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433, /* Same as above */ + sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433) + /sizeof(asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs_tags_433[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_433, + 3, /* Elements count */ + &asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_433 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_440 = { + sizeof(struct AllocationAndRetentionPriority_ExtIEs__extensionValue), + offsetof(struct AllocationAndRetentionPriority_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AllocationAndRetentionPriority_ExtIEs__extensionValue, present), + sizeof(((struct AllocationAndRetentionPriority_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_440 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_440 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_ExtIEs_437[] = { + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_438, memb_id_constraint_437 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_439, memb_criticality_constraint_437 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AllocationAndRetentionPriority_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_440, + 0, + { 0, &asn_PER_memb_extensionValue_constr_440, memb_extensionValue_constraint_437 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AllocationAndRetentionPriority_ExtIEs_tag2el_437[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_437 = { + sizeof(struct AllocationAndRetentionPriority_ExtIEs), + offsetof(struct AllocationAndRetentionPriority_ExtIEs, _asn_ctx), + asn_MAP_AllocationAndRetentionPriority_ExtIEs_tag2el_437, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority_ExtIEs = { + "AllocationAndRetentionPriority-ExtIEs", + "AllocationAndRetentionPriority-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437, + sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437) + /sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437[0]), /* 1 */ + asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437, /* Same as above */ + sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437) + /sizeof(asn_DEF_AllocationAndRetentionPriority_ExtIEs_tags_437[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AllocationAndRetentionPriority_ExtIEs_437, + 3, /* Elements count */ + &asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_437 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_444 = { + sizeof(struct AS_SecurityInformation_ExtIEs__extensionValue), + offsetof(struct AS_SecurityInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct AS_SecurityInformation_ExtIEs__extensionValue, present), + sizeof(((struct AS_SecurityInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_444 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_444 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_AS_SecurityInformation_ExtIEs_441[] = { + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_442, memb_id_constraint_441 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_443, memb_criticality_constraint_441 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct AS_SecurityInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_444, + 0, + { 0, &asn_PER_memb_extensionValue_constr_444, memb_extensionValue_constraint_441 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_AS_SecurityInformation_ExtIEs_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_AS_SecurityInformation_ExtIEs_tag2el_441[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_ExtIEs_specs_441 = { + sizeof(struct AS_SecurityInformation_ExtIEs), + offsetof(struct AS_SecurityInformation_ExtIEs, _asn_ctx), + asn_MAP_AS_SecurityInformation_ExtIEs_tag2el_441, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation_ExtIEs = { + "AS-SecurityInformation-ExtIEs", + "AS-SecurityInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_AS_SecurityInformation_ExtIEs_tags_441, + sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441) + /sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441[0]), /* 1 */ + asn_DEF_AS_SecurityInformation_ExtIEs_tags_441, /* Same as above */ + sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441) + /sizeof(asn_DEF_AS_SecurityInformation_ExtIEs_tags_441[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_AS_SecurityInformation_ExtIEs_441, + 3, /* Elements count */ + &asn_SPC_AS_SecurityInformation_ExtIEs_specs_441 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_448 = { + sizeof(struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue), + offsetof(struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue, present), + sizeof(((struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_448 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_448 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_445[] = { + { ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_446, memb_id_constraint_445 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_447, memb_criticality_constraint_445 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_448, + 0, + { 0, &asn_PER_memb_extensionValue_constr_448, memb_extensionValue_constraint_445 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BluetoothMeasurementConfiguration_ExtIEs_tag2el_445[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_445 = { + sizeof(struct BluetoothMeasurementConfiguration_ExtIEs), + offsetof(struct BluetoothMeasurementConfiguration_ExtIEs, _asn_ctx), + asn_MAP_BluetoothMeasurementConfiguration_ExtIEs_tag2el_445, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs = { + "BluetoothMeasurementConfiguration-ExtIEs", + "BluetoothMeasurementConfiguration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445, + sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445[0]), /* 1 */ + asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445, /* Same as above */ + sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445) + /sizeof(asn_DEF_BluetoothMeasurementConfiguration_ExtIEs_tags_445[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_445, + 3, /* Elements count */ + &asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_445 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_452 = { + sizeof(struct CellBasedMDT_ExtIEs__extensionValue), + offsetof(struct CellBasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellBasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct CellBasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_452 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_452 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellBasedMDT_ExtIEs_449[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_450, memb_id_constraint_449 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_451, memb_criticality_constraint_449 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellBasedMDT_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_452, + 0, + { 0, &asn_PER_memb_extensionValue_constr_452, memb_extensionValue_constraint_449 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellBasedMDT_ExtIEs_tags_449[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedMDT_ExtIEs_tag2el_449[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_ExtIEs_specs_449 = { + sizeof(struct CellBasedMDT_ExtIEs), + offsetof(struct CellBasedMDT_ExtIEs, _asn_ctx), + asn_MAP_CellBasedMDT_ExtIEs_tag2el_449, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedMDT_ExtIEs = { + "CellBasedMDT-ExtIEs", + "CellBasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedMDT_ExtIEs_tags_449, + sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449) + /sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449[0]), /* 1 */ + asn_DEF_CellBasedMDT_ExtIEs_tags_449, /* Same as above */ + sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449) + /sizeof(asn_DEF_CellBasedMDT_ExtIEs_tags_449[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedMDT_ExtIEs_449, + 3, /* Elements count */ + &asn_SPC_CellBasedMDT_ExtIEs_specs_449 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_456 = { + sizeof(struct CellBasedQMC_ExtIEs__extensionValue), + offsetof(struct CellBasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellBasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct CellBasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_456 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_456 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellBasedQMC_ExtIEs_453[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_454, memb_id_constraint_453 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_455, memb_criticality_constraint_453 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellBasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_456, + 0, + { 0, &asn_PER_memb_extensionValue_constr_456, memb_extensionValue_constraint_453 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellBasedQMC_ExtIEs_tags_453[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellBasedQMC_ExtIEs_tag2el_453[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_ExtIEs_specs_453 = { + sizeof(struct CellBasedQMC_ExtIEs), + offsetof(struct CellBasedQMC_ExtIEs, _asn_ctx), + asn_MAP_CellBasedQMC_ExtIEs_tag2el_453, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellBasedQMC_ExtIEs = { + "CellBasedQMC-ExtIEs", + "CellBasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellBasedQMC_ExtIEs_tags_453, + sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453) + /sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453[0]), /* 1 */ + asn_DEF_CellBasedQMC_ExtIEs_tags_453, /* Same as above */ + sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453) + /sizeof(asn_DEF_CellBasedQMC_ExtIEs_tags_453[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellBasedQMC_ExtIEs_453, + 3, /* Elements count */ + &asn_SPC_CellBasedQMC_ExtIEs_specs_453 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_460 = { + sizeof(struct CellReplacingInfo_ExtIEs__extensionValue), + offsetof(struct CellReplacingInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellReplacingInfo_ExtIEs__extensionValue, present), + sizeof(((struct CellReplacingInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_460 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_460 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellReplacingInfo_ExtIEs_457[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_458, memb_id_constraint_457 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_459, memb_criticality_constraint_457 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellReplacingInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_460, + 0, + { 0, &asn_PER_memb_extensionValue_constr_460, memb_extensionValue_constraint_457 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellReplacingInfo_ExtIEs_tags_457[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellReplacingInfo_ExtIEs_tag2el_457[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_ExtIEs_specs_457 = { + sizeof(struct CellReplacingInfo_ExtIEs), + offsetof(struct CellReplacingInfo_ExtIEs, _asn_ctx), + asn_MAP_CellReplacingInfo_ExtIEs_tag2el_457, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo_ExtIEs = { + "CellReplacingInfo-ExtIEs", + "CellReplacingInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellReplacingInfo_ExtIEs_tags_457, + sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457) + /sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457[0]), /* 1 */ + asn_DEF_CellReplacingInfo_ExtIEs_tags_457, /* Same as above */ + sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457) + /sizeof(asn_DEF_CellReplacingInfo_ExtIEs_tags_457[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellReplacingInfo_ExtIEs_457, + 3, /* Elements count */ + &asn_SPC_CellReplacingInfo_ExtIEs_specs_457 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_464 = { + sizeof(struct CellType_ExtIEs__extensionValue), + offsetof(struct CellType_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CellType_ExtIEs__extensionValue, present), + sizeof(((struct CellType_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_464 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_464 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellType_ExtIEs_461[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellType_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_462, memb_id_constraint_461 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellType_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_463, memb_criticality_constraint_461 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellType_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_464, + 0, + { 0, &asn_PER_memb_extensionValue_constr_464, memb_extensionValue_constraint_461 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellType_ExtIEs_tags_461[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellType_ExtIEs_tag2el_461[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellType_ExtIEs_specs_461 = { + sizeof(struct CellType_ExtIEs), + offsetof(struct CellType_ExtIEs, _asn_ctx), + asn_MAP_CellType_ExtIEs_tag2el_461, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellType_ExtIEs = { + "CellType-ExtIEs", + "CellType-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellType_ExtIEs_tags_461, + sizeof(asn_DEF_CellType_ExtIEs_tags_461) + /sizeof(asn_DEF_CellType_ExtIEs_tags_461[0]), /* 1 */ + asn_DEF_CellType_ExtIEs_tags_461, /* Same as above */ + sizeof(asn_DEF_CellType_ExtIEs_tags_461) + /sizeof(asn_DEF_CellType_ExtIEs_tags_461[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellType_ExtIEs_461, + 3, /* Elements count */ + &asn_SPC_CellType_ExtIEs_specs_461 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_468 = { + sizeof(struct CNTypeRestrictionsItem_ExtIEs__extensionValue), + offsetof(struct CNTypeRestrictionsItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CNTypeRestrictionsItem_ExtIEs__extensionValue, present), + sizeof(((struct CNTypeRestrictionsItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_468 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_468 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_ExtIEs_465[] = { + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_466, memb_id_constraint_465 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_467, memb_criticality_constraint_465 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CNTypeRestrictionsItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_468, + 0, + { 0, &asn_PER_memb_extensionValue_constr_468, memb_extensionValue_constraint_465 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CNTypeRestrictionsItem_ExtIEs_tag2el_465[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_ExtIEs_specs_465 = { + sizeof(struct CNTypeRestrictionsItem_ExtIEs), + offsetof(struct CNTypeRestrictionsItem_ExtIEs, _asn_ctx), + asn_MAP_CNTypeRestrictionsItem_ExtIEs_tag2el_465, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem_ExtIEs = { + "CNTypeRestrictionsItem-ExtIEs", + "CNTypeRestrictionsItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465, + sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465) + /sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465[0]), /* 1 */ + asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465, /* Same as above */ + sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465) + /sizeof(asn_DEF_CNTypeRestrictionsItem_ExtIEs_tags_465[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CNTypeRestrictionsItem_ExtIEs_465, + 3, /* Elements count */ + &asn_SPC_CNTypeRestrictionsItem_ExtIEs_specs_465 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_472 = { + sizeof(struct CoMPHypothesisSetItem_ExtIEs__extensionValue), + offsetof(struct CoMPHypothesisSetItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPHypothesisSetItem_ExtIEs__extensionValue, present), + sizeof(((struct CoMPHypothesisSetItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_472 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_472 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_ExtIEs_469[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_470, memb_id_constraint_469 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_471, memb_criticality_constraint_469 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPHypothesisSetItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_472, + 0, + { 0, &asn_PER_memb_extensionValue_constr_472, memb_extensionValue_constraint_469 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPHypothesisSetItem_ExtIEs_tag2el_469[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_469 = { + sizeof(struct CoMPHypothesisSetItem_ExtIEs), + offsetof(struct CoMPHypothesisSetItem_ExtIEs, _asn_ctx), + asn_MAP_CoMPHypothesisSetItem_ExtIEs_tag2el_469, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem_ExtIEs = { + "CoMPHypothesisSetItem-ExtIEs", + "CoMPHypothesisSetItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469, + sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469) + /sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469[0]), /* 1 */ + asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469, /* Same as above */ + sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469) + /sizeof(asn_DEF_CoMPHypothesisSetItem_ExtIEs_tags_469[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPHypothesisSetItem_ExtIEs_469, + 3, /* Elements count */ + &asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_469 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_476 = { + sizeof(struct CoMPInformation_ExtIEs__extensionValue), + offsetof(struct CoMPInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPInformation_ExtIEs__extensionValue, present), + sizeof(((struct CoMPInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_476 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_476 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformation_ExtIEs_473[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_474, memb_id_constraint_473 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_475, memb_criticality_constraint_473 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_476, + 0, + { 0, &asn_PER_memb_extensionValue_constr_476, memb_extensionValue_constraint_473 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformation_ExtIEs_tags_473[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformation_ExtIEs_tag2el_473[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_ExtIEs_specs_473 = { + sizeof(struct CoMPInformation_ExtIEs), + offsetof(struct CoMPInformation_ExtIEs, _asn_ctx), + asn_MAP_CoMPInformation_ExtIEs_tag2el_473, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformation_ExtIEs = { + "CoMPInformation-ExtIEs", + "CoMPInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformation_ExtIEs_tags_473, + sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473) + /sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473[0]), /* 1 */ + asn_DEF_CoMPInformation_ExtIEs_tags_473, /* Same as above */ + sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473) + /sizeof(asn_DEF_CoMPInformation_ExtIEs_tags_473[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformation_ExtIEs_473, + 3, /* Elements count */ + &asn_SPC_CoMPInformation_ExtIEs_specs_473 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_480 = { + sizeof(struct CoMPInformationItem_ExtIEs__extensionValue), + offsetof(struct CoMPInformationItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPInformationItem_ExtIEs__extensionValue, present), + sizeof(((struct CoMPInformationItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_480 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_480 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationItem_ExtIEs_477[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_478, memb_id_constraint_477 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_479, memb_criticality_constraint_477 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPInformationItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_480, + 0, + { 0, &asn_PER_memb_extensionValue_constr_480, memb_extensionValue_constraint_477 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationItem_ExtIEs_tags_477[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformationItem_ExtIEs_tag2el_477[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationItem_ExtIEs_specs_477 = { + sizeof(struct CoMPInformationItem_ExtIEs), + offsetof(struct CoMPInformationItem_ExtIEs, _asn_ctx), + asn_MAP_CoMPInformationItem_ExtIEs_tag2el_477, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem_ExtIEs = { + "CoMPInformationItem-ExtIEs", + "CoMPInformationItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformationItem_ExtIEs_tags_477, + sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477) + /sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477[0]), /* 1 */ + asn_DEF_CoMPInformationItem_ExtIEs_tags_477, /* Same as above */ + sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477) + /sizeof(asn_DEF_CoMPInformationItem_ExtIEs_tags_477[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformationItem_ExtIEs_477, + 3, /* Elements count */ + &asn_SPC_CoMPInformationItem_ExtIEs_specs_477 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_484 = { + sizeof(struct CoMPInformationStartTime_ExtIEs__extensionValue), + offsetof(struct CoMPInformationStartTime_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CoMPInformationStartTime_ExtIEs__extensionValue, present), + sizeof(((struct CoMPInformationStartTime_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_484 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_484 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_ExtIEs_481[] = { + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_482, memb_id_constraint_481 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_483, memb_criticality_constraint_481 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CoMPInformationStartTime_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_484, + 0, + { 0, &asn_PER_memb_extensionValue_constr_484, memb_extensionValue_constraint_481 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CoMPInformationStartTime_ExtIEs_tag2el_481[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationStartTime_ExtIEs_specs_481 = { + sizeof(struct CoMPInformationStartTime_ExtIEs), + offsetof(struct CoMPInformationStartTime_ExtIEs, _asn_ctx), + asn_MAP_CoMPInformationStartTime_ExtIEs_tag2el_481, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime_ExtIEs = { + "CoMPInformationStartTime-ExtIEs", + "CoMPInformationStartTime-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481, + sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481) + /sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481[0]), /* 1 */ + asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481, /* Same as above */ + sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481) + /sizeof(asn_DEF_CoMPInformationStartTime_ExtIEs_tags_481[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CoMPInformationStartTime_ExtIEs_481, + 3, /* Elements count */ + &asn_SPC_CoMPInformationStartTime_ExtIEs_specs_481 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_488 = { + sizeof(struct CompositeAvailableCapacity_ExtIEs__extensionValue), + offsetof(struct CompositeAvailableCapacity_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CompositeAvailableCapacity_ExtIEs__extensionValue, present), + sizeof(((struct CompositeAvailableCapacity_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_488 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_488 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_ExtIEs_485[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_486, memb_id_constraint_485 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_487, memb_criticality_constraint_485 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacity_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_488, + 0, + { 0, &asn_PER_memb_extensionValue_constr_488, memb_extensionValue_constraint_485 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacity_ExtIEs_tag2el_485[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_485 = { + sizeof(struct CompositeAvailableCapacity_ExtIEs), + offsetof(struct CompositeAvailableCapacity_ExtIEs, _asn_ctx), + asn_MAP_CompositeAvailableCapacity_ExtIEs_tag2el_485, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity_ExtIEs = { + "CompositeAvailableCapacity-ExtIEs", + "CompositeAvailableCapacity-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485, + sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485) + /sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485) + /sizeof(asn_DEF_CompositeAvailableCapacity_ExtIEs_tags_485[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacity_ExtIEs_485, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_485 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_492 = { + sizeof(struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue), + offsetof(struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue, present), + sizeof(((struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_492 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_492 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_489[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_490, memb_id_constraint_489 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_491, memb_criticality_constraint_489 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_492, + 0, + { 0, &asn_PER_memb_extensionValue_constr_492, memb_extensionValue_constraint_489 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompositeAvailableCapacityGroup_ExtIEs_tag2el_489[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_489 = { + sizeof(struct CompositeAvailableCapacityGroup_ExtIEs), + offsetof(struct CompositeAvailableCapacityGroup_ExtIEs, _asn_ctx), + asn_MAP_CompositeAvailableCapacityGroup_ExtIEs_tag2el_489, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs = { + "CompositeAvailableCapacityGroup-ExtIEs", + "CompositeAvailableCapacityGroup-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489, + sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489[0]), /* 1 */ + asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489, /* Same as above */ + sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489) + /sizeof(asn_DEF_CompositeAvailableCapacityGroup_ExtIEs_tags_489[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_489, + 3, /* Elements count */ + &asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_489 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_496 = { + sizeof(struct COUNTvalue_ExtIEs__extensionValue), + offsetof(struct COUNTvalue_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct COUNTvalue_ExtIEs__extensionValue, present), + sizeof(((struct COUNTvalue_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_496 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_496 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_COUNTvalue_ExtIEs_493[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_494, memb_id_constraint_493 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvalue_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_495, memb_criticality_constraint_493 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct COUNTvalue_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_496, + 0, + { 0, &asn_PER_memb_extensionValue_constr_496, memb_extensionValue_constraint_493 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_COUNTvalue_ExtIEs_tags_493[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvalue_ExtIEs_tag2el_493[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_ExtIEs_specs_493 = { + sizeof(struct COUNTvalue_ExtIEs), + offsetof(struct COUNTvalue_ExtIEs, _asn_ctx), + asn_MAP_COUNTvalue_ExtIEs_tag2el_493, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvalue_ExtIEs = { + "COUNTvalue-ExtIEs", + "COUNTvalue-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvalue_ExtIEs_tags_493, + sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493) + /sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493[0]), /* 1 */ + asn_DEF_COUNTvalue_ExtIEs_tags_493, /* Same as above */ + sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493) + /sizeof(asn_DEF_COUNTvalue_ExtIEs_tags_493[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvalue_ExtIEs_493, + 3, /* Elements count */ + &asn_SPC_COUNTvalue_ExtIEs_specs_493 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_500 = { + sizeof(struct COUNTValueExtended_ExtIEs__extensionValue), + offsetof(struct COUNTValueExtended_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct COUNTValueExtended_ExtIEs__extensionValue, present), + sizeof(((struct COUNTValueExtended_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_500 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_500 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_COUNTValueExtended_ExtIEs_497[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_498, memb_id_constraint_497 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_499, memb_criticality_constraint_497 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct COUNTValueExtended_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_500, + 0, + { 0, &asn_PER_memb_extensionValue_constr_500, memb_extensionValue_constraint_497 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_COUNTValueExtended_ExtIEs_tags_497[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTValueExtended_ExtIEs_tag2el_497[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_ExtIEs_specs_497 = { + sizeof(struct COUNTValueExtended_ExtIEs), + offsetof(struct COUNTValueExtended_ExtIEs, _asn_ctx), + asn_MAP_COUNTValueExtended_ExtIEs_tag2el_497, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended_ExtIEs = { + "COUNTValueExtended-ExtIEs", + "COUNTValueExtended-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_COUNTValueExtended_ExtIEs_tags_497, + sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497) + /sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497[0]), /* 1 */ + asn_DEF_COUNTValueExtended_ExtIEs_tags_497, /* Same as above */ + sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497) + /sizeof(asn_DEF_COUNTValueExtended_ExtIEs_tags_497[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTValueExtended_ExtIEs_497, + 3, /* Elements count */ + &asn_SPC_COUNTValueExtended_ExtIEs_specs_497 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_504 = { + sizeof(struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue), + offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue, present), + sizeof(((struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_504 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_504 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_501[] = { + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_502, memb_id_constraint_501 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_503, memb_criticality_constraint_501 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_504, + 0, + { 0, &asn_PER_memb_extensionValue_constr_504, memb_extensionValue_constraint_501 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_COUNTvaluePDCP_SNlength18_ExtIEs_tag2el_501[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_501 = { + sizeof(struct COUNTvaluePDCP_SNlength18_ExtIEs), + offsetof(struct COUNTvaluePDCP_SNlength18_ExtIEs, _asn_ctx), + asn_MAP_COUNTvaluePDCP_SNlength18_ExtIEs_tag2el_501, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs = { + "COUNTvaluePDCP-SNlength18-ExtIEs", + "COUNTvaluePDCP-SNlength18-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501, + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501[0]), /* 1 */ + asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501, /* Same as above */ + sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501) + /sizeof(asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs_tags_501[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_501, + 3, /* Elements count */ + &asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_501 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_508 = { + sizeof(struct CriticalityDiagnostics_ExtIEs__extensionValue), + offsetof(struct CriticalityDiagnostics_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CriticalityDiagnostics_ExtIEs__extensionValue, present), + sizeof(((struct CriticalityDiagnostics_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_508 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_508 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_ExtIEs_505[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_506, memb_id_constraint_505 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_507, memb_criticality_constraint_505 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_508, + 0, + { 0, &asn_PER_memb_extensionValue_constr_508, memb_extensionValue_constraint_505 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_ExtIEs_tag2el_505[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_ExtIEs_specs_505 = { + sizeof(struct CriticalityDiagnostics_ExtIEs), + offsetof(struct CriticalityDiagnostics_ExtIEs, _asn_ctx), + asn_MAP_CriticalityDiagnostics_ExtIEs_tag2el_505, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_ExtIEs = { + "CriticalityDiagnostics-ExtIEs", + "CriticalityDiagnostics-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505, + sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505) + /sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505) + /sizeof(asn_DEF_CriticalityDiagnostics_ExtIEs_tags_505[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_ExtIEs_505, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_ExtIEs_specs_505 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_512 = { + sizeof(struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue), + offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue, present), + sizeof(((struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_512 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_512 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_509[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_510, memb_id_constraint_509 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_511, memb_criticality_constraint_509 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_512, + 0, + { 0, &asn_PER_memb_extensionValue_constr_512, memb_extensionValue_constraint_509 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_List_ExtIEs_tag2el_509[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_509 = { + sizeof(struct CriticalityDiagnostics_IE_List_ExtIEs), + offsetof(struct CriticalityDiagnostics_IE_List_ExtIEs, _asn_ctx), + asn_MAP_CriticalityDiagnostics_IE_List_ExtIEs_tag2el_509, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs = { + "CriticalityDiagnostics-IE-List-ExtIEs", + "CriticalityDiagnostics-IE-List-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs_tags_509[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_509, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_509 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_516 = { + sizeof(struct CSIReportList_ExtIEs__extensionValue), + offsetof(struct CSIReportList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CSIReportList_ExtIEs__extensionValue, present), + sizeof(((struct CSIReportList_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_516 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_516 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportList_ExtIEs_513[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_514, memb_id_constraint_513 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportList_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_515, memb_criticality_constraint_513 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CSIReportList_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_516, + 0, + { 0, &asn_PER_memb_extensionValue_constr_516, memb_extensionValue_constraint_513 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportList_ExtIEs_tags_513[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSIReportList_ExtIEs_tag2el_513[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CSIReportList_ExtIEs_specs_513 = { + sizeof(struct CSIReportList_ExtIEs), + offsetof(struct CSIReportList_ExtIEs, _asn_ctx), + asn_MAP_CSIReportList_ExtIEs_tag2el_513, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportList_ExtIEs = { + "CSIReportList-ExtIEs", + "CSIReportList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CSIReportList_ExtIEs_tags_513, + sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513) + /sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513[0]), /* 1 */ + asn_DEF_CSIReportList_ExtIEs_tags_513, /* Same as above */ + sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513) + /sizeof(asn_DEF_CSIReportList_ExtIEs_tags_513[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CSIReportList_ExtIEs_513, + 3, /* Elements count */ + &asn_SPC_CSIReportList_ExtIEs_specs_513 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_520 = { + sizeof(struct CSIReportPerCSIProcess_ExtIEs__extensionValue), + offsetof(struct CSIReportPerCSIProcess_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CSIReportPerCSIProcess_ExtIEs__extensionValue, present), + sizeof(((struct CSIReportPerCSIProcess_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_520 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_520 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_ExtIEs_517[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_518, memb_id_constraint_517 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_519, memb_criticality_constraint_517 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcess_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_520, + 0, + { 0, &asn_PER_memb_extensionValue_constr_520, memb_extensionValue_constraint_517 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSIReportPerCSIProcess_ExtIEs_tag2el_517[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_517 = { + sizeof(struct CSIReportPerCSIProcess_ExtIEs), + offsetof(struct CSIReportPerCSIProcess_ExtIEs, _asn_ctx), + asn_MAP_CSIReportPerCSIProcess_ExtIEs_tag2el_517, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess_ExtIEs = { + "CSIReportPerCSIProcess-ExtIEs", + "CSIReportPerCSIProcess-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517, + sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517) + /sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517) + /sizeof(asn_DEF_CSIReportPerCSIProcess_ExtIEs_tags_517[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CSIReportPerCSIProcess_ExtIEs_517, + 3, /* Elements count */ + &asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_517 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_524 = { + sizeof(struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue), + offsetof(struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue, present), + sizeof(((struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_524 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_524 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_521[] = { + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_522, memb_id_constraint_521 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_523, memb_criticality_constraint_521 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_524, + 0, + { 0, &asn_PER_memb_extensionValue_constr_524, memb_extensionValue_constraint_521 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CSIReportPerCSIProcessItem_ExtIEs_tag2el_521[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_521 = { + sizeof(struct CSIReportPerCSIProcessItem_ExtIEs), + offsetof(struct CSIReportPerCSIProcessItem_ExtIEs, _asn_ctx), + asn_MAP_CSIReportPerCSIProcessItem_ExtIEs_tag2el_521, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs = { + "CSIReportPerCSIProcessItem-ExtIEs", + "CSIReportPerCSIProcessItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521, + sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521[0]), /* 1 */ + asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521, /* Same as above */ + sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521) + /sizeof(asn_DEF_CSIReportPerCSIProcessItem_ExtIEs_tags_521[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_521, + 3, /* Elements count */ + &asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_521 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_528 = { + sizeof(struct DataTrafficResourceIndication_ExtIEs__extensionValue), + offsetof(struct DataTrafficResourceIndication_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct DataTrafficResourceIndication_ExtIEs__extensionValue, present), + sizeof(((struct DataTrafficResourceIndication_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_528 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_528 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_ExtIEs_525[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_526, memb_id_constraint_525 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_527, memb_criticality_constraint_525 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DataTrafficResourceIndication_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_528, + 0, + { 0, &asn_PER_memb_extensionValue_constr_528, memb_extensionValue_constraint_525 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataTrafficResourceIndication_ExtIEs_tag2el_525[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_ExtIEs_specs_525 = { + sizeof(struct DataTrafficResourceIndication_ExtIEs), + offsetof(struct DataTrafficResourceIndication_ExtIEs, _asn_ctx), + asn_MAP_DataTrafficResourceIndication_ExtIEs_tag2el_525, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication_ExtIEs = { + "DataTrafficResourceIndication-ExtIEs", + "DataTrafficResourceIndication-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525, + sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525) + /sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525[0]), /* 1 */ + asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525, /* Same as above */ + sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525) + /sizeof(asn_DEF_DataTrafficResourceIndication_ExtIEs_tags_525[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataTrafficResourceIndication_ExtIEs_525, + 3, /* Elements count */ + &asn_SPC_DataTrafficResourceIndication_ExtIEs_specs_525 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_532 = { + sizeof(struct DeliveryStatus_ExtIEs__extensionValue), + offsetof(struct DeliveryStatus_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct DeliveryStatus_ExtIEs__extensionValue, present), + sizeof(((struct DeliveryStatus_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_532 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_532 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DeliveryStatus_ExtIEs_529[] = { + { ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_530, memb_id_constraint_529 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_531, memb_criticality_constraint_529 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DeliveryStatus_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_532, + 0, + { 0, &asn_PER_memb_extensionValue_constr_532, memb_extensionValue_constraint_529 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_DeliveryStatus_ExtIEs_tags_529[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DeliveryStatus_ExtIEs_tag2el_529[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_ExtIEs_specs_529 = { + sizeof(struct DeliveryStatus_ExtIEs), + offsetof(struct DeliveryStatus_ExtIEs, _asn_ctx), + asn_MAP_DeliveryStatus_ExtIEs_tag2el_529, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DeliveryStatus_ExtIEs = { + "DeliveryStatus-ExtIEs", + "DeliveryStatus-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_DeliveryStatus_ExtIEs_tags_529, + sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529) + /sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529[0]), /* 1 */ + asn_DEF_DeliveryStatus_ExtIEs_tags_529, /* Same as above */ + sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529) + /sizeof(asn_DEF_DeliveryStatus_ExtIEs_tags_529[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DeliveryStatus_ExtIEs_529, + 3, /* Elements count */ + &asn_SPC_DeliveryStatus_ExtIEs_specs_529 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_536 = { + sizeof(struct DynamicNAICSInformation_ExtIEs__extensionValue), + offsetof(struct DynamicNAICSInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct DynamicNAICSInformation_ExtIEs__extensionValue, present), + sizeof(((struct DynamicNAICSInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_536 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_536 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_ExtIEs_533[] = { + { ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_534, memb_id_constraint_533 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_535, memb_criticality_constraint_533 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DynamicNAICSInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_536, + 0, + { 0, &asn_PER_memb_extensionValue_constr_536, memb_extensionValue_constraint_533 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DynamicNAICSInformation_ExtIEs_tag2el_533[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_ExtIEs_specs_533 = { + sizeof(struct DynamicNAICSInformation_ExtIEs), + offsetof(struct DynamicNAICSInformation_ExtIEs, _asn_ctx), + asn_MAP_DynamicNAICSInformation_ExtIEs_tag2el_533, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation_ExtIEs = { + "DynamicNAICSInformation-ExtIEs", + "DynamicNAICSInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533, + sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533) + /sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533[0]), /* 1 */ + asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533, /* Same as above */ + sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533) + /sizeof(asn_DEF_DynamicNAICSInformation_ExtIEs_tags_533[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DynamicNAICSInformation_ExtIEs_533, + 3, /* Elements count */ + &asn_SPC_DynamicNAICSInformation_ExtIEs_specs_533 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_540 = { + sizeof(struct ECGI_ExtIEs__extensionValue), + offsetof(struct ECGI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ECGI_ExtIEs__extensionValue, present), + sizeof(((struct ECGI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_540 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_540 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ECGI_ExtIEs_537[] = { + { ATF_NOFLAGS, 0, offsetof(struct ECGI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_538, memb_id_constraint_537 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ECGI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_539, memb_criticality_constraint_537 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ECGI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_540, + 0, + { 0, &asn_PER_memb_extensionValue_constr_540, memb_extensionValue_constraint_537 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ECGI_ExtIEs_tags_537[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ECGI_ExtIEs_tag2el_537[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ECGI_ExtIEs_specs_537 = { + sizeof(struct ECGI_ExtIEs), + offsetof(struct ECGI_ExtIEs, _asn_ctx), + asn_MAP_ECGI_ExtIEs_tag2el_537, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ECGI_ExtIEs = { + "ECGI-ExtIEs", + "ECGI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ECGI_ExtIEs_tags_537, + sizeof(asn_DEF_ECGI_ExtIEs_tags_537) + /sizeof(asn_DEF_ECGI_ExtIEs_tags_537[0]), /* 1 */ + asn_DEF_ECGI_ExtIEs_tags_537, /* Same as above */ + sizeof(asn_DEF_ECGI_ExtIEs_tags_537) + /sizeof(asn_DEF_ECGI_ExtIEs_tags_537[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ECGI_ExtIEs_537, + 3, /* Elements count */ + &asn_SPC_ECGI_ExtIEs_specs_537 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_544 = { + sizeof(struct EnhancedRNTP_ExtIEs__extensionValue), + offsetof(struct EnhancedRNTP_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct EnhancedRNTP_ExtIEs__extensionValue, present), + sizeof(((struct EnhancedRNTP_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_544 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_544 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EnhancedRNTP_ExtIEs_541[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_542, memb_id_constraint_541 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_543, memb_criticality_constraint_541 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTP_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_544, + 0, + { 0, &asn_PER_memb_extensionValue_constr_544, memb_extensionValue_constraint_541 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTP_ExtIEs_tags_541[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTP_ExtIEs_tag2el_541[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_ExtIEs_specs_541 = { + sizeof(struct EnhancedRNTP_ExtIEs), + offsetof(struct EnhancedRNTP_ExtIEs, _asn_ctx), + asn_MAP_EnhancedRNTP_ExtIEs_tag2el_541, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP_ExtIEs = { + "EnhancedRNTP-ExtIEs", + "EnhancedRNTP-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTP_ExtIEs_tags_541, + sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541) + /sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541[0]), /* 1 */ + asn_DEF_EnhancedRNTP_ExtIEs_tags_541, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541) + /sizeof(asn_DEF_EnhancedRNTP_ExtIEs_tags_541[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTP_ExtIEs_541, + 3, /* Elements count */ + &asn_SPC_EnhancedRNTP_ExtIEs_specs_541 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_548 = { + sizeof(struct EnhancedRNTPStartTime_ExtIEs__extensionValue), + offsetof(struct EnhancedRNTPStartTime_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct EnhancedRNTPStartTime_ExtIEs__extensionValue, present), + sizeof(((struct EnhancedRNTPStartTime_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_548 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_548 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_ExtIEs_545[] = { + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_546, memb_id_constraint_545 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_547, memb_criticality_constraint_545 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EnhancedRNTPStartTime_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_548, + 0, + { 0, &asn_PER_memb_extensionValue_constr_548, memb_extensionValue_constraint_545 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EnhancedRNTPStartTime_ExtIEs_tag2el_545[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_545 = { + sizeof(struct EnhancedRNTPStartTime_ExtIEs), + offsetof(struct EnhancedRNTPStartTime_ExtIEs, _asn_ctx), + asn_MAP_EnhancedRNTPStartTime_ExtIEs_tag2el_545, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime_ExtIEs = { + "EnhancedRNTPStartTime-ExtIEs", + "EnhancedRNTPStartTime-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545, + sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545) + /sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545[0]), /* 1 */ + asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545, /* Same as above */ + sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545) + /sizeof(asn_DEF_EnhancedRNTPStartTime_ExtIEs_tags_545[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EnhancedRNTPStartTime_ExtIEs_545, + 3, /* Elements count */ + &asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_545 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_552 = { + sizeof(struct EN_DC_ResourceConfigurationExtIEs__extensionValue), + offsetof(struct EN_DC_ResourceConfigurationExtIEs__extensionValue, _asn_ctx), + offsetof(struct EN_DC_ResourceConfigurationExtIEs__extensionValue, present), + sizeof(((struct EN_DC_ResourceConfigurationExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_552 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_552 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfigurationExtIEs_549[] = { + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfigurationExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_550, memb_id_constraint_549 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfigurationExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_551, memb_criticality_constraint_549 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EN_DC_ResourceConfigurationExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_552, + 0, + { 0, &asn_PER_memb_extensionValue_constr_552, memb_extensionValue_constraint_549 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EN_DC_ResourceConfigurationExtIEs_tag2el_549[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfigurationExtIEs_specs_549 = { + sizeof(struct EN_DC_ResourceConfigurationExtIEs), + offsetof(struct EN_DC_ResourceConfigurationExtIEs, _asn_ctx), + asn_MAP_EN_DC_ResourceConfigurationExtIEs_tag2el_549, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfigurationExtIEs = { + "EN-DC-ResourceConfigurationExtIEs", + "EN-DC-ResourceConfigurationExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549, + sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549) + /sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549[0]), /* 1 */ + asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549, /* Same as above */ + sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549) + /sizeof(asn_DEF_EN_DC_ResourceConfigurationExtIEs_tags_549[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EN_DC_ResourceConfigurationExtIEs_549, + 3, /* Elements count */ + &asn_SPC_EN_DC_ResourceConfigurationExtIEs_specs_549 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_556 = { + sizeof(struct ERABActivityNotifyItem_ExtIEs__extensionValue), + offsetof(struct ERABActivityNotifyItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ERABActivityNotifyItem_ExtIEs__extensionValue, present), + sizeof(((struct ERABActivityNotifyItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_556 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_556 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_ExtIEs_553[] = { + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_554, memb_id_constraint_553 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_555, memb_criticality_constraint_553 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ERABActivityNotifyItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_556, + 0, + { 0, &asn_PER_memb_extensionValue_constr_556, memb_extensionValue_constraint_553 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ERABActivityNotifyItem_ExtIEs_tag2el_553[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_ExtIEs_specs_553 = { + sizeof(struct ERABActivityNotifyItem_ExtIEs), + offsetof(struct ERABActivityNotifyItem_ExtIEs, _asn_ctx), + asn_MAP_ERABActivityNotifyItem_ExtIEs_tag2el_553, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem_ExtIEs = { + "ERABActivityNotifyItem-ExtIEs", + "ERABActivityNotifyItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553, + sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553) + /sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553[0]), /* 1 */ + asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553, /* Same as above */ + sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553) + /sizeof(asn_DEF_ERABActivityNotifyItem_ExtIEs_tags_553[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ERABActivityNotifyItem_ExtIEs_553, + 3, /* Elements count */ + &asn_SPC_ERABActivityNotifyItem_ExtIEs_specs_553 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_560[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue, choice.Packet_LossRate), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Packet_LossRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Packet-LossRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_560[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* Packet-LossRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_560 = { + sizeof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue), + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue, present), + sizeof(((struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_560, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_560 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_560, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_560 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_ExtIEs_557[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_558, memb_id_constraint_557 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E_RAB_Level_QoS_Parameters_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_559, memb_criticality_constraint_557 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_560, + select_E_RAB_Level_QoS_Parameters_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_560, memb_extensionValue_constraint_557 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Level_QoS_Parameters_ExtIEs_tag2el_557[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_ExtIEs_specs_557 = { + sizeof(struct E_RAB_Level_QoS_Parameters_ExtIEs), + offsetof(struct E_RAB_Level_QoS_Parameters_ExtIEs, _asn_ctx), + asn_MAP_E_RAB_Level_QoS_Parameters_ExtIEs_tag2el_557, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs = { + "E-RAB-Level-QoS-Parameters-ExtIEs", + "E-RAB-Level-QoS-Parameters-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557, + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557[0]), /* 1 */ + asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557, /* Same as above */ + sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557) + /sizeof(asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs_tags_557[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Level_QoS_Parameters_ExtIEs_557, + 3, /* Elements count */ + &asn_SPC_E_RAB_Level_QoS_Parameters_ExtIEs_specs_557 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_564 = { + sizeof(struct E_RAB_Item_ExtIEs__extensionValue), + offsetof(struct E_RAB_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RAB_Item_ExtIEs__extensionValue, present), + sizeof(((struct E_RAB_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_564 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_564 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RAB_Item_ExtIEs_561[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_562, memb_id_constraint_561 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_563, memb_criticality_constraint_561 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RAB_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_564, + 0, + { 0, &asn_PER_memb_extensionValue_constr_564, memb_extensionValue_constraint_561 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_Item_ExtIEs_tags_561[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_Item_ExtIEs_tag2el_561[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_ExtIEs_specs_561 = { + sizeof(struct E_RAB_Item_ExtIEs), + offsetof(struct E_RAB_Item_ExtIEs, _asn_ctx), + asn_MAP_E_RAB_Item_ExtIEs_tag2el_561, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_Item_ExtIEs = { + "E-RAB-Item-ExtIEs", + "E-RAB-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_Item_ExtIEs_tags_561, + sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561) + /sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561[0]), /* 1 */ + asn_DEF_E_RAB_Item_ExtIEs_tags_561, /* Same as above */ + sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561) + /sizeof(asn_DEF_E_RAB_Item_ExtIEs_tags_561[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_Item_ExtIEs_561, + 3, /* Elements count */ + &asn_SPC_E_RAB_Item_ExtIEs_specs_561 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_568 = { + sizeof(struct E_RABUsageReport_Item_ExtIEs__extensionValue), + offsetof(struct E_RABUsageReport_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct E_RABUsageReport_Item_ExtIEs__extensionValue, present), + sizeof(((struct E_RABUsageReport_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_568 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_568 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_ExtIEs_565[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_566, memb_id_constraint_565 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_567, memb_criticality_constraint_565 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_568, + 0, + { 0, &asn_PER_memb_extensionValue_constr_568, memb_extensionValue_constraint_565 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABUsageReport_Item_ExtIEs_tag2el_565[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_ExtIEs_specs_565 = { + sizeof(struct E_RABUsageReport_Item_ExtIEs), + offsetof(struct E_RABUsageReport_Item_ExtIEs, _asn_ctx), + asn_MAP_E_RABUsageReport_Item_ExtIEs_tag2el_565, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item_ExtIEs = { + "E-RABUsageReport-Item-ExtIEs", + "E-RABUsageReport-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565, + sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565) + /sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565[0]), /* 1 */ + asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565) + /sizeof(asn_DEF_E_RABUsageReport_Item_ExtIEs_tags_565[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_Item_ExtIEs_565, + 3, /* Elements count */ + &asn_SPC_E_RABUsageReport_Item_ExtIEs_specs_565 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_572 = { + sizeof(struct ExpectedUEBehaviour_ExtIEs__extensionValue), + offsetof(struct ExpectedUEBehaviour_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ExpectedUEBehaviour_ExtIEs__extensionValue, present), + sizeof(((struct ExpectedUEBehaviour_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_572 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_572 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_ExtIEs_569[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEBehaviour_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_570, memb_id_constraint_569 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEBehaviour_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_571, memb_criticality_constraint_569 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ExpectedUEBehaviour_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_572, + 0, + { 0, &asn_PER_memb_extensionValue_constr_572, memb_extensionValue_constraint_569 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEBehaviour_ExtIEs_tag2el_569[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_569 = { + sizeof(struct ExpectedUEBehaviour_ExtIEs), + offsetof(struct ExpectedUEBehaviour_ExtIEs, _asn_ctx), + asn_MAP_ExpectedUEBehaviour_ExtIEs_tag2el_569, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour_ExtIEs = { + "ExpectedUEBehaviour-ExtIEs", + "ExpectedUEBehaviour-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569, + sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569) + /sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569[0]), /* 1 */ + asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569, /* Same as above */ + sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569) + /sizeof(asn_DEF_ExpectedUEBehaviour_ExtIEs_tags_569[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEBehaviour_ExtIEs_569, + 3, /* Elements count */ + &asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_569 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_576 = { + sizeof(struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue), + offsetof(struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue, present), + sizeof(((struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_576 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_576 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_573[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_574, memb_id_constraint_573 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_575, memb_criticality_constraint_573 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_576, + 0, + { 0, &asn_PER_memb_extensionValue_constr_576, memb_extensionValue_constraint_573 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExpectedUEActivityBehaviour_ExtIEs_tag2el_573[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_573 = { + sizeof(struct ExpectedUEActivityBehaviour_ExtIEs), + offsetof(struct ExpectedUEActivityBehaviour_ExtIEs, _asn_ctx), + asn_MAP_ExpectedUEActivityBehaviour_ExtIEs_tag2el_573, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs = { + "ExpectedUEActivityBehaviour-ExtIEs", + "ExpectedUEActivityBehaviour-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573, + sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573[0]), /* 1 */ + asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573, /* Same as above */ + sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573) + /sizeof(asn_DEF_ExpectedUEActivityBehaviour_ExtIEs_tags_573[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_573, + 3, /* Elements count */ + &asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_573 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_580 = { + sizeof(struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue), + offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue, present), + sizeof(((struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_580 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_580 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_577[] = { + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_578, memb_id_constraint_577 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_579, memb_criticality_constraint_577 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_580, + 0, + { 0, &asn_PER_memb_extensionValue_constr_580, memb_extensionValue_constraint_577 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ExtendedULInterferenceOverloadInfo_ExtIEs_tag2el_577[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_577 = { + sizeof(struct ExtendedULInterferenceOverloadInfo_ExtIEs), + offsetof(struct ExtendedULInterferenceOverloadInfo_ExtIEs, _asn_ctx), + asn_MAP_ExtendedULInterferenceOverloadInfo_ExtIEs_tag2el_577, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs = { + "ExtendedULInterferenceOverloadInfo-ExtIEs", + "ExtendedULInterferenceOverloadInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577, + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577[0]), /* 1 */ + asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577, /* Same as above */ + sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577) + /sizeof(asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs_tags_577[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_577, + 3, /* Elements count */ + &asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_577 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_584[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.EARFCNExtension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EARFCNExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EARFCNExtension" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.OffsetOfNbiotChannelNumberToEARFCN), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_OffsetOfNbiotChannelNumberToEARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "OffsetOfNbiotChannelNumberToEARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.NRS_NSSS_PowerOffset), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NRS_NSSS_PowerOffset, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRS-NSSS-PowerOffset" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs__extensionValue, choice.NSSS_NumOccasionDifferentPrecoder), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NSSS_NumOccasionDifferentPrecoder, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NSSS-NumOccasionDifferentPrecoder" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_584[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* EARFCNExtension */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 2 }, /* OffsetOfNbiotChannelNumberToEARFCN */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -1, 1 }, /* NRS-NSSS-PowerOffset */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, -2, 0 } /* NSSS-NumOccasionDifferentPrecoder */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_584 = { + sizeof(struct FDD_Info_ExtIEs__extensionValue), + offsetof(struct FDD_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FDD_Info_ExtIEs__extensionValue, present), + sizeof(((struct FDD_Info_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_584, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_584 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_584, + 4, /* Elements count */ + &asn_SPC_extensionValue_specs_584 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FDD_Info_ExtIEs_581[] = { + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_582, memb_id_constraint_581 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_FDD_Info_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_583, memb_criticality_constraint_581 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FDD_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_584, + select_FDD_Info_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_584, memb_extensionValue_constraint_581 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FDD_Info_ExtIEs_tags_581[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FDD_Info_ExtIEs_tag2el_581[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_ExtIEs_specs_581 = { + sizeof(struct FDD_Info_ExtIEs), + offsetof(struct FDD_Info_ExtIEs, _asn_ctx), + asn_MAP_FDD_Info_ExtIEs_tag2el_581, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FDD_Info_ExtIEs = { + "FDD-Info-ExtIEs", + "FDD-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FDD_Info_ExtIEs_tags_581, + sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581) + /sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581[0]), /* 1 */ + asn_DEF_FDD_Info_ExtIEs_tags_581, /* Same as above */ + sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581) + /sizeof(asn_DEF_FDD_Info_ExtIEs_tags_581[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FDD_Info_ExtIEs_581, + 3, /* Elements count */ + &asn_SPC_FDD_Info_ExtIEs_specs_581 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_588 = { + sizeof(struct ForbiddenTAs_Item_ExtIEs__extensionValue), + offsetof(struct ForbiddenTAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ForbiddenTAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct ForbiddenTAs_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_588 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_588 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_ExtIEs_585[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_586, memb_id_constraint_585 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_587, memb_criticality_constraint_585 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ForbiddenTAs_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_588, + 0, + { 0, &asn_PER_memb_extensionValue_constr_588, memb_extensionValue_constraint_585 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenTAs_Item_ExtIEs_tag2el_585[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_585 = { + sizeof(struct ForbiddenTAs_Item_ExtIEs), + offsetof(struct ForbiddenTAs_Item_ExtIEs, _asn_ctx), + asn_MAP_ForbiddenTAs_Item_ExtIEs_tag2el_585, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item_ExtIEs = { + "ForbiddenTAs-Item-ExtIEs", + "ForbiddenTAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585, + sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585) + /sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585[0]), /* 1 */ + asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585, /* Same as above */ + sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585) + /sizeof(asn_DEF_ForbiddenTAs_Item_ExtIEs_tags_585[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenTAs_Item_ExtIEs_585, + 3, /* Elements count */ + &asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_585 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_592 = { + sizeof(struct ForbiddenLAs_Item_ExtIEs__extensionValue), + offsetof(struct ForbiddenLAs_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ForbiddenLAs_Item_ExtIEs__extensionValue, present), + sizeof(((struct ForbiddenLAs_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_592 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_592 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_ExtIEs_589[] = { + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_590, memb_id_constraint_589 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_591, memb_criticality_constraint_589 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ForbiddenLAs_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_592, + 0, + { 0, &asn_PER_memb_extensionValue_constr_592, memb_extensionValue_constraint_589 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ForbiddenLAs_Item_ExtIEs_tag2el_589[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_589 = { + sizeof(struct ForbiddenLAs_Item_ExtIEs), + offsetof(struct ForbiddenLAs_Item_ExtIEs, _asn_ctx), + asn_MAP_ForbiddenLAs_Item_ExtIEs_tag2el_589, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item_ExtIEs = { + "ForbiddenLAs-Item-ExtIEs", + "ForbiddenLAs-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589, + sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589) + /sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589[0]), /* 1 */ + asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589, /* Same as above */ + sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589) + /sizeof(asn_DEF_ForbiddenLAs_Item_ExtIEs_tags_589[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ForbiddenLAs_Item_ExtIEs_589, + 3, /* Elements count */ + &asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_589 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_596 = { + sizeof(struct FreqBandNrItem_ExtIEs__extensionValue), + offsetof(struct FreqBandNrItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct FreqBandNrItem_ExtIEs__extensionValue, present), + sizeof(((struct FreqBandNrItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_596 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_596 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_FreqBandNrItem_ExtIEs_593[] = { + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_594, memb_id_constraint_593 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_595, memb_criticality_constraint_593 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct FreqBandNrItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_596, + 0, + { 0, &asn_PER_memb_extensionValue_constr_596, memb_extensionValue_constraint_593 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_FreqBandNrItem_ExtIEs_tags_593[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_FreqBandNrItem_ExtIEs_tag2el_593[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_ExtIEs_specs_593 = { + sizeof(struct FreqBandNrItem_ExtIEs), + offsetof(struct FreqBandNrItem_ExtIEs, _asn_ctx), + asn_MAP_FreqBandNrItem_ExtIEs_tag2el_593, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem_ExtIEs = { + "FreqBandNrItem-ExtIEs", + "FreqBandNrItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_FreqBandNrItem_ExtIEs_tags_593, + sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593) + /sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593[0]), /* 1 */ + asn_DEF_FreqBandNrItem_ExtIEs_tags_593, /* Same as above */ + sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593) + /sizeof(asn_DEF_FreqBandNrItem_ExtIEs_tags_593[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_FreqBandNrItem_ExtIEs_593, + 3, /* Elements count */ + &asn_SPC_FreqBandNrItem_ExtIEs_specs_593 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_600[] = { + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs__extensionValue, choice.ExtendedBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ExtendedBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_600[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* ExtendedBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_600 = { + sizeof(struct GBR_QosInformation_ExtIEs__extensionValue), + offsetof(struct GBR_QosInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GBR_QosInformation_ExtIEs__extensionValue, present), + sizeof(((struct GBR_QosInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_600, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_600 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_600, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_600 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GBR_QosInformation_ExtIEs_597[] = { + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_598, memb_id_constraint_597 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_GBR_QosInformation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_599, memb_criticality_constraint_597 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GBR_QosInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_600, + select_GBR_QosInformation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_600, memb_extensionValue_constraint_597 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GBR_QosInformation_ExtIEs_tags_597[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GBR_QosInformation_ExtIEs_tag2el_597[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_ExtIEs_specs_597 = { + sizeof(struct GBR_QosInformation_ExtIEs), + offsetof(struct GBR_QosInformation_ExtIEs, _asn_ctx), + asn_MAP_GBR_QosInformation_ExtIEs_tag2el_597, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation_ExtIEs = { + "GBR-QosInformation-ExtIEs", + "GBR-QosInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GBR_QosInformation_ExtIEs_tags_597, + sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597) + /sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597[0]), /* 1 */ + asn_DEF_GBR_QosInformation_ExtIEs_tags_597, /* Same as above */ + sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597) + /sizeof(asn_DEF_GBR_QosInformation_ExtIEs_tags_597[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GBR_QosInformation_ExtIEs_597, + 3, /* Elements count */ + &asn_SPC_GBR_QosInformation_ExtIEs_specs_597 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_604 = { + sizeof(struct GlobalENB_ID_ExtIEs__extensionValue), + offsetof(struct GlobalENB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GlobalENB_ID_ExtIEs__extensionValue, present), + sizeof(((struct GlobalENB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_604 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_604 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GlobalENB_ID_ExtIEs_601[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_602, memb_id_constraint_601 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_603, memb_criticality_constraint_601 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_604, + 0, + { 0, &asn_PER_memb_extensionValue_constr_604, memb_extensionValue_constraint_601 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_ExtIEs_tags_601[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_ExtIEs_tag2el_601[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_ExtIEs_specs_601 = { + sizeof(struct GlobalENB_ID_ExtIEs), + offsetof(struct GlobalENB_ID_ExtIEs, _asn_ctx), + asn_MAP_GlobalENB_ID_ExtIEs_tag2el_601, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID_ExtIEs = { + "GlobalENB-ID-ExtIEs", + "GlobalENB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GlobalENB_ID_ExtIEs_tags_601, + sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601) + /sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601[0]), /* 1 */ + asn_DEF_GlobalENB_ID_ExtIEs_tags_601, /* Same as above */ + sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601) + /sizeof(asn_DEF_GlobalENB_ID_ExtIEs_tags_601[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalENB_ID_ExtIEs_601, + 3, /* Elements count */ + &asn_SPC_GlobalENB_ID_ExtIEs_specs_601 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_608 = { + sizeof(struct GlobalGNB_ID_ExtIEs__extensionValue), + offsetof(struct GlobalGNB_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GlobalGNB_ID_ExtIEs__extensionValue, present), + sizeof(((struct GlobalGNB_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_608 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_608 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GlobalGNB_ID_ExtIEs_605[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_606, memb_id_constraint_605 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_607, memb_criticality_constraint_605 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GlobalGNB_ID_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_608, + 0, + { 0, &asn_PER_memb_extensionValue_constr_608, memb_extensionValue_constraint_605 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalGNB_ID_ExtIEs_tags_605[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalGNB_ID_ExtIEs_tag2el_605[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_ExtIEs_specs_605 = { + sizeof(struct GlobalGNB_ID_ExtIEs), + offsetof(struct GlobalGNB_ID_ExtIEs, _asn_ctx), + asn_MAP_GlobalGNB_ID_ExtIEs_tag2el_605, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID_ExtIEs = { + "GlobalGNB-ID-ExtIEs", + "GlobalGNB-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GlobalGNB_ID_ExtIEs_tags_605, + sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605) + /sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605[0]), /* 1 */ + asn_DEF_GlobalGNB_ID_ExtIEs_tags_605, /* Same as above */ + sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605) + /sizeof(asn_DEF_GlobalGNB_ID_ExtIEs_tags_605[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalGNB_ID_ExtIEs_605, + 3, /* Elements count */ + &asn_SPC_GlobalGNB_ID_ExtIEs_specs_605 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_612 = { + sizeof(struct GTPtunnelEndpoint_ExtIEs__extensionValue), + offsetof(struct GTPtunnelEndpoint_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GTPtunnelEndpoint_ExtIEs__extensionValue, present), + sizeof(((struct GTPtunnelEndpoint_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_612 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_612 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_ExtIEs_609[] = { + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_610, memb_id_constraint_609 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_611, memb_criticality_constraint_609 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GTPtunnelEndpoint_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_612, + 0, + { 0, &asn_PER_memb_extensionValue_constr_612, memb_extensionValue_constraint_609 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GTPtunnelEndpoint_ExtIEs_tag2el_609[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_ExtIEs_specs_609 = { + sizeof(struct GTPtunnelEndpoint_ExtIEs), + offsetof(struct GTPtunnelEndpoint_ExtIEs, _asn_ctx), + asn_MAP_GTPtunnelEndpoint_ExtIEs_tag2el_609, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint_ExtIEs = { + "GTPtunnelEndpoint-ExtIEs", + "GTPtunnelEndpoint-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609, + sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609) + /sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609[0]), /* 1 */ + asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609, /* Same as above */ + sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609) + /sizeof(asn_DEF_GTPtunnelEndpoint_ExtIEs_tags_609[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GTPtunnelEndpoint_ExtIEs_609, + 3, /* Elements count */ + &asn_SPC_GTPtunnelEndpoint_ExtIEs_specs_609 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_616 = { + sizeof(struct GU_Group_ID_ExtIEs__extensionValue), + offsetof(struct GU_Group_ID_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GU_Group_ID_ExtIEs__extensionValue, present), + sizeof(((struct GU_Group_ID_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_616 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_616 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GU_Group_ID_ExtIEs_613[] = { + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_614, memb_id_constraint_613 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_615, memb_criticality_constraint_613 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GU_Group_ID_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_616, + 0, + { 0, &asn_PER_memb_extensionValue_constr_616, memb_extensionValue_constraint_613 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GU_Group_ID_ExtIEs_tags_613[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GU_Group_ID_ExtIEs_tag2el_613[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_ExtIEs_specs_613 = { + sizeof(struct GU_Group_ID_ExtIEs), + offsetof(struct GU_Group_ID_ExtIEs, _asn_ctx), + asn_MAP_GU_Group_ID_ExtIEs_tag2el_613, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GU_Group_ID_ExtIEs = { + "GU-Group-ID-ExtIEs", + "GU-Group-ID-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GU_Group_ID_ExtIEs_tags_613, + sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613) + /sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613[0]), /* 1 */ + asn_DEF_GU_Group_ID_ExtIEs_tags_613, /* Same as above */ + sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613) + /sizeof(asn_DEF_GU_Group_ID_ExtIEs_tags_613[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GU_Group_ID_ExtIEs_613, + 3, /* Elements count */ + &asn_SPC_GU_Group_ID_ExtIEs_specs_613 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_620 = { + sizeof(struct GUMMEI_ExtIEs__extensionValue), + offsetof(struct GUMMEI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct GUMMEI_ExtIEs__extensionValue, present), + sizeof(((struct GUMMEI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_620 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_620 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GUMMEI_ExtIEs_617[] = { + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_618, memb_id_constraint_617 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GUMMEI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_619, memb_criticality_constraint_617 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GUMMEI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_620, + 0, + { 0, &asn_PER_memb_extensionValue_constr_620, memb_extensionValue_constraint_617 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_GUMMEI_ExtIEs_tags_617[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GUMMEI_ExtIEs_tag2el_617[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_ExtIEs_specs_617 = { + sizeof(struct GUMMEI_ExtIEs), + offsetof(struct GUMMEI_ExtIEs, _asn_ctx), + asn_MAP_GUMMEI_ExtIEs_tag2el_617, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GUMMEI_ExtIEs = { + "GUMMEI-ExtIEs", + "GUMMEI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_GUMMEI_ExtIEs_tags_617, + sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617) + /sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617[0]), /* 1 */ + asn_DEF_GUMMEI_ExtIEs_tags_617, /* Same as above */ + sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617) + /sizeof(asn_DEF_GUMMEI_ExtIEs_tags_617[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GUMMEI_ExtIEs_617, + 3, /* Elements count */ + &asn_SPC_GUMMEI_ExtIEs_specs_617 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_624[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, choice.NRrestrictioninEPSasSecondaryRAT), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NRrestrictioninEPSasSecondaryRAT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRrestrictioninEPSasSecondaryRAT" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, choice.CNTypeRestrictions), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CNTypeRestrictions, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CNTypeRestrictions" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, choice.NRrestrictionin5GS), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_NRrestrictionin5GS, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRrestrictionin5GS" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_624[] = { 0, 2, 1 }; +static const unsigned asn_MAP_extensionValue_from_canonical_624[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_624[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 1 }, /* NRrestrictioninEPSasSecondaryRAT */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -1, 0 }, /* NRrestrictionin5GS */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CNTypeRestrictions */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_624 = { + sizeof(struct HandoverRestrictionList_ExtIEs__extensionValue), + offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct HandoverRestrictionList_ExtIEs__extensionValue, present), + sizeof(((struct HandoverRestrictionList_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_624, + 3, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_624, + asn_MAP_extensionValue_from_canonical_624, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_624 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_624, + 3, /* Elements count */ + &asn_SPC_extensionValue_specs_624 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverRestrictionList_ExtIEs_621[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_622, memb_id_constraint_621 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_HandoverRestrictionList_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_623, memb_criticality_constraint_621 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverRestrictionList_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_624, + select_HandoverRestrictionList_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_624, memb_extensionValue_constraint_621 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRestrictionList_ExtIEs_tags_621[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRestrictionList_ExtIEs_tag2el_621[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_ExtIEs_specs_621 = { + sizeof(struct HandoverRestrictionList_ExtIEs), + offsetof(struct HandoverRestrictionList_ExtIEs, _asn_ctx), + asn_MAP_HandoverRestrictionList_ExtIEs_tag2el_621, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList_ExtIEs = { + "HandoverRestrictionList-ExtIEs", + "HandoverRestrictionList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRestrictionList_ExtIEs_tags_621, + sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621) + /sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621[0]), /* 1 */ + asn_DEF_HandoverRestrictionList_ExtIEs_tags_621, /* Same as above */ + sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621) + /sizeof(asn_DEF_HandoverRestrictionList_ExtIEs_tags_621[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRestrictionList_ExtIEs_621, + 3, /* Elements count */ + &asn_SPC_HandoverRestrictionList_ExtIEs_specs_621 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_628 = { + sizeof(struct HWLoadIndicator_ExtIEs__extensionValue), + offsetof(struct HWLoadIndicator_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct HWLoadIndicator_ExtIEs__extensionValue, present), + sizeof(((struct HWLoadIndicator_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_628 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_628 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HWLoadIndicator_ExtIEs_625[] = { + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_626, memb_id_constraint_625 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_627, memb_criticality_constraint_625 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HWLoadIndicator_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_628, + 0, + { 0, &asn_PER_memb_extensionValue_constr_628, memb_extensionValue_constraint_625 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_HWLoadIndicator_ExtIEs_tags_625[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HWLoadIndicator_ExtIEs_tag2el_625[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_ExtIEs_specs_625 = { + sizeof(struct HWLoadIndicator_ExtIEs), + offsetof(struct HWLoadIndicator_ExtIEs, _asn_ctx), + asn_MAP_HWLoadIndicator_ExtIEs_tag2el_625, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator_ExtIEs = { + "HWLoadIndicator-ExtIEs", + "HWLoadIndicator-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_HWLoadIndicator_ExtIEs_tags_625, + sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625) + /sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625[0]), /* 1 */ + asn_DEF_HWLoadIndicator_ExtIEs_tags_625, /* Same as above */ + sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625) + /sizeof(asn_DEF_HWLoadIndicator_ExtIEs_tags_625[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HWLoadIndicator_ExtIEs_625, + 3, /* Elements count */ + &asn_SPC_HWLoadIndicator_ExtIEs_specs_625 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_632[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, choice.Time_UE_StayedInCell_EnhancedGranularity), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Time_UE_StayedInCell_EnhancedGranularity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Time-UE-StayedInCell-EnhancedGranularity" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_632[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Time-UE-StayedInCell-EnhancedGranularity */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_632 = { + sizeof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue), + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue, present), + sizeof(((struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_632, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_632 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_632, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_632 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_629[] = { + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_630, memb_id_constraint_629 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_LastVisitedEUTRANCellInformation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_631, memb_criticality_constraint_629 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_632, + select_LastVisitedEUTRANCellInformation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_632, memb_extensionValue_constraint_629 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LastVisitedEUTRANCellInformation_ExtIEs_tag2el_629[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_629 = { + sizeof(struct LastVisitedEUTRANCellInformation_ExtIEs), + offsetof(struct LastVisitedEUTRANCellInformation_ExtIEs, _asn_ctx), + asn_MAP_LastVisitedEUTRANCellInformation_ExtIEs_tag2el_629, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs = { + "LastVisitedEUTRANCellInformation-ExtIEs", + "LastVisitedEUTRANCellInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629, + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629[0]), /* 1 */ + asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629, /* Same as above */ + sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629) + /sizeof(asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs_tags_629[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_629, + 3, /* Elements count */ + &asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_629 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_636 = { + sizeof(struct LocationReportingInformation_ExtIEs__extensionValue), + offsetof(struct LocationReportingInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct LocationReportingInformation_ExtIEs__extensionValue, present), + sizeof(((struct LocationReportingInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_636 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_636 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LocationReportingInformation_ExtIEs_633[] = { + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_634, memb_id_constraint_633 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_635, memb_criticality_constraint_633 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct LocationReportingInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_636, + 0, + { 0, &asn_PER_memb_extensionValue_constr_636, memb_extensionValue_constraint_633 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_LocationReportingInformation_ExtIEs_tags_633[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LocationReportingInformation_ExtIEs_tag2el_633[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_ExtIEs_specs_633 = { + sizeof(struct LocationReportingInformation_ExtIEs), + offsetof(struct LocationReportingInformation_ExtIEs, _asn_ctx), + asn_MAP_LocationReportingInformation_ExtIEs_tag2el_633, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation_ExtIEs = { + "LocationReportingInformation-ExtIEs", + "LocationReportingInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_LocationReportingInformation_ExtIEs_tags_633, + sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633) + /sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633[0]), /* 1 */ + asn_DEF_LocationReportingInformation_ExtIEs_tags_633, /* Same as above */ + sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633) + /sizeof(asn_DEF_LocationReportingInformation_ExtIEs_tags_633[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LocationReportingInformation_ExtIEs_633, + 3, /* Elements count */ + &asn_SPC_LocationReportingInformation_ExtIEs_specs_633 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_640 = { + sizeof(struct M1PeriodicReporting_ExtIEs__extensionValue), + offsetof(struct M1PeriodicReporting_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M1PeriodicReporting_ExtIEs__extensionValue, present), + sizeof(((struct M1PeriodicReporting_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_640 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_640 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M1PeriodicReporting_ExtIEs_637[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_638, memb_id_constraint_637 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_639, memb_criticality_constraint_637 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M1PeriodicReporting_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_640, + 0, + { 0, &asn_PER_memb_extensionValue_constr_640, memb_extensionValue_constraint_637 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M1PeriodicReporting_ExtIEs_tags_637[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1PeriodicReporting_ExtIEs_tag2el_637[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_ExtIEs_specs_637 = { + sizeof(struct M1PeriodicReporting_ExtIEs), + offsetof(struct M1PeriodicReporting_ExtIEs, _asn_ctx), + asn_MAP_M1PeriodicReporting_ExtIEs_tag2el_637, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting_ExtIEs = { + "M1PeriodicReporting-ExtIEs", + "M1PeriodicReporting-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M1PeriodicReporting_ExtIEs_tags_637, + sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637) + /sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637[0]), /* 1 */ + asn_DEF_M1PeriodicReporting_ExtIEs_tags_637, /* Same as above */ + sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637) + /sizeof(asn_DEF_M1PeriodicReporting_ExtIEs_tags_637[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1PeriodicReporting_ExtIEs_637, + 3, /* Elements count */ + &asn_SPC_M1PeriodicReporting_ExtIEs_specs_637 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_644 = { + sizeof(struct M1ThresholdEventA2_ExtIEs__extensionValue), + offsetof(struct M1ThresholdEventA2_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M1ThresholdEventA2_ExtIEs__extensionValue, present), + sizeof(((struct M1ThresholdEventA2_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_644 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_644 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_ExtIEs_641[] = { + { ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_642, memb_id_constraint_641 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_643, memb_criticality_constraint_641 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M1ThresholdEventA2_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_644, + 0, + { 0, &asn_PER_memb_extensionValue_constr_644, memb_extensionValue_constraint_641 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M1ThresholdEventA2_ExtIEs_tag2el_641[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_ExtIEs_specs_641 = { + sizeof(struct M1ThresholdEventA2_ExtIEs), + offsetof(struct M1ThresholdEventA2_ExtIEs, _asn_ctx), + asn_MAP_M1ThresholdEventA2_ExtIEs_tag2el_641, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2_ExtIEs = { + "M1ThresholdEventA2-ExtIEs", + "M1ThresholdEventA2-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641, + sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641) + /sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641[0]), /* 1 */ + asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641, /* Same as above */ + sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641) + /sizeof(asn_DEF_M1ThresholdEventA2_ExtIEs_tags_641[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M1ThresholdEventA2_ExtIEs_641, + 3, /* Elements count */ + &asn_SPC_M1ThresholdEventA2_ExtIEs_specs_641 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_648 = { + sizeof(struct M3Configuration_ExtIEs__extensionValue), + offsetof(struct M3Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M3Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M3Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_648 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_648 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M3Configuration_ExtIEs_645[] = { + { ATF_NOFLAGS, 0, offsetof(struct M3Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_646, memb_id_constraint_645 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M3Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_647, memb_criticality_constraint_645 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M3Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_648, + 0, + { 0, &asn_PER_memb_extensionValue_constr_648, memb_extensionValue_constraint_645 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M3Configuration_ExtIEs_tags_645[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M3Configuration_ExtIEs_tag2el_645[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_ExtIEs_specs_645 = { + sizeof(struct M3Configuration_ExtIEs), + offsetof(struct M3Configuration_ExtIEs, _asn_ctx), + asn_MAP_M3Configuration_ExtIEs_tag2el_645, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M3Configuration_ExtIEs = { + "M3Configuration-ExtIEs", + "M3Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M3Configuration_ExtIEs_tags_645, + sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645) + /sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645[0]), /* 1 */ + asn_DEF_M3Configuration_ExtIEs_tags_645, /* Same as above */ + sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645) + /sizeof(asn_DEF_M3Configuration_ExtIEs_tags_645[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M3Configuration_ExtIEs_645, + 3, /* Elements count */ + &asn_SPC_M3Configuration_ExtIEs_specs_645 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_652 = { + sizeof(struct M4Configuration_ExtIEs__extensionValue), + offsetof(struct M4Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M4Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M4Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_652 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_652 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M4Configuration_ExtIEs_649[] = { + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_650, memb_id_constraint_649 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M4Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_651, memb_criticality_constraint_649 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M4Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_652, + 0, + { 0, &asn_PER_memb_extensionValue_constr_652, memb_extensionValue_constraint_649 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M4Configuration_ExtIEs_tags_649[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M4Configuration_ExtIEs_tag2el_649[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_ExtIEs_specs_649 = { + sizeof(struct M4Configuration_ExtIEs), + offsetof(struct M4Configuration_ExtIEs, _asn_ctx), + asn_MAP_M4Configuration_ExtIEs_tag2el_649, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M4Configuration_ExtIEs = { + "M4Configuration-ExtIEs", + "M4Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M4Configuration_ExtIEs_tags_649, + sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649) + /sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649[0]), /* 1 */ + asn_DEF_M4Configuration_ExtIEs_tags_649, /* Same as above */ + sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649) + /sizeof(asn_DEF_M4Configuration_ExtIEs_tags_649[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M4Configuration_ExtIEs_649, + 3, /* Elements count */ + &asn_SPC_M4Configuration_ExtIEs_specs_649 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_656 = { + sizeof(struct M5Configuration_ExtIEs__extensionValue), + offsetof(struct M5Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M5Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M5Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_656 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_656 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M5Configuration_ExtIEs_653[] = { + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_654, memb_id_constraint_653 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M5Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_655, memb_criticality_constraint_653 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M5Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_656, + 0, + { 0, &asn_PER_memb_extensionValue_constr_656, memb_extensionValue_constraint_653 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M5Configuration_ExtIEs_tags_653[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M5Configuration_ExtIEs_tag2el_653[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_ExtIEs_specs_653 = { + sizeof(struct M5Configuration_ExtIEs), + offsetof(struct M5Configuration_ExtIEs, _asn_ctx), + asn_MAP_M5Configuration_ExtIEs_tag2el_653, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M5Configuration_ExtIEs = { + "M5Configuration-ExtIEs", + "M5Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M5Configuration_ExtIEs_tags_653, + sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653) + /sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653[0]), /* 1 */ + asn_DEF_M5Configuration_ExtIEs_tags_653, /* Same as above */ + sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653) + /sizeof(asn_DEF_M5Configuration_ExtIEs_tags_653[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M5Configuration_ExtIEs_653, + 3, /* Elements count */ + &asn_SPC_M5Configuration_ExtIEs_specs_653 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_660 = { + sizeof(struct M6Configuration_ExtIEs__extensionValue), + offsetof(struct M6Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M6Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M6Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_660 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_660 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M6Configuration_ExtIEs_657[] = { + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_658, memb_id_constraint_657 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M6Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_659, memb_criticality_constraint_657 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M6Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_660, + 0, + { 0, &asn_PER_memb_extensionValue_constr_660, memb_extensionValue_constraint_657 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M6Configuration_ExtIEs_tags_657[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M6Configuration_ExtIEs_tag2el_657[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_ExtIEs_specs_657 = { + sizeof(struct M6Configuration_ExtIEs), + offsetof(struct M6Configuration_ExtIEs, _asn_ctx), + asn_MAP_M6Configuration_ExtIEs_tag2el_657, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M6Configuration_ExtIEs = { + "M6Configuration-ExtIEs", + "M6Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M6Configuration_ExtIEs_tags_657, + sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657) + /sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657[0]), /* 1 */ + asn_DEF_M6Configuration_ExtIEs_tags_657, /* Same as above */ + sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657) + /sizeof(asn_DEF_M6Configuration_ExtIEs_tags_657[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M6Configuration_ExtIEs_657, + 3, /* Elements count */ + &asn_SPC_M6Configuration_ExtIEs_specs_657 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_664 = { + sizeof(struct M7Configuration_ExtIEs__extensionValue), + offsetof(struct M7Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct M7Configuration_ExtIEs__extensionValue, present), + sizeof(((struct M7Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_664 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_664 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_M7Configuration_ExtIEs_661[] = { + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_662, memb_id_constraint_661 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct M7Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_663, memb_criticality_constraint_661 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct M7Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_664, + 0, + { 0, &asn_PER_memb_extensionValue_constr_664, memb_extensionValue_constraint_661 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_M7Configuration_ExtIEs_tags_661[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_M7Configuration_ExtIEs_tag2el_661[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_ExtIEs_specs_661 = { + sizeof(struct M7Configuration_ExtIEs), + offsetof(struct M7Configuration_ExtIEs, _asn_ctx), + asn_MAP_M7Configuration_ExtIEs_tag2el_661, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_M7Configuration_ExtIEs = { + "M7Configuration-ExtIEs", + "M7Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_M7Configuration_ExtIEs_tags_661, + sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661) + /sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661[0]), /* 1 */ + asn_DEF_M7Configuration_ExtIEs_tags_661, /* Same as above */ + sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661) + /sizeof(asn_DEF_M7Configuration_ExtIEs_tags_661[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_M7Configuration_ExtIEs_661, + 3, /* Elements count */ + &asn_SPC_M7Configuration_ExtIEs_specs_661 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_668[] = { + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M3Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M3Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M3Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M4Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M4Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M4Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M5Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M5Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M5Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.MDT_Location_Info), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_MDT_Location_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDT-Location-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.MDTPLMNList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDTPLMNList" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M6Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M6Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M6Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.M7Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_M7Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "M7Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.BluetoothMeasurementConfiguration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_BluetoothMeasurementConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BluetoothMeasurementConfiguration" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs__extensionValue, choice.WLANMeasurementConfiguration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_WLANMeasurementConfiguration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "WLANMeasurementConfiguration" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_668[] = { 3, 0, 1, 2, 4, 5, 6, 7, 8 }; +static const unsigned asn_MAP_extensionValue_from_canonical_668[] = { 1, 2, 3, 0, 4, 5, 6, 7, 8 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_668[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 0 }, /* MDT-Location-Info */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 7 }, /* M3Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 6 }, /* M4Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 5 }, /* M5Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 4 }, /* MDTPLMNList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -4, 3 }, /* M6Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -5, 2 }, /* M7Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -6, 1 }, /* BluetoothMeasurementConfiguration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -7, 0 } /* WLANMeasurementConfiguration */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_668 = { + sizeof(struct MDT_Configuration_ExtIEs__extensionValue), + offsetof(struct MDT_Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MDT_Configuration_ExtIEs__extensionValue, present), + sizeof(((struct MDT_Configuration_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_668, + 9, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_668, + asn_MAP_extensionValue_from_canonical_668, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_668 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_668, + 9, /* Elements count */ + &asn_SPC_extensionValue_specs_668 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MDT_Configuration_ExtIEs_665[] = { + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_666, memb_id_constraint_665 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_MDT_Configuration_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_667, memb_criticality_constraint_665 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MDT_Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_668, + select_MDT_Configuration_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_668, memb_extensionValue_constraint_665 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MDT_Configuration_ExtIEs_tags_665[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MDT_Configuration_ExtIEs_tag2el_665[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_ExtIEs_specs_665 = { + sizeof(struct MDT_Configuration_ExtIEs), + offsetof(struct MDT_Configuration_ExtIEs, _asn_ctx), + asn_MAP_MDT_Configuration_ExtIEs_tag2el_665, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MDT_Configuration_ExtIEs = { + "MDT-Configuration-ExtIEs", + "MDT-Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MDT_Configuration_ExtIEs_tags_665, + sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665) + /sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665[0]), /* 1 */ + asn_DEF_MDT_Configuration_ExtIEs_tags_665, /* Same as above */ + sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665) + /sizeof(asn_DEF_MDT_Configuration_ExtIEs_tags_665[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MDT_Configuration_ExtIEs_665, + 3, /* Elements count */ + &asn_SPC_MDT_Configuration_ExtIEs_specs_665 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_672[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, choice.NRCGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRCGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, choice.MeNBCoordinationAssistanceInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_MeNBCoordinationAssistanceInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBCoordinationAssistanceInformation" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_672[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_672[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_672[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* MeNBCoordinationAssistanceInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* NRCGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_672 = { + sizeof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue), + offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, _asn_ctx), + offsetof(struct MeNBResourceCoordinationInformationExtIEs__extensionValue, present), + sizeof(((struct MeNBResourceCoordinationInformationExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_672, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_672, + asn_MAP_extensionValue_from_canonical_672, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_672 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_672, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_672 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformationExtIEs_669[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_670, memb_id_constraint_669 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_MeNBResourceCoordinationInformationExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_671, memb_criticality_constraint_669 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeNBResourceCoordinationInformationExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_672, + select_MeNBResourceCoordinationInformationExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_672, memb_extensionValue_constraint_669 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeNBResourceCoordinationInformationExtIEs_tag2el_669[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformationExtIEs_specs_669 = { + sizeof(struct MeNBResourceCoordinationInformationExtIEs), + offsetof(struct MeNBResourceCoordinationInformationExtIEs, _asn_ctx), + asn_MAP_MeNBResourceCoordinationInformationExtIEs_tag2el_669, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformationExtIEs = { + "MeNBResourceCoordinationInformationExtIEs", + "MeNBResourceCoordinationInformationExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669, + sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669) + /sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669[0]), /* 1 */ + asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669, /* Same as above */ + sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669) + /sizeof(asn_DEF_MeNBResourceCoordinationInformationExtIEs_tags_669[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeNBResourceCoordinationInformationExtIEs_669, + 3, /* Elements count */ + &asn_SPC_MeNBResourceCoordinationInformationExtIEs_specs_669 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_676 = { + sizeof(struct MBSFN_Subframe_Info_ExtIEs__extensionValue), + offsetof(struct MBSFN_Subframe_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct MBSFN_Subframe_Info_ExtIEs__extensionValue, present), + sizeof(((struct MBSFN_Subframe_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_676 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_676 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_ExtIEs_673[] = { + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_674, memb_id_constraint_673 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_675, memb_criticality_constraint_673 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MBSFN_Subframe_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_676, + 0, + { 0, &asn_PER_memb_extensionValue_constr_676, memb_extensionValue_constraint_673 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MBSFN_Subframe_Info_ExtIEs_tag2el_673[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_673 = { + sizeof(struct MBSFN_Subframe_Info_ExtIEs), + offsetof(struct MBSFN_Subframe_Info_ExtIEs, _asn_ctx), + asn_MAP_MBSFN_Subframe_Info_ExtIEs_tag2el_673, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info_ExtIEs = { + "MBSFN-Subframe-Info-ExtIEs", + "MBSFN-Subframe-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673, + sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673) + /sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673[0]), /* 1 */ + asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673, /* Same as above */ + sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673) + /sizeof(asn_DEF_MBSFN_Subframe_Info_ExtIEs_tags_673[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MBSFN_Subframe_Info_ExtIEs_673, + 3, /* Elements count */ + &asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_673 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_680 = { + sizeof(struct BandInfo_ExtIEs__extensionValue), + offsetof(struct BandInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct BandInfo_ExtIEs__extensionValue, present), + sizeof(((struct BandInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_680 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_680 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_BandInfo_ExtIEs_677[] = { + { ATF_NOFLAGS, 0, offsetof(struct BandInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_678, memb_id_constraint_677 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct BandInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_679, memb_criticality_constraint_677 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct BandInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_680, + 0, + { 0, &asn_PER_memb_extensionValue_constr_680, memb_extensionValue_constraint_677 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_BandInfo_ExtIEs_tags_677[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_BandInfo_ExtIEs_tag2el_677[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_BandInfo_ExtIEs_specs_677 = { + sizeof(struct BandInfo_ExtIEs), + offsetof(struct BandInfo_ExtIEs, _asn_ctx), + asn_MAP_BandInfo_ExtIEs_tag2el_677, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_BandInfo_ExtIEs = { + "BandInfo-ExtIEs", + "BandInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_BandInfo_ExtIEs_tags_677, + sizeof(asn_DEF_BandInfo_ExtIEs_tags_677) + /sizeof(asn_DEF_BandInfo_ExtIEs_tags_677[0]), /* 1 */ + asn_DEF_BandInfo_ExtIEs_tags_677, /* Same as above */ + sizeof(asn_DEF_BandInfo_ExtIEs_tags_677) + /sizeof(asn_DEF_BandInfo_ExtIEs_tags_677[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_BandInfo_ExtIEs_677, + 3, /* Elements count */ + &asn_SPC_BandInfo_ExtIEs_specs_677 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_684 = { + sizeof(struct SplitSRB_ExtIEs__extensionValue), + offsetof(struct SplitSRB_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SplitSRB_ExtIEs__extensionValue, present), + sizeof(((struct SplitSRB_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_684 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_684 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SplitSRB_ExtIEs_681[] = { + { ATF_NOFLAGS, 0, offsetof(struct SplitSRB_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_682, memb_id_constraint_681 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SplitSRB_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_683, memb_criticality_constraint_681 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SplitSRB_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_684, + 0, + { 0, &asn_PER_memb_extensionValue_constr_684, memb_extensionValue_constraint_681 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SplitSRB_ExtIEs_tags_681[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SplitSRB_ExtIEs_tag2el_681[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_ExtIEs_specs_681 = { + sizeof(struct SplitSRB_ExtIEs), + offsetof(struct SplitSRB_ExtIEs, _asn_ctx), + asn_MAP_SplitSRB_ExtIEs_tag2el_681, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SplitSRB_ExtIEs = { + "SplitSRB-ExtIEs", + "SplitSRB-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SplitSRB_ExtIEs_tags_681, + sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681) + /sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681[0]), /* 1 */ + asn_DEF_SplitSRB_ExtIEs_tags_681, /* Same as above */ + sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681) + /sizeof(asn_DEF_SplitSRB_ExtIEs_tags_681[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SplitSRB_ExtIEs_681, + 3, /* Elements count */ + &asn_SPC_SplitSRB_ExtIEs_specs_681 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_688 = { + sizeof(struct UENRMeasurement_ExtIEs__extensionValue), + offsetof(struct UENRMeasurement_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UENRMeasurement_ExtIEs__extensionValue, present), + sizeof(((struct UENRMeasurement_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_688 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_688 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UENRMeasurement_ExtIEs_685[] = { + { ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_686, memb_id_constraint_685 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_687, memb_criticality_constraint_685 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_688, + 0, + { 0, &asn_PER_memb_extensionValue_constr_688, memb_extensionValue_constraint_685 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UENRMeasurement_ExtIEs_tags_685[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UENRMeasurement_ExtIEs_tag2el_685[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_ExtIEs_specs_685 = { + sizeof(struct UENRMeasurement_ExtIEs), + offsetof(struct UENRMeasurement_ExtIEs, _asn_ctx), + asn_MAP_UENRMeasurement_ExtIEs_tag2el_685, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UENRMeasurement_ExtIEs = { + "UENRMeasurement-ExtIEs", + "UENRMeasurement-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UENRMeasurement_ExtIEs_tags_685, + sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685) + /sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685[0]), /* 1 */ + asn_DEF_UENRMeasurement_ExtIEs_tags_685, /* Same as above */ + sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685) + /sizeof(asn_DEF_UENRMeasurement_ExtIEs_tags_685[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UENRMeasurement_ExtIEs_685, + 3, /* Elements count */ + &asn_SPC_UENRMeasurement_ExtIEs_specs_685 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_692[] = { + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs__extensionValue, choice.TAC), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs__extensionValue, choice.EARFCNExtension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EARFCNExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EARFCNExtension" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_692[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_692[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_692[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* EARFCNExtension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 0, 0, 0 } /* TAC */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_692 = { + sizeof(struct Neighbour_Information_ExtIEs__extensionValue), + offsetof(struct Neighbour_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Neighbour_Information_ExtIEs__extensionValue, present), + sizeof(((struct Neighbour_Information_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_692, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_692, + asn_MAP_extensionValue_from_canonical_692, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_692 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_692, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_692 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Neighbour_Information_ExtIEs_689[] = { + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_690, memb_id_constraint_689 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_Neighbour_Information_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_691, memb_criticality_constraint_689 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Neighbour_Information_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_692, + select_Neighbour_Information_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_692, memb_extensionValue_constraint_689 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Neighbour_Information_ExtIEs_tags_689[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Neighbour_Information_ExtIEs_tag2el_689[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Neighbour_Information_ExtIEs_specs_689 = { + sizeof(struct Neighbour_Information_ExtIEs), + offsetof(struct Neighbour_Information_ExtIEs, _asn_ctx), + asn_MAP_Neighbour_Information_ExtIEs_tag2el_689, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Neighbour_Information_ExtIEs = { + "Neighbour-Information-ExtIEs", + "Neighbour-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Neighbour_Information_ExtIEs_tags_689, + sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689) + /sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689[0]), /* 1 */ + asn_DEF_Neighbour_Information_ExtIEs_tags_689, /* Same as above */ + sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689) + /sizeof(asn_DEF_Neighbour_Information_ExtIEs_tags_689[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Neighbour_Information_ExtIEs_689, + 3, /* Elements count */ + &asn_SPC_Neighbour_Information_ExtIEs_specs_689 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_696 = { + sizeof(struct NRFreqInfo_ExtIEs__extensionValue), + offsetof(struct NRFreqInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRFreqInfo_ExtIEs__extensionValue, present), + sizeof(((struct NRFreqInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_696 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_696 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRFreqInfo_ExtIEs_693[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_694, memb_id_constraint_693 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_695, memb_criticality_constraint_693 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRFreqInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_696, + 0, + { 0, &asn_PER_memb_extensionValue_constr_696, memb_extensionValue_constraint_693 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRFreqInfo_ExtIEs_tags_693[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRFreqInfo_ExtIEs_tag2el_693[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_ExtIEs_specs_693 = { + sizeof(struct NRFreqInfo_ExtIEs), + offsetof(struct NRFreqInfo_ExtIEs, _asn_ctx), + asn_MAP_NRFreqInfo_ExtIEs_tag2el_693, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRFreqInfo_ExtIEs = { + "NRFreqInfo-ExtIEs", + "NRFreqInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRFreqInfo_ExtIEs_tags_693, + sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693) + /sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693[0]), /* 1 */ + asn_DEF_NRFreqInfo_ExtIEs_tags_693, /* Same as above */ + sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693) + /sizeof(asn_DEF_NRFreqInfo_ExtIEs_tags_693[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRFreqInfo_ExtIEs_693, + 3, /* Elements count */ + &asn_SPC_NRFreqInfo_ExtIEs_specs_693 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_700 = { + sizeof(struct NRCGI_ExtIEs__extensionValue), + offsetof(struct NRCGI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRCGI_ExtIEs__extensionValue, present), + sizeof(((struct NRCGI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_700 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_700 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRCGI_ExtIEs_697[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRCGI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_698, memb_id_constraint_697 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRCGI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_699, memb_criticality_constraint_697 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRCGI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_700, + 0, + { 0, &asn_PER_memb_extensionValue_constr_700, memb_extensionValue_constraint_697 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRCGI_ExtIEs_tags_697[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRCGI_ExtIEs_tag2el_697[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRCGI_ExtIEs_specs_697 = { + sizeof(struct NRCGI_ExtIEs), + offsetof(struct NRCGI_ExtIEs, _asn_ctx), + asn_MAP_NRCGI_ExtIEs_tag2el_697, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRCGI_ExtIEs = { + "NRCGI-ExtIEs", + "NRCGI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRCGI_ExtIEs_tags_697, + sizeof(asn_DEF_NRCGI_ExtIEs_tags_697) + /sizeof(asn_DEF_NRCGI_ExtIEs_tags_697[0]), /* 1 */ + asn_DEF_NRCGI_ExtIEs_tags_697, /* Same as above */ + sizeof(asn_DEF_NRCGI_ExtIEs_tags_697) + /sizeof(asn_DEF_NRCGI_ExtIEs_tags_697[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRCGI_ExtIEs_697, + 3, /* Elements count */ + &asn_SPC_NRCGI_ExtIEs_specs_697 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_704 = { + sizeof(struct NR_TxBW_ExtIEs__extensionValue), + offsetof(struct NR_TxBW_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NR_TxBW_ExtIEs__extensionValue, present), + sizeof(((struct NR_TxBW_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_704 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_704 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NR_TxBW_ExtIEs_701[] = { + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_702, memb_id_constraint_701 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NR_TxBW_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_703, memb_criticality_constraint_701 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NR_TxBW_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_704, + 0, + { 0, &asn_PER_memb_extensionValue_constr_704, memb_extensionValue_constraint_701 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NR_TxBW_ExtIEs_tags_701[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NR_TxBW_ExtIEs_tag2el_701[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_ExtIEs_specs_701 = { + sizeof(struct NR_TxBW_ExtIEs), + offsetof(struct NR_TxBW_ExtIEs, _asn_ctx), + asn_MAP_NR_TxBW_ExtIEs_tag2el_701, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NR_TxBW_ExtIEs = { + "NR-TxBW-ExtIEs", + "NR-TxBW-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NR_TxBW_ExtIEs_tags_701, + sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701) + /sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701[0]), /* 1 */ + asn_DEF_NR_TxBW_ExtIEs_tags_701, /* Same as above */ + sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701) + /sizeof(asn_DEF_NR_TxBW_ExtIEs_tags_701[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NR_TxBW_ExtIEs_701, + 3, /* Elements count */ + &asn_SPC_NR_TxBW_ExtIEs_specs_701 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_708 = { + sizeof(struct NRUESecurityCapabilities_ExtIEs__extensionValue), + offsetof(struct NRUESecurityCapabilities_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct NRUESecurityCapabilities_ExtIEs__extensionValue, present), + sizeof(((struct NRUESecurityCapabilities_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_708 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_708 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_ExtIEs_705[] = { + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_706, memb_id_constraint_705 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_707, memb_criticality_constraint_705 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct NRUESecurityCapabilities_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_708, + 0, + { 0, &asn_PER_memb_extensionValue_constr_708, memb_extensionValue_constraint_705 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_NRUESecurityCapabilities_ExtIEs_tag2el_705[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_705 = { + sizeof(struct NRUESecurityCapabilities_ExtIEs), + offsetof(struct NRUESecurityCapabilities_ExtIEs, _asn_ctx), + asn_MAP_NRUESecurityCapabilities_ExtIEs_tag2el_705, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities_ExtIEs = { + "NRUESecurityCapabilities-ExtIEs", + "NRUESecurityCapabilities-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705, + sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705) + /sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705[0]), /* 1 */ + asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705, /* Same as above */ + sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705) + /sizeof(asn_DEF_NRUESecurityCapabilities_ExtIEs_tags_705[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_NRUESecurityCapabilities_ExtIEs_705, + 3, /* Elements count */ + &asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_705 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_712 = { + sizeof(struct PRACH_Configuration_ExtIEs__extensionValue), + offsetof(struct PRACH_Configuration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct PRACH_Configuration_ExtIEs__extensionValue, present), + sizeof(((struct PRACH_Configuration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_712 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_712 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PRACH_Configuration_ExtIEs_709[] = { + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_710, memb_id_constraint_709 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_711, memb_criticality_constraint_709 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct PRACH_Configuration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_712, + 0, + { 0, &asn_PER_memb_extensionValue_constr_712, memb_extensionValue_constraint_709 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_PRACH_Configuration_ExtIEs_tags_709[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PRACH_Configuration_ExtIEs_tag2el_709[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_ExtIEs_specs_709 = { + sizeof(struct PRACH_Configuration_ExtIEs), + offsetof(struct PRACH_Configuration_ExtIEs, _asn_ctx), + asn_MAP_PRACH_Configuration_ExtIEs_tag2el_709, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration_ExtIEs = { + "PRACH-Configuration-ExtIEs", + "PRACH-Configuration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_PRACH_Configuration_ExtIEs_tags_709, + sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709) + /sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709[0]), /* 1 */ + asn_DEF_PRACH_Configuration_ExtIEs_tags_709, /* Same as above */ + sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709) + /sizeof(asn_DEF_PRACH_Configuration_ExtIEs_tags_709[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PRACH_Configuration_ExtIEs_709, + 3, /* Elements count */ + &asn_SPC_PRACH_Configuration_ExtIEs_specs_709 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_716 = { + sizeof(struct PLMNAreaBasedQMC_ExtIEs__extensionValue), + offsetof(struct PLMNAreaBasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct PLMNAreaBasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct PLMNAreaBasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_716 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_716 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_ExtIEs_713[] = { + { ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_714, memb_id_constraint_713 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_715, memb_criticality_constraint_713 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct PLMNAreaBasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_716, + 0, + { 0, &asn_PER_memb_extensionValue_constr_716, memb_extensionValue_constraint_713 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_PLMNAreaBasedQMC_ExtIEs_tag2el_713[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_713 = { + sizeof(struct PLMNAreaBasedQMC_ExtIEs), + offsetof(struct PLMNAreaBasedQMC_ExtIEs, _asn_ctx), + asn_MAP_PLMNAreaBasedQMC_ExtIEs_tag2el_713, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC_ExtIEs = { + "PLMNAreaBasedQMC-ExtIEs", + "PLMNAreaBasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713, + sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713) + /sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713[0]), /* 1 */ + asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713, /* Same as above */ + sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713) + /sizeof(asn_DEF_PLMNAreaBasedQMC_ExtIEs_tags_713[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_PLMNAreaBasedQMC_ExtIEs_713, + 3, /* Elements count */ + &asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_713 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_720[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs__extensionValue, choice.ProSeUEtoNetworkRelaying), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ProSeUEtoNetworkRelaying, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeUEtoNetworkRelaying" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_720[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* ProSeUEtoNetworkRelaying */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_720 = { + sizeof(struct ProSeAuthorized_ExtIEs__extensionValue), + offsetof(struct ProSeAuthorized_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProSeAuthorized_ExtIEs__extensionValue, present), + sizeof(((struct ProSeAuthorized_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_720, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_720 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_720, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_720 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProSeAuthorized_ExtIEs_717[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_718, memb_id_constraint_717 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ProSeAuthorized_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_719, memb_criticality_constraint_717 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProSeAuthorized_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_720, + select_ProSeAuthorized_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_720, memb_extensionValue_constraint_717 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProSeAuthorized_ExtIEs_tags_717[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProSeAuthorized_ExtIEs_tag2el_717[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_ExtIEs_specs_717 = { + sizeof(struct ProSeAuthorized_ExtIEs), + offsetof(struct ProSeAuthorized_ExtIEs, _asn_ctx), + asn_MAP_ProSeAuthorized_ExtIEs_tag2el_717, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized_ExtIEs = { + "ProSeAuthorized-ExtIEs", + "ProSeAuthorized-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProSeAuthorized_ExtIEs_tags_717, + sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717) + /sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717[0]), /* 1 */ + asn_DEF_ProSeAuthorized_ExtIEs_tags_717, /* Same as above */ + sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717) + /sizeof(asn_DEF_ProSeAuthorized_ExtIEs_tags_717[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProSeAuthorized_ExtIEs_717, + 3, /* Elements count */ + &asn_SPC_ProSeAuthorized_ExtIEs_specs_717 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_724 = { + sizeof(struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue), + offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue, present), + sizeof(((struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_724 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_724 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_721[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_722, memb_id_constraint_721 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_723, memb_criticality_constraint_721 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_724, + 0, + { 0, &asn_PER_memb_extensionValue_constr_724, memb_extensionValue_constraint_721 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedEUTRAResourceIndication_ExtIEs_tag2el_721[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_721 = { + sizeof(struct ProtectedEUTRAResourceIndication_ExtIEs), + offsetof(struct ProtectedEUTRAResourceIndication_ExtIEs, _asn_ctx), + asn_MAP_ProtectedEUTRAResourceIndication_ExtIEs_tag2el_721, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs = { + "ProtectedEUTRAResourceIndication-ExtIEs", + "ProtectedEUTRAResourceIndication-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721, + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721[0]), /* 1 */ + asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721, /* Same as above */ + sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721) + /sizeof(asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs_tags_721[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_721, + 3, /* Elements count */ + &asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_721 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_728 = { + sizeof(struct ProtectedFootprintTimePattern_ExtIEs__extensionValue), + offsetof(struct ProtectedFootprintTimePattern_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProtectedFootprintTimePattern_ExtIEs__extensionValue, present), + sizeof(((struct ProtectedFootprintTimePattern_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_728 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_728 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_ExtIEs_725[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_726, memb_id_constraint_725 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_727, memb_criticality_constraint_725 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProtectedFootprintTimePattern_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_728, + 0, + { 0, &asn_PER_memb_extensionValue_constr_728, memb_extensionValue_constraint_725 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedFootprintTimePattern_ExtIEs_tag2el_725[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_725 = { + sizeof(struct ProtectedFootprintTimePattern_ExtIEs), + offsetof(struct ProtectedFootprintTimePattern_ExtIEs, _asn_ctx), + asn_MAP_ProtectedFootprintTimePattern_ExtIEs_tag2el_725, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs = { + "ProtectedFootprintTimePattern-ExtIEs", + "ProtectedFootprintTimePattern-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725, + sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725[0]), /* 1 */ + asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725, /* Same as above */ + sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725) + /sizeof(asn_DEF_ProtectedFootprintTimePattern_ExtIEs_tags_725[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedFootprintTimePattern_ExtIEs_725, + 3, /* Elements count */ + &asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_725 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_732 = { + sizeof(struct ProtectedResourceList_Item_ExtIEs__extensionValue), + offsetof(struct ProtectedResourceList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ProtectedResourceList_Item_ExtIEs__extensionValue, present), + sizeof(((struct ProtectedResourceList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_732 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_732 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_ExtIEs_729[] = { + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_730, memb_id_constraint_729 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_731, memb_criticality_constraint_729 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ProtectedResourceList_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_732, + 0, + { 0, &asn_PER_memb_extensionValue_constr_732, memb_extensionValue_constraint_729 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ProtectedResourceList_Item_ExtIEs_tag2el_729[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_729 = { + sizeof(struct ProtectedResourceList_Item_ExtIEs), + offsetof(struct ProtectedResourceList_Item_ExtIEs, _asn_ctx), + asn_MAP_ProtectedResourceList_Item_ExtIEs_tag2el_729, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item_ExtIEs = { + "ProtectedResourceList-Item-ExtIEs", + "ProtectedResourceList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729, + sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729) + /sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729[0]), /* 1 */ + asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729, /* Same as above */ + sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729) + /sizeof(asn_DEF_ProtectedResourceList_Item_ExtIEs_tags_729[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ProtectedResourceList_Item_ExtIEs_729, + 3, /* Elements count */ + &asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_729 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_736[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, choice.DL_scheduling_PDCCH_CCE_usage), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_DL_scheduling_PDCCH_CCE_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DL-scheduling-PDCCH-CCE-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, choice.UL_scheduling_PDCCH_CCE_usage), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UL_scheduling_PDCCH_CCE_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UL-scheduling-PDCCH-CCE-usage" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_736[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* DL-scheduling-PDCCH-CCE-usage */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 } /* UL-scheduling-PDCCH-CCE-usage */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_736 = { + sizeof(struct RadioResourceStatus_ExtIEs__extensionValue), + offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RadioResourceStatus_ExtIEs__extensionValue, present), + sizeof(((struct RadioResourceStatus_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_736, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_736 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_736, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_736 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RadioResourceStatus_ExtIEs_733[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_734, memb_id_constraint_733 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RadioResourceStatus_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_735, memb_criticality_constraint_733 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_736, + select_RadioResourceStatus_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_736, memb_extensionValue_constraint_733 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RadioResourceStatus_ExtIEs_tags_733[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadioResourceStatus_ExtIEs_tag2el_733[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_ExtIEs_specs_733 = { + sizeof(struct RadioResourceStatus_ExtIEs), + offsetof(struct RadioResourceStatus_ExtIEs, _asn_ctx), + asn_MAP_RadioResourceStatus_ExtIEs_tag2el_733, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus_ExtIEs = { + "RadioResourceStatus-ExtIEs", + "RadioResourceStatus-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RadioResourceStatus_ExtIEs_tags_733, + sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733) + /sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733[0]), /* 1 */ + asn_DEF_RadioResourceStatus_ExtIEs_tags_733, /* Same as above */ + sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733) + /sizeof(asn_DEF_RadioResourceStatus_ExtIEs_tags_733[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RadioResourceStatus_ExtIEs_733, + 3, /* Elements count */ + &asn_SPC_RadioResourceStatus_ExtIEs_specs_733 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_740[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue, choice.EnhancedRNTP), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EnhancedRNTP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EnhancedRNTP" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_740[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* EnhancedRNTP */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_740 = { + sizeof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue), + offsetof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RelativeNarrowbandTxPower_ExtIEs__extensionValue, present), + sizeof(((struct RelativeNarrowbandTxPower_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_740, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_740 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_740, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_740 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_ExtIEs_737[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_738, memb_id_constraint_737 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RelativeNarrowbandTxPower_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_739, memb_criticality_constraint_737 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_740, + select_RelativeNarrowbandTxPower_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_740, memb_extensionValue_constraint_737 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RelativeNarrowbandTxPower_ExtIEs_tag2el_737[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_737 = { + sizeof(struct RelativeNarrowbandTxPower_ExtIEs), + offsetof(struct RelativeNarrowbandTxPower_ExtIEs, _asn_ctx), + asn_MAP_RelativeNarrowbandTxPower_ExtIEs_tag2el_737, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs = { + "RelativeNarrowbandTxPower-ExtIEs", + "RelativeNarrowbandTxPower-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737, + sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737[0]), /* 1 */ + asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737, /* Same as above */ + sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_ExtIEs_tags_737[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RelativeNarrowbandTxPower_ExtIEs_737, + 3, /* Elements count */ + &asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_737 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_744 = { + sizeof(struct ReservedSubframePattern_ExtIEs__extensionValue), + offsetof(struct ReservedSubframePattern_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ReservedSubframePattern_ExtIEs__extensionValue, present), + sizeof(((struct ReservedSubframePattern_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_744 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_744 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ReservedSubframePattern_ExtIEs_741[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_742, memb_id_constraint_741 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_743, memb_criticality_constraint_741 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_744, + 0, + { 0, &asn_PER_memb_extensionValue_constr_744, memb_extensionValue_constraint_741 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReservedSubframePattern_ExtIEs_tags_741[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReservedSubframePattern_ExtIEs_tag2el_741[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_ExtIEs_specs_741 = { + sizeof(struct ReservedSubframePattern_ExtIEs), + offsetof(struct ReservedSubframePattern_ExtIEs, _asn_ctx), + asn_MAP_ReservedSubframePattern_ExtIEs_tag2el_741, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern_ExtIEs = { + "ReservedSubframePattern-ExtIEs", + "ReservedSubframePattern-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ReservedSubframePattern_ExtIEs_tags_741, + sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741) + /sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741[0]), /* 1 */ + asn_DEF_ReservedSubframePattern_ExtIEs_tags_741, /* Same as above */ + sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741) + /sizeof(asn_DEF_ReservedSubframePattern_ExtIEs_tags_741[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ReservedSubframePattern_ExtIEs_741, + 3, /* Elements count */ + &asn_SPC_ReservedSubframePattern_ExtIEs_specs_741 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_748 = { + sizeof(struct RLC_Status_ExtIEs__extensionValue), + offsetof(struct RLC_Status_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RLC_Status_ExtIEs__extensionValue, present), + sizeof(((struct RLC_Status_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_748 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_748 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RLC_Status_ExtIEs_745[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLC_Status_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_746, memb_id_constraint_745 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLC_Status_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_747, memb_criticality_constraint_745 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RLC_Status_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_748, + 0, + { 0, &asn_PER_memb_extensionValue_constr_748, memb_extensionValue_constraint_745 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RLC_Status_ExtIEs_tags_745[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLC_Status_ExtIEs_tag2el_745[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_ExtIEs_specs_745 = { + sizeof(struct RLC_Status_ExtIEs), + offsetof(struct RLC_Status_ExtIEs, _asn_ctx), + asn_MAP_RLC_Status_ExtIEs_tag2el_745, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLC_Status_ExtIEs = { + "RLC-Status-ExtIEs", + "RLC-Status-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RLC_Status_ExtIEs_tags_745, + sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745) + /sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745[0]), /* 1 */ + asn_DEF_RLC_Status_ExtIEs_tags_745, /* Same as above */ + sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745) + /sizeof(asn_DEF_RLC_Status_ExtIEs_tags_745[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLC_Status_ExtIEs_745, + 3, /* Elements count */ + &asn_SPC_RLC_Status_ExtIEs_specs_745 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_752 = { + sizeof(struct RSRPMeasurementResult_ExtIEs__extensionValue), + offsetof(struct RSRPMeasurementResult_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RSRPMeasurementResult_ExtIEs__extensionValue, present), + sizeof(((struct RSRPMeasurementResult_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_752 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_752 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_ExtIEs_749[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_750, memb_id_constraint_749 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_751, memb_criticality_constraint_749 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_752, + 0, + { 0, &asn_PER_memb_extensionValue_constr_752, memb_extensionValue_constraint_749 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RSRPMeasurementResult_ExtIEs_tag2el_749[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RSRPMeasurementResult_ExtIEs_specs_749 = { + sizeof(struct RSRPMeasurementResult_ExtIEs), + offsetof(struct RSRPMeasurementResult_ExtIEs, _asn_ctx), + asn_MAP_RSRPMeasurementResult_ExtIEs_tag2el_749, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult_ExtIEs = { + "RSRPMeasurementResult-ExtIEs", + "RSRPMeasurementResult-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749, + sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749) + /sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749[0]), /* 1 */ + asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749, /* Same as above */ + sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749) + /sizeof(asn_DEF_RSRPMeasurementResult_ExtIEs_tags_749[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RSRPMeasurementResult_ExtIEs_749, + 3, /* Elements count */ + &asn_SPC_RSRPMeasurementResult_ExtIEs_specs_749 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_756[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs__extensionValue, choice.UEID), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_UEID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_756[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 } /* UEID */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_756 = { + sizeof(struct RSRPMRList_ExtIEs__extensionValue), + offsetof(struct RSRPMRList_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct RSRPMRList_ExtIEs__extensionValue, present), + sizeof(((struct RSRPMRList_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_756, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_756 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_756, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_756 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMRList_ExtIEs_753[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_754, memb_id_constraint_753 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_RSRPMRList_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_755, memb_criticality_constraint_753 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RSRPMRList_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_756, + select_RSRPMRList_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_756, memb_extensionValue_constraint_753 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMRList_ExtIEs_tags_753[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RSRPMRList_ExtIEs_tag2el_753[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RSRPMRList_ExtIEs_specs_753 = { + sizeof(struct RSRPMRList_ExtIEs), + offsetof(struct RSRPMRList_ExtIEs, _asn_ctx), + asn_MAP_RSRPMRList_ExtIEs_tag2el_753, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMRList_ExtIEs = { + "RSRPMRList-ExtIEs", + "RSRPMRList-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_RSRPMRList_ExtIEs_tags_753, + sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753) + /sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753[0]), /* 1 */ + asn_DEF_RSRPMRList_ExtIEs_tags_753, /* Same as above */ + sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753) + /sizeof(asn_DEF_RSRPMRList_ExtIEs_tags_753[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RSRPMRList_ExtIEs_753, + 3, /* Elements count */ + &asn_SPC_RSRPMRList_ExtIEs_specs_753 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_760 = { + sizeof(struct S1TNLLoadIndicator_ExtIEs__extensionValue), + offsetof(struct S1TNLLoadIndicator_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct S1TNLLoadIndicator_ExtIEs__extensionValue, present), + sizeof(((struct S1TNLLoadIndicator_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_760 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_760 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_ExtIEs_757[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_758, memb_id_constraint_757 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_759, memb_criticality_constraint_757 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_760, + 0, + { 0, &asn_PER_memb_extensionValue_constr_760, memb_extensionValue_constraint_757 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1TNLLoadIndicator_ExtIEs_tag2el_757[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_757 = { + sizeof(struct S1TNLLoadIndicator_ExtIEs), + offsetof(struct S1TNLLoadIndicator_ExtIEs, _asn_ctx), + asn_MAP_S1TNLLoadIndicator_ExtIEs_tag2el_757, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator_ExtIEs = { + "S1TNLLoadIndicator-ExtIEs", + "S1TNLLoadIndicator-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757, + sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757) + /sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757[0]), /* 1 */ + asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757, /* Same as above */ + sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757) + /sizeof(asn_DEF_S1TNLLoadIndicator_ExtIEs_tags_757[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1TNLLoadIndicator_ExtIEs_757, + 3, /* Elements count */ + &asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_757 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_764 = { + sizeof(struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue), + offsetof(struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue, present), + sizeof(((struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_764 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_764 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_ExtIEs_761[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_762, memb_id_constraint_761 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_763, memb_criticality_constraint_761 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_764, + 0, + { 0, &asn_PER_memb_extensionValue_constr_764, memb_extensionValue_constraint_761 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATUsageReport_Item_ExtIEs_tag2el_761[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_ExtIEs_specs_761 = { + sizeof(struct SecondaryRATUsageReport_Item_ExtIEs), + offsetof(struct SecondaryRATUsageReport_Item_ExtIEs, _asn_ctx), + asn_MAP_SecondaryRATUsageReport_Item_ExtIEs_tag2el_761, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item_ExtIEs = { + "SecondaryRATUsageReport-Item-ExtIEs", + "SecondaryRATUsageReport-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761, + sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_ExtIEs_tags_761[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_Item_ExtIEs_761, + 3, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_Item_ExtIEs_specs_761 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_768 = { + sizeof(struct ServedCell_ExtIEs__extensionValue), + offsetof(struct ServedCell_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCell_ExtIEs__extensionValue, present), + sizeof(((struct ServedCell_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_768 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_768 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCell_ExtIEs_765[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_766, memb_id_constraint_765 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_767, memb_criticality_constraint_765 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCell_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_768, + 0, + { 0, &asn_PER_memb_extensionValue_constr_768, memb_extensionValue_constraint_765 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCell_ExtIEs_tags_765[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCell_ExtIEs_tag2el_765[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCell_ExtIEs_specs_765 = { + sizeof(struct ServedCell_ExtIEs), + offsetof(struct ServedCell_ExtIEs, _asn_ctx), + asn_MAP_ServedCell_ExtIEs_tag2el_765, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCell_ExtIEs = { + "ServedCell-ExtIEs", + "ServedCell-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCell_ExtIEs_tags_765, + sizeof(asn_DEF_ServedCell_ExtIEs_tags_765) + /sizeof(asn_DEF_ServedCell_ExtIEs_tags_765[0]), /* 1 */ + asn_DEF_ServedCell_ExtIEs_tags_765, /* Same as above */ + sizeof(asn_DEF_ServedCell_ExtIEs_tags_765) + /sizeof(asn_DEF_ServedCell_ExtIEs_tags_765[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCell_ExtIEs_765, + 3, /* Elements count */ + &asn_SPC_ServedCell_ExtIEs_specs_765 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_772[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.Number_of_Antennaports), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Number_of_Antennaports, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Number-of-Antennaports" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.PRACH_Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_PRACH_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PRACH-Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.MBSFN_Subframe_Infolist), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBSFN_Subframe_Infolist, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MBSFN-Subframe-Infolist" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.CSG_Id), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CSG_Id, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSG-Id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.MBMS_Service_Area_Identity_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MBMS_Service_Area_Identity_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MBMS-Service-Area-Identity-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.MultibandInfoList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MultibandInfoList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MultibandInfoList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.FreqBandIndicatorPriority), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_FreqBandIndicatorPriority, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "FreqBandIndicatorPriority" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.BandwidthReducedSI), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_BandwidthReducedSI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "BandwidthReducedSI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs__extensionValue, choice.ProtectedEUTRAResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtectedEUTRAResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProtectedEUTRAResourceIndication" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_772[] = { 3, 0, 6, 7, 1, 2, 4, 5, 8 }; +static const unsigned asn_MAP_extensionValue_from_canonical_772[] = { 1, 4, 5, 0, 6, 7, 2, 3, 8 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_772[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 0 }, /* CSG-Id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 2 }, /* Number-of-Antennaports */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -1, 1 }, /* FreqBandIndicatorPriority */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, -2, 0 }, /* BandwidthReducedSI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 4 }, /* PRACH-Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 3 }, /* MBSFN-Subframe-Infolist */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 2 }, /* MBMS-Service-Area-Identity-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 1 }, /* MultibandInfoList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -4, 0 } /* ProtectedEUTRAResourceIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_772 = { + sizeof(struct ServedCell_Information_ExtIEs__extensionValue), + offsetof(struct ServedCell_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ServedCell_Information_ExtIEs__extensionValue, present), + sizeof(((struct ServedCell_Information_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_772, + 9, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_772, + asn_MAP_extensionValue_from_canonical_772, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_772 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_772, + 9, /* Elements count */ + &asn_SPC_extensionValue_specs_772 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCell_Information_ExtIEs_769[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_770, memb_id_constraint_769 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_ServedCell_Information_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_771, memb_criticality_constraint_769 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_772, + select_ServedCell_Information_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_772, memb_extensionValue_constraint_769 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCell_Information_ExtIEs_tags_769[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCell_Information_ExtIEs_tag2el_769[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_ExtIEs_specs_769 = { + sizeof(struct ServedCell_Information_ExtIEs), + offsetof(struct ServedCell_Information_ExtIEs, _asn_ctx), + asn_MAP_ServedCell_Information_ExtIEs_tag2el_769, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCell_Information_ExtIEs = { + "ServedCell-Information-ExtIEs", + "ServedCell-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ServedCell_Information_ExtIEs_tags_769, + sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769) + /sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769[0]), /* 1 */ + asn_DEF_ServedCell_Information_ExtIEs_tags_769, /* Same as above */ + sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769) + /sizeof(asn_DEF_ServedCell_Information_ExtIEs_tags_769[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCell_Information_ExtIEs_769, + 3, /* Elements count */ + &asn_SPC_ServedCell_Information_ExtIEs_specs_769 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_776[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, choice.SgNBCoordinationAssistanceInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SgNBCoordinationAssistanceInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBCoordinationAssistanceInformation" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_776[] = { 1, 0 }; +static const unsigned asn_MAP_extensionValue_from_canonical_776[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_776[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* SgNBCoordinationAssistanceInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ECGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_776 = { + sizeof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue), + offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, _asn_ctx), + offsetof(struct SgNBResourceCoordinationInformationExtIEs__extensionValue, present), + sizeof(((struct SgNBResourceCoordinationInformationExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_776, + 2, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_776, + asn_MAP_extensionValue_from_canonical_776, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_776 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_776, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_776 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformationExtIEs_773[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_774, memb_id_constraint_773 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_SgNBResourceCoordinationInformationExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_775, memb_criticality_constraint_773 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformationExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_776, + select_SgNBResourceCoordinationInformationExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_776, memb_extensionValue_constraint_773 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBResourceCoordinationInformationExtIEs_tag2el_773[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformationExtIEs_specs_773 = { + sizeof(struct SgNBResourceCoordinationInformationExtIEs), + offsetof(struct SgNBResourceCoordinationInformationExtIEs, _asn_ctx), + asn_MAP_SgNBResourceCoordinationInformationExtIEs_tag2el_773, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformationExtIEs = { + "SgNBResourceCoordinationInformationExtIEs", + "SgNBResourceCoordinationInformationExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773, + sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773) + /sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773[0]), /* 1 */ + asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773, /* Same as above */ + sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773) + /sizeof(asn_DEF_SgNBResourceCoordinationInformationExtIEs_tags_773[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBResourceCoordinationInformationExtIEs_773, + 3, /* Elements count */ + &asn_SPC_SgNBResourceCoordinationInformationExtIEs_specs_773 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_780 = { + sizeof(struct SpecialSubframe_Info_ExtIEs__extensionValue), + offsetof(struct SpecialSubframe_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SpecialSubframe_Info_ExtIEs__extensionValue, present), + sizeof(((struct SpecialSubframe_Info_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_780 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_780 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_ExtIEs_777[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_778, memb_id_constraint_777 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_779, memb_criticality_constraint_777 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_780, + 0, + { 0, &asn_PER_memb_extensionValue_constr_780, memb_extensionValue_constraint_777 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpecialSubframe_Info_ExtIEs_tag2el_777[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_ExtIEs_specs_777 = { + sizeof(struct SpecialSubframe_Info_ExtIEs), + offsetof(struct SpecialSubframe_Info_ExtIEs, _asn_ctx), + asn_MAP_SpecialSubframe_Info_ExtIEs_tag2el_777, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info_ExtIEs = { + "SpecialSubframe-Info-ExtIEs", + "SpecialSubframe-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777, + sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777) + /sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777[0]), /* 1 */ + asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777, /* Same as above */ + sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777) + /sizeof(asn_DEF_SpecialSubframe_Info_ExtIEs_tags_777[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SpecialSubframe_Info_ExtIEs_777, + 3, /* Elements count */ + &asn_SPC_SpecialSubframe_Info_ExtIEs_specs_777 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_784 = { + sizeof(struct SubbandCQI_ExtIEs__extensionValue), + offsetof(struct SubbandCQI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SubbandCQI_ExtIEs__extensionValue, present), + sizeof(((struct SubbandCQI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_784 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_784 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SubbandCQI_ExtIEs_781[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_782, memb_id_constraint_781 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_783, memb_criticality_constraint_781 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SubbandCQI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_784, + 0, + { 0, &asn_PER_memb_extensionValue_constr_784, memb_extensionValue_constraint_781 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SubbandCQI_ExtIEs_tags_781[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQI_ExtIEs_tag2el_781[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_ExtIEs_specs_781 = { + sizeof(struct SubbandCQI_ExtIEs), + offsetof(struct SubbandCQI_ExtIEs, _asn_ctx), + asn_MAP_SubbandCQI_ExtIEs_tag2el_781, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQI_ExtIEs = { + "SubbandCQI-ExtIEs", + "SubbandCQI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQI_ExtIEs_tags_781, + sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781) + /sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781[0]), /* 1 */ + asn_DEF_SubbandCQI_ExtIEs_tags_781, /* Same as above */ + sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781) + /sizeof(asn_DEF_SubbandCQI_ExtIEs_tags_781[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQI_ExtIEs_781, + 3, /* Elements count */ + &asn_SPC_SubbandCQI_ExtIEs_specs_781 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_788 = { + sizeof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue), + offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue, present), + sizeof(((struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_788 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_788 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_785[] = { + { ATF_NOFLAGS, 0, offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_786, memb_id_constraint_785 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_787, memb_criticality_constraint_785 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_788, + 0, + { 0, &asn_PER_memb_extensionValue_constr_788, memb_extensionValue_constraint_785 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tag2el_785[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_785 = { + sizeof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs), + offsetof(struct Subscription_Based_UE_DifferentiationInfo_ExtIEs, _asn_ctx), + asn_MAP_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tag2el_785, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs = { + "Subscription-Based-UE-DifferentiationInfo-ExtIEs", + "Subscription-Based-UE-DifferentiationInfo-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785, + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785[0]), /* 1 */ + asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785, /* Same as above */ + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs_tags_785[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_785, + 3, /* Elements count */ + &asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_785 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_792 = { + sizeof(struct ScheduledCommunicationTime_ExtIEs__extensionValue), + offsetof(struct ScheduledCommunicationTime_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ScheduledCommunicationTime_ExtIEs__extensionValue, present), + sizeof(((struct ScheduledCommunicationTime_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_792 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_792 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_ExtIEs_789[] = { + { ATF_NOFLAGS, 0, offsetof(struct ScheduledCommunicationTime_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_790, memb_id_constraint_789 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ScheduledCommunicationTime_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_791, memb_criticality_constraint_789 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ScheduledCommunicationTime_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_792, + 0, + { 0, &asn_PER_memb_extensionValue_constr_792, memb_extensionValue_constraint_789 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ScheduledCommunicationTime_ExtIEs_tag2el_789[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_789 = { + sizeof(struct ScheduledCommunicationTime_ExtIEs), + offsetof(struct ScheduledCommunicationTime_ExtIEs, _asn_ctx), + asn_MAP_ScheduledCommunicationTime_ExtIEs_tag2el_789, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime_ExtIEs = { + "ScheduledCommunicationTime-ExtIEs", + "ScheduledCommunicationTime-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789, + sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789) + /sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789[0]), /* 1 */ + asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789, /* Same as above */ + sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789) + /sizeof(asn_DEF_ScheduledCommunicationTime_ExtIEs_tags_789[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ScheduledCommunicationTime_ExtIEs_789, + 3, /* Elements count */ + &asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_789 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_796 = { + sizeof(struct SubbandCQIItem_ExtIEs__extensionValue), + offsetof(struct SubbandCQIItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SubbandCQIItem_ExtIEs__extensionValue, present), + sizeof(((struct SubbandCQIItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_796 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_796 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SubbandCQIItem_ExtIEs_793[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_794, memb_id_constraint_793 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_795, memb_criticality_constraint_793 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_796, + 0, + { 0, &asn_PER_memb_extensionValue_constr_796, memb_extensionValue_constraint_793 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SubbandCQIItem_ExtIEs_tags_793[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQIItem_ExtIEs_tag2el_793[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_ExtIEs_specs_793 = { + sizeof(struct SubbandCQIItem_ExtIEs), + offsetof(struct SubbandCQIItem_ExtIEs, _asn_ctx), + asn_MAP_SubbandCQIItem_ExtIEs_tag2el_793, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem_ExtIEs = { + "SubbandCQIItem-ExtIEs", + "SubbandCQIItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQIItem_ExtIEs_tags_793, + sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793) + /sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793[0]), /* 1 */ + asn_DEF_SubbandCQIItem_ExtIEs_tags_793, /* Same as above */ + sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793) + /sizeof(asn_DEF_SubbandCQIItem_ExtIEs_tags_793[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQIItem_ExtIEs_793, + 3, /* Elements count */ + &asn_SPC_SubbandCQIItem_ExtIEs_specs_793 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_800 = { + sizeof(struct SULInformation_ExtIEs__extensionValue), + offsetof(struct SULInformation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SULInformation_ExtIEs__extensionValue, present), + sizeof(((struct SULInformation_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_800 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_800 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SULInformation_ExtIEs_797[] = { + { ATF_NOFLAGS, 0, offsetof(struct SULInformation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_798, memb_id_constraint_797 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SULInformation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_799, memb_criticality_constraint_797 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SULInformation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_800, + 0, + { 0, &asn_PER_memb_extensionValue_constr_800, memb_extensionValue_constraint_797 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SULInformation_ExtIEs_tags_797[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SULInformation_ExtIEs_tag2el_797[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SULInformation_ExtIEs_specs_797 = { + sizeof(struct SULInformation_ExtIEs), + offsetof(struct SULInformation_ExtIEs, _asn_ctx), + asn_MAP_SULInformation_ExtIEs_tag2el_797, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SULInformation_ExtIEs = { + "SULInformation-ExtIEs", + "SULInformation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SULInformation_ExtIEs_tags_797, + sizeof(asn_DEF_SULInformation_ExtIEs_tags_797) + /sizeof(asn_DEF_SULInformation_ExtIEs_tags_797[0]), /* 1 */ + asn_DEF_SULInformation_ExtIEs_tags_797, /* Same as above */ + sizeof(asn_DEF_SULInformation_ExtIEs_tags_797) + /sizeof(asn_DEF_SULInformation_ExtIEs_tags_797[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SULInformation_ExtIEs_797, + 3, /* Elements count */ + &asn_SPC_SULInformation_ExtIEs_specs_797 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_804 = { + sizeof(struct SupportedSULFreqBandItem_ExtIEs__extensionValue), + offsetof(struct SupportedSULFreqBandItem_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct SupportedSULFreqBandItem_ExtIEs__extensionValue, present), + sizeof(((struct SupportedSULFreqBandItem_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_804 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_804 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_ExtIEs_801[] = { + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_802, memb_id_constraint_801 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_803, memb_criticality_constraint_801 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_804, + 0, + { 0, &asn_PER_memb_extensionValue_constr_804, memb_extensionValue_constraint_801 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SupportedSULFreqBandItem_ExtIEs_tag2el_801[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_801 = { + sizeof(struct SupportedSULFreqBandItem_ExtIEs), + offsetof(struct SupportedSULFreqBandItem_ExtIEs, _asn_ctx), + asn_MAP_SupportedSULFreqBandItem_ExtIEs_tag2el_801, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem_ExtIEs = { + "SupportedSULFreqBandItem-ExtIEs", + "SupportedSULFreqBandItem-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801, + sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801) + /sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801[0]), /* 1 */ + asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801, /* Same as above */ + sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801) + /sizeof(asn_DEF_SupportedSULFreqBandItem_ExtIEs_tags_801[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SupportedSULFreqBandItem_ExtIEs_801, + 3, /* Elements count */ + &asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_801 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_808 = { + sizeof(struct TABasedMDT_ExtIEs__extensionValue), + offsetof(struct TABasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TABasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct TABasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_808 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_808 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TABasedMDT_ExtIEs_805[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_806, memb_id_constraint_805 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TABasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_807, memb_criticality_constraint_805 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TABasedMDT_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_808, + 0, + { 0, &asn_PER_memb_extensionValue_constr_808, memb_extensionValue_constraint_805 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TABasedMDT_ExtIEs_tags_805[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedMDT_ExtIEs_tag2el_805[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_ExtIEs_specs_805 = { + sizeof(struct TABasedMDT_ExtIEs), + offsetof(struct TABasedMDT_ExtIEs, _asn_ctx), + asn_MAP_TABasedMDT_ExtIEs_tag2el_805, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedMDT_ExtIEs = { + "TABasedMDT-ExtIEs", + "TABasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TABasedMDT_ExtIEs_tags_805, + sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805) + /sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805[0]), /* 1 */ + asn_DEF_TABasedMDT_ExtIEs_tags_805, /* Same as above */ + sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805) + /sizeof(asn_DEF_TABasedMDT_ExtIEs_tags_805[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedMDT_ExtIEs_805, + 3, /* Elements count */ + &asn_SPC_TABasedMDT_ExtIEs_specs_805 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_812 = { + sizeof(struct TAIBasedMDT_ExtIEs__extensionValue), + offsetof(struct TAIBasedMDT_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TAIBasedMDT_ExtIEs__extensionValue, present), + sizeof(((struct TAIBasedMDT_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_812 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_812 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TAIBasedMDT_ExtIEs_809[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_810, memb_id_constraint_809 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_811, memb_criticality_constraint_809 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_812, + 0, + { 0, &asn_PER_memb_extensionValue_constr_812, memb_extensionValue_constraint_809 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIBasedMDT_ExtIEs_tags_809[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedMDT_ExtIEs_tag2el_809[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_ExtIEs_specs_809 = { + sizeof(struct TAIBasedMDT_ExtIEs), + offsetof(struct TAIBasedMDT_ExtIEs, _asn_ctx), + asn_MAP_TAIBasedMDT_ExtIEs_tag2el_809, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT_ExtIEs = { + "TAIBasedMDT-ExtIEs", + "TAIBasedMDT-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedMDT_ExtIEs_tags_809, + sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809) + /sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809[0]), /* 1 */ + asn_DEF_TAIBasedMDT_ExtIEs_tags_809, /* Same as above */ + sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809) + /sizeof(asn_DEF_TAIBasedMDT_ExtIEs_tags_809[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedMDT_ExtIEs_809, + 3, /* Elements count */ + &asn_SPC_TAIBasedMDT_ExtIEs_specs_809 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_816 = { + sizeof(struct TAI_Item_ExtIEs__extensionValue), + offsetof(struct TAI_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TAI_Item_ExtIEs__extensionValue, present), + sizeof(((struct TAI_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_816 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_816 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TAI_Item_ExtIEs_813[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_814, memb_id_constraint_813 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_815, memb_criticality_constraint_813 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TAI_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_816, + 0, + { 0, &asn_PER_memb_extensionValue_constr_816, memb_extensionValue_constraint_813 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAI_Item_ExtIEs_tags_813[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAI_Item_ExtIEs_tag2el_813[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_ExtIEs_specs_813 = { + sizeof(struct TAI_Item_ExtIEs), + offsetof(struct TAI_Item_ExtIEs, _asn_ctx), + asn_MAP_TAI_Item_ExtIEs_tag2el_813, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAI_Item_ExtIEs = { + "TAI-Item-ExtIEs", + "TAI-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TAI_Item_ExtIEs_tags_813, + sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813) + /sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813[0]), /* 1 */ + asn_DEF_TAI_Item_ExtIEs_tags_813, /* Same as above */ + sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813) + /sizeof(asn_DEF_TAI_Item_ExtIEs_tags_813[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAI_Item_ExtIEs_813, + 3, /* Elements count */ + &asn_SPC_TAI_Item_ExtIEs_specs_813 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_820 = { + sizeof(struct TABasedQMC_ExtIEs__extensionValue), + offsetof(struct TABasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TABasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct TABasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_820 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_820 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TABasedQMC_ExtIEs_817[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_818, memb_id_constraint_817 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TABasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_819, memb_criticality_constraint_817 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TABasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_820, + 0, + { 0, &asn_PER_memb_extensionValue_constr_820, memb_extensionValue_constraint_817 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TABasedQMC_ExtIEs_tags_817[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedQMC_ExtIEs_tag2el_817[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_ExtIEs_specs_817 = { + sizeof(struct TABasedQMC_ExtIEs), + offsetof(struct TABasedQMC_ExtIEs, _asn_ctx), + asn_MAP_TABasedQMC_ExtIEs_tag2el_817, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedQMC_ExtIEs = { + "TABasedQMC-ExtIEs", + "TABasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TABasedQMC_ExtIEs_tags_817, + sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817) + /sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817[0]), /* 1 */ + asn_DEF_TABasedQMC_ExtIEs_tags_817, /* Same as above */ + sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817) + /sizeof(asn_DEF_TABasedQMC_ExtIEs_tags_817[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedQMC_ExtIEs_817, + 3, /* Elements count */ + &asn_SPC_TABasedQMC_ExtIEs_specs_817 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_824 = { + sizeof(struct TAIBasedQMC_ExtIEs__extensionValue), + offsetof(struct TAIBasedQMC_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TAIBasedQMC_ExtIEs__extensionValue, present), + sizeof(((struct TAIBasedQMC_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_824 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_824 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TAIBasedQMC_ExtIEs_821[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_822, memb_id_constraint_821 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_823, memb_criticality_constraint_821 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_824, + 0, + { 0, &asn_PER_memb_extensionValue_constr_824, memb_extensionValue_constraint_821 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIBasedQMC_ExtIEs_tags_821[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedQMC_ExtIEs_tag2el_821[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_ExtIEs_specs_821 = { + sizeof(struct TAIBasedQMC_ExtIEs), + offsetof(struct TAIBasedQMC_ExtIEs, _asn_ctx), + asn_MAP_TAIBasedQMC_ExtIEs_tag2el_821, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC_ExtIEs = { + "TAIBasedQMC-ExtIEs", + "TAIBasedQMC-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedQMC_ExtIEs_tags_821, + sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821) + /sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821[0]), /* 1 */ + asn_DEF_TAIBasedQMC_ExtIEs_tags_821, /* Same as above */ + sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821) + /sizeof(asn_DEF_TAIBasedQMC_ExtIEs_tags_821[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedQMC_ExtIEs_821, + 3, /* Elements count */ + &asn_SPC_TAIBasedQMC_ExtIEs_specs_821 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_828[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs__extensionValue, choice.AdditionalSpecialSubframe_Info), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframe_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AdditionalSpecialSubframe-Info" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs__extensionValue, choice.EARFCNExtension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_EARFCNExtension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EARFCNExtension" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs__extensionValue, choice.AdditionalSpecialSubframeExtension_Info), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_AdditionalSpecialSubframeExtension_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AdditionalSpecialSubframeExtension-Info" + }, +}; +static const unsigned asn_MAP_extensionValue_to_canonical_828[] = { 1, 0, 2 }; +static const unsigned asn_MAP_extensionValue_from_canonical_828[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_828[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* EARFCNExtension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* AdditionalSpecialSubframe-Info */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* AdditionalSpecialSubframeExtension-Info */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_828 = { + sizeof(struct TDD_Info_ExtIEs__extensionValue), + offsetof(struct TDD_Info_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TDD_Info_ExtIEs__extensionValue, present), + sizeof(((struct TDD_Info_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_828, + 3, /* Count of tags in the map */ + asn_MAP_extensionValue_to_canonical_828, + asn_MAP_extensionValue_from_canonical_828, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_828 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_828, + 3, /* Elements count */ + &asn_SPC_extensionValue_specs_828 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TDD_Info_ExtIEs_825[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_826, memb_id_constraint_825 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_TDD_Info_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_827, memb_criticality_constraint_825 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TDD_Info_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_828, + select_TDD_Info_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_828, memb_extensionValue_constraint_825 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TDD_Info_ExtIEs_tags_825[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_Info_ExtIEs_tag2el_825[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_ExtIEs_specs_825 = { + sizeof(struct TDD_Info_ExtIEs), + offsetof(struct TDD_Info_ExtIEs, _asn_ctx), + asn_MAP_TDD_Info_ExtIEs_tag2el_825, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_Info_ExtIEs = { + "TDD-Info-ExtIEs", + "TDD-Info-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TDD_Info_ExtIEs_tags_825, + sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825) + /sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825[0]), /* 1 */ + asn_DEF_TDD_Info_ExtIEs_tags_825, /* Same as above */ + sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825) + /sizeof(asn_DEF_TDD_Info_ExtIEs_tags_825[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_Info_ExtIEs_825, + 3, /* Elements count */ + &asn_SPC_TDD_Info_ExtIEs_specs_825 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_832[] = { + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs__extensionValue, choice.MDT_Configuration), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MDT_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MDT-Configuration" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs__extensionValue, choice.UEAppLayerMeasConfig), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAppLayerMeasConfig, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAppLayerMeasConfig" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_832[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* MDT-Configuration */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* UEAppLayerMeasConfig */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_832 = { + sizeof(struct TraceActivation_ExtIEs__extensionValue), + offsetof(struct TraceActivation_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct TraceActivation_ExtIEs__extensionValue, present), + sizeof(((struct TraceActivation_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_832, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_832 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_832, + 2, /* Elements count */ + &asn_SPC_extensionValue_specs_832 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_TraceActivation_ExtIEs_829[] = { + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_830, memb_id_constraint_829 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_TraceActivation_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_831, memb_criticality_constraint_829 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct TraceActivation_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_832, + select_TraceActivation_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_832, memb_extensionValue_constraint_829 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_TraceActivation_ExtIEs_tags_829[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TraceActivation_ExtIEs_tag2el_829[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_ExtIEs_specs_829 = { + sizeof(struct TraceActivation_ExtIEs), + offsetof(struct TraceActivation_ExtIEs, _asn_ctx), + asn_MAP_TraceActivation_ExtIEs_tag2el_829, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TraceActivation_ExtIEs = { + "TraceActivation-ExtIEs", + "TraceActivation-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_TraceActivation_ExtIEs_tags_829, + sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829) + /sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829[0]), /* 1 */ + asn_DEF_TraceActivation_ExtIEs_tags_829, /* Same as above */ + sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829) + /sizeof(asn_DEF_TraceActivation_ExtIEs_tags_829[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TraceActivation_ExtIEs_829, + 3, /* Elements count */ + &asn_SPC_TraceActivation_ExtIEs_specs_829 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_836 = { + sizeof(struct Tunnel_Information_ExtIEs__extensionValue), + offsetof(struct Tunnel_Information_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct Tunnel_Information_ExtIEs__extensionValue, present), + sizeof(((struct Tunnel_Information_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_836 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_836 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Tunnel_Information_ExtIEs_833[] = { + { ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_834, memb_id_constraint_833 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_835, memb_criticality_constraint_833 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct Tunnel_Information_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_836, + 0, + { 0, &asn_PER_memb_extensionValue_constr_836, memb_extensionValue_constraint_833 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_Tunnel_Information_ExtIEs_tags_833[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Tunnel_Information_ExtIEs_tag2el_833[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_ExtIEs_specs_833 = { + sizeof(struct Tunnel_Information_ExtIEs), + offsetof(struct Tunnel_Information_ExtIEs, _asn_ctx), + asn_MAP_Tunnel_Information_ExtIEs_tag2el_833, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Tunnel_Information_ExtIEs = { + "Tunnel-Information-ExtIEs", + "Tunnel-Information-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_Tunnel_Information_ExtIEs_tags_833, + sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833) + /sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833[0]), /* 1 */ + asn_DEF_Tunnel_Information_ExtIEs_tags_833, /* Same as above */ + sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833) + /sizeof(asn_DEF_Tunnel_Information_ExtIEs_tags_833[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Tunnel_Information_ExtIEs_833, + 3, /* Elements count */ + &asn_SPC_Tunnel_Information_ExtIEs_specs_833 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_840[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue, choice.ExtendedBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ExtendedBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExtendedBitRate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_840[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* ExtendedBitRate */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_840 = { + sizeof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue), + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue, present), + sizeof(((struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_840, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_840 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_840, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_840 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEAggregate_MaximumBitrate_ExtIEs_837[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_838, memb_id_constraint_837 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_UEAggregate_MaximumBitrate_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_839, memb_criticality_constraint_837 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_840, + select_UEAggregate_MaximumBitrate_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_840, memb_extensionValue_constraint_837 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAggregate_MaximumBitrate_ExtIEs_tag2el_837[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAggregate_MaximumBitrate_ExtIEs_specs_837 = { + sizeof(struct UEAggregate_MaximumBitrate_ExtIEs), + offsetof(struct UEAggregate_MaximumBitrate_ExtIEs, _asn_ctx), + asn_MAP_UEAggregate_MaximumBitrate_ExtIEs_tag2el_837, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAggregate_MaximumBitrate_ExtIEs = { + "UEAggregate-MaximumBitrate-ExtIEs", + "UEAggregate-MaximumBitrate-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837, + sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837) + /sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837[0]), /* 1 */ + asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837, /* Same as above */ + sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837) + /sizeof(asn_DEF_UEAggregate_MaximumBitrate_ExtIEs_tags_837[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAggregate_MaximumBitrate_ExtIEs_837, + 3, /* Elements count */ + &asn_SPC_UEAggregate_MaximumBitrate_ExtIEs_specs_837 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_extensionValue_844[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue, choice.ServiceType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ServiceType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServiceType" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_extensionValue_tag2el_844[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* ServiceType */ +}; +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_844 = { + sizeof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue), + offsetof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UEAppLayerMeasConfig_ExtIEs__extensionValue, present), + sizeof(((struct UEAppLayerMeasConfig_ExtIEs__extensionValue *)0)->present), + asn_MAP_extensionValue_tag2el_844, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_844 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_extensionValue_844, + 1, /* Elements count */ + &asn_SPC_extensionValue_specs_844 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_ExtIEs_841[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_842, memb_id_constraint_841 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_UEAppLayerMeasConfig_ExtIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_843, memb_criticality_constraint_841 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_844, + select_UEAppLayerMeasConfig_ExtIEs_extensionValue_type, + { 0, &asn_PER_memb_extensionValue_constr_844, memb_extensionValue_constraint_841 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAppLayerMeasConfig_ExtIEs_tag2el_841[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_841 = { + sizeof(struct UEAppLayerMeasConfig_ExtIEs), + offsetof(struct UEAppLayerMeasConfig_ExtIEs, _asn_ctx), + asn_MAP_UEAppLayerMeasConfig_ExtIEs_tag2el_841, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig_ExtIEs = { + "UEAppLayerMeasConfig-ExtIEs", + "UEAppLayerMeasConfig-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841, + sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841) + /sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841[0]), /* 1 */ + asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841, /* Same as above */ + sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841) + /sizeof(asn_DEF_UEAppLayerMeasConfig_ExtIEs_tags_841[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAppLayerMeasConfig_ExtIEs_841, + 3, /* Elements count */ + &asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_841 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_848 = { + sizeof(struct UESecurityCapabilities_ExtIEs__extensionValue), + offsetof(struct UESecurityCapabilities_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UESecurityCapabilities_ExtIEs__extensionValue, present), + sizeof(((struct UESecurityCapabilities_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_848 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_848 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UESecurityCapabilities_ExtIEs_845[] = { + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_846, memb_id_constraint_845 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_847, memb_criticality_constraint_845 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_848, + 0, + { 0, &asn_PER_memb_extensionValue_constr_848, memb_extensionValue_constraint_845 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UESecurityCapabilities_ExtIEs_tags_845[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UESecurityCapabilities_ExtIEs_tag2el_845[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_ExtIEs_specs_845 = { + sizeof(struct UESecurityCapabilities_ExtIEs), + offsetof(struct UESecurityCapabilities_ExtIEs, _asn_ctx), + asn_MAP_UESecurityCapabilities_ExtIEs_tag2el_845, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities_ExtIEs = { + "UESecurityCapabilities-ExtIEs", + "UESecurityCapabilities-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UESecurityCapabilities_ExtIEs_tags_845, + sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845) + /sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845[0]), /* 1 */ + asn_DEF_UESecurityCapabilities_ExtIEs_tags_845, /* Same as above */ + sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845) + /sizeof(asn_DEF_UESecurityCapabilities_ExtIEs_tags_845[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UESecurityCapabilities_ExtIEs_845, + 3, /* Elements count */ + &asn_SPC_UESecurityCapabilities_ExtIEs_specs_845 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_852 = { + sizeof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue), + offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue, present), + sizeof(((struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_852 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_852 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_849[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_850, memb_id_constraint_849 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_851, memb_criticality_constraint_849 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_852, + 0, + { 0, &asn_PER_memb_extensionValue_constr_852, memb_extensionValue_constraint_849 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tag2el_849[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_specs_849 = { + sizeof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs), + offsetof(struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs, _asn_ctx), + asn_MAP_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tag2el_849, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs = { + "UE-Sidelink-Aggregate-MaximumBitRate-ExtIEs", + "UE-Sidelink-Aggregate-MaximumBitRate-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849, + sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849) + /sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849[0]), /* 1 */ + asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849, /* Same as above */ + sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849) + /sizeof(asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_tags_849[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_849, + 3, /* Elements count */ + &asn_SPC_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_specs_849 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_856 = { + sizeof(struct UEsToBeResetList_Item_ExtIEs__extensionValue), + offsetof(struct UEsToBeResetList_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UEsToBeResetList_Item_ExtIEs__extensionValue, present), + sizeof(((struct UEsToBeResetList_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_856 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_856 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_ExtIEs_853[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_854, memb_id_constraint_853 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_855, memb_criticality_constraint_853 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_856, + 0, + { 0, &asn_PER_memb_extensionValue_constr_856, memb_extensionValue_constraint_853 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEsToBeResetList_Item_ExtIEs_tag2el_853[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_ExtIEs_specs_853 = { + sizeof(struct UEsToBeResetList_Item_ExtIEs), + offsetof(struct UEsToBeResetList_Item_ExtIEs, _asn_ctx), + asn_MAP_UEsToBeResetList_Item_ExtIEs_tag2el_853, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item_ExtIEs = { + "UEsToBeResetList-Item-ExtIEs", + "UEsToBeResetList-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853, + sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853) + /sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853[0]), /* 1 */ + asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853, /* Same as above */ + sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853) + /sizeof(asn_DEF_UEsToBeResetList_Item_ExtIEs_tags_853[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEsToBeResetList_Item_ExtIEs_853, + 3, /* Elements count */ + &asn_SPC_UEsToBeResetList_Item_ExtIEs_specs_853 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_860 = { + sizeof(struct ULandDLSharing_ExtIEs__extensionValue), + offsetof(struct ULandDLSharing_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ULandDLSharing_ExtIEs__extensionValue, present), + sizeof(((struct ULandDLSharing_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_860 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_860 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ULandDLSharing_ExtIEs_857[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_858, memb_id_constraint_857 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_859, memb_criticality_constraint_857 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_860, + 0, + { 0, &asn_PER_memb_extensionValue_constr_860, memb_extensionValue_constraint_857 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ULandDLSharing_ExtIEs_tags_857[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULandDLSharing_ExtIEs_tag2el_857[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_ExtIEs_specs_857 = { + sizeof(struct ULandDLSharing_ExtIEs), + offsetof(struct ULandDLSharing_ExtIEs, _asn_ctx), + asn_MAP_ULandDLSharing_ExtIEs_tag2el_857, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULandDLSharing_ExtIEs = { + "ULandDLSharing-ExtIEs", + "ULandDLSharing-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ULandDLSharing_ExtIEs_tags_857, + sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857) + /sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857[0]), /* 1 */ + asn_DEF_ULandDLSharing_ExtIEs_tags_857, /* Same as above */ + sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857) + /sizeof(asn_DEF_ULandDLSharing_ExtIEs_tags_857[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULandDLSharing_ExtIEs_857, + 3, /* Elements count */ + &asn_SPC_ULandDLSharing_ExtIEs_specs_857 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_864 = { + sizeof(struct ULConfiguration_ExtIEs__extensionValue), + offsetof(struct ULConfiguration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ULConfiguration_ExtIEs__extensionValue, present), + sizeof(((struct ULConfiguration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_864 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_864 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ULConfiguration_ExtIEs_861[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULConfiguration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_862, memb_id_constraint_861 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULConfiguration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_863, memb_criticality_constraint_861 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ULConfiguration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_864, + 0, + { 0, &asn_PER_memb_extensionValue_constr_864, memb_extensionValue_constraint_861 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ULConfiguration_ExtIEs_tags_861[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULConfiguration_ExtIEs_tag2el_861[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_ExtIEs_specs_861 = { + sizeof(struct ULConfiguration_ExtIEs), + offsetof(struct ULConfiguration_ExtIEs, _asn_ctx), + asn_MAP_ULConfiguration_ExtIEs_tag2el_861, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULConfiguration_ExtIEs = { + "ULConfiguration-ExtIEs", + "ULConfiguration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ULConfiguration_ExtIEs_tags_861, + sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861) + /sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861[0]), /* 1 */ + asn_DEF_ULConfiguration_ExtIEs_tags_861, /* Same as above */ + sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861) + /sizeof(asn_DEF_ULConfiguration_ExtIEs_tags_861[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULConfiguration_ExtIEs_861, + 3, /* Elements count */ + &asn_SPC_ULConfiguration_ExtIEs_specs_861 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_868 = { + sizeof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue), + offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue, present), + sizeof(((struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_868 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_868 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_865[] = { + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_866, memb_id_constraint_865 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_867, memb_criticality_constraint_865 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_868, + 0, + { 0, &asn_PER_memb_extensionValue_constr_868, memb_extensionValue_constraint_865 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tag2el_865[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_865 = { + sizeof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs), + offsetof(struct UL_HighInterferenceIndicationInfo_Item_ExtIEs, _asn_ctx), + asn_MAP_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tag2el_865, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs = { + "UL-HighInterferenceIndicationInfo-Item-ExtIEs", + "UL-HighInterferenceIndicationInfo-Item-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865, + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs_tags_865[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_865, + 3, /* Elements count */ + &asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_865 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_872 = { + sizeof(struct ULOnlySharing_ExtIEs__extensionValue), + offsetof(struct ULOnlySharing_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct ULOnlySharing_ExtIEs__extensionValue, present), + sizeof(((struct ULOnlySharing_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_872 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_872 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ULOnlySharing_ExtIEs_869[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_870, memb_id_constraint_869 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_871, memb_criticality_constraint_869 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_872, + 0, + { 0, &asn_PER_memb_extensionValue_constr_872, memb_extensionValue_constraint_869 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_ULOnlySharing_ExtIEs_tags_869[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULOnlySharing_ExtIEs_tag2el_869[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_ExtIEs_specs_869 = { + sizeof(struct ULOnlySharing_ExtIEs), + offsetof(struct ULOnlySharing_ExtIEs, _asn_ctx), + asn_MAP_ULOnlySharing_ExtIEs_tag2el_869, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULOnlySharing_ExtIEs = { + "ULOnlySharing-ExtIEs", + "ULOnlySharing-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_ULOnlySharing_ExtIEs_tags_869, + sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869) + /sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869[0]), /* 1 */ + asn_DEF_ULOnlySharing_ExtIEs_tags_869, /* Same as above */ + sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869) + /sizeof(asn_DEF_ULOnlySharing_ExtIEs_tags_869[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULOnlySharing_ExtIEs_869, + 3, /* Elements count */ + &asn_SPC_ULOnlySharing_ExtIEs_specs_869 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_876 = { + sizeof(struct UsableABSInformationFDD_ExtIEs__extensionValue), + offsetof(struct UsableABSInformationFDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UsableABSInformationFDD_ExtIEs__extensionValue, present), + sizeof(((struct UsableABSInformationFDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_876 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_876 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_ExtIEs_873[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_874, memb_id_constraint_873 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_875, memb_criticality_constraint_873 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_876, + 0, + { 0, &asn_PER_memb_extensionValue_constr_876, memb_extensionValue_constraint_873 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationFDD_ExtIEs_tag2el_873[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_ExtIEs_specs_873 = { + sizeof(struct UsableABSInformationFDD_ExtIEs), + offsetof(struct UsableABSInformationFDD_ExtIEs, _asn_ctx), + asn_MAP_UsableABSInformationFDD_ExtIEs_tag2el_873, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD_ExtIEs = { + "UsableABSInformationFDD-ExtIEs", + "UsableABSInformationFDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873, + sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873) + /sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873[0]), /* 1 */ + asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873) + /sizeof(asn_DEF_UsableABSInformationFDD_ExtIEs_tags_873[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationFDD_ExtIEs_873, + 3, /* Elements count */ + &asn_SPC_UsableABSInformationFDD_ExtIEs_specs_873 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_880 = { + sizeof(struct UsableABSInformationTDD_ExtIEs__extensionValue), + offsetof(struct UsableABSInformationTDD_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct UsableABSInformationTDD_ExtIEs__extensionValue, present), + sizeof(((struct UsableABSInformationTDD_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_880 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_880 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_ExtIEs_877[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_878, memb_id_constraint_877 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_879, memb_criticality_constraint_877 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_880, + 0, + { 0, &asn_PER_memb_extensionValue_constr_880, memb_extensionValue_constraint_877 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationTDD_ExtIEs_tag2el_877[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_ExtIEs_specs_877 = { + sizeof(struct UsableABSInformationTDD_ExtIEs), + offsetof(struct UsableABSInformationTDD_ExtIEs, _asn_ctx), + asn_MAP_UsableABSInformationTDD_ExtIEs_tag2el_877, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD_ExtIEs = { + "UsableABSInformationTDD-ExtIEs", + "UsableABSInformationTDD-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877, + sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877) + /sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877[0]), /* 1 */ + asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877) + /sizeof(asn_DEF_UsableABSInformationTDD_ExtIEs_tags_877[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationTDD_ExtIEs_877, + 3, /* Elements count */ + &asn_SPC_UsableABSInformationTDD_ExtIEs_specs_877 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_884 = { + sizeof(struct V2XServicesAuthorized_ExtIEs__extensionValue), + offsetof(struct V2XServicesAuthorized_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct V2XServicesAuthorized_ExtIEs__extensionValue, present), + sizeof(((struct V2XServicesAuthorized_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_884 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_884 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_ExtIEs_881[] = { + { ATF_NOFLAGS, 0, offsetof(struct V2XServicesAuthorized_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_882, memb_id_constraint_881 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct V2XServicesAuthorized_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_883, memb_criticality_constraint_881 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct V2XServicesAuthorized_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_884, + 0, + { 0, &asn_PER_memb_extensionValue_constr_884, memb_extensionValue_constraint_881 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_V2XServicesAuthorized_ExtIEs_tag2el_881[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_ExtIEs_specs_881 = { + sizeof(struct V2XServicesAuthorized_ExtIEs), + offsetof(struct V2XServicesAuthorized_ExtIEs, _asn_ctx), + asn_MAP_V2XServicesAuthorized_ExtIEs_tag2el_881, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized_ExtIEs = { + "V2XServicesAuthorized-ExtIEs", + "V2XServicesAuthorized-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881, + sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881) + /sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881[0]), /* 1 */ + asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881, /* Same as above */ + sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881) + /sizeof(asn_DEF_V2XServicesAuthorized_ExtIEs_tags_881[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_V2XServicesAuthorized_ExtIEs_881, + 3, /* Elements count */ + &asn_SPC_V2XServicesAuthorized_ExtIEs_specs_881 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_888 = { + sizeof(struct WidebandCQI_ExtIEs__extensionValue), + offsetof(struct WidebandCQI_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct WidebandCQI_ExtIEs__extensionValue, present), + sizeof(((struct WidebandCQI_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_888 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_888 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WidebandCQI_ExtIEs_885[] = { + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQI_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_886, memb_id_constraint_885 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQI_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_887, memb_criticality_constraint_885 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct WidebandCQI_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_888, + 0, + { 0, &asn_PER_memb_extensionValue_constr_888, memb_extensionValue_constraint_885 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_WidebandCQI_ExtIEs_tags_885[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WidebandCQI_ExtIEs_tag2el_885[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_ExtIEs_specs_885 = { + sizeof(struct WidebandCQI_ExtIEs), + offsetof(struct WidebandCQI_ExtIEs, _asn_ctx), + asn_MAP_WidebandCQI_ExtIEs_tag2el_885, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WidebandCQI_ExtIEs = { + "WidebandCQI-ExtIEs", + "WidebandCQI-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_WidebandCQI_ExtIEs_tags_885, + sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885) + /sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885[0]), /* 1 */ + asn_DEF_WidebandCQI_ExtIEs_tags_885, /* Same as above */ + sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885) + /sizeof(asn_DEF_WidebandCQI_ExtIEs_tags_885[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WidebandCQI_ExtIEs_885, + 3, /* Elements count */ + &asn_SPC_WidebandCQI_ExtIEs_specs_885 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_extensionValue_specs_892 = { + sizeof(struct WLANMeasurementConfiguration_ExtIEs__extensionValue), + offsetof(struct WLANMeasurementConfiguration_ExtIEs__extensionValue, _asn_ctx), + offsetof(struct WLANMeasurementConfiguration_ExtIEs__extensionValue, present), + sizeof(((struct WLANMeasurementConfiguration_ExtIEs__extensionValue *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_extensionValue_892 = { + "extensionValue", + "extensionValue", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_extensionValue_specs_892 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_ExtIEs_889[] = { + { ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration_ExtIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_890, memb_id_constraint_889 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration_ExtIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_891, memb_criticality_constraint_889 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration_ExtIEs, extensionValue), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_extensionValue_892, + 0, + { 0, &asn_PER_memb_extensionValue_constr_892, memb_extensionValue_constraint_889 }, + 0, 0, /* No default value */ + "extensionValue" + }, +}; +static const ber_tlv_tag_t asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WLANMeasurementConfiguration_ExtIEs_tag2el_889[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_889 = { + sizeof(struct WLANMeasurementConfiguration_ExtIEs), + offsetof(struct WLANMeasurementConfiguration_ExtIEs, _asn_ctx), + asn_MAP_WLANMeasurementConfiguration_ExtIEs_tag2el_889, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration_ExtIEs = { + "WLANMeasurementConfiguration-ExtIEs", + "WLANMeasurementConfiguration-ExtIEs", + &asn_OP_SEQUENCE, + asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889, + sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889) + /sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889[0]), /* 1 */ + asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889, /* Same as above */ + sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889) + /sizeof(asn_DEF_WLANMeasurementConfiguration_ExtIEs_tags_889[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WLANMeasurementConfiguration_ExtIEs_889, + 3, /* Elements count */ + &asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_889 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionField.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionField.h new file mode 100644 index 0000000..34e9832 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolExtensionField.h @@ -0,0 +1,5186 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolExtensionField_H_ +#define _ProtocolExtensionField_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "ManagementBasedMDTallowed.h" +#include "Presence.h" +#include "MDTPLMNList.h" +#include "UESidelinkAggregateMaximumBitRate.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "BearerType.h" +#include "ReceiveStatusOfULPDCPSDUsExtended.h" +#include "COUNTValueExtended.h" +#include "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h" +#include "COUNTvaluePDCP-SNlength18.h" +#include "ABSInformation.h" +#include "InvokeIndication.h" +#include "SubframeAssignment.h" +#include "ExtendedULInterferenceOverloadInfo.h" +#include "CoMPInformation.h" +#include "DynamicDLTransmissionInformation.h" +#include "DeactivationIndication.h" +#include "CompositeAvailableCapacityGroup.h" +#include "ABS-Status.h" +#include "RSRPMRList.h" +#include "CSIReportList.h" +#include "CellReportingIndicator.h" +#include "Correlation-ID.h" +#include "GTPtunnelEndpoint.h" +#include "DL-Forwarding.h" +#include "RLCMode.h" +#include "PDCPSnLength.h" +#include "DuplicationActivation.h" +#include "LCID.h" +#include "SubscriberProfileIDforRFP.h" +#include "RLC-Status.h" +#include "NewDRBIDrequest.h" +#include "Packet-LossRate.h" +#include "EARFCNExtension.h" +#include "OffsetOfNbiotChannelNumberToEARFCN.h" +#include "NRS-NSSS-PowerOffset.h" +#include "NSSS-NumOccasionDifferentPrecoder.h" +#include "ExtendedBitRate.h" +#include "NRrestrictioninEPSasSecondaryRAT.h" +#include "CNTypeRestrictions.h" +#include "NRrestrictionin5GS.h" +#include "Time-UE-StayedInCell-EnhancedGranularity.h" +#include "Cause.h" +#include "M3Configuration.h" +#include "M4Configuration.h" +#include "M5Configuration.h" +#include "MDT-Location-Info.h" +#include "M6Configuration.h" +#include "M7Configuration.h" +#include "BluetoothMeasurementConfiguration.h" +#include "WLANMeasurementConfiguration.h" +#include "NRCGI.h" +#include "MeNBCoordinationAssistanceInformation.h" +#include "TAC.h" +#include "ProSeUEtoNetworkRelaying.h" +#include "DL-scheduling-PDCCH-CCE-usage.h" +#include "UL-scheduling-PDCCH-CCE-usage.h" +#include "EnhancedRNTP.h" +#include "UEID.h" +#include "Number-of-Antennaports.h" +#include "PRACH-Configuration.h" +#include "MBSFN-Subframe-Infolist.h" +#include "CSG-Id.h" +#include "MBMS-Service-Area-Identity-List.h" +#include "MultibandInfoList.h" +#include "FreqBandIndicatorPriority.h" +#include "BandwidthReducedSI.h" +#include "ProtectedEUTRAResourceIndication.h" +#include "ECGI.h" +#include "SgNBCoordinationAssistanceInformation.h" +#include "AdditionalSpecialSubframe-Info.h" +#include "AdditionalSpecialSubframeExtension-Info.h" +#include "MDT-Configuration.h" +#include "UEAppLayerMeasConfig.h" +#include "ServiceType.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UE_ContextInformation_ExtIEs__extensionValue_PR { + UE_ContextInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UE_ContextInformation_ExtIEs__extensionValue_PR_ManagementBasedMDTallowed, + UE_ContextInformation_ExtIEs__extensionValue_PR_MDTPLMNList, + UE_ContextInformation_ExtIEs__extensionValue_PR_UESidelinkAggregateMaximumBitRate +} UE_ContextInformation_ExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR_BearerType +} E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR; +typedef enum UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR { + UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR; +typedef enum UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR { + UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR; +typedef enum UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR { + UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_Item_ExtIEs__extensionValue_PR { + E_RABs_Admitted_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR { + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsExtended, + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTValueExtended, + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18, + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTvaluePDCP_SNlength18 +} E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR; +typedef enum CellInformation_Item_ExtIEs__extensionValue_PR { + CellInformation_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + CellInformation_Item_ExtIEs__extensionValue_PR_ABSInformation, + CellInformation_Item_ExtIEs__extensionValue_PR_InvokeIndication, + CellInformation_Item_ExtIEs__extensionValue_PR_SubframeAssignment, + CellInformation_Item_ExtIEs__extensionValue_PR_ExtendedULInterferenceOverloadInfo, + CellInformation_Item_ExtIEs__extensionValue_PR_CoMPInformation, + CellInformation_Item_ExtIEs__extensionValue_PR_DynamicDLTransmissionInformation +} CellInformation_Item_ExtIEs__extensionValue_PR; +typedef enum ServedCellsToModify_Item_ExtIEs__extensionValue_PR { + ServedCellsToModify_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ServedCellsToModify_Item_ExtIEs__extensionValue_PR_DeactivationIndication +} ServedCellsToModify_Item_ExtIEs__extensionValue_PR; +typedef enum CellToReport_Item_ExtIEs__extensionValue_PR { + CellToReport_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellToReport_Item_ExtIEs__extensionValue_PR; +typedef enum MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR { + MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR; +typedef enum MeasurementFailureCause_Item_ExtIEs__extensionValue_PR { + MeasurementFailureCause_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} MeasurementFailureCause_Item_ExtIEs__extensionValue_PR; +typedef enum CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR { + CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR; +typedef enum CellMeasurementResult_Item_ExtIEs__extensionValue_PR { + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CompositeAvailableCapacityGroup, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_ABS_Status, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_RSRPMRList, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CSIReportList, + CellMeasurementResult_Item_ExtIEs__extensionValue_PR_CellReportingIndicator +} CellMeasurementResult_Item_ExtIEs__extensionValue_PR; +typedef enum ServedCellsToActivate_Item_ExtIEs__extensionValue_PR { + ServedCellsToActivate_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedCellsToActivate_Item_ExtIEs__extensionValue_PR; +typedef enum ActivatedCellList_Item_ExtIEs__extensionValue_PR { + ActivatedCellList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ActivatedCellList_Item_ExtIEs__extensionValue_PR; +typedef enum RNL_Header_Item_ExtIEs__extensionValue_PR { + RNL_Header_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} RNL_Header_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR_Correlation_ID +} E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR; +typedef enum ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR { + ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR; +typedef enum ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR { + ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR; +typedef enum UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR { + UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_Correlation_ID +} E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR; +typedef enum E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR { + E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR; +typedef enum UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR { + UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR_UESidelinkAggregateMaximumBitRate +} UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR_GTPtunnelEndpoint, + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR_DL_Forwarding +} E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_RLCMode +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_DuplicationActivation +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_LCID +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR { + ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR; +typedef enum ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR { + ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR; +typedef enum UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR { + UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR_SubscriberProfileIDforRFP +} UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_RLCMode +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_DuplicationActivation +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_RLC_Status +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_GTPtunnelEndpoint +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_LCID +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_GTPtunnelEndpoint, + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_RLC_Status +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR_RLCMode +} E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_PDCPSnLength, + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NewDRBIDrequest +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_RLC_Status, + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_LCID +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_PDCPSnLength +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR { + E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR; +typedef enum ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR { + ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR; +typedef enum En_gNBServedCells_ExtIEs__extensionValue_PR { + En_gNBServedCells_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} En_gNBServedCells_ExtIEs__extensionValue_PR; +typedef enum ServedNRCell_Information_ExtIEs__extensionValue_PR { + ServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR { + FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR { + FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR { + TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR { + TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR; +typedef enum NRNeighbour_Information_ExtIEs__extensionValue_PR { + NRNeighbour_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRNeighbour_Information_ExtIEs__extensionValue_PR; +typedef enum Limited_list_ExtIEs__extensionValue_PR { + Limited_list_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} Limited_list_ExtIEs__extensionValue_PR; +typedef enum ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR { + ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR; +typedef enum ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR { + ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR; +typedef enum ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR { + ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR; +typedef enum ActivatedNRCellList_Item_ExtIEs__extensionValue_PR { + ActivatedNRCellList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ActivatedNRCellList_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR { + E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR; +typedef enum ABSInformationFDD_ExtIEs__extensionValue_PR { + ABSInformationFDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ABSInformationFDD_ExtIEs__extensionValue_PR; +typedef enum ABSInformationTDD_ExtIEs__extensionValue_PR { + ABSInformationTDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ABSInformationTDD_ExtIEs__extensionValue_PR; +typedef enum ABS_Status_ExtIEs__extensionValue_PR { + ABS_Status_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ABS_Status_ExtIEs__extensionValue_PR; +typedef enum AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR { + AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR; +typedef enum AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR { + AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR; +typedef enum AllocationAndRetentionPriority_ExtIEs__extensionValue_PR { + AllocationAndRetentionPriority_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AllocationAndRetentionPriority_ExtIEs__extensionValue_PR; +typedef enum AS_SecurityInformation_ExtIEs__extensionValue_PR { + AS_SecurityInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} AS_SecurityInformation_ExtIEs__extensionValue_PR; +typedef enum BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR { + BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR; +typedef enum CellBasedMDT_ExtIEs__extensionValue_PR { + CellBasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellBasedMDT_ExtIEs__extensionValue_PR; +typedef enum CellBasedQMC_ExtIEs__extensionValue_PR { + CellBasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellBasedQMC_ExtIEs__extensionValue_PR; +typedef enum CellReplacingInfo_ExtIEs__extensionValue_PR { + CellReplacingInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellReplacingInfo_ExtIEs__extensionValue_PR; +typedef enum CellType_ExtIEs__extensionValue_PR { + CellType_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CellType_ExtIEs__extensionValue_PR; +typedef enum CNTypeRestrictionsItem_ExtIEs__extensionValue_PR { + CNTypeRestrictionsItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CNTypeRestrictionsItem_ExtIEs__extensionValue_PR; +typedef enum CoMPHypothesisSetItem_ExtIEs__extensionValue_PR { + CoMPHypothesisSetItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPHypothesisSetItem_ExtIEs__extensionValue_PR; +typedef enum CoMPInformation_ExtIEs__extensionValue_PR { + CoMPInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPInformation_ExtIEs__extensionValue_PR; +typedef enum CoMPInformationItem_ExtIEs__extensionValue_PR { + CoMPInformationItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPInformationItem_ExtIEs__extensionValue_PR; +typedef enum CoMPInformationStartTime_ExtIEs__extensionValue_PR { + CoMPInformationStartTime_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CoMPInformationStartTime_ExtIEs__extensionValue_PR; +typedef enum CompositeAvailableCapacity_ExtIEs__extensionValue_PR { + CompositeAvailableCapacity_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CompositeAvailableCapacity_ExtIEs__extensionValue_PR; +typedef enum CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR { + CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR; +typedef enum COUNTvalue_ExtIEs__extensionValue_PR { + COUNTvalue_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} COUNTvalue_ExtIEs__extensionValue_PR; +typedef enum COUNTValueExtended_ExtIEs__extensionValue_PR { + COUNTValueExtended_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} COUNTValueExtended_ExtIEs__extensionValue_PR; +typedef enum COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR { + COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR; +typedef enum CriticalityDiagnostics_ExtIEs__extensionValue_PR { + CriticalityDiagnostics_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CriticalityDiagnostics_ExtIEs__extensionValue_PR; +typedef enum CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR { + CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR; +typedef enum CSIReportList_ExtIEs__extensionValue_PR { + CSIReportList_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CSIReportList_ExtIEs__extensionValue_PR; +typedef enum CSIReportPerCSIProcess_ExtIEs__extensionValue_PR { + CSIReportPerCSIProcess_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CSIReportPerCSIProcess_ExtIEs__extensionValue_PR; +typedef enum CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR { + CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR; +typedef enum DataTrafficResourceIndication_ExtIEs__extensionValue_PR { + DataTrafficResourceIndication_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} DataTrafficResourceIndication_ExtIEs__extensionValue_PR; +typedef enum DeliveryStatus_ExtIEs__extensionValue_PR { + DeliveryStatus_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} DeliveryStatus_ExtIEs__extensionValue_PR; +typedef enum DynamicNAICSInformation_ExtIEs__extensionValue_PR { + DynamicNAICSInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} DynamicNAICSInformation_ExtIEs__extensionValue_PR; +typedef enum ECGI_ExtIEs__extensionValue_PR { + ECGI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ECGI_ExtIEs__extensionValue_PR; +typedef enum EnhancedRNTP_ExtIEs__extensionValue_PR { + EnhancedRNTP_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} EnhancedRNTP_ExtIEs__extensionValue_PR; +typedef enum EnhancedRNTPStartTime_ExtIEs__extensionValue_PR { + EnhancedRNTPStartTime_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} EnhancedRNTPStartTime_ExtIEs__extensionValue_PR; +typedef enum EN_DC_ResourceConfigurationExtIEs__extensionValue_PR { + EN_DC_ResourceConfigurationExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} EN_DC_ResourceConfigurationExtIEs__extensionValue_PR; +typedef enum ERABActivityNotifyItem_ExtIEs__extensionValue_PR { + ERABActivityNotifyItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ERABActivityNotifyItem_ExtIEs__extensionValue_PR; +typedef enum E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR { + E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR_Packet_LossRate +} E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR; +typedef enum E_RAB_Item_ExtIEs__extensionValue_PR { + E_RAB_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RAB_Item_ExtIEs__extensionValue_PR; +typedef enum E_RABUsageReport_Item_ExtIEs__extensionValue_PR { + E_RABUsageReport_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} E_RABUsageReport_Item_ExtIEs__extensionValue_PR; +typedef enum ExpectedUEBehaviour_ExtIEs__extensionValue_PR { + ExpectedUEBehaviour_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ExpectedUEBehaviour_ExtIEs__extensionValue_PR; +typedef enum ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR { + ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR; +typedef enum ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR { + ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR; +typedef enum FDD_Info_ExtIEs__extensionValue_PR { + FDD_Info_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + FDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension, + FDD_Info_ExtIEs__extensionValue_PR_OffsetOfNbiotChannelNumberToEARFCN, + FDD_Info_ExtIEs__extensionValue_PR_NRS_NSSS_PowerOffset, + FDD_Info_ExtIEs__extensionValue_PR_NSSS_NumOccasionDifferentPrecoder +} FDD_Info_ExtIEs__extensionValue_PR; +typedef enum ForbiddenTAs_Item_ExtIEs__extensionValue_PR { + ForbiddenTAs_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ForbiddenTAs_Item_ExtIEs__extensionValue_PR; +typedef enum ForbiddenLAs_Item_ExtIEs__extensionValue_PR { + ForbiddenLAs_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ForbiddenLAs_Item_ExtIEs__extensionValue_PR; +typedef enum FreqBandNrItem_ExtIEs__extensionValue_PR { + FreqBandNrItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} FreqBandNrItem_ExtIEs__extensionValue_PR; +typedef enum GBR_QosInformation_ExtIEs__extensionValue_PR { + GBR_QosInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + GBR_QosInformation_ExtIEs__extensionValue_PR_ExtendedBitRate +} GBR_QosInformation_ExtIEs__extensionValue_PR; +typedef enum GlobalENB_ID_ExtIEs__extensionValue_PR { + GlobalENB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GlobalENB_ID_ExtIEs__extensionValue_PR; +typedef enum GlobalGNB_ID_ExtIEs__extensionValue_PR { + GlobalGNB_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GlobalGNB_ID_ExtIEs__extensionValue_PR; +typedef enum GTPtunnelEndpoint_ExtIEs__extensionValue_PR { + GTPtunnelEndpoint_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GTPtunnelEndpoint_ExtIEs__extensionValue_PR; +typedef enum GU_Group_ID_ExtIEs__extensionValue_PR { + GU_Group_ID_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GU_Group_ID_ExtIEs__extensionValue_PR; +typedef enum GUMMEI_ExtIEs__extensionValue_PR { + GUMMEI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} GUMMEI_ExtIEs__extensionValue_PR; +typedef enum HandoverRestrictionList_ExtIEs__extensionValue_PR { + HandoverRestrictionList_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + HandoverRestrictionList_ExtIEs__extensionValue_PR_NRrestrictioninEPSasSecondaryRAT, + HandoverRestrictionList_ExtIEs__extensionValue_PR_CNTypeRestrictions, + HandoverRestrictionList_ExtIEs__extensionValue_PR_NRrestrictionin5GS +} HandoverRestrictionList_ExtIEs__extensionValue_PR; +typedef enum HWLoadIndicator_ExtIEs__extensionValue_PR { + HWLoadIndicator_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} HWLoadIndicator_ExtIEs__extensionValue_PR; +typedef enum LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR { + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Time_UE_StayedInCell_EnhancedGranularity, + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Cause +} LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR; +typedef enum LocationReportingInformation_ExtIEs__extensionValue_PR { + LocationReportingInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} LocationReportingInformation_ExtIEs__extensionValue_PR; +typedef enum M1PeriodicReporting_ExtIEs__extensionValue_PR { + M1PeriodicReporting_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M1PeriodicReporting_ExtIEs__extensionValue_PR; +typedef enum M1ThresholdEventA2_ExtIEs__extensionValue_PR { + M1ThresholdEventA2_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M1ThresholdEventA2_ExtIEs__extensionValue_PR; +typedef enum M3Configuration_ExtIEs__extensionValue_PR { + M3Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M3Configuration_ExtIEs__extensionValue_PR; +typedef enum M4Configuration_ExtIEs__extensionValue_PR { + M4Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M4Configuration_ExtIEs__extensionValue_PR; +typedef enum M5Configuration_ExtIEs__extensionValue_PR { + M5Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M5Configuration_ExtIEs__extensionValue_PR; +typedef enum M6Configuration_ExtIEs__extensionValue_PR { + M6Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M6Configuration_ExtIEs__extensionValue_PR; +typedef enum M7Configuration_ExtIEs__extensionValue_PR { + M7Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} M7Configuration_ExtIEs__extensionValue_PR; +typedef enum MDT_Configuration_ExtIEs__extensionValue_PR { + MDT_Configuration_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + MDT_Configuration_ExtIEs__extensionValue_PR_M3Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_M4Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_M5Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_MDT_Location_Info, + MDT_Configuration_ExtIEs__extensionValue_PR_MDTPLMNList, + MDT_Configuration_ExtIEs__extensionValue_PR_M6Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_M7Configuration, + MDT_Configuration_ExtIEs__extensionValue_PR_BluetoothMeasurementConfiguration, + MDT_Configuration_ExtIEs__extensionValue_PR_WLANMeasurementConfiguration +} MDT_Configuration_ExtIEs__extensionValue_PR; +typedef enum MeNBResourceCoordinationInformationExtIEs__extensionValue_PR { + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR_NOTHING, /* No components present */ + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR_NRCGI, + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR_MeNBCoordinationAssistanceInformation +} MeNBResourceCoordinationInformationExtIEs__extensionValue_PR; +typedef enum MBSFN_Subframe_Info_ExtIEs__extensionValue_PR { + MBSFN_Subframe_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} MBSFN_Subframe_Info_ExtIEs__extensionValue_PR; +typedef enum BandInfo_ExtIEs__extensionValue_PR { + BandInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} BandInfo_ExtIEs__extensionValue_PR; +typedef enum SplitSRB_ExtIEs__extensionValue_PR { + SplitSRB_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SplitSRB_ExtIEs__extensionValue_PR; +typedef enum UENRMeasurement_ExtIEs__extensionValue_PR { + UENRMeasurement_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UENRMeasurement_ExtIEs__extensionValue_PR; +typedef enum Neighbour_Information_ExtIEs__extensionValue_PR { + Neighbour_Information_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + Neighbour_Information_ExtIEs__extensionValue_PR_TAC, + Neighbour_Information_ExtIEs__extensionValue_PR_EARFCNExtension +} Neighbour_Information_ExtIEs__extensionValue_PR; +typedef enum NRFreqInfo_ExtIEs__extensionValue_PR { + NRFreqInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRFreqInfo_ExtIEs__extensionValue_PR; +typedef enum NRCGI_ExtIEs__extensionValue_PR { + NRCGI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRCGI_ExtIEs__extensionValue_PR; +typedef enum NR_TxBW_ExtIEs__extensionValue_PR { + NR_TxBW_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NR_TxBW_ExtIEs__extensionValue_PR; +typedef enum NRUESecurityCapabilities_ExtIEs__extensionValue_PR { + NRUESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} NRUESecurityCapabilities_ExtIEs__extensionValue_PR; +typedef enum PRACH_Configuration_ExtIEs__extensionValue_PR { + PRACH_Configuration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} PRACH_Configuration_ExtIEs__extensionValue_PR; +typedef enum PLMNAreaBasedQMC_ExtIEs__extensionValue_PR { + PLMNAreaBasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} PLMNAreaBasedQMC_ExtIEs__extensionValue_PR; +typedef enum ProSeAuthorized_ExtIEs__extensionValue_PR { + ProSeAuthorized_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ProSeAuthorized_ExtIEs__extensionValue_PR_ProSeUEtoNetworkRelaying +} ProSeAuthorized_ExtIEs__extensionValue_PR; +typedef enum ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR { + ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR; +typedef enum ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR { + ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR; +typedef enum ProtectedResourceList_Item_ExtIEs__extensionValue_PR { + ProtectedResourceList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ProtectedResourceList_Item_ExtIEs__extensionValue_PR; +typedef enum RadioResourceStatus_ExtIEs__extensionValue_PR { + RadioResourceStatus_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + RadioResourceStatus_ExtIEs__extensionValue_PR_DL_scheduling_PDCCH_CCE_usage, + RadioResourceStatus_ExtIEs__extensionValue_PR_UL_scheduling_PDCCH_CCE_usage +} RadioResourceStatus_ExtIEs__extensionValue_PR; +typedef enum RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR { + RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_EnhancedRNTP +} RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR; +typedef enum ReservedSubframePattern_ExtIEs__extensionValue_PR { + ReservedSubframePattern_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ReservedSubframePattern_ExtIEs__extensionValue_PR; +typedef enum RLC_Status_ExtIEs__extensionValue_PR { + RLC_Status_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} RLC_Status_ExtIEs__extensionValue_PR; +typedef enum RSRPMeasurementResult_ExtIEs__extensionValue_PR { + RSRPMeasurementResult_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} RSRPMeasurementResult_ExtIEs__extensionValue_PR; +typedef enum RSRPMRList_ExtIEs__extensionValue_PR { + RSRPMRList_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + RSRPMRList_ExtIEs__extensionValue_PR_UEID +} RSRPMRList_ExtIEs__extensionValue_PR; +typedef enum S1TNLLoadIndicator_ExtIEs__extensionValue_PR { + S1TNLLoadIndicator_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} S1TNLLoadIndicator_ExtIEs__extensionValue_PR; +typedef enum SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR { + SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR; +typedef enum ServedCell_ExtIEs__extensionValue_PR { + ServedCell_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ServedCell_ExtIEs__extensionValue_PR; +typedef enum ServedCell_Information_ExtIEs__extensionValue_PR { + ServedCell_Information_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + ServedCell_Information_ExtIEs__extensionValue_PR_Number_of_Antennaports, + ServedCell_Information_ExtIEs__extensionValue_PR_PRACH_Configuration, + ServedCell_Information_ExtIEs__extensionValue_PR_MBSFN_Subframe_Infolist, + ServedCell_Information_ExtIEs__extensionValue_PR_CSG_Id, + ServedCell_Information_ExtIEs__extensionValue_PR_MBMS_Service_Area_Identity_List, + ServedCell_Information_ExtIEs__extensionValue_PR_MultibandInfoList, + ServedCell_Information_ExtIEs__extensionValue_PR_FreqBandIndicatorPriority, + ServedCell_Information_ExtIEs__extensionValue_PR_BandwidthReducedSI, + ServedCell_Information_ExtIEs__extensionValue_PR_ProtectedEUTRAResourceIndication +} ServedCell_Information_ExtIEs__extensionValue_PR; +typedef enum SgNBResourceCoordinationInformationExtIEs__extensionValue_PR { + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR_NOTHING, /* No components present */ + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR_ECGI, + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR_SgNBCoordinationAssistanceInformation +} SgNBResourceCoordinationInformationExtIEs__extensionValue_PR; +typedef enum SpecialSubframe_Info_ExtIEs__extensionValue_PR { + SpecialSubframe_Info_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SpecialSubframe_Info_ExtIEs__extensionValue_PR; +typedef enum SubbandCQI_ExtIEs__extensionValue_PR { + SubbandCQI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SubbandCQI_ExtIEs__extensionValue_PR; +typedef enum Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR { + Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR; +typedef enum ScheduledCommunicationTime_ExtIEs__extensionValue_PR { + ScheduledCommunicationTime_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ScheduledCommunicationTime_ExtIEs__extensionValue_PR; +typedef enum SubbandCQIItem_ExtIEs__extensionValue_PR { + SubbandCQIItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SubbandCQIItem_ExtIEs__extensionValue_PR; +typedef enum SULInformation_ExtIEs__extensionValue_PR { + SULInformation_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SULInformation_ExtIEs__extensionValue_PR; +typedef enum SupportedSULFreqBandItem_ExtIEs__extensionValue_PR { + SupportedSULFreqBandItem_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} SupportedSULFreqBandItem_ExtIEs__extensionValue_PR; +typedef enum TABasedMDT_ExtIEs__extensionValue_PR { + TABasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TABasedMDT_ExtIEs__extensionValue_PR; +typedef enum TAIBasedMDT_ExtIEs__extensionValue_PR { + TAIBasedMDT_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TAIBasedMDT_ExtIEs__extensionValue_PR; +typedef enum TAI_Item_ExtIEs__extensionValue_PR { + TAI_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TAI_Item_ExtIEs__extensionValue_PR; +typedef enum TABasedQMC_ExtIEs__extensionValue_PR { + TABasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TABasedQMC_ExtIEs__extensionValue_PR; +typedef enum TAIBasedQMC_ExtIEs__extensionValue_PR { + TAIBasedQMC_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} TAIBasedQMC_ExtIEs__extensionValue_PR; +typedef enum TDD_Info_ExtIEs__extensionValue_PR { + TDD_Info_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframe_Info, + TDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension, + TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframeExtension_Info +} TDD_Info_ExtIEs__extensionValue_PR; +typedef enum TraceActivation_ExtIEs__extensionValue_PR { + TraceActivation_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + TraceActivation_ExtIEs__extensionValue_PR_MDT_Configuration, + TraceActivation_ExtIEs__extensionValue_PR_UEAppLayerMeasConfig +} TraceActivation_ExtIEs__extensionValue_PR; +typedef enum Tunnel_Information_ExtIEs__extensionValue_PR { + Tunnel_Information_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} Tunnel_Information_ExtIEs__extensionValue_PR; +typedef enum UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR { + UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR_ExtendedBitRate +} UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR; +typedef enum UEAppLayerMeasConfig_ExtIEs__extensionValue_PR { + UEAppLayerMeasConfig_ExtIEs__extensionValue_PR_NOTHING, /* No components present */ + UEAppLayerMeasConfig_ExtIEs__extensionValue_PR_ServiceType +} UEAppLayerMeasConfig_ExtIEs__extensionValue_PR; +typedef enum UESecurityCapabilities_ExtIEs__extensionValue_PR { + UESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UESecurityCapabilities_ExtIEs__extensionValue_PR; +typedef enum UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR { + UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR; +typedef enum UEsToBeResetList_Item_ExtIEs__extensionValue_PR { + UEsToBeResetList_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UEsToBeResetList_Item_ExtIEs__extensionValue_PR; +typedef enum ULandDLSharing_ExtIEs__extensionValue_PR { + ULandDLSharing_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ULandDLSharing_ExtIEs__extensionValue_PR; +typedef enum ULConfiguration_ExtIEs__extensionValue_PR { + ULConfiguration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ULConfiguration_ExtIEs__extensionValue_PR; +typedef enum UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR { + UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR; +typedef enum ULOnlySharing_ExtIEs__extensionValue_PR { + ULOnlySharing_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} ULOnlySharing_ExtIEs__extensionValue_PR; +typedef enum UsableABSInformationFDD_ExtIEs__extensionValue_PR { + UsableABSInformationFDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UsableABSInformationFDD_ExtIEs__extensionValue_PR; +typedef enum UsableABSInformationTDD_ExtIEs__extensionValue_PR { + UsableABSInformationTDD_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} UsableABSInformationTDD_ExtIEs__extensionValue_PR; +typedef enum V2XServicesAuthorized_ExtIEs__extensionValue_PR { + V2XServicesAuthorized_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} V2XServicesAuthorized_ExtIEs__extensionValue_PR; +typedef enum WidebandCQI_ExtIEs__extensionValue_PR { + WidebandCQI_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} WidebandCQI_ExtIEs__extensionValue_PR; +typedef enum WLANMeasurementConfiguration_ExtIEs__extensionValue_PR { + WLANMeasurementConfiguration_ExtIEs__extensionValue_PR_NOTHING /* No components present */ + +} WLANMeasurementConfiguration_ExtIEs__extensionValue_PR; + +/* ProtocolExtensionField */ +typedef struct UE_ContextInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformation_ExtIEs__extensionValue { + UE_ContextInformation_ExtIEs__extensionValue_PR present; + union UE_ContextInformation_ExtIEs__extensionValue_u { + ManagementBasedMDTallowed_t ManagementBasedMDTallowed; + MDTPLMNList_t MDTPLMNList; + UESidelinkAggregateMaximumBitRate_t UESidelinkAggregateMaximumBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformation_ExtIEs_t; +typedef struct E_RABs_ToBeSetup_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetup_ItemExtIEs__extensionValue { + E_RABs_ToBeSetup_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeSetup_ItemExtIEs__extensionValue_u { + BearerType_t BearerType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_ItemExtIEs_t; +typedef struct UE_ContextReferenceAtSeNB_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue { + UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_PR present; + union UE_ContextReferenceAtSeNB_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtSeNB_ItemExtIEs_t; +typedef struct UE_ContextReferenceAtWT_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextReferenceAtWT_ItemExtIEs__extensionValue { + UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_PR present; + union UE_ContextReferenceAtWT_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtWT_ItemExtIEs_t; +typedef struct UE_ContextReferenceAtSgNB_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue { + UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_PR present; + union UE_ContextReferenceAtSgNB_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtSgNB_ItemExtIEs_t; +typedef struct E_RABs_Admitted_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_Item_ExtIEs__extensionValue { + E_RABs_Admitted_Item_ExtIEs__extensionValue_PR present; + union E_RABs_Admitted_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_Item_ExtIEs_t; +typedef struct E_RABs_SubjectToStatusTransfer_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue { + E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR present; + union E_RABs_SubjectToStatusTransfer_ItemExtIEs__extensionValue_u { + ReceiveStatusOfULPDCPSDUsExtended_t ReceiveStatusOfULPDCPSDUsExtended; + COUNTValueExtended_t COUNTValueExtended; + ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t ReceiveStatusOfULPDCPSDUsPDCP_SNlength18; + COUNTvaluePDCP_SNlength18_t COUNTvaluePDCP_SNlength18; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_ItemExtIEs_t; +typedef struct CellInformation_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellInformation_Item_ExtIEs__extensionValue { + CellInformation_Item_ExtIEs__extensionValue_PR present; + union CellInformation_Item_ExtIEs__extensionValue_u { + ABSInformation_t ABSInformation; + InvokeIndication_t InvokeIndication; + SubframeAssignment_t SubframeAssignment; + ExtendedULInterferenceOverloadInfo_t ExtendedULInterferenceOverloadInfo; + CoMPInformation_t CoMPInformation; + DynamicDLTransmissionInformation_t DynamicDLTransmissionInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_Item_ExtIEs_t; +typedef struct ServedCellsToModify_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCellsToModify_Item_ExtIEs__extensionValue { + ServedCellsToModify_Item_ExtIEs__extensionValue_PR present; + union ServedCellsToModify_Item_ExtIEs__extensionValue_u { + DeactivationIndication_t DeactivationIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToModify_Item_ExtIEs_t; +typedef struct CellToReport_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellToReport_Item_ExtIEs__extensionValue { + CellToReport_Item_ExtIEs__extensionValue_PR present; + union CellToReport_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_Item_ExtIEs_t; +typedef struct MeasurementInitiationResult_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementInitiationResult_Item_ExtIEs__extensionValue { + MeasurementInitiationResult_Item_ExtIEs__extensionValue_PR present; + union MeasurementInitiationResult_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_Item_ExtIEs_t; +typedef struct MeasurementFailureCause_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementFailureCause_Item_ExtIEs__extensionValue { + MeasurementFailureCause_Item_ExtIEs__extensionValue_PR present; + union MeasurementFailureCause_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_Item_ExtIEs_t; +typedef struct CompleteFailureCauseInformation_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompleteFailureCauseInformation_Item_ExtIEs__extensionValue { + CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_PR present; + union CompleteFailureCauseInformation_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_Item_ExtIEs_t; +typedef struct CellMeasurementResult_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellMeasurementResult_Item_ExtIEs__extensionValue { + CellMeasurementResult_Item_ExtIEs__extensionValue_PR present; + union CellMeasurementResult_Item_ExtIEs__extensionValue_u { + CompositeAvailableCapacityGroup_t CompositeAvailableCapacityGroup; + ABS_Status_t ABS_Status; + RSRPMRList_t RSRPMRList; + CSIReportList_t CSIReportList; + CellReportingIndicator_t CellReportingIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_Item_ExtIEs_t; +typedef struct ServedCellsToActivate_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCellsToActivate_Item_ExtIEs__extensionValue { + ServedCellsToActivate_Item_ExtIEs__extensionValue_PR present; + union ServedCellsToActivate_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToActivate_Item_ExtIEs_t; +typedef struct ActivatedCellList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ActivatedCellList_Item_ExtIEs__extensionValue { + ActivatedCellList_Item_ExtIEs__extensionValue_PR present; + union ActivatedCellList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedCellList_Item_ExtIEs_t; +typedef struct RNL_Header_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RNL_Header_Item_ExtIEs__extensionValue { + RNL_Header_Item_ExtIEs__extensionValue_PR present; + union RNL_Header_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RNL_Header_Item_ExtIEs_t; +typedef struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_u { + Correlation_ID_t Correlation_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_Item_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_t; +typedef struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue { + ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_PR present; + union ResponseInformationSeNBReconfComp_SuccessItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_SuccessItemExtIEs_t; +typedef struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue { + ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR present; + union ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_t; +typedef struct UE_ContextInformationSeNBModReqExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformationSeNBModReqExtIEs__extensionValue { + UE_ContextInformationSeNBModReqExtIEs__extensionValue_PR present; + union UE_ContextInformationSeNBModReqExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationSeNBModReqExtIEs_t; +typedef struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs__extensionValue_u { + Correlation_ID_t Correlation_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqdItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue { + E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_ModReqdItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqdItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_t; +typedef struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue { + E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_t; +typedef struct E_RABs_SubjectToCounterCheckItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue { + E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_PR present; + union E_RABs_SubjectToCounterCheckItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheckItemExtIEs_t; +typedef struct UE_ContextInformationRetrieve_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformationRetrieve_ExtIEs__extensionValue { + UE_ContextInformationRetrieve_ExtIEs__extensionValue_PR present; + union UE_ContextInformationRetrieve_ExtIEs__extensionValue_u { + UESidelinkAggregateMaximumBitRate_t UESidelinkAggregateMaximumBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationRetrieve_ExtIEs_t; +typedef struct E_RABs_ToBeSetupRetrieve_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue { + E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeSetupRetrieve_ItemExtIEs__extensionValue_u { + GTPtunnelEndpoint_t GTPtunnelEndpoint; + DL_Forwarding_t DL_Forwarding; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetupRetrieve_ItemExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + RLCMode_t RLCMode; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + DuplicationActivation_t DuplicationActivation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + LCID_t LCID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue { + ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_PR present; + union ResponseInformationSgNBReconfComp_SuccessItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_SuccessItemExtIEs_t; +typedef struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue { + ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_PR present; + union ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_t; +typedef struct UE_ContextInformationSgNBModReqExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_ContextInformationSgNBModReqExtIEs__extensionValue { + UE_ContextInformationSgNBModReqExtIEs__extensionValue_PR present; + union UE_ContextInformationSgNBModReqExtIEs__extensionValue_u { + SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationSgNBModReqExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + RLCMode_t RLCMode; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + DuplicationActivation_t DuplicationActivation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + RLC_Status_t RLC_Status; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + GTPtunnelEndpoint_t GTPtunnelEndpoint; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + LCID_t LCID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue { + E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + GTPtunnelEndpoint_t GTPtunnelEndpoint; + RLC_Status_t RLC_Status; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs__extensionValue_u { + RLCMode_t RLCMode; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + NewDRBIDrequest_t NewDRBIDrequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + RLC_Status_t RLC_Status; + LCID_t LCID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + PDCPSnLength_t PDCPSnLength; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue { + E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_PR present; + union E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue { + E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_t; +typedef struct ServedEUTRAcellsENDCX2Management_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue { + ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_PR present; + union ServedEUTRAcellsENDCX2Management_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsENDCX2Management_ExtIEs_t; +typedef struct En_gNBServedCells_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNBServedCells_ExtIEs__extensionValue { + En_gNBServedCells_ExtIEs__extensionValue_PR present; + union En_gNBServedCells_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNBServedCells_ExtIEs_t; +typedef struct ServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedNRCell_Information_ExtIEs__extensionValue { + ServedNRCell_Information_ExtIEs__extensionValue_PR present; + union ServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCell_Information_ExtIEs_t; +typedef struct FDD_InfoServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FDD_InfoServedNRCell_Information_ExtIEs__extensionValue { + FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR present; + union FDD_InfoServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_InfoServedNRCell_Information_ExtIEs_t; +typedef struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue { + FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR present; + union FDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_InfoNeighbourServedNRCell_Information_ExtIEs_t; +typedef struct TDD_InfoServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TDD_InfoServedNRCell_Information_ExtIEs__extensionValue { + TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_PR present; + union TDD_InfoServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_InfoServedNRCell_Information_ExtIEs_t; +typedef struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue { + TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_PR present; + union TDD_InfoNeighbourServedNRCell_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_InfoNeighbourServedNRCell_Information_ExtIEs_t; +typedef struct NRNeighbour_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRNeighbour_Information_ExtIEs__extensionValue { + NRNeighbour_Information_ExtIEs__extensionValue_PR present; + union NRNeighbour_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRNeighbour_Information_ExtIEs_t; +typedef struct Limited_list_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Limited_list_ExtIEs__extensionValue { + Limited_list_ExtIEs__extensionValue_PR present; + union Limited_list_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Limited_list_ExtIEs_t; +typedef struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue { + ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_PR present; + union ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_t; +typedef struct ServedNRCellsToModify_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedNRCellsToModify_Item_ExtIEs__extensionValue { + ServedNRCellsToModify_Item_ExtIEs__extensionValue_PR present; + union ServedNRCellsToModify_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToModify_Item_ExtIEs_t; +typedef struct ServedNRCellsToActivate_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedNRCellsToActivate_Item_ExtIEs__extensionValue { + ServedNRCellsToActivate_Item_ExtIEs__extensionValue_PR present; + union ServedNRCellsToActivate_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToActivate_Item_ExtIEs_t; +typedef struct ActivatedNRCellList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ActivatedNRCellList_Item_ExtIEs__extensionValue { + ActivatedNRCellList_Item_ExtIEs__extensionValue_PR present; + union ActivatedNRCellList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ActivatedNRCellList_Item_ExtIEs_t; +typedef struct E_RABs_DataForwardingAddress_ItemExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue { + E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_PR present; + union E_RABs_DataForwardingAddress_ItemExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_ItemExtIEs_t; +typedef struct ABSInformationFDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ABSInformationFDD_ExtIEs__extensionValue { + ABSInformationFDD_ExtIEs__extensionValue_PR present; + union ABSInformationFDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformationFDD_ExtIEs_t; +typedef struct ABSInformationTDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ABSInformationTDD_ExtIEs__extensionValue { + ABSInformationTDD_ExtIEs__extensionValue_PR present; + union ABSInformationTDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABSInformationTDD_ExtIEs_t; +typedef struct ABS_Status_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ABS_Status_ExtIEs__extensionValue { + ABS_Status_ExtIEs__extensionValue_PR present; + union ABS_Status_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ABS_Status_ExtIEs_t; +typedef struct AdditionalSpecialSubframe_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AdditionalSpecialSubframe_Info_ExtIEs__extensionValue { + AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_PR present; + union AdditionalSpecialSubframe_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalSpecialSubframe_Info_ExtIEs_t; +typedef struct AdditionalSpecialSubframeExtension_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue { + AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_PR present; + union AdditionalSpecialSubframeExtension_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AdditionalSpecialSubframeExtension_Info_ExtIEs_t; +typedef struct AllocationAndRetentionPriority_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AllocationAndRetentionPriority_ExtIEs__extensionValue { + AllocationAndRetentionPriority_ExtIEs__extensionValue_PR present; + union AllocationAndRetentionPriority_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AllocationAndRetentionPriority_ExtIEs_t; +typedef struct AS_SecurityInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct AS_SecurityInformation_ExtIEs__extensionValue { + AS_SecurityInformation_ExtIEs__extensionValue_PR present; + union AS_SecurityInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} AS_SecurityInformation_ExtIEs_t; +typedef struct BluetoothMeasurementConfiguration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue { + BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR present; + union BluetoothMeasurementConfiguration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BluetoothMeasurementConfiguration_ExtIEs_t; +typedef struct CellBasedMDT_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellBasedMDT_ExtIEs__extensionValue { + CellBasedMDT_ExtIEs__extensionValue_PR present; + union CellBasedMDT_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellBasedMDT_ExtIEs_t; +typedef struct CellBasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellBasedQMC_ExtIEs__extensionValue { + CellBasedQMC_ExtIEs__extensionValue_PR present; + union CellBasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellBasedQMC_ExtIEs_t; +typedef struct CellReplacingInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellReplacingInfo_ExtIEs__extensionValue { + CellReplacingInfo_ExtIEs__extensionValue_PR present; + union CellReplacingInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellReplacingInfo_ExtIEs_t; +typedef struct CellType_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellType_ExtIEs__extensionValue { + CellType_ExtIEs__extensionValue_PR present; + union CellType_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellType_ExtIEs_t; +typedef struct CNTypeRestrictionsItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CNTypeRestrictionsItem_ExtIEs__extensionValue { + CNTypeRestrictionsItem_ExtIEs__extensionValue_PR present; + union CNTypeRestrictionsItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CNTypeRestrictionsItem_ExtIEs_t; +typedef struct CoMPHypothesisSetItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPHypothesisSetItem_ExtIEs__extensionValue { + CoMPHypothesisSetItem_ExtIEs__extensionValue_PR present; + union CoMPHypothesisSetItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPHypothesisSetItem_ExtIEs_t; +typedef struct CoMPInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPInformation_ExtIEs__extensionValue { + CoMPInformation_ExtIEs__extensionValue_PR present; + union CoMPInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformation_ExtIEs_t; +typedef struct CoMPInformationItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPInformationItem_ExtIEs__extensionValue { + CoMPInformationItem_ExtIEs__extensionValue_PR present; + union CoMPInformationItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationItem_ExtIEs_t; +typedef struct CoMPInformationStartTime_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CoMPInformationStartTime_ExtIEs__extensionValue { + CoMPInformationStartTime_ExtIEs__extensionValue_PR present; + union CoMPInformationStartTime_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CoMPInformationStartTime_ExtIEs_t; +typedef struct CompositeAvailableCapacity_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompositeAvailableCapacity_ExtIEs__extensionValue { + CompositeAvailableCapacity_ExtIEs__extensionValue_PR present; + union CompositeAvailableCapacity_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompositeAvailableCapacity_ExtIEs_t; +typedef struct CompositeAvailableCapacityGroup_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompositeAvailableCapacityGroup_ExtIEs__extensionValue { + CompositeAvailableCapacityGroup_ExtIEs__extensionValue_PR present; + union CompositeAvailableCapacityGroup_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompositeAvailableCapacityGroup_ExtIEs_t; +typedef struct COUNTvalue_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct COUNTvalue_ExtIEs__extensionValue { + COUNTvalue_ExtIEs__extensionValue_PR present; + union COUNTvalue_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTvalue_ExtIEs_t; +typedef struct COUNTValueExtended_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct COUNTValueExtended_ExtIEs__extensionValue { + COUNTValueExtended_ExtIEs__extensionValue_PR present; + union COUNTValueExtended_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTValueExtended_ExtIEs_t; +typedef struct COUNTvaluePDCP_SNlength18_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue { + COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR present; + union COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} COUNTvaluePDCP_SNlength18_ExtIEs_t; +typedef struct CriticalityDiagnostics_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CriticalityDiagnostics_ExtIEs__extensionValue { + CriticalityDiagnostics_ExtIEs__extensionValue_PR present; + union CriticalityDiagnostics_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_ExtIEs_t; +typedef struct CriticalityDiagnostics_IE_List_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CriticalityDiagnostics_IE_List_ExtIEs__extensionValue { + CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_PR present; + union CriticalityDiagnostics_IE_List_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_ExtIEs_t; +typedef struct CSIReportList_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CSIReportList_ExtIEs__extensionValue { + CSIReportList_ExtIEs__extensionValue_PR present; + union CSIReportList_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportList_ExtIEs_t; +typedef struct CSIReportPerCSIProcess_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CSIReportPerCSIProcess_ExtIEs__extensionValue { + CSIReportPerCSIProcess_ExtIEs__extensionValue_PR present; + union CSIReportPerCSIProcess_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcess_ExtIEs_t; +typedef struct CSIReportPerCSIProcessItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CSIReportPerCSIProcessItem_ExtIEs__extensionValue { + CSIReportPerCSIProcessItem_ExtIEs__extensionValue_PR present; + union CSIReportPerCSIProcessItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CSIReportPerCSIProcessItem_ExtIEs_t; +typedef struct DataTrafficResourceIndication_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DataTrafficResourceIndication_ExtIEs__extensionValue { + DataTrafficResourceIndication_ExtIEs__extensionValue_PR present; + union DataTrafficResourceIndication_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataTrafficResourceIndication_ExtIEs_t; +typedef struct DeliveryStatus_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DeliveryStatus_ExtIEs__extensionValue { + DeliveryStatus_ExtIEs__extensionValue_PR present; + union DeliveryStatus_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DeliveryStatus_ExtIEs_t; +typedef struct DynamicNAICSInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DynamicNAICSInformation_ExtIEs__extensionValue { + DynamicNAICSInformation_ExtIEs__extensionValue_PR present; + union DynamicNAICSInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DynamicNAICSInformation_ExtIEs_t; +typedef struct ECGI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ECGI_ExtIEs__extensionValue { + ECGI_ExtIEs__extensionValue_PR present; + union ECGI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ECGI_ExtIEs_t; +typedef struct EnhancedRNTP_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EnhancedRNTP_ExtIEs__extensionValue { + EnhancedRNTP_ExtIEs__extensionValue_PR present; + union EnhancedRNTP_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnhancedRNTP_ExtIEs_t; +typedef struct EnhancedRNTPStartTime_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EnhancedRNTPStartTime_ExtIEs__extensionValue { + EnhancedRNTPStartTime_ExtIEs__extensionValue_PR present; + union EnhancedRNTPStartTime_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EnhancedRNTPStartTime_ExtIEs_t; +typedef struct EN_DC_ResourceConfigurationExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EN_DC_ResourceConfigurationExtIEs__extensionValue { + EN_DC_ResourceConfigurationExtIEs__extensionValue_PR present; + union EN_DC_ResourceConfigurationExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EN_DC_ResourceConfigurationExtIEs_t; +typedef struct ERABActivityNotifyItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ERABActivityNotifyItem_ExtIEs__extensionValue { + ERABActivityNotifyItem_ExtIEs__extensionValue_PR present; + union ERABActivityNotifyItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ERABActivityNotifyItem_ExtIEs_t; +typedef struct E_RAB_Level_QoS_Parameters_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue { + E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_PR present; + union E_RAB_Level_QoS_Parameters_ExtIEs__extensionValue_u { + Packet_LossRate_t Packet_LossRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_Level_QoS_Parameters_ExtIEs_t; +typedef struct E_RAB_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RAB_Item_ExtIEs__extensionValue { + E_RAB_Item_ExtIEs__extensionValue_PR present; + union E_RAB_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_Item_ExtIEs_t; +typedef struct E_RABUsageReport_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABUsageReport_Item_ExtIEs__extensionValue { + E_RABUsageReport_Item_ExtIEs__extensionValue_PR present; + union E_RABUsageReport_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReport_Item_ExtIEs_t; +typedef struct ExpectedUEBehaviour_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ExpectedUEBehaviour_ExtIEs__extensionValue { + ExpectedUEBehaviour_ExtIEs__extensionValue_PR present; + union ExpectedUEBehaviour_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExpectedUEBehaviour_ExtIEs_t; +typedef struct ExpectedUEActivityBehaviour_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue { + ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR present; + union ExpectedUEActivityBehaviour_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExpectedUEActivityBehaviour_ExtIEs_t; +typedef struct ExtendedULInterferenceOverloadInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue { + ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_PR present; + union ExtendedULInterferenceOverloadInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ExtendedULInterferenceOverloadInfo_ExtIEs_t; +typedef struct FDD_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FDD_Info_ExtIEs__extensionValue { + FDD_Info_ExtIEs__extensionValue_PR present; + union FDD_Info_ExtIEs__extensionValue_u { + EARFCNExtension_t EARFCNExtension; + OffsetOfNbiotChannelNumberToEARFCN_t OffsetOfNbiotChannelNumberToEARFCN; + NRS_NSSS_PowerOffset_t NRS_NSSS_PowerOffset; + NSSS_NumOccasionDifferentPrecoder_t NSSS_NumOccasionDifferentPrecoder; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FDD_Info_ExtIEs_t; +typedef struct ForbiddenTAs_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ForbiddenTAs_Item_ExtIEs__extensionValue { + ForbiddenTAs_Item_ExtIEs__extensionValue_PR present; + union ForbiddenTAs_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenTAs_Item_ExtIEs_t; +typedef struct ForbiddenLAs_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ForbiddenLAs_Item_ExtIEs__extensionValue { + ForbiddenLAs_Item_ExtIEs__extensionValue_PR present; + union ForbiddenLAs_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ForbiddenLAs_Item_ExtIEs_t; +typedef struct FreqBandNrItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct FreqBandNrItem_ExtIEs__extensionValue { + FreqBandNrItem_ExtIEs__extensionValue_PR present; + union FreqBandNrItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} FreqBandNrItem_ExtIEs_t; +typedef struct GBR_QosInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GBR_QosInformation_ExtIEs__extensionValue { + GBR_QosInformation_ExtIEs__extensionValue_PR present; + union GBR_QosInformation_ExtIEs__extensionValue_u { + ExtendedBitRate_t ExtendedBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GBR_QosInformation_ExtIEs_t; +typedef struct GlobalENB_ID_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GlobalENB_ID_ExtIEs__extensionValue { + GlobalENB_ID_ExtIEs__extensionValue_PR present; + union GlobalENB_ID_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalENB_ID_ExtIEs_t; +typedef struct GlobalGNB_ID_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GlobalGNB_ID_ExtIEs__extensionValue { + GlobalGNB_ID_ExtIEs__extensionValue_PR present; + union GlobalGNB_ID_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalGNB_ID_ExtIEs_t; +typedef struct GTPtunnelEndpoint_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GTPtunnelEndpoint_ExtIEs__extensionValue { + GTPtunnelEndpoint_ExtIEs__extensionValue_PR present; + union GTPtunnelEndpoint_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GTPtunnelEndpoint_ExtIEs_t; +typedef struct GU_Group_ID_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GU_Group_ID_ExtIEs__extensionValue { + GU_Group_ID_ExtIEs__extensionValue_PR present; + union GU_Group_ID_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GU_Group_ID_ExtIEs_t; +typedef struct GUMMEI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GUMMEI_ExtIEs__extensionValue { + GUMMEI_ExtIEs__extensionValue_PR present; + union GUMMEI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GUMMEI_ExtIEs_t; +typedef struct HandoverRestrictionList_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverRestrictionList_ExtIEs__extensionValue { + HandoverRestrictionList_ExtIEs__extensionValue_PR present; + union HandoverRestrictionList_ExtIEs__extensionValue_u { + NRrestrictioninEPSasSecondaryRAT_t NRrestrictioninEPSasSecondaryRAT; + CNTypeRestrictions_t CNTypeRestrictions; + NRrestrictionin5GS_t NRrestrictionin5GS; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRestrictionList_ExtIEs_t; +typedef struct HWLoadIndicator_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HWLoadIndicator_ExtIEs__extensionValue { + HWLoadIndicator_ExtIEs__extensionValue_PR present; + union HWLoadIndicator_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HWLoadIndicator_ExtIEs_t; +typedef struct LastVisitedEUTRANCellInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue { + LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR present; + union LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_u { + Time_UE_StayedInCell_EnhancedGranularity_t Time_UE_StayedInCell_EnhancedGranularity; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LastVisitedEUTRANCellInformation_ExtIEs_t; +typedef struct LocationReportingInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct LocationReportingInformation_ExtIEs__extensionValue { + LocationReportingInformation_ExtIEs__extensionValue_PR present; + union LocationReportingInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LocationReportingInformation_ExtIEs_t; +typedef struct M1PeriodicReporting_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M1PeriodicReporting_ExtIEs__extensionValue { + M1PeriodicReporting_ExtIEs__extensionValue_PR present; + union M1PeriodicReporting_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M1PeriodicReporting_ExtIEs_t; +typedef struct M1ThresholdEventA2_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M1ThresholdEventA2_ExtIEs__extensionValue { + M1ThresholdEventA2_ExtIEs__extensionValue_PR present; + union M1ThresholdEventA2_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M1ThresholdEventA2_ExtIEs_t; +typedef struct M3Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M3Configuration_ExtIEs__extensionValue { + M3Configuration_ExtIEs__extensionValue_PR present; + union M3Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M3Configuration_ExtIEs_t; +typedef struct M4Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M4Configuration_ExtIEs__extensionValue { + M4Configuration_ExtIEs__extensionValue_PR present; + union M4Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M4Configuration_ExtIEs_t; +typedef struct M5Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M5Configuration_ExtIEs__extensionValue { + M5Configuration_ExtIEs__extensionValue_PR present; + union M5Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M5Configuration_ExtIEs_t; +typedef struct M6Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M6Configuration_ExtIEs__extensionValue { + M6Configuration_ExtIEs__extensionValue_PR present; + union M6Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M6Configuration_ExtIEs_t; +typedef struct M7Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct M7Configuration_ExtIEs__extensionValue { + M7Configuration_ExtIEs__extensionValue_PR present; + union M7Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} M7Configuration_ExtIEs_t; +typedef struct MDT_Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MDT_Configuration_ExtIEs__extensionValue { + MDT_Configuration_ExtIEs__extensionValue_PR present; + union MDT_Configuration_ExtIEs__extensionValue_u { + M3Configuration_t M3Configuration; + M4Configuration_t M4Configuration; + M5Configuration_t M5Configuration; + MDT_Location_Info_t MDT_Location_Info; + MDTPLMNList_t MDTPLMNList; + M6Configuration_t M6Configuration; + M7Configuration_t M7Configuration; + BluetoothMeasurementConfiguration_t BluetoothMeasurementConfiguration; + WLANMeasurementConfiguration_t WLANMeasurementConfiguration; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MDT_Configuration_ExtIEs_t; +typedef struct MeNBResourceCoordinationInformationExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeNBResourceCoordinationInformationExtIEs__extensionValue { + MeNBResourceCoordinationInformationExtIEs__extensionValue_PR present; + union MeNBResourceCoordinationInformationExtIEs__extensionValue_u { + NRCGI_t NRCGI; + MeNBCoordinationAssistanceInformation_t MeNBCoordinationAssistanceInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeNBResourceCoordinationInformationExtIEs_t; +typedef struct MBSFN_Subframe_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MBSFN_Subframe_Info_ExtIEs__extensionValue { + MBSFN_Subframe_Info_ExtIEs__extensionValue_PR present; + union MBSFN_Subframe_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MBSFN_Subframe_Info_ExtIEs_t; +typedef struct BandInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct BandInfo_ExtIEs__extensionValue { + BandInfo_ExtIEs__extensionValue_PR present; + union BandInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} BandInfo_ExtIEs_t; +typedef struct SplitSRB_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SplitSRB_ExtIEs__extensionValue { + SplitSRB_ExtIEs__extensionValue_PR present; + union SplitSRB_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SplitSRB_ExtIEs_t; +typedef struct UENRMeasurement_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UENRMeasurement_ExtIEs__extensionValue { + UENRMeasurement_ExtIEs__extensionValue_PR present; + union UENRMeasurement_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UENRMeasurement_ExtIEs_t; +typedef struct Neighbour_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Neighbour_Information_ExtIEs__extensionValue { + Neighbour_Information_ExtIEs__extensionValue_PR present; + union Neighbour_Information_ExtIEs__extensionValue_u { + TAC_t TAC; + EARFCNExtension_t EARFCNExtension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Neighbour_Information_ExtIEs_t; +typedef struct NRFreqInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRFreqInfo_ExtIEs__extensionValue { + NRFreqInfo_ExtIEs__extensionValue_PR present; + union NRFreqInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRFreqInfo_ExtIEs_t; +typedef struct NRCGI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRCGI_ExtIEs__extensionValue { + NRCGI_ExtIEs__extensionValue_PR present; + union NRCGI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRCGI_ExtIEs_t; +typedef struct NR_TxBW_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NR_TxBW_ExtIEs__extensionValue { + NR_TxBW_ExtIEs__extensionValue_PR present; + union NR_TxBW_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NR_TxBW_ExtIEs_t; +typedef struct NRUESecurityCapabilities_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct NRUESecurityCapabilities_ExtIEs__extensionValue { + NRUESecurityCapabilities_ExtIEs__extensionValue_PR present; + union NRUESecurityCapabilities_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} NRUESecurityCapabilities_ExtIEs_t; +typedef struct PRACH_Configuration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct PRACH_Configuration_ExtIEs__extensionValue { + PRACH_Configuration_ExtIEs__extensionValue_PR present; + union PRACH_Configuration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PRACH_Configuration_ExtIEs_t; +typedef struct PLMNAreaBasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct PLMNAreaBasedQMC_ExtIEs__extensionValue { + PLMNAreaBasedQMC_ExtIEs__extensionValue_PR present; + union PLMNAreaBasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} PLMNAreaBasedQMC_ExtIEs_t; +typedef struct ProSeAuthorized_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProSeAuthorized_ExtIEs__extensionValue { + ProSeAuthorized_ExtIEs__extensionValue_PR present; + union ProSeAuthorized_ExtIEs__extensionValue_u { + ProSeUEtoNetworkRelaying_t ProSeUEtoNetworkRelaying; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProSeAuthorized_ExtIEs_t; +typedef struct ProtectedEUTRAResourceIndication_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProtectedEUTRAResourceIndication_ExtIEs__extensionValue { + ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_PR present; + union ProtectedEUTRAResourceIndication_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedEUTRAResourceIndication_ExtIEs_t; +typedef struct ProtectedFootprintTimePattern_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProtectedFootprintTimePattern_ExtIEs__extensionValue { + ProtectedFootprintTimePattern_ExtIEs__extensionValue_PR present; + union ProtectedFootprintTimePattern_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedFootprintTimePattern_ExtIEs_t; +typedef struct ProtectedResourceList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ProtectedResourceList_Item_ExtIEs__extensionValue { + ProtectedResourceList_Item_ExtIEs__extensionValue_PR present; + union ProtectedResourceList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtectedResourceList_Item_ExtIEs_t; +typedef struct RadioResourceStatus_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RadioResourceStatus_ExtIEs__extensionValue { + RadioResourceStatus_ExtIEs__extensionValue_PR present; + union RadioResourceStatus_ExtIEs__extensionValue_u { + DL_scheduling_PDCCH_CCE_usage_t DL_scheduling_PDCCH_CCE_usage; + UL_scheduling_PDCCH_CCE_usage_t UL_scheduling_PDCCH_CCE_usage; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadioResourceStatus_ExtIEs_t; +typedef struct RelativeNarrowbandTxPower_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RelativeNarrowbandTxPower_ExtIEs__extensionValue { + RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR present; + union RelativeNarrowbandTxPower_ExtIEs__extensionValue_u { + EnhancedRNTP_t EnhancedRNTP; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RelativeNarrowbandTxPower_ExtIEs_t; +typedef struct ReservedSubframePattern_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ReservedSubframePattern_ExtIEs__extensionValue { + ReservedSubframePattern_ExtIEs__extensionValue_PR present; + union ReservedSubframePattern_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReservedSubframePattern_ExtIEs_t; +typedef struct RLC_Status_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RLC_Status_ExtIEs__extensionValue { + RLC_Status_ExtIEs__extensionValue_PR present; + union RLC_Status_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLC_Status_ExtIEs_t; +typedef struct RSRPMeasurementResult_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RSRPMeasurementResult_ExtIEs__extensionValue { + RSRPMeasurementResult_ExtIEs__extensionValue_PR present; + union RSRPMeasurementResult_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMeasurementResult_ExtIEs_t; +typedef struct RSRPMRList_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RSRPMRList_ExtIEs__extensionValue { + RSRPMRList_ExtIEs__extensionValue_PR present; + union RSRPMRList_ExtIEs__extensionValue_u { + UEID_t UEID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMRList_ExtIEs_t; +typedef struct S1TNLLoadIndicator_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct S1TNLLoadIndicator_ExtIEs__extensionValue { + S1TNLLoadIndicator_ExtIEs__extensionValue_PR present; + union S1TNLLoadIndicator_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1TNLLoadIndicator_ExtIEs_t; +typedef struct SecondaryRATUsageReport_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SecondaryRATUsageReport_Item_ExtIEs__extensionValue { + SecondaryRATUsageReport_Item_ExtIEs__extensionValue_PR present; + union SecondaryRATUsageReport_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReport_Item_ExtIEs_t; +typedef struct ServedCell_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCell_ExtIEs__extensionValue { + ServedCell_ExtIEs__extensionValue_PR present; + union ServedCell_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCell_ExtIEs_t; +typedef struct ServedCell_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ServedCell_Information_ExtIEs__extensionValue { + ServedCell_Information_ExtIEs__extensionValue_PR present; + union ServedCell_Information_ExtIEs__extensionValue_u { + Number_of_Antennaports_t Number_of_Antennaports; + PRACH_Configuration_t PRACH_Configuration; + MBSFN_Subframe_Infolist_t MBSFN_Subframe_Infolist; + CSG_Id_t CSG_Id; + MBMS_Service_Area_Identity_List_t MBMS_Service_Area_Identity_List; + MultibandInfoList_t MultibandInfoList; + FreqBandIndicatorPriority_t FreqBandIndicatorPriority; + BandwidthReducedSI_t BandwidthReducedSI; + ProtectedEUTRAResourceIndication_t ProtectedEUTRAResourceIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCell_Information_ExtIEs_t; +typedef struct SgNBResourceCoordinationInformationExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBResourceCoordinationInformationExtIEs__extensionValue { + SgNBResourceCoordinationInformationExtIEs__extensionValue_PR present; + union SgNBResourceCoordinationInformationExtIEs__extensionValue_u { + ECGI_t ECGI; + SgNBCoordinationAssistanceInformation_t SgNBCoordinationAssistanceInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBResourceCoordinationInformationExtIEs_t; +typedef struct SpecialSubframe_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SpecialSubframe_Info_ExtIEs__extensionValue { + SpecialSubframe_Info_ExtIEs__extensionValue_PR present; + union SpecialSubframe_Info_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpecialSubframe_Info_ExtIEs_t; +typedef struct SubbandCQI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SubbandCQI_ExtIEs__extensionValue { + SubbandCQI_ExtIEs__extensionValue_PR present; + union SubbandCQI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQI_ExtIEs_t; +typedef struct Subscription_Based_UE_DifferentiationInfo_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue { + Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR present; + union Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Subscription_Based_UE_DifferentiationInfo_ExtIEs_t; +typedef struct ScheduledCommunicationTime_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ScheduledCommunicationTime_ExtIEs__extensionValue { + ScheduledCommunicationTime_ExtIEs__extensionValue_PR present; + union ScheduledCommunicationTime_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ScheduledCommunicationTime_ExtIEs_t; +typedef struct SubbandCQIItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SubbandCQIItem_ExtIEs__extensionValue { + SubbandCQIItem_ExtIEs__extensionValue_PR present; + union SubbandCQIItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQIItem_ExtIEs_t; +typedef struct SULInformation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SULInformation_ExtIEs__extensionValue { + SULInformation_ExtIEs__extensionValue_PR present; + union SULInformation_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SULInformation_ExtIEs_t; +typedef struct SupportedSULFreqBandItem_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SupportedSULFreqBandItem_ExtIEs__extensionValue { + SupportedSULFreqBandItem_ExtIEs__extensionValue_PR present; + union SupportedSULFreqBandItem_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SupportedSULFreqBandItem_ExtIEs_t; +typedef struct TABasedMDT_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TABasedMDT_ExtIEs__extensionValue { + TABasedMDT_ExtIEs__extensionValue_PR present; + union TABasedMDT_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TABasedMDT_ExtIEs_t; +typedef struct TAIBasedMDT_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TAIBasedMDT_ExtIEs__extensionValue { + TAIBasedMDT_ExtIEs__extensionValue_PR present; + union TAIBasedMDT_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIBasedMDT_ExtIEs_t; +typedef struct TAI_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TAI_Item_ExtIEs__extensionValue { + TAI_Item_ExtIEs__extensionValue_PR present; + union TAI_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAI_Item_ExtIEs_t; +typedef struct TABasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TABasedQMC_ExtIEs__extensionValue { + TABasedQMC_ExtIEs__extensionValue_PR present; + union TABasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TABasedQMC_ExtIEs_t; +typedef struct TAIBasedQMC_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TAIBasedQMC_ExtIEs__extensionValue { + TAIBasedQMC_ExtIEs__extensionValue_PR present; + union TAIBasedQMC_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIBasedQMC_ExtIEs_t; +typedef struct TDD_Info_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TDD_Info_ExtIEs__extensionValue { + TDD_Info_ExtIEs__extensionValue_PR present; + union TDD_Info_ExtIEs__extensionValue_u { + AdditionalSpecialSubframe_Info_t AdditionalSpecialSubframe_Info; + EARFCNExtension_t EARFCNExtension; + AdditionalSpecialSubframeExtension_Info_t AdditionalSpecialSubframeExtension_Info; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_Info_ExtIEs_t; +typedef struct TraceActivation_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct TraceActivation_ExtIEs__extensionValue { + TraceActivation_ExtIEs__extensionValue_PR present; + union TraceActivation_ExtIEs__extensionValue_u { + MDT_Configuration_t MDT_Configuration; + UEAppLayerMeasConfig_t UEAppLayerMeasConfig; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TraceActivation_ExtIEs_t; +typedef struct Tunnel_Information_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct Tunnel_Information_ExtIEs__extensionValue { + Tunnel_Information_ExtIEs__extensionValue_PR present; + union Tunnel_Information_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Tunnel_Information_ExtIEs_t; +typedef struct UEAggregate_MaximumBitrate_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEAggregate_MaximumBitrate_ExtIEs__extensionValue { + UEAggregate_MaximumBitrate_ExtIEs__extensionValue_PR present; + union UEAggregate_MaximumBitrate_ExtIEs__extensionValue_u { + ExtendedBitRate_t ExtendedBitRate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEAggregate_MaximumBitrate_ExtIEs_t; +typedef struct UEAppLayerMeasConfig_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEAppLayerMeasConfig_ExtIEs__extensionValue { + UEAppLayerMeasConfig_ExtIEs__extensionValue_PR present; + union UEAppLayerMeasConfig_ExtIEs__extensionValue_u { + ServiceType_t ServiceType; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEAppLayerMeasConfig_ExtIEs_t; +typedef struct UESecurityCapabilities_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UESecurityCapabilities_ExtIEs__extensionValue { + UESecurityCapabilities_ExtIEs__extensionValue_PR present; + union UESecurityCapabilities_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UESecurityCapabilities_ExtIEs_t; +typedef struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue { + UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_PR present; + union UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_t; +typedef struct UEsToBeResetList_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEsToBeResetList_Item_ExtIEs__extensionValue { + UEsToBeResetList_Item_ExtIEs__extensionValue_PR present; + union UEsToBeResetList_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEsToBeResetList_Item_ExtIEs_t; +typedef struct ULandDLSharing_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ULandDLSharing_ExtIEs__extensionValue { + ULandDLSharing_ExtIEs__extensionValue_PR present; + union ULandDLSharing_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULandDLSharing_ExtIEs_t; +typedef struct ULConfiguration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ULConfiguration_ExtIEs__extensionValue { + ULConfiguration_ExtIEs__extensionValue_PR present; + union ULConfiguration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULConfiguration_ExtIEs_t; +typedef struct UL_HighInterferenceIndicationInfo_Item_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue { + UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_PR present; + union UL_HighInterferenceIndicationInfo_Item_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_HighInterferenceIndicationInfo_Item_ExtIEs_t; +typedef struct ULOnlySharing_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ULOnlySharing_ExtIEs__extensionValue { + ULOnlySharing_ExtIEs__extensionValue_PR present; + union ULOnlySharing_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULOnlySharing_ExtIEs_t; +typedef struct UsableABSInformationFDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UsableABSInformationFDD_ExtIEs__extensionValue { + UsableABSInformationFDD_ExtIEs__extensionValue_PR present; + union UsableABSInformationFDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformationFDD_ExtIEs_t; +typedef struct UsableABSInformationTDD_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UsableABSInformationTDD_ExtIEs__extensionValue { + UsableABSInformationTDD_ExtIEs__extensionValue_PR present; + union UsableABSInformationTDD_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformationTDD_ExtIEs_t; +typedef struct V2XServicesAuthorized_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct V2XServicesAuthorized_ExtIEs__extensionValue { + V2XServicesAuthorized_ExtIEs__extensionValue_PR present; + union V2XServicesAuthorized_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} V2XServicesAuthorized_ExtIEs_t; +typedef struct WidebandCQI_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct WidebandCQI_ExtIEs__extensionValue { + WidebandCQI_ExtIEs__extensionValue_PR present; + union WidebandCQI_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WidebandCQI_ExtIEs_t; +typedef struct WLANMeasurementConfiguration_ExtIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct WLANMeasurementConfiguration_ExtIEs__extensionValue { + WLANMeasurementConfiguration_ExtIEs__extensionValue_PR present; + union WLANMeasurementConfiguration_ExtIEs__extensionValue_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } extensionValue; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WLANMeasurementConfiguration_ExtIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_ExtIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformation_ExtIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemExtIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemExtIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSeNB_ItemExtIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSeNB_ItemExtIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtWT_ItemExtIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtWT_ItemExtIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSgNB_ItemExtIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSgNB_ItemExtIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_Item_ExtIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_Item_ExtIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemExtIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemExtIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellInformation_Item_ExtIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_CellInformation_Item_ExtIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_ExtIEs_specs_33; +extern asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_ExtIEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellToReport_Item_ExtIEs_specs_37; +extern asn_TYPE_member_t asn_MBR_CellToReport_Item_ExtIEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_Item_ExtIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_Item_ExtIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_Item_ExtIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_Item_ExtIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_Item_ExtIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_Item_ExtIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_Item_ExtIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_CellMeasurementResult_Item_ExtIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_ExtIEs_specs_57; +extern asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_ExtIEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_ActivatedCellList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedCellList_Item_ExtIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_ActivatedCellList_Item_ExtIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_RNL_Header_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RNL_Header_Item_ExtIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_RNL_Header_Item_ExtIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_SCG_BearerExtIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_Item_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_Item_Split_BearerExtIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItemExtIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSeNBModReqExtIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformationSeNBModReqExtIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_specs_129; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_specs_133; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_specs_137; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_specs_141; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemExtIEs_specs_145; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemExtIEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_specs_149; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_specs_153; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_specs_157; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_specs_161; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemExtIEs_specs_165; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemExtIEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationRetrieve_ExtIEs_specs_169; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformationRetrieve_ExtIEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemExtIEs_specs_173; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemExtIEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_specs_177; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_specs_181; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_specs_185; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_specs_189; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_specs_193; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_specs_197; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_specs_201; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItemExtIEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_specs_205; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSgNBModReqExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSgNBModReqExtIEs_specs_209; +extern asn_TYPE_member_t asn_MBR_UE_ContextInformationSgNBModReqExtIEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_specs_213; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_217; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_221; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_specs_225; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemExtIEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_229; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_233; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_specs_237; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_specs_241; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_specs_245; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_specs_249; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_253; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_257; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_specs_261; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_265; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_269; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_specs_273; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_specs_277; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_specs_281; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs_281[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_specs_285; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs_285[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_specs_289; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs_289[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_specs_293; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs_293[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_specs_297; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs_297[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_specs_301; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs_301[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_specs_305; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs_305[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_specs_309; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs_309[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_specs_313; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs_313[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_specs_317; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs_317[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_specs_321; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs_321[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_specs_325; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs_325[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_specs_329; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs_329[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_specs_333; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs_333[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_specs_337; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs_337[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_specs_341; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs_341[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_specs_345; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs_345[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_specs_349; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs_349[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_specs_353; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs_353[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_specs_357; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs_357[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsENDCX2Management_ExtIEs_specs_361; +extern asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2Management_ExtIEs_361[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNBServedCells_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNBServedCells_ExtIEs_specs_365; +extern asn_TYPE_member_t asn_MBR_En_gNBServedCells_ExtIEs_365[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_ExtIEs_specs_369; +extern asn_TYPE_member_t asn_MBR_ServedNRCell_Information_ExtIEs_369[3]; +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoServedNRCell_Information_ExtIEs_specs_373; +extern asn_TYPE_member_t asn_MBR_FDD_InfoServedNRCell_Information_ExtIEs_373[3]; +extern asn_TYPE_descriptor_t asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_377; +extern asn_TYPE_member_t asn_MBR_FDD_InfoNeighbourServedNRCell_Information_ExtIEs_377[3]; +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_ExtIEs_specs_381; +extern asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_ExtIEs_381[3]; +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_specs_385; +extern asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_ExtIEs_385[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRNeighbour_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRNeighbour_Information_ExtIEs_specs_389; +extern asn_TYPE_member_t asn_MBR_NRNeighbour_Information_ExtIEs_389[3]; +extern asn_TYPE_descriptor_t asn_DEF_Limited_list_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Limited_list_ExtIEs_specs_393; +extern asn_TYPE_member_t asn_MBR_Limited_list_ExtIEs_393[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_specs_397; +extern asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs_397[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_ExtIEs_specs_401; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_ExtIEs_401[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_ExtIEs_specs_405; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_ExtIEs_405[3]; +extern asn_TYPE_descriptor_t asn_DEF_ActivatedNRCellList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ActivatedNRCellList_Item_ExtIEs_specs_409; +extern asn_TYPE_member_t asn_MBR_ActivatedNRCellList_Item_ExtIEs_409[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemExtIEs_specs_413; +extern asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemExtIEs_413[3]; +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationFDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationFDD_ExtIEs_specs_417; +extern asn_TYPE_member_t asn_MBR_ABSInformationFDD_ExtIEs_417[3]; +extern asn_TYPE_descriptor_t asn_DEF_ABSInformationTDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ABSInformationTDD_ExtIEs_specs_421; +extern asn_TYPE_member_t asn_MBR_ABSInformationTDD_ExtIEs_421[3]; +extern asn_TYPE_descriptor_t asn_DEF_ABS_Status_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ABS_Status_ExtIEs_specs_425; +extern asn_TYPE_member_t asn_MBR_ABS_Status_ExtIEs_425[3]; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframe_Info_ExtIEs_specs_429; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframe_Info_ExtIEs_429[3]; +extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AdditionalSpecialSubframeExtension_Info_ExtIEs_specs_433; +extern asn_TYPE_member_t asn_MBR_AdditionalSpecialSubframeExtension_Info_ExtIEs_433[3]; +extern asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_437; +extern asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_ExtIEs_437[3]; +extern asn_TYPE_descriptor_t asn_DEF_AS_SecurityInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_AS_SecurityInformation_ExtIEs_specs_441; +extern asn_TYPE_member_t asn_MBR_AS_SecurityInformation_ExtIEs_441[3]; +extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_445; +extern asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_445[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellBasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_ExtIEs_specs_449; +extern asn_TYPE_member_t asn_MBR_CellBasedMDT_ExtIEs_449[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellBasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_ExtIEs_specs_453; +extern asn_TYPE_member_t asn_MBR_CellBasedQMC_ExtIEs_453[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellReplacingInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellReplacingInfo_ExtIEs_specs_457; +extern asn_TYPE_member_t asn_MBR_CellReplacingInfo_ExtIEs_457[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellType_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellType_ExtIEs_specs_461; +extern asn_TYPE_member_t asn_MBR_CellType_ExtIEs_461[3]; +extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictionsItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictionsItem_ExtIEs_specs_465; +extern asn_TYPE_member_t asn_MBR_CNTypeRestrictionsItem_ExtIEs_465[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPHypothesisSetItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPHypothesisSetItem_ExtIEs_specs_469; +extern asn_TYPE_member_t asn_MBR_CoMPHypothesisSetItem_ExtIEs_469[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformation_ExtIEs_specs_473; +extern asn_TYPE_member_t asn_MBR_CoMPInformation_ExtIEs_473[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationItem_ExtIEs_specs_477; +extern asn_TYPE_member_t asn_MBR_CoMPInformationItem_ExtIEs_477[3]; +extern asn_TYPE_descriptor_t asn_DEF_CoMPInformationStartTime_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CoMPInformationStartTime_ExtIEs_specs_481; +extern asn_TYPE_member_t asn_MBR_CoMPInformationStartTime_ExtIEs_481[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacity_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacity_ExtIEs_specs_485; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacity_ExtIEs_485[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompositeAvailableCapacityGroup_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompositeAvailableCapacityGroup_ExtIEs_specs_489; +extern asn_TYPE_member_t asn_MBR_CompositeAvailableCapacityGroup_ExtIEs_489[3]; +extern asn_TYPE_descriptor_t asn_DEF_COUNTvalue_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_ExtIEs_specs_493; +extern asn_TYPE_member_t asn_MBR_COUNTvalue_ExtIEs_493[3]; +extern asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_ExtIEs_specs_497; +extern asn_TYPE_member_t asn_MBR_COUNTValueExtended_ExtIEs_497[3]; +extern asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_501; +extern asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_501[3]; +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_ExtIEs_specs_505; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_ExtIEs_505[3]; +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_ExtIEs_specs_509; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_ExtIEs_509[3]; +extern asn_TYPE_descriptor_t asn_DEF_CSIReportList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportList_ExtIEs_specs_513; +extern asn_TYPE_member_t asn_MBR_CSIReportList_ExtIEs_513[3]; +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcess_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcess_ExtIEs_specs_517; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcess_ExtIEs_517[3]; +extern asn_TYPE_descriptor_t asn_DEF_CSIReportPerCSIProcessItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CSIReportPerCSIProcessItem_ExtIEs_specs_521; +extern asn_TYPE_member_t asn_MBR_CSIReportPerCSIProcessItem_ExtIEs_521[3]; +extern asn_TYPE_descriptor_t asn_DEF_DataTrafficResourceIndication_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DataTrafficResourceIndication_ExtIEs_specs_525; +extern asn_TYPE_member_t asn_MBR_DataTrafficResourceIndication_ExtIEs_525[3]; +extern asn_TYPE_descriptor_t asn_DEF_DeliveryStatus_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DeliveryStatus_ExtIEs_specs_529; +extern asn_TYPE_member_t asn_MBR_DeliveryStatus_ExtIEs_529[3]; +extern asn_TYPE_descriptor_t asn_DEF_DynamicNAICSInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DynamicNAICSInformation_ExtIEs_specs_533; +extern asn_TYPE_member_t asn_MBR_DynamicNAICSInformation_ExtIEs_533[3]; +extern asn_TYPE_descriptor_t asn_DEF_ECGI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ECGI_ExtIEs_specs_537; +extern asn_TYPE_member_t asn_MBR_ECGI_ExtIEs_537[3]; +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTP_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTP_ExtIEs_specs_541; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTP_ExtIEs_541[3]; +extern asn_TYPE_descriptor_t asn_DEF_EnhancedRNTPStartTime_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EnhancedRNTPStartTime_ExtIEs_specs_545; +extern asn_TYPE_member_t asn_MBR_EnhancedRNTPStartTime_ExtIEs_545[3]; +extern asn_TYPE_descriptor_t asn_DEF_EN_DC_ResourceConfigurationExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EN_DC_ResourceConfigurationExtIEs_specs_549; +extern asn_TYPE_member_t asn_MBR_EN_DC_ResourceConfigurationExtIEs_549[3]; +extern asn_TYPE_descriptor_t asn_DEF_ERABActivityNotifyItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ERABActivityNotifyItem_ExtIEs_specs_553; +extern asn_TYPE_member_t asn_MBR_ERABActivityNotifyItem_ExtIEs_553[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Level_QoS_Parameters_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Level_QoS_Parameters_ExtIEs_specs_557; +extern asn_TYPE_member_t asn_MBR_E_RAB_Level_QoS_Parameters_ExtIEs_557[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_Item_ExtIEs_specs_561; +extern asn_TYPE_member_t asn_MBR_E_RAB_Item_ExtIEs_561[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_Item_ExtIEs_specs_565; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReport_Item_ExtIEs_565[3]; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_569; +extern asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_ExtIEs_569[3]; +extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_573; +extern asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_573[3]; +extern asn_TYPE_descriptor_t asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ExtendedULInterferenceOverloadInfo_ExtIEs_specs_577; +extern asn_TYPE_member_t asn_MBR_ExtendedULInterferenceOverloadInfo_ExtIEs_577[3]; +extern asn_TYPE_descriptor_t asn_DEF_FDD_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FDD_Info_ExtIEs_specs_581; +extern asn_TYPE_member_t asn_MBR_FDD_Info_ExtIEs_581[3]; +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_585; +extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_ExtIEs_585[3]; +extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_589; +extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_ExtIEs_589[3]; +extern asn_TYPE_descriptor_t asn_DEF_FreqBandNrItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandNrItem_ExtIEs_specs_593; +extern asn_TYPE_member_t asn_MBR_FreqBandNrItem_ExtIEs_593[3]; +extern asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_ExtIEs_specs_597; +extern asn_TYPE_member_t asn_MBR_GBR_QosInformation_ExtIEs_597[3]; +extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_ExtIEs_specs_601; +extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_ExtIEs_601[3]; +extern asn_TYPE_descriptor_t asn_DEF_GlobalGNB_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalGNB_ID_ExtIEs_specs_605; +extern asn_TYPE_member_t asn_MBR_GlobalGNB_ID_ExtIEs_605[3]; +extern asn_TYPE_descriptor_t asn_DEF_GTPtunnelEndpoint_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GTPtunnelEndpoint_ExtIEs_specs_609; +extern asn_TYPE_member_t asn_MBR_GTPtunnelEndpoint_ExtIEs_609[3]; +extern asn_TYPE_descriptor_t asn_DEF_GU_Group_ID_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GU_Group_ID_ExtIEs_specs_613; +extern asn_TYPE_member_t asn_MBR_GU_Group_ID_ExtIEs_613[3]; +extern asn_TYPE_descriptor_t asn_DEF_GUMMEI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_ExtIEs_specs_617; +extern asn_TYPE_member_t asn_MBR_GUMMEI_ExtIEs_617[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_ExtIEs_specs_621; +extern asn_TYPE_member_t asn_MBR_HandoverRestrictionList_ExtIEs_621[3]; +extern asn_TYPE_descriptor_t asn_DEF_HWLoadIndicator_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HWLoadIndicator_ExtIEs_specs_625; +extern asn_TYPE_member_t asn_MBR_HWLoadIndicator_ExtIEs_625[3]; +extern asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_629; +extern asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_629[3]; +extern asn_TYPE_descriptor_t asn_DEF_LocationReportingInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingInformation_ExtIEs_specs_633; +extern asn_TYPE_member_t asn_MBR_LocationReportingInformation_ExtIEs_633[3]; +extern asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_ExtIEs_specs_637; +extern asn_TYPE_member_t asn_MBR_M1PeriodicReporting_ExtIEs_637[3]; +extern asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_ExtIEs_specs_641; +extern asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_ExtIEs_641[3]; +extern asn_TYPE_descriptor_t asn_DEF_M3Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_ExtIEs_specs_645; +extern asn_TYPE_member_t asn_MBR_M3Configuration_ExtIEs_645[3]; +extern asn_TYPE_descriptor_t asn_DEF_M4Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_ExtIEs_specs_649; +extern asn_TYPE_member_t asn_MBR_M4Configuration_ExtIEs_649[3]; +extern asn_TYPE_descriptor_t asn_DEF_M5Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_ExtIEs_specs_653; +extern asn_TYPE_member_t asn_MBR_M5Configuration_ExtIEs_653[3]; +extern asn_TYPE_descriptor_t asn_DEF_M6Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_ExtIEs_specs_657; +extern asn_TYPE_member_t asn_MBR_M6Configuration_ExtIEs_657[3]; +extern asn_TYPE_descriptor_t asn_DEF_M7Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_ExtIEs_specs_661; +extern asn_TYPE_member_t asn_MBR_M7Configuration_ExtIEs_661[3]; +extern asn_TYPE_descriptor_t asn_DEF_MDT_Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_ExtIEs_specs_665; +extern asn_TYPE_member_t asn_MBR_MDT_Configuration_ExtIEs_665[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeNBResourceCoordinationInformationExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeNBResourceCoordinationInformationExtIEs_specs_669; +extern asn_TYPE_member_t asn_MBR_MeNBResourceCoordinationInformationExtIEs_669[3]; +extern asn_TYPE_descriptor_t asn_DEF_MBSFN_Subframe_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MBSFN_Subframe_Info_ExtIEs_specs_673; +extern asn_TYPE_member_t asn_MBR_MBSFN_Subframe_Info_ExtIEs_673[3]; +extern asn_TYPE_descriptor_t asn_DEF_BandInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_BandInfo_ExtIEs_specs_677; +extern asn_TYPE_member_t asn_MBR_BandInfo_ExtIEs_677[3]; +extern asn_TYPE_descriptor_t asn_DEF_SplitSRB_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_ExtIEs_specs_681; +extern asn_TYPE_member_t asn_MBR_SplitSRB_ExtIEs_681[3]; +extern asn_TYPE_descriptor_t asn_DEF_UENRMeasurement_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_ExtIEs_specs_685; +extern asn_TYPE_member_t asn_MBR_UENRMeasurement_ExtIEs_685[3]; +extern asn_TYPE_descriptor_t asn_DEF_Neighbour_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Neighbour_Information_ExtIEs_specs_689; +extern asn_TYPE_member_t asn_MBR_Neighbour_Information_ExtIEs_689[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRFreqInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRFreqInfo_ExtIEs_specs_693; +extern asn_TYPE_member_t asn_MBR_NRFreqInfo_ExtIEs_693[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRCGI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRCGI_ExtIEs_specs_697; +extern asn_TYPE_member_t asn_MBR_NRCGI_ExtIEs_697[3]; +extern asn_TYPE_descriptor_t asn_DEF_NR_TxBW_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NR_TxBW_ExtIEs_specs_701; +extern asn_TYPE_member_t asn_MBR_NR_TxBW_ExtIEs_701[3]; +extern asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_705; +extern asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_ExtIEs_705[3]; +extern asn_TYPE_descriptor_t asn_DEF_PRACH_Configuration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_PRACH_Configuration_ExtIEs_specs_709; +extern asn_TYPE_member_t asn_MBR_PRACH_Configuration_ExtIEs_709[3]; +extern asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_713; +extern asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_ExtIEs_713[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_ExtIEs_specs_717; +extern asn_TYPE_member_t asn_MBR_ProSeAuthorized_ExtIEs_717[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedEUTRAResourceIndication_ExtIEs_specs_721; +extern asn_TYPE_member_t asn_MBR_ProtectedEUTRAResourceIndication_ExtIEs_721[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedFootprintTimePattern_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedFootprintTimePattern_ExtIEs_specs_725; +extern asn_TYPE_member_t asn_MBR_ProtectedFootprintTimePattern_ExtIEs_725[3]; +extern asn_TYPE_descriptor_t asn_DEF_ProtectedResourceList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ProtectedResourceList_Item_ExtIEs_specs_729; +extern asn_TYPE_member_t asn_MBR_ProtectedResourceList_Item_ExtIEs_729[3]; +extern asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_ExtIEs_specs_733; +extern asn_TYPE_member_t asn_MBR_RadioResourceStatus_ExtIEs_733[3]; +extern asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_ExtIEs_specs_737; +extern asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_ExtIEs_737[3]; +extern asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_ExtIEs_specs_741; +extern asn_TYPE_member_t asn_MBR_ReservedSubframePattern_ExtIEs_741[3]; +extern asn_TYPE_descriptor_t asn_DEF_RLC_Status_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_ExtIEs_specs_745; +extern asn_TYPE_member_t asn_MBR_RLC_Status_ExtIEs_745[3]; +extern asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RSRPMeasurementResult_ExtIEs_specs_749; +extern asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_ExtIEs_749[3]; +extern asn_TYPE_descriptor_t asn_DEF_RSRPMRList_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RSRPMRList_ExtIEs_specs_753; +extern asn_TYPE_member_t asn_MBR_RSRPMRList_ExtIEs_753[3]; +extern asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_ExtIEs_specs_757; +extern asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_ExtIEs_757[3]; +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_ExtIEs_specs_761; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_ExtIEs_761[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCell_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_ExtIEs_specs_765; +extern asn_TYPE_member_t asn_MBR_ServedCell_ExtIEs_765[3]; +extern asn_TYPE_descriptor_t asn_DEF_ServedCell_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_ExtIEs_specs_769; +extern asn_TYPE_member_t asn_MBR_ServedCell_Information_ExtIEs_769[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformationExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformationExtIEs_specs_773; +extern asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformationExtIEs_773[3]; +extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_ExtIEs_specs_777; +extern asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_ExtIEs_777[3]; +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_ExtIEs_specs_781; +extern asn_TYPE_member_t asn_MBR_SubbandCQI_ExtIEs_781[3]; +extern asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_785; +extern asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_785[3]; +extern asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_789; +extern asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_ExtIEs_789[3]; +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_ExtIEs_specs_793; +extern asn_TYPE_member_t asn_MBR_SubbandCQIItem_ExtIEs_793[3]; +extern asn_TYPE_descriptor_t asn_DEF_SULInformation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SULInformation_ExtIEs_specs_797; +extern asn_TYPE_member_t asn_MBR_SULInformation_ExtIEs_797[3]; +extern asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_ExtIEs_specs_801; +extern asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_ExtIEs_801[3]; +extern asn_TYPE_descriptor_t asn_DEF_TABasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_ExtIEs_specs_805; +extern asn_TYPE_member_t asn_MBR_TABasedMDT_ExtIEs_805[3]; +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_ExtIEs_specs_809; +extern asn_TYPE_member_t asn_MBR_TAIBasedMDT_ExtIEs_809[3]; +extern asn_TYPE_descriptor_t asn_DEF_TAI_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_ExtIEs_specs_813; +extern asn_TYPE_member_t asn_MBR_TAI_Item_ExtIEs_813[3]; +extern asn_TYPE_descriptor_t asn_DEF_TABasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_ExtIEs_specs_817; +extern asn_TYPE_member_t asn_MBR_TABasedQMC_ExtIEs_817[3]; +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_ExtIEs_specs_821; +extern asn_TYPE_member_t asn_MBR_TAIBasedQMC_ExtIEs_821[3]; +extern asn_TYPE_descriptor_t asn_DEF_TDD_Info_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_ExtIEs_specs_825; +extern asn_TYPE_member_t asn_MBR_TDD_Info_ExtIEs_825[3]; +extern asn_TYPE_descriptor_t asn_DEF_TraceActivation_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_ExtIEs_specs_829; +extern asn_TYPE_member_t asn_MBR_TraceActivation_ExtIEs_829[3]; +extern asn_TYPE_descriptor_t asn_DEF_Tunnel_Information_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_ExtIEs_specs_833; +extern asn_TYPE_member_t asn_MBR_Tunnel_Information_ExtIEs_833[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEAggregate_MaximumBitrate_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAggregate_MaximumBitrate_ExtIEs_specs_837; +extern asn_TYPE_member_t asn_MBR_UEAggregate_MaximumBitrate_ExtIEs_837[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_841; +extern asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_ExtIEs_841[3]; +extern asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_ExtIEs_specs_845; +extern asn_TYPE_member_t asn_MBR_UESecurityCapabilities_ExtIEs_845[3]; +extern asn_TYPE_descriptor_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_specs_849; +extern asn_TYPE_member_t asn_MBR_UE_Sidelink_Aggregate_MaximumBitRate_ExtIEs_849[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_ExtIEs_specs_853; +extern asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_ExtIEs_853[3]; +extern asn_TYPE_descriptor_t asn_DEF_ULandDLSharing_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_ExtIEs_specs_857; +extern asn_TYPE_member_t asn_MBR_ULandDLSharing_ExtIEs_857[3]; +extern asn_TYPE_descriptor_t asn_DEF_ULConfiguration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_ExtIEs_specs_861; +extern asn_TYPE_member_t asn_MBR_ULConfiguration_ExtIEs_861[3]; +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_ExtIEs_specs_865; +extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_ExtIEs_865[3]; +extern asn_TYPE_descriptor_t asn_DEF_ULOnlySharing_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_ExtIEs_specs_869; +extern asn_TYPE_member_t asn_MBR_ULOnlySharing_ExtIEs_869[3]; +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_ExtIEs_specs_873; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_ExtIEs_873[3]; +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_ExtIEs_specs_877; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_ExtIEs_877[3]; +extern asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_ExtIEs_specs_881; +extern asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_ExtIEs_881[3]; +extern asn_TYPE_descriptor_t asn_DEF_WidebandCQI_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_ExtIEs_specs_885; +extern asn_TYPE_member_t asn_MBR_WidebandCQI_ExtIEs_885[3]; +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration_ExtIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_889; +extern asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_ExtIEs_889[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolExtensionField_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Container.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Container.c new file mode 100644 index 0000000..2742e5e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Container.c @@ -0,0 +1,4833 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Container.h" + +#include "ProtocolIE-Field.h" +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P20_constr_41 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P21_constr_43 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P22_constr_45 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P23_constr_47 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P24_constr_49 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P25_constr_51 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P26_constr_53 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P27_constr_55 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P28_constr_57 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P29_constr_59 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P30_constr_61 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P31_constr_63 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P32_constr_65 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P33_constr_67 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P34_constr_69 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P35_constr_71 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P36_constr_73 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P37_constr_75 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P38_constr_77 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P39_constr_79 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P40_constr_81 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P41_constr_83 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P42_constr_85 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P43_constr_87 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P44_constr_89 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P45_constr_91 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P46_constr_93 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P47_constr_95 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P48_constr_97 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P49_constr_99 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P50_constr_101 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P51_constr_103 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P52_constr_105 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P53_constr_107 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P54_constr_109 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P55_constr_111 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P56_constr_113 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P57_constr_115 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P58_constr_117 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P59_constr_119 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P60_constr_121 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P61_constr_123 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P62_constr_125 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P63_constr_127 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P64_constr_129 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P65_constr_131 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P66_constr_133 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P67_constr_135 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P68_constr_137 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P69_constr_139 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P70_constr_141 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P71_constr_143 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P72_constr_145 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P73_constr_147 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P74_constr_149 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P75_constr_151 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P76_constr_153 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P77_constr_155 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P78_constr_157 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P79_constr_159 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P80_constr_161 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P81_constr_163 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P82_constr_165 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P83_constr_167 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P84_constr_169 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P85_constr_171 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P86_constr_173 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P87_constr_175 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P88_constr_177 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P89_constr_179 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P90_constr_181 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P91_constr_183 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P92_constr_185 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P93_constr_187 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P94_constr_189 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P95_constr_191 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P96_constr_193 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P97_constr_195 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P98_constr_197 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P99_constr_199 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P100_constr_201 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P101_constr_203 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P102_constr_205 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P103_constr_207 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P104_constr_209 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P105_constr_211 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P106_constr_213 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P107_constr_215 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P108_constr_217 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P109_constr_219 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P110_constr_221 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P111_constr_223 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P112_constr_225 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P113_constr_227 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P114_constr_229 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P115_constr_231 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P116_constr_233 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P117_constr_235 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P118_constr_237 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P119_constr_239 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P0_specs_1 = { + sizeof(struct ProtocolIE_Container_119P0), + offsetof(struct ProtocolIE_Container_119P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P0 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_119P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P1_specs_3 = { + sizeof(struct ProtocolIE_Container_119P1), + offsetof(struct ProtocolIE_Container_119P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P1 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P1_tags_3, + sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_119P1_tags_3[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P2_specs_5 = { + sizeof(struct ProtocolIE_Container_119P2), + offsetof(struct ProtocolIE_Container_119P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P2 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P2_tags_5, + sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_119P2_tags_5[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P3_specs_7 = { + sizeof(struct ProtocolIE_Container_119P3), + offsetof(struct ProtocolIE_Container_119P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P3 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P3_tags_7, + sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_119P3_tags_7[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P4_specs_9 = { + sizeof(struct ProtocolIE_Container_119P4), + offsetof(struct ProtocolIE_Container_119P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P4 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P4_tags_9, + sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_119P4_tags_9[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P5_specs_11 = { + sizeof(struct ProtocolIE_Container_119P5), + offsetof(struct ProtocolIE_Container_119P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P5 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P5_tags_11, + sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_119P5_tags_11[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P6_specs_13 = { + sizeof(struct ProtocolIE_Container_119P6), + offsetof(struct ProtocolIE_Container_119P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P6 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P6_tags_13, + sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_119P6_tags_13[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P7_specs_15 = { + sizeof(struct ProtocolIE_Container_119P7), + offsetof(struct ProtocolIE_Container_119P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P7 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P7_tags_15, + sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_119P7_tags_15[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P8_specs_17 = { + sizeof(struct ProtocolIE_Container_119P8), + offsetof(struct ProtocolIE_Container_119P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P8 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P8_tags_17, + sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_119P8_tags_17[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P9_specs_19 = { + sizeof(struct ProtocolIE_Container_119P9), + offsetof(struct ProtocolIE_Container_119P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P9 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P9_tags_19, + sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_119P9_tags_19[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P10_specs_21 = { + sizeof(struct ProtocolIE_Container_119P10), + offsetof(struct ProtocolIE_Container_119P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P10 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P10_tags_21, + sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_119P10_tags_21[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P11_specs_23 = { + sizeof(struct ProtocolIE_Container_119P11), + offsetof(struct ProtocolIE_Container_119P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P11 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P11_tags_23, + sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_119P11_tags_23[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P12_specs_25 = { + sizeof(struct ProtocolIE_Container_119P12), + offsetof(struct ProtocolIE_Container_119P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P12 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P12_tags_25, + sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_119P12_tags_25[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P13_specs_27 = { + sizeof(struct ProtocolIE_Container_119P13), + offsetof(struct ProtocolIE_Container_119P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P13 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P13_tags_27, + sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_119P13_tags_27[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P14_specs_29 = { + sizeof(struct ProtocolIE_Container_119P14), + offsetof(struct ProtocolIE_Container_119P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P14 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P14_tags_29, + sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_119P14_tags_29[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P15_specs_31 = { + sizeof(struct ProtocolIE_Container_119P15), + offsetof(struct ProtocolIE_Container_119P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P15 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P15_tags_31, + sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_119P15_tags_31[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverPreparationFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P16_specs_33 = { + sizeof(struct ProtocolIE_Container_119P16), + offsetof(struct ProtocolIE_Container_119P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P16 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P16_tags_33, + sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_119P16_tags_33[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverReport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P17_specs_35 = { + sizeof(struct ProtocolIE_Container_119P17), + offsetof(struct ProtocolIE_Container_119P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P17 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P17_tags_35, + sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_119P17_tags_35[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SNStatusTransfer_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P18_specs_37 = { + sizeof(struct ProtocolIE_Container_119P18), + offsetof(struct ProtocolIE_Container_119P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P18 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P18_tags_37, + sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_119P18_tags_37[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEContextRelease_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P19_specs_39 = { + sizeof(struct ProtocolIE_Container_119P19), + offsetof(struct ProtocolIE_Container_119P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P19 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P19_tags_39, + sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_119P19_tags_39[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P19_specs_39 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P20_41[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverCancel_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P20_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P20_specs_41 = { + sizeof(struct ProtocolIE_Container_119P20), + offsetof(struct ProtocolIE_Container_119P20, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P20 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P20_tags_41, + sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41) + /sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P20_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41) + /sizeof(asn_DEF_ProtocolIE_Container_119P20_tags_41[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P20_constr_41, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P20_41, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P20_specs_41 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P21_43[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P21_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P21_specs_43 = { + sizeof(struct ProtocolIE_Container_119P21), + offsetof(struct ProtocolIE_Container_119P21, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P21 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P21_tags_43, + sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43) + /sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P21_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43) + /sizeof(asn_DEF_ProtocolIE_Container_119P21_tags_43[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P21_constr_43, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P21_43, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P21_specs_43 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P22_45[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P22_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P22_specs_45 = { + sizeof(struct ProtocolIE_Container_119P22), + offsetof(struct ProtocolIE_Container_119P22, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P22 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P22_tags_45, + sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45) + /sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P22_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45) + /sizeof(asn_DEF_ProtocolIE_Container_119P22_tags_45[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P22_constr_45, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P22_45, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P22_specs_45 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P23_47[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P23_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P23_specs_47 = { + sizeof(struct ProtocolIE_Container_119P23), + offsetof(struct ProtocolIE_Container_119P23, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P23 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P23_tags_47, + sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47) + /sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P23_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47) + /sizeof(asn_DEF_ProtocolIE_Container_119P23_tags_47[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P23_constr_47, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P23_47, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P23_specs_47 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P24_49[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P24_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P24_specs_49 = { + sizeof(struct ProtocolIE_Container_119P24), + offsetof(struct ProtocolIE_Container_119P24, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P24 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P24_tags_49, + sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49) + /sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P24_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49) + /sizeof(asn_DEF_ProtocolIE_Container_119P24_tags_49[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P24_constr_49, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P24_49, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P24_specs_49 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P25_51[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P25_tags_51[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P25_specs_51 = { + sizeof(struct ProtocolIE_Container_119P25), + offsetof(struct ProtocolIE_Container_119P25, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P25 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P25_tags_51, + sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51) + /sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P25_tags_51, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51) + /sizeof(asn_DEF_ProtocolIE_Container_119P25_tags_51[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P25_constr_51, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P25_51, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P25_specs_51 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P26_53[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P26_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P26_specs_53 = { + sizeof(struct ProtocolIE_Container_119P26), + offsetof(struct ProtocolIE_Container_119P26, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P26 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P26_tags_53, + sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53) + /sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P26_tags_53, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53) + /sizeof(asn_DEF_ProtocolIE_Container_119P26_tags_53[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P26_constr_53, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P26_53, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P26_specs_53 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P27_55[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_LoadInformation_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P27_tags_55[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P27_specs_55 = { + sizeof(struct ProtocolIE_Container_119P27), + offsetof(struct ProtocolIE_Container_119P27, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P27 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P27_tags_55, + sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55) + /sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P27_tags_55, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55) + /sizeof(asn_DEF_ProtocolIE_Container_119P27_tags_55[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P27_constr_55, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P27_55, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P27_specs_55 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P28_57[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P28_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P28_specs_57 = { + sizeof(struct ProtocolIE_Container_119P28), + offsetof(struct ProtocolIE_Container_119P28, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P28 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P28_tags_57, + sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57) + /sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P28_tags_57, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57) + /sizeof(asn_DEF_ProtocolIE_Container_119P28_tags_57[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P28_constr_57, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P28_57, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P28_specs_57 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P29_59[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P29_tags_59[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P29_specs_59 = { + sizeof(struct ProtocolIE_Container_119P29), + offsetof(struct ProtocolIE_Container_119P29, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P29 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P29_tags_59, + sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59) + /sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P29_tags_59, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59) + /sizeof(asn_DEF_ProtocolIE_Container_119P29_tags_59[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P29_constr_59, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P29_59, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P29_specs_59 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P30_61[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P30_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P30_specs_61 = { + sizeof(struct ProtocolIE_Container_119P30), + offsetof(struct ProtocolIE_Container_119P30, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P30 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P30_tags_61, + sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61) + /sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P30_tags_61, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61) + /sizeof(asn_DEF_ProtocolIE_Container_119P30_tags_61[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P30_constr_61, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P30_61, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P30_specs_61 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P31_63[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P31_tags_63[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P31_specs_63 = { + sizeof(struct ProtocolIE_Container_119P31), + offsetof(struct ProtocolIE_Container_119P31, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P31 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P31_tags_63, + sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63) + /sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P31_tags_63, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63) + /sizeof(asn_DEF_ProtocolIE_Container_119P31_tags_63[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P31_constr_63, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P31_63, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P31_specs_63 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P32_65[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P32_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P32_specs_65 = { + sizeof(struct ProtocolIE_Container_119P32), + offsetof(struct ProtocolIE_Container_119P32, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P32 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P32_tags_65, + sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65) + /sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P32_tags_65, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65) + /sizeof(asn_DEF_ProtocolIE_Container_119P32_tags_65[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P32_constr_65, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P32_65, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P32_specs_65 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P33_67[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P33_tags_67[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P33_specs_67 = { + sizeof(struct ProtocolIE_Container_119P33), + offsetof(struct ProtocolIE_Container_119P33, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P33 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P33_tags_67, + sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67) + /sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P33_tags_67, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67) + /sizeof(asn_DEF_ProtocolIE_Container_119P33_tags_67[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P33_constr_67, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P33_67, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P33_specs_67 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P34_69[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P34_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P34_specs_69 = { + sizeof(struct ProtocolIE_Container_119P34), + offsetof(struct ProtocolIE_Container_119P34, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P34 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P34_tags_69, + sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69) + /sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P34_tags_69, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69) + /sizeof(asn_DEF_ProtocolIE_Container_119P34_tags_69[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P34_constr_69, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P34_69, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P34_specs_69 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P35_71[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityChangeRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P35_tags_71[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P35_specs_71 = { + sizeof(struct ProtocolIE_Container_119P35), + offsetof(struct ProtocolIE_Container_119P35, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P35 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P35_tags_71, + sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71) + /sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P35_tags_71, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71) + /sizeof(asn_DEF_ProtocolIE_Container_119P35_tags_71[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P35_constr_71, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P35_71, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P35_specs_71 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P36_73[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityChangeAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P36_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P36_specs_73 = { + sizeof(struct ProtocolIE_Container_119P36), + offsetof(struct ProtocolIE_Container_119P36, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P36 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P36_tags_73, + sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73) + /sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P36_tags_73, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73) + /sizeof(asn_DEF_ProtocolIE_Container_119P36_tags_73[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P36_constr_73, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P36_73, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P36_specs_73 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P37_75[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityChangeFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P37_tags_75[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P37_specs_75 = { + sizeof(struct ProtocolIE_Container_119P37), + offsetof(struct ProtocolIE_Container_119P37, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P37 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P37_tags_75, + sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75) + /sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P37_tags_75, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75) + /sizeof(asn_DEF_ProtocolIE_Container_119P37_tags_75[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P37_constr_75, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P37_75, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P37_specs_75 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P38_77[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RLFIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P38_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P38_specs_77 = { + sizeof(struct ProtocolIE_Container_119P38), + offsetof(struct ProtocolIE_Container_119P38, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P38 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P38_tags_77, + sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77) + /sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P38_tags_77, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77) + /sizeof(asn_DEF_ProtocolIE_Container_119P38_tags_77[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P38_constr_77, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P38_77, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P38_specs_77 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P39_79[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellActivationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P39_tags_79[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P39_specs_79 = { + sizeof(struct ProtocolIE_Container_119P39), + offsetof(struct ProtocolIE_Container_119P39, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P39 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P39_tags_79, + sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79) + /sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P39_tags_79, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79) + /sizeof(asn_DEF_ProtocolIE_Container_119P39_tags_79[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P39_constr_79, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P39_79, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P39_specs_79 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P40_81[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellActivationResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P40_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P40_specs_81 = { + sizeof(struct ProtocolIE_Container_119P40), + offsetof(struct ProtocolIE_Container_119P40, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P40 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P40_tags_81, + sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81) + /sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P40_tags_81, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81) + /sizeof(asn_DEF_ProtocolIE_Container_119P40_tags_81[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P40_constr_81, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P40_81, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P40_specs_81 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P41_83[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellActivationFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P41_tags_83[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P41_specs_83 = { + sizeof(struct ProtocolIE_Container_119P41), + offsetof(struct ProtocolIE_Container_119P41, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P41 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P41_tags_83, + sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83) + /sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P41_tags_83, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83) + /sizeof(asn_DEF_ProtocolIE_Container_119P41_tags_83[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P41_constr_83, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P41_83, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P41_specs_83 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P42_85[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2Release_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P42_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P42_specs_85 = { + sizeof(struct ProtocolIE_Container_119P42), + offsetof(struct ProtocolIE_Container_119P42, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P42 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P42_tags_85, + sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85) + /sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P42_tags_85, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85) + /sizeof(asn_DEF_ProtocolIE_Container_119P42_tags_85[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P42_constr_85, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P42_85, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P42_specs_85 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P43_87[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2APMessageTransfer_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P43_tags_87[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P43_specs_87 = { + sizeof(struct ProtocolIE_Container_119P43), + offsetof(struct ProtocolIE_Container_119P43, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P43 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P43_tags_87, + sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87) + /sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P43_tags_87, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87) + /sizeof(asn_DEF_ProtocolIE_Container_119P43_tags_87[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P43_constr_87, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P43_87, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P43_specs_87 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P44_89[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBAdditionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P44_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P44_specs_89 = { + sizeof(struct ProtocolIE_Container_119P44), + offsetof(struct ProtocolIE_Container_119P44, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P44 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P44_tags_89, + sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89) + /sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P44_tags_89, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89) + /sizeof(asn_DEF_ProtocolIE_Container_119P44_tags_89[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P44_constr_89, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P44_89, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P44_specs_89 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P45_91[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBAdditionRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P45_tags_91[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P45_specs_91 = { + sizeof(struct ProtocolIE_Container_119P45), + offsetof(struct ProtocolIE_Container_119P45, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P45 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P45_tags_91, + sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91) + /sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P45_tags_91, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91) + /sizeof(asn_DEF_ProtocolIE_Container_119P45_tags_91[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P45_constr_91, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P45_91, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P45_specs_91 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P46_93[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBAdditionRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P46_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P46_specs_93 = { + sizeof(struct ProtocolIE_Container_119P46), + offsetof(struct ProtocolIE_Container_119P46, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P46 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P46_tags_93, + sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93) + /sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P46_tags_93, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93) + /sizeof(asn_DEF_ProtocolIE_Container_119P46_tags_93[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P46_constr_93, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P46_93, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P46_specs_93 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P47_95[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReconfigurationComplete_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P47_tags_95[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P47_specs_95 = { + sizeof(struct ProtocolIE_Container_119P47), + offsetof(struct ProtocolIE_Container_119P47, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P47 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P47_tags_95, + sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95) + /sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P47_tags_95, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95) + /sizeof(asn_DEF_ProtocolIE_Container_119P47_tags_95[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P47_constr_95, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P47_95, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P47_specs_95 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P48_97[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P48_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P48_specs_97 = { + sizeof(struct ProtocolIE_Container_119P48), + offsetof(struct ProtocolIE_Container_119P48, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P48 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P48_tags_97, + sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97) + /sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P48_tags_97, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97) + /sizeof(asn_DEF_ProtocolIE_Container_119P48_tags_97[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P48_constr_97, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P48_97, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P48_specs_97 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P49_99[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P49_tags_99[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P49_specs_99 = { + sizeof(struct ProtocolIE_Container_119P49), + offsetof(struct ProtocolIE_Container_119P49, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P49 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P49_tags_99, + sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99) + /sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P49_tags_99, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99) + /sizeof(asn_DEF_ProtocolIE_Container_119P49_tags_99[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P49_constr_99, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P49_99, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P49_specs_99 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P50_101[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P50_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P50_specs_101 = { + sizeof(struct ProtocolIE_Container_119P50), + offsetof(struct ProtocolIE_Container_119P50, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P50 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P50_tags_101, + sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101) + /sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P50_tags_101, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101) + /sizeof(asn_DEF_ProtocolIE_Container_119P50_tags_101[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P50_constr_101, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P50_101, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P50_specs_101 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P51_103[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P51_tags_103[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P51_specs_103 = { + sizeof(struct ProtocolIE_Container_119P51), + offsetof(struct ProtocolIE_Container_119P51, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P51 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P51_tags_103, + sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103) + /sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P51_tags_103, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103) + /sizeof(asn_DEF_ProtocolIE_Container_119P51_tags_103[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P51_constr_103, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P51_103, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P51_specs_103 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P52_105[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P52_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P52_specs_105 = { + sizeof(struct ProtocolIE_Container_119P52), + offsetof(struct ProtocolIE_Container_119P52, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P52 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P52_tags_105, + sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105) + /sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P52_tags_105, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105) + /sizeof(asn_DEF_ProtocolIE_Container_119P52_tags_105[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P52_constr_105, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P52_105, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P52_specs_105 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P53_107[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBModificationRefuse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P53_tags_107[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P53_specs_107 = { + sizeof(struct ProtocolIE_Container_119P53), + offsetof(struct ProtocolIE_Container_119P53, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P53 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P53_tags_107, + sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107) + /sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P53_tags_107, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107) + /sizeof(asn_DEF_ProtocolIE_Container_119P53_tags_107[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P53_constr_107, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P53_107, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P53_specs_107 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P54_109[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReleaseRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P54_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P54_specs_109 = { + sizeof(struct ProtocolIE_Container_119P54), + offsetof(struct ProtocolIE_Container_119P54, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P54 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P54_tags_109, + sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109) + /sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P54_tags_109, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109) + /sizeof(asn_DEF_ProtocolIE_Container_119P54_tags_109[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P54_constr_109, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P54_109, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P54_specs_109 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P55_111[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReleaseRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P55_tags_111[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P55_specs_111 = { + sizeof(struct ProtocolIE_Container_119P55), + offsetof(struct ProtocolIE_Container_119P55, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P55 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P55_tags_111, + sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111) + /sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P55_tags_111, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111) + /sizeof(asn_DEF_ProtocolIE_Container_119P55_tags_111[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P55_constr_111, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P55_111, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P55_specs_111 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P56_113[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBReleaseConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P56_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P56_specs_113 = { + sizeof(struct ProtocolIE_Container_119P56), + offsetof(struct ProtocolIE_Container_119P56, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P56 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P56_tags_113, + sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113) + /sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P56_tags_113, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113) + /sizeof(asn_DEF_ProtocolIE_Container_119P56_tags_113[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P56_constr_113, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P56_113, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P56_specs_113 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P57_115[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SeNBCounterCheckRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P57_tags_115[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P57_specs_115 = { + sizeof(struct ProtocolIE_Container_119P57), + offsetof(struct ProtocolIE_Container_119P57, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P57 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P57_tags_115, + sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115) + /sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P57_tags_115, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115) + /sizeof(asn_DEF_ProtocolIE_Container_119P57_tags_115[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P57_constr_115, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P57_115, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P57_specs_115 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P58_117[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2RemovalRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P58_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P58_specs_117 = { + sizeof(struct ProtocolIE_Container_119P58), + offsetof(struct ProtocolIE_Container_119P58, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P58 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P58_tags_117, + sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117) + /sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P58_tags_117, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117) + /sizeof(asn_DEF_ProtocolIE_Container_119P58_tags_117[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P58_constr_117, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P58_117, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P58_specs_117 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P59_119[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2RemovalResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P59_tags_119[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P59_specs_119 = { + sizeof(struct ProtocolIE_Container_119P59), + offsetof(struct ProtocolIE_Container_119P59, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P59 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P59_tags_119, + sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119) + /sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P59_tags_119, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119) + /sizeof(asn_DEF_ProtocolIE_Container_119P59_tags_119[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P59_constr_119, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P59_119, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P59_specs_119 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P60_121[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2RemovalFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P60_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P60_specs_121 = { + sizeof(struct ProtocolIE_Container_119P60), + offsetof(struct ProtocolIE_Container_119P60, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P60 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P60_tags_121, + sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121) + /sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P60_tags_121, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121) + /sizeof(asn_DEF_ProtocolIE_Container_119P60_tags_121[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P60_constr_121, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P60_121, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P60_specs_121 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P61_123[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RetrieveUEContextRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P61_tags_123[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P61_specs_123 = { + sizeof(struct ProtocolIE_Container_119P61), + offsetof(struct ProtocolIE_Container_119P61, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P61 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P61_tags_123, + sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123) + /sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P61_tags_123, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123) + /sizeof(asn_DEF_ProtocolIE_Container_119P61_tags_123[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P61_constr_123, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P61_123, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P61_specs_123 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P62_125[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RetrieveUEContextResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P62_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P62_specs_125 = { + sizeof(struct ProtocolIE_Container_119P62), + offsetof(struct ProtocolIE_Container_119P62, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P62 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P62_tags_125, + sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125) + /sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P62_tags_125, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125) + /sizeof(asn_DEF_ProtocolIE_Container_119P62_tags_125[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P62_constr_125, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P62_125, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P62_specs_125 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P63_127[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RetrieveUEContextFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P63_tags_127[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P63_specs_127 = { + sizeof(struct ProtocolIE_Container_119P63), + offsetof(struct ProtocolIE_Container_119P63, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P63 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P63_tags_127, + sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127) + /sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P63_tags_127, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127) + /sizeof(asn_DEF_ProtocolIE_Container_119P63_tags_127[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P63_constr_127, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P63_127, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P63_specs_127 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P64_129[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBAdditionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P64_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P64_specs_129 = { + sizeof(struct ProtocolIE_Container_119P64), + offsetof(struct ProtocolIE_Container_119P64, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P64 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P64_tags_129, + sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129) + /sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P64_tags_129, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129) + /sizeof(asn_DEF_ProtocolIE_Container_119P64_tags_129[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P64_constr_129, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P64_129, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P64_specs_129 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P65_131[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBAdditionRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P65_tags_131[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P65_specs_131 = { + sizeof(struct ProtocolIE_Container_119P65), + offsetof(struct ProtocolIE_Container_119P65, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P65 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P65_tags_131, + sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131) + /sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P65_tags_131, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131) + /sizeof(asn_DEF_ProtocolIE_Container_119P65_tags_131[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P65_constr_131, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P65_131, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P65_specs_131 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P66_133[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBAdditionRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P66_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P66_specs_133 = { + sizeof(struct ProtocolIE_Container_119P66), + offsetof(struct ProtocolIE_Container_119P66, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P66 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P66_tags_133, + sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133) + /sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P66_tags_133, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133) + /sizeof(asn_DEF_ProtocolIE_Container_119P66_tags_133[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P66_constr_133, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P66_133, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P66_specs_133 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P67_135[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReconfigurationComplete_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P67_tags_135[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P67_specs_135 = { + sizeof(struct ProtocolIE_Container_119P67), + offsetof(struct ProtocolIE_Container_119P67, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P67 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P67_tags_135, + sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135) + /sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P67_tags_135, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135) + /sizeof(asn_DEF_ProtocolIE_Container_119P67_tags_135[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P67_constr_135, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P67_135, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P67_specs_135 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P68_137[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P68_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P68_specs_137 = { + sizeof(struct ProtocolIE_Container_119P68), + offsetof(struct ProtocolIE_Container_119P68, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P68 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P68_tags_137, + sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137) + /sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P68_tags_137, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137) + /sizeof(asn_DEF_ProtocolIE_Container_119P68_tags_137[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P68_constr_137, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P68_137, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P68_specs_137 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P69_139[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P69_tags_139[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P69_specs_139 = { + sizeof(struct ProtocolIE_Container_119P69), + offsetof(struct ProtocolIE_Container_119P69, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P69 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P69_tags_139, + sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139) + /sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P69_tags_139, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139) + /sizeof(asn_DEF_ProtocolIE_Container_119P69_tags_139[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P69_constr_139, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P69_139, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P69_specs_139 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P70_141[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P70_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P70_specs_141 = { + sizeof(struct ProtocolIE_Container_119P70), + offsetof(struct ProtocolIE_Container_119P70, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P70 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P70_tags_141, + sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141) + /sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P70_tags_141, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141) + /sizeof(asn_DEF_ProtocolIE_Container_119P70_tags_141[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P70_constr_141, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P70_141, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P70_specs_141 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P71_143[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P71_tags_143[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P71_specs_143 = { + sizeof(struct ProtocolIE_Container_119P71), + offsetof(struct ProtocolIE_Container_119P71, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P71 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P71_tags_143, + sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143) + /sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P71_tags_143, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143) + /sizeof(asn_DEF_ProtocolIE_Container_119P71_tags_143[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P71_constr_143, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P71_143, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P71_specs_143 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P72_145[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P72_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P72_specs_145 = { + sizeof(struct ProtocolIE_Container_119P72), + offsetof(struct ProtocolIE_Container_119P72, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P72 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P72_tags_145, + sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145) + /sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P72_tags_145, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145) + /sizeof(asn_DEF_ProtocolIE_Container_119P72_tags_145[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P72_constr_145, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P72_145, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P72_specs_145 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P73_147[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBModificationRefuse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P73_tags_147[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P73_specs_147 = { + sizeof(struct ProtocolIE_Container_119P73), + offsetof(struct ProtocolIE_Container_119P73, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P73 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P73_tags_147, + sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147) + /sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P73_tags_147, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147) + /sizeof(asn_DEF_ProtocolIE_Container_119P73_tags_147[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P73_constr_147, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P73_147, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P73_specs_147 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P74_149[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P74_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P74_specs_149 = { + sizeof(struct ProtocolIE_Container_119P74), + offsetof(struct ProtocolIE_Container_119P74, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P74 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P74_tags_149, + sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149) + /sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P74_tags_149, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149) + /sizeof(asn_DEF_ProtocolIE_Container_119P74_tags_149[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P74_constr_149, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P74_149, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P74_specs_149 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P75_151[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequestAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P75_tags_151[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P75_specs_151 = { + sizeof(struct ProtocolIE_Container_119P75), + offsetof(struct ProtocolIE_Container_119P75, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P75 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P75_tags_151, + sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151) + /sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P75_tags_151, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151) + /sizeof(asn_DEF_ProtocolIE_Container_119P75_tags_151[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P75_constr_151, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P75_151, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P75_specs_151 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P76_153[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequestReject_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P76_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P76_specs_153 = { + sizeof(struct ProtocolIE_Container_119P76), + offsetof(struct ProtocolIE_Container_119P76, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P76 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P76_tags_153, + sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153) + /sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P76_tags_153, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153) + /sizeof(asn_DEF_ProtocolIE_Container_119P76_tags_153[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P76_constr_153, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P76_153, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P76_specs_153 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P77_155[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P77_tags_155[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P77_specs_155 = { + sizeof(struct ProtocolIE_Container_119P77), + offsetof(struct ProtocolIE_Container_119P77, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P77 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P77_tags_155, + sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155) + /sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P77_tags_155, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155) + /sizeof(asn_DEF_ProtocolIE_Container_119P77_tags_155[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P77_constr_155, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P77_155, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P77_specs_155 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P78_157[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBReleaseConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P78_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P78_specs_157 = { + sizeof(struct ProtocolIE_Container_119P78), + offsetof(struct ProtocolIE_Container_119P78, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P78 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P78_tags_157, + sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157) + /sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P78_tags_157, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157) + /sizeof(asn_DEF_ProtocolIE_Container_119P78_tags_157[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P78_constr_157, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P78_157, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P78_specs_157 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P79_159[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBCounterCheckRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P79_tags_159[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P79_specs_159 = { + sizeof(struct ProtocolIE_Container_119P79), + offsetof(struct ProtocolIE_Container_119P79, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P79 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P79_tags_159, + sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159) + /sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P79_tags_159, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159) + /sizeof(asn_DEF_ProtocolIE_Container_119P79_tags_159[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P79_constr_159, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P79_159, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P79_specs_159 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P80_161[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBChangeRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P80_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P80_specs_161 = { + sizeof(struct ProtocolIE_Container_119P80), + offsetof(struct ProtocolIE_Container_119P80, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P80 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P80_tags_161, + sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161) + /sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P80_tags_161, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161) + /sizeof(asn_DEF_ProtocolIE_Container_119P80_tags_161[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P80_constr_161, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P80_161, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P80_specs_161 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P81_163[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBChangeConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P81_tags_163[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P81_specs_163 = { + sizeof(struct ProtocolIE_Container_119P81), + offsetof(struct ProtocolIE_Container_119P81, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P81 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P81_tags_163, + sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163) + /sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P81_tags_163, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163) + /sizeof(asn_DEF_ProtocolIE_Container_119P81_tags_163[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P81_constr_163, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P81_163, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P81_specs_163 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P82_165[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RRCTransfer_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P82_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P82_specs_165 = { + sizeof(struct ProtocolIE_Container_119P82), + offsetof(struct ProtocolIE_Container_119P82, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P82 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P82_tags_165, + sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165) + /sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P82_tags_165, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165) + /sizeof(asn_DEF_ProtocolIE_Container_119P82_tags_165[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P82_constr_165, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P82_165, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P82_specs_165 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P83_167[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBChangeRefuse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P83_tags_167[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P83_specs_167 = { + sizeof(struct ProtocolIE_Container_119P83), + offsetof(struct ProtocolIE_Container_119P83, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P83 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P83_tags_167, + sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167) + /sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P83_tags_167, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167) + /sizeof(asn_DEF_ProtocolIE_Container_119P83_tags_167[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P83_constr_167, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P83_167, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P83_specs_167 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P84_169[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P84_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P84_specs_169 = { + sizeof(struct ProtocolIE_Container_119P84), + offsetof(struct ProtocolIE_Container_119P84, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P84 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P84_tags_169, + sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169) + /sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P84_tags_169, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169) + /sizeof(asn_DEF_ProtocolIE_Container_119P84_tags_169[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P84_constr_169, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P84_169, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P84_specs_169 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P85_171[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2SetupReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P85_tags_171[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P85_specs_171 = { + sizeof(struct ProtocolIE_Container_119P85), + offsetof(struct ProtocolIE_Container_119P85, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P85 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P85_tags_171, + sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171) + /sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P85_tags_171, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171) + /sizeof(asn_DEF_ProtocolIE_Container_119P85_tags_171[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P85_constr_171, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P85_171, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P85_specs_171 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P86_173[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2SetupReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P86_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P86_specs_173 = { + sizeof(struct ProtocolIE_Container_119P86), + offsetof(struct ProtocolIE_Container_119P86, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P86 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P86_tags_173, + sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173) + /sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P86_tags_173, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173) + /sizeof(asn_DEF_ProtocolIE_Container_119P86_tags_173[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P86_constr_173, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P86_173, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P86_specs_173 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P87_175[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P87_tags_175[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P87_specs_175 = { + sizeof(struct ProtocolIE_Container_119P87), + offsetof(struct ProtocolIE_Container_119P87, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P87 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P87_tags_175, + sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175) + /sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P87_tags_175, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175) + /sizeof(asn_DEF_ProtocolIE_Container_119P87_tags_175[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P87_constr_175, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P87_175, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P87_specs_175 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P88_177[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2SetupReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P88_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P88_specs_177 = { + sizeof(struct ProtocolIE_Container_119P88), + offsetof(struct ProtocolIE_Container_119P88, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P88 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P88_tags_177, + sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177) + /sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P88_tags_177, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177) + /sizeof(asn_DEF_ProtocolIE_Container_119P88_tags_177[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P88_constr_177, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P88_177, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P88_specs_177 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P89_179[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2SetupReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P89_tags_179[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P89_specs_179 = { + sizeof(struct ProtocolIE_Container_119P89), + offsetof(struct ProtocolIE_Container_119P89, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P89 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P89_tags_179, + sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179) + /sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P89_tags_179, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179) + /sizeof(asn_DEF_ProtocolIE_Container_119P89_tags_179[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P89_constr_179, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P89_179, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P89_specs_179 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P90_181[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P90_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P90_specs_181 = { + sizeof(struct ProtocolIE_Container_119P90), + offsetof(struct ProtocolIE_Container_119P90, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P90 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P90_tags_181, + sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181) + /sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P90_tags_181, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181) + /sizeof(asn_DEF_ProtocolIE_Container_119P90_tags_181[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P90_constr_181, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P90_181, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P90_specs_181 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P91_183[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P91_tags_183[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P91_specs_183 = { + sizeof(struct ProtocolIE_Container_119P91), + offsetof(struct ProtocolIE_Container_119P91, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P91 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P91_tags_183, + sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183) + /sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P91_tags_183, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183) + /sizeof(asn_DEF_ProtocolIE_Container_119P91_tags_183[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P91_constr_183, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P91_183, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P91_specs_183 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P92_185[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCConfigUpdateIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P92_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P92_specs_185 = { + sizeof(struct ProtocolIE_Container_119P92), + offsetof(struct ProtocolIE_Container_119P92, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P92 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P92_tags_185, + sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185) + /sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P92_tags_185, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185) + /sizeof(asn_DEF_ProtocolIE_Container_119P92_tags_185[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P92_constr_185, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P92_185, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P92_specs_185 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P93_187[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCConfigUpdateIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P93_tags_187[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P93_specs_187 = { + sizeof(struct ProtocolIE_Container_119P93), + offsetof(struct ProtocolIE_Container_119P93, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P93 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P93_tags_187, + sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187) + /sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P93_tags_187, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187) + /sizeof(asn_DEF_ProtocolIE_Container_119P93_tags_187[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P93_constr_187, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P93_187, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P93_specs_187 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P94_189[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P94_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P94_specs_189 = { + sizeof(struct ProtocolIE_Container_119P94), + offsetof(struct ProtocolIE_Container_119P94, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P94 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P94_tags_189, + sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189) + /sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P94_tags_189, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189) + /sizeof(asn_DEF_ProtocolIE_Container_119P94_tags_189[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P94_constr_189, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P94_189, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P94_specs_189 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P95_191[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCConfigUpdateAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P95_tags_191[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P95_specs_191 = { + sizeof(struct ProtocolIE_Container_119P95), + offsetof(struct ProtocolIE_Container_119P95, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P95 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P95_tags_191, + sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191) + /sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P95_tags_191, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191) + /sizeof(asn_DEF_ProtocolIE_Container_119P95_tags_191[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P95_constr_191, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P95_191, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P95_specs_191 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P96_193[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCConfigUpdateAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P96_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P96_specs_193 = { + sizeof(struct ProtocolIE_Container_119P96), + offsetof(struct ProtocolIE_Container_119P96, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P96 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P96_tags_193, + sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193) + /sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P96_tags_193, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193) + /sizeof(asn_DEF_ProtocolIE_Container_119P96_tags_193[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P96_constr_193, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P96_193, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P96_specs_193 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P97_195[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P97_tags_195[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P97_specs_195 = { + sizeof(struct ProtocolIE_Container_119P97), + offsetof(struct ProtocolIE_Container_119P97, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P97 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P97_tags_195, + sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195) + /sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P97_tags_195, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195) + /sizeof(asn_DEF_ProtocolIE_Container_119P97_tags_195[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P97_constr_195, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P97_195, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P97_specs_195 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P98_197[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCCellActivationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P98_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P98_specs_197 = { + sizeof(struct ProtocolIE_Container_119P98), + offsetof(struct ProtocolIE_Container_119P98, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P98 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P98_tags_197, + sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197) + /sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P98_tags_197, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197) + /sizeof(asn_DEF_ProtocolIE_Container_119P98_tags_197[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P98_constr_197, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P98_197, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P98_specs_197 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P99_199[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCCellActivationResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P99_tags_199[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P99_specs_199 = { + sizeof(struct ProtocolIE_Container_119P99), + offsetof(struct ProtocolIE_Container_119P99, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P99 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P99_tags_199, + sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199) + /sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P99_tags_199, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199) + /sizeof(asn_DEF_ProtocolIE_Container_119P99_tags_199[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P99_constr_199, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P99_199, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P99_specs_199 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P100_201[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCCellActivationFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P100_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P100_specs_201 = { + sizeof(struct ProtocolIE_Container_119P100), + offsetof(struct ProtocolIE_Container_119P100, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P100 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P100_tags_201, + sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201) + /sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P100_tags_201, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201) + /sizeof(asn_DEF_ProtocolIE_Container_119P100_tags_201[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P100_constr_201, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P100_201, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P100_specs_201 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P101_203[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATDataUsageReport_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P101_tags_203[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P101_specs_203 = { + sizeof(struct ProtocolIE_Container_119P101), + offsetof(struct ProtocolIE_Container_119P101, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P101 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P101_tags_203, + sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203) + /sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P101_tags_203, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203) + /sizeof(asn_DEF_ProtocolIE_Container_119P101_tags_203[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P101_constr_203, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P101_203, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P101_specs_203 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P102_205[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBActivityNotification_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P102_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P102_specs_205 = { + sizeof(struct ProtocolIE_Container_119P102), + offsetof(struct ProtocolIE_Container_119P102, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P102 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P102_tags_205, + sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205) + /sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P102_tags_205, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205) + /sizeof(asn_DEF_ProtocolIE_Container_119P102_tags_205[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P102_constr_205, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P102_205, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P102_specs_205 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P103_207[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCPartialResetRequired_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P103_tags_207[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P103_specs_207 = { + sizeof(struct ProtocolIE_Container_119P103), + offsetof(struct ProtocolIE_Container_119P103, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P103 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P103_tags_207, + sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207) + /sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P103_tags_207, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207) + /sizeof(asn_DEF_ProtocolIE_Container_119P103_tags_207[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P103_constr_207, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P103_207, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P103_specs_207 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P104_209[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCPartialResetConfirm_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P104_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P104_specs_209 = { + sizeof(struct ProtocolIE_Container_119P104), + offsetof(struct ProtocolIE_Container_119P104, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P104 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P104_tags_209, + sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209) + /sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P104_tags_209, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209) + /sizeof(asn_DEF_ProtocolIE_Container_119P104_tags_209[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P104_constr_209, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P104_209, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P104_specs_209 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P105_211[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P105_tags_211[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P105_specs_211 = { + sizeof(struct ProtocolIE_Container_119P105), + offsetof(struct ProtocolIE_Container_119P105, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P105 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P105_tags_211, + sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211) + /sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P105_tags_211, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211) + /sizeof(asn_DEF_ProtocolIE_Container_119P105_tags_211[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P105_constr_211, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P105_211, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P105_specs_211 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P106_213[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P106_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P106_specs_213 = { + sizeof(struct ProtocolIE_Container_119P106), + offsetof(struct ProtocolIE_Container_119P106, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P106 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P106_tags_213, + sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213) + /sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P106_tags_213, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213) + /sizeof(asn_DEF_ProtocolIE_Container_119P106_tags_213[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P106_constr_213, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P106_213, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P106_specs_213 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P107_215[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P107_tags_215[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P107_specs_215 = { + sizeof(struct ProtocolIE_Container_119P107), + offsetof(struct ProtocolIE_Container_119P107, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P107 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P107_tags_215, + sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215) + /sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P107_tags_215, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215) + /sizeof(asn_DEF_ProtocolIE_Container_119P107_tags_215[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P107_constr_215, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P107_215, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P107_specs_215 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P108_217[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P108_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P108_specs_217 = { + sizeof(struct ProtocolIE_Container_119P108), + offsetof(struct ProtocolIE_Container_119P108, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P108 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P108_tags_217, + sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217) + /sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P108_tags_217, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217) + /sizeof(asn_DEF_ProtocolIE_Container_119P108_tags_217[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P108_constr_217, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P108_217, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P108_specs_217 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P109_219[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P109_tags_219[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P109_specs_219 = { + sizeof(struct ProtocolIE_Container_119P109), + offsetof(struct ProtocolIE_Container_119P109, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P109 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P109_tags_219, + sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219) + /sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P109_tags_219, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219) + /sizeof(asn_DEF_ProtocolIE_Container_119P109_tags_219[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P109_constr_219, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P109_219, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P109_specs_219 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P110_221[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P110_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P110_specs_221 = { + sizeof(struct ProtocolIE_Container_119P110), + offsetof(struct ProtocolIE_Container_119P110, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P110 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P110_tags_221, + sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221) + /sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P110_tags_221, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221) + /sizeof(asn_DEF_ProtocolIE_Container_119P110_tags_221[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P110_constr_221, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P110_221, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P110_specs_221 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P111_223[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2RemovalRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P111_tags_223[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P111_specs_223 = { + sizeof(struct ProtocolIE_Container_119P111), + offsetof(struct ProtocolIE_Container_119P111, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P111 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P111_tags_223, + sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223) + /sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P111_tags_223, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223) + /sizeof(asn_DEF_ProtocolIE_Container_119P111_tags_223[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P111_constr_223, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P111_223, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P111_specs_223 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P112_225[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2RemovalReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P112_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P112_specs_225 = { + sizeof(struct ProtocolIE_Container_119P112), + offsetof(struct ProtocolIE_Container_119P112, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P112 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P112_tags_225, + sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225) + /sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P112_tags_225, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225) + /sizeof(asn_DEF_ProtocolIE_Container_119P112_tags_225[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P112_constr_225, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P112_225, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P112_specs_225 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P113_227[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2RemovalReqIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P113_tags_227[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P113_specs_227 = { + sizeof(struct ProtocolIE_Container_119P113), + offsetof(struct ProtocolIE_Container_119P113, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P113 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P113_tags_227, + sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227) + /sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P113_tags_227, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227) + /sizeof(asn_DEF_ProtocolIE_Container_119P113_tags_227[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P113_constr_227, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P113_227, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P113_specs_227 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P114_229[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2RemovalResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P114_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P114_specs_229 = { + sizeof(struct ProtocolIE_Container_119P114), + offsetof(struct ProtocolIE_Container_119P114, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P114 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P114_tags_229, + sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229) + /sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P114_tags_229, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229) + /sizeof(asn_DEF_ProtocolIE_Container_119P114_tags_229[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P114_constr_229, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P114_229, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P114_specs_229 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P115_231[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENB_ENDCX2RemovalReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P115_tags_231[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P115_specs_231 = { + sizeof(struct ProtocolIE_Container_119P115), + offsetof(struct ProtocolIE_Container_119P115, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P115 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P115_tags_231, + sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231) + /sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P115_tags_231, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231) + /sizeof(asn_DEF_ProtocolIE_Container_119P115_tags_231[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P115_constr_231, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P115_231, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P115_specs_231 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P116_233[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P116_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P116_specs_233 = { + sizeof(struct ProtocolIE_Container_119P116), + offsetof(struct ProtocolIE_Container_119P116, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P116 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P116_tags_233, + sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233) + /sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P116_tags_233, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233) + /sizeof(asn_DEF_ProtocolIE_Container_119P116_tags_233[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P116_constr_233, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P116_233, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P116_specs_233 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P117_235[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2RemovalFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P117_tags_235[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P117_specs_235 = { + sizeof(struct ProtocolIE_Container_119P117), + offsetof(struct ProtocolIE_Container_119P117, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P117 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P117_tags_235, + sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235) + /sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P117_tags_235, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235) + /sizeof(asn_DEF_ProtocolIE_Container_119P117_tags_235[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P117_constr_235, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P117_235, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P117_specs_235 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P118_237[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataForwardingAddressIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P118_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P118_specs_237 = { + sizeof(struct ProtocolIE_Container_119P118), + offsetof(struct ProtocolIE_Container_119P118, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P118 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P118_tags_237, + sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237) + /sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P118_tags_237, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237) + /sizeof(asn_DEF_ProtocolIE_Container_119P118_tags_237[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P118_constr_237, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P118_237, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P118_specs_237 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P119_239[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GNBStatusIndicationIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_119P119_tags_239[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P119_specs_239 = { + sizeof(struct ProtocolIE_Container_119P119), + offsetof(struct ProtocolIE_Container_119P119, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P119 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_119P119_tags_239, + sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239) + /sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_119P119_tags_239, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239) + /sizeof(asn_DEF_ProtocolIE_Container_119P119_tags_239[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_119P119_constr_239, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_119P119_239, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_119P119_specs_239 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Container.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Container.h new file mode 100644 index 0000000..2adbecc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Container.h @@ -0,0 +1,1376 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Container_H_ +#define _ProtocolIE_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubscriptionRequest_IEs; +struct RICsubscriptionResponse_IEs; +struct RICsubscriptionFailure_IEs; +struct RICsubscriptionDeleteRequest_IEs; +struct RICsubscriptionDeleteResponse_IEs; +struct RICsubscriptionDeleteFailure_IEs; +struct RICindication_IEs; +struct RICcontrolRequest_IEs; +struct RICcontrolAcknowledge_IEs; +struct RICcontrolFailure_IEs; +struct RICserviceUpdate_IEs; +struct RICserviceUpdateAcknowledge_IEs; +struct RICserviceUpdateFailure_IEs; +struct RICserviceQuery_IEs; +struct HandoverRequest_IEs; +struct HandoverRequestAcknowledge_IEs; +struct HandoverPreparationFailure_IEs; +struct HandoverReport_IEs; +struct SNStatusTransfer_IEs; +struct UEContextRelease_IEs; +struct HandoverCancel_IEs; +struct ErrorIndication_IEs; +struct ResetRequest_IEs; +struct ResetResponse_IEs; +struct X2SetupRequest_IEs; +struct X2SetupResponse_IEs; +struct X2SetupFailure_IEs; +struct LoadInformation_IEs; +struct ENBConfigurationUpdate_IEs; +struct ENBConfigurationUpdateAcknowledge_IEs; +struct ENBConfigurationUpdateFailure_IEs; +struct ResourceStatusRequest_IEs; +struct ResourceStatusResponse_IEs; +struct ResourceStatusFailure_IEs; +struct ResourceStatusUpdate_IEs; +struct MobilityChangeRequest_IEs; +struct MobilityChangeAcknowledge_IEs; +struct MobilityChangeFailure_IEs; +struct RLFIndication_IEs; +struct CellActivationRequest_IEs; +struct CellActivationResponse_IEs; +struct CellActivationFailure_IEs; +struct X2Release_IEs; +struct X2APMessageTransfer_IEs; +struct SeNBAdditionRequest_IEs; +struct SeNBAdditionRequestAcknowledge_IEs; +struct SeNBAdditionRequestReject_IEs; +struct SeNBReconfigurationComplete_IEs; +struct SeNBModificationRequest_IEs; +struct SeNBModificationRequestAcknowledge_IEs; +struct SeNBModificationRequestReject_IEs; +struct SeNBModificationRequired_IEs; +struct SeNBModificationConfirm_IEs; +struct SeNBModificationRefuse_IEs; +struct SeNBReleaseRequest_IEs; +struct SeNBReleaseRequired_IEs; +struct SeNBReleaseConfirm_IEs; +struct SeNBCounterCheckRequest_IEs; +struct X2RemovalRequest_IEs; +struct X2RemovalResponse_IEs; +struct X2RemovalFailure_IEs; +struct RetrieveUEContextRequest_IEs; +struct RetrieveUEContextResponse_IEs; +struct RetrieveUEContextFailure_IEs; +struct SgNBAdditionRequest_IEs; +struct SgNBAdditionRequestAcknowledge_IEs; +struct SgNBAdditionRequestReject_IEs; +struct SgNBReconfigurationComplete_IEs; +struct SgNBModificationRequest_IEs; +struct SgNBModificationRequestAcknowledge_IEs; +struct SgNBModificationRequestReject_IEs; +struct SgNBModificationRequired_IEs; +struct SgNBModificationConfirm_IEs; +struct SgNBModificationRefuse_IEs; +struct SgNBReleaseRequest_IEs; +struct SgNBReleaseRequestAcknowledge_IEs; +struct SgNBReleaseRequestReject_IEs; +struct SgNBReleaseRequired_IEs; +struct SgNBReleaseConfirm_IEs; +struct SgNBCounterCheckRequest_IEs; +struct SgNBChangeRequired_IEs; +struct SgNBChangeConfirm_IEs; +struct RRCTransfer_IEs; +struct SgNBChangeRefuse_IEs; +struct ENDCX2SetupRequest_IEs; +struct ENB_ENDCX2SetupReqIEs; +struct En_gNB_ENDCX2SetupReqIEs; +struct ENDCX2SetupResponse_IEs; +struct ENB_ENDCX2SetupReqAckIEs; +struct En_gNB_ENDCX2SetupReqAckIEs; +struct ENDCX2SetupFailure_IEs; +struct ENDCConfigurationUpdate_IEs; +struct ENB_ENDCConfigUpdateIEs; +struct En_gNB_ENDCConfigUpdateIEs; +struct ENDCConfigurationUpdateAcknowledge_IEs; +struct ENB_ENDCConfigUpdateAckIEs; +struct En_gNB_ENDCConfigUpdateAckIEs; +struct ENDCConfigurationUpdateFailure_IEs; +struct ENDCCellActivationRequest_IEs; +struct ENDCCellActivationResponse_IEs; +struct ENDCCellActivationFailure_IEs; +struct SecondaryRATDataUsageReport_IEs; +struct SgNBActivityNotification_IEs; +struct ENDCPartialResetRequired_IEs; +struct ENDCPartialResetConfirm_IEs; +struct EUTRANRCellResourceCoordinationRequest_IEs; +struct ENB_EUTRA_NRCellResourceCoordinationReqIEs; +struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs; +struct EUTRANRCellResourceCoordinationResponse_IEs; +struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs; +struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs; +struct ENDCX2RemovalRequest_IEs; +struct ENB_ENDCX2RemovalReqIEs; +struct En_gNB_ENDCX2RemovalReqIEs; +struct ENDCX2RemovalResponse_IEs; +struct ENB_ENDCX2RemovalReqAckIEs; +struct En_gNB_ENDCX2RemovalReqAckIEs; +struct ENDCX2RemovalFailure_IEs; +struct DataForwardingAddressIndication_IEs; +struct GNBStatusIndicationIEs; + +/* ProtocolIE-Container */ +typedef struct ProtocolIE_Container_119P0 { + A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P0_t; +typedef struct ProtocolIE_Container_119P1 { + A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P1_t; +typedef struct ProtocolIE_Container_119P2 { + A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P2_t; +typedef struct ProtocolIE_Container_119P3 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P3_t; +typedef struct ProtocolIE_Container_119P4 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P4_t; +typedef struct ProtocolIE_Container_119P5 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P5_t; +typedef struct ProtocolIE_Container_119P6 { + A_SEQUENCE_OF(struct RICindication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P6_t; +typedef struct ProtocolIE_Container_119P7 { + A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P7_t; +typedef struct ProtocolIE_Container_119P8 { + A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P8_t; +typedef struct ProtocolIE_Container_119P9 { + A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P9_t; +typedef struct ProtocolIE_Container_119P10 { + A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P10_t; +typedef struct ProtocolIE_Container_119P11 { + A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P11_t; +typedef struct ProtocolIE_Container_119P12 { + A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P12_t; +typedef struct ProtocolIE_Container_119P13 { + A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P13_t; +typedef struct ProtocolIE_Container_119P14 { + A_SEQUENCE_OF(struct HandoverRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P14_t; +typedef struct ProtocolIE_Container_119P15 { + A_SEQUENCE_OF(struct HandoverRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P15_t; +typedef struct ProtocolIE_Container_119P16 { + A_SEQUENCE_OF(struct HandoverPreparationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P16_t; +typedef struct ProtocolIE_Container_119P17 { + A_SEQUENCE_OF(struct HandoverReport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P17_t; +typedef struct ProtocolIE_Container_119P18 { + A_SEQUENCE_OF(struct SNStatusTransfer_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P18_t; +typedef struct ProtocolIE_Container_119P19 { + A_SEQUENCE_OF(struct UEContextRelease_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P19_t; +typedef struct ProtocolIE_Container_119P20 { + A_SEQUENCE_OF(struct HandoverCancel_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P20_t; +typedef struct ProtocolIE_Container_119P21 { + A_SEQUENCE_OF(struct ErrorIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P21_t; +typedef struct ProtocolIE_Container_119P22 { + A_SEQUENCE_OF(struct ResetRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P22_t; +typedef struct ProtocolIE_Container_119P23 { + A_SEQUENCE_OF(struct ResetResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P23_t; +typedef struct ProtocolIE_Container_119P24 { + A_SEQUENCE_OF(struct X2SetupRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P24_t; +typedef struct ProtocolIE_Container_119P25 { + A_SEQUENCE_OF(struct X2SetupResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P25_t; +typedef struct ProtocolIE_Container_119P26 { + A_SEQUENCE_OF(struct X2SetupFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P26_t; +typedef struct ProtocolIE_Container_119P27 { + A_SEQUENCE_OF(struct LoadInformation_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P27_t; +typedef struct ProtocolIE_Container_119P28 { + A_SEQUENCE_OF(struct ENBConfigurationUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P28_t; +typedef struct ProtocolIE_Container_119P29 { + A_SEQUENCE_OF(struct ENBConfigurationUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P29_t; +typedef struct ProtocolIE_Container_119P30 { + A_SEQUENCE_OF(struct ENBConfigurationUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P30_t; +typedef struct ProtocolIE_Container_119P31 { + A_SEQUENCE_OF(struct ResourceStatusRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P31_t; +typedef struct ProtocolIE_Container_119P32 { + A_SEQUENCE_OF(struct ResourceStatusResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P32_t; +typedef struct ProtocolIE_Container_119P33 { + A_SEQUENCE_OF(struct ResourceStatusFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P33_t; +typedef struct ProtocolIE_Container_119P34 { + A_SEQUENCE_OF(struct ResourceStatusUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P34_t; +typedef struct ProtocolIE_Container_119P35 { + A_SEQUENCE_OF(struct MobilityChangeRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P35_t; +typedef struct ProtocolIE_Container_119P36 { + A_SEQUENCE_OF(struct MobilityChangeAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P36_t; +typedef struct ProtocolIE_Container_119P37 { + A_SEQUENCE_OF(struct MobilityChangeFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P37_t; +typedef struct ProtocolIE_Container_119P38 { + A_SEQUENCE_OF(struct RLFIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P38_t; +typedef struct ProtocolIE_Container_119P39 { + A_SEQUENCE_OF(struct CellActivationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P39_t; +typedef struct ProtocolIE_Container_119P40 { + A_SEQUENCE_OF(struct CellActivationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P40_t; +typedef struct ProtocolIE_Container_119P41 { + A_SEQUENCE_OF(struct CellActivationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P41_t; +typedef struct ProtocolIE_Container_119P42 { + A_SEQUENCE_OF(struct X2Release_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P42_t; +typedef struct ProtocolIE_Container_119P43 { + A_SEQUENCE_OF(struct X2APMessageTransfer_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P43_t; +typedef struct ProtocolIE_Container_119P44 { + A_SEQUENCE_OF(struct SeNBAdditionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P44_t; +typedef struct ProtocolIE_Container_119P45 { + A_SEQUENCE_OF(struct SeNBAdditionRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P45_t; +typedef struct ProtocolIE_Container_119P46 { + A_SEQUENCE_OF(struct SeNBAdditionRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P46_t; +typedef struct ProtocolIE_Container_119P47 { + A_SEQUENCE_OF(struct SeNBReconfigurationComplete_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P47_t; +typedef struct ProtocolIE_Container_119P48 { + A_SEQUENCE_OF(struct SeNBModificationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P48_t; +typedef struct ProtocolIE_Container_119P49 { + A_SEQUENCE_OF(struct SeNBModificationRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P49_t; +typedef struct ProtocolIE_Container_119P50 { + A_SEQUENCE_OF(struct SeNBModificationRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P50_t; +typedef struct ProtocolIE_Container_119P51 { + A_SEQUENCE_OF(struct SeNBModificationRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P51_t; +typedef struct ProtocolIE_Container_119P52 { + A_SEQUENCE_OF(struct SeNBModificationConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P52_t; +typedef struct ProtocolIE_Container_119P53 { + A_SEQUENCE_OF(struct SeNBModificationRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P53_t; +typedef struct ProtocolIE_Container_119P54 { + A_SEQUENCE_OF(struct SeNBReleaseRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P54_t; +typedef struct ProtocolIE_Container_119P55 { + A_SEQUENCE_OF(struct SeNBReleaseRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P55_t; +typedef struct ProtocolIE_Container_119P56 { + A_SEQUENCE_OF(struct SeNBReleaseConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P56_t; +typedef struct ProtocolIE_Container_119P57 { + A_SEQUENCE_OF(struct SeNBCounterCheckRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P57_t; +typedef struct ProtocolIE_Container_119P58 { + A_SEQUENCE_OF(struct X2RemovalRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P58_t; +typedef struct ProtocolIE_Container_119P59 { + A_SEQUENCE_OF(struct X2RemovalResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P59_t; +typedef struct ProtocolIE_Container_119P60 { + A_SEQUENCE_OF(struct X2RemovalFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P60_t; +typedef struct ProtocolIE_Container_119P61 { + A_SEQUENCE_OF(struct RetrieveUEContextRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P61_t; +typedef struct ProtocolIE_Container_119P62 { + A_SEQUENCE_OF(struct RetrieveUEContextResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P62_t; +typedef struct ProtocolIE_Container_119P63 { + A_SEQUENCE_OF(struct RetrieveUEContextFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P63_t; +typedef struct ProtocolIE_Container_119P64 { + A_SEQUENCE_OF(struct SgNBAdditionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P64_t; +typedef struct ProtocolIE_Container_119P65 { + A_SEQUENCE_OF(struct SgNBAdditionRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P65_t; +typedef struct ProtocolIE_Container_119P66 { + A_SEQUENCE_OF(struct SgNBAdditionRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P66_t; +typedef struct ProtocolIE_Container_119P67 { + A_SEQUENCE_OF(struct SgNBReconfigurationComplete_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P67_t; +typedef struct ProtocolIE_Container_119P68 { + A_SEQUENCE_OF(struct SgNBModificationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P68_t; +typedef struct ProtocolIE_Container_119P69 { + A_SEQUENCE_OF(struct SgNBModificationRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P69_t; +typedef struct ProtocolIE_Container_119P70 { + A_SEQUENCE_OF(struct SgNBModificationRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P70_t; +typedef struct ProtocolIE_Container_119P71 { + A_SEQUENCE_OF(struct SgNBModificationRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P71_t; +typedef struct ProtocolIE_Container_119P72 { + A_SEQUENCE_OF(struct SgNBModificationConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P72_t; +typedef struct ProtocolIE_Container_119P73 { + A_SEQUENCE_OF(struct SgNBModificationRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P73_t; +typedef struct ProtocolIE_Container_119P74 { + A_SEQUENCE_OF(struct SgNBReleaseRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P74_t; +typedef struct ProtocolIE_Container_119P75 { + A_SEQUENCE_OF(struct SgNBReleaseRequestAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P75_t; +typedef struct ProtocolIE_Container_119P76 { + A_SEQUENCE_OF(struct SgNBReleaseRequestReject_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P76_t; +typedef struct ProtocolIE_Container_119P77 { + A_SEQUENCE_OF(struct SgNBReleaseRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P77_t; +typedef struct ProtocolIE_Container_119P78 { + A_SEQUENCE_OF(struct SgNBReleaseConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P78_t; +typedef struct ProtocolIE_Container_119P79 { + A_SEQUENCE_OF(struct SgNBCounterCheckRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P79_t; +typedef struct ProtocolIE_Container_119P80 { + A_SEQUENCE_OF(struct SgNBChangeRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P80_t; +typedef struct ProtocolIE_Container_119P81 { + A_SEQUENCE_OF(struct SgNBChangeConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P81_t; +typedef struct ProtocolIE_Container_119P82 { + A_SEQUENCE_OF(struct RRCTransfer_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P82_t; +typedef struct ProtocolIE_Container_119P83 { + A_SEQUENCE_OF(struct SgNBChangeRefuse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P83_t; +typedef struct ProtocolIE_Container_119P84 { + A_SEQUENCE_OF(struct ENDCX2SetupRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P84_t; +typedef struct ProtocolIE_Container_119P85 { + A_SEQUENCE_OF(struct ENB_ENDCX2SetupReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P85_t; +typedef struct ProtocolIE_Container_119P86 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2SetupReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P86_t; +typedef struct ProtocolIE_Container_119P87 { + A_SEQUENCE_OF(struct ENDCX2SetupResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P87_t; +typedef struct ProtocolIE_Container_119P88 { + A_SEQUENCE_OF(struct ENB_ENDCX2SetupReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P88_t; +typedef struct ProtocolIE_Container_119P89 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2SetupReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P89_t; +typedef struct ProtocolIE_Container_119P90 { + A_SEQUENCE_OF(struct ENDCX2SetupFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P90_t; +typedef struct ProtocolIE_Container_119P91 { + A_SEQUENCE_OF(struct ENDCConfigurationUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P91_t; +typedef struct ProtocolIE_Container_119P92 { + A_SEQUENCE_OF(struct ENB_ENDCConfigUpdateIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P92_t; +typedef struct ProtocolIE_Container_119P93 { + A_SEQUENCE_OF(struct En_gNB_ENDCConfigUpdateIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P93_t; +typedef struct ProtocolIE_Container_119P94 { + A_SEQUENCE_OF(struct ENDCConfigurationUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P94_t; +typedef struct ProtocolIE_Container_119P95 { + A_SEQUENCE_OF(struct ENB_ENDCConfigUpdateAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P95_t; +typedef struct ProtocolIE_Container_119P96 { + A_SEQUENCE_OF(struct En_gNB_ENDCConfigUpdateAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P96_t; +typedef struct ProtocolIE_Container_119P97 { + A_SEQUENCE_OF(struct ENDCConfigurationUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P97_t; +typedef struct ProtocolIE_Container_119P98 { + A_SEQUENCE_OF(struct ENDCCellActivationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P98_t; +typedef struct ProtocolIE_Container_119P99 { + A_SEQUENCE_OF(struct ENDCCellActivationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P99_t; +typedef struct ProtocolIE_Container_119P100 { + A_SEQUENCE_OF(struct ENDCCellActivationFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P100_t; +typedef struct ProtocolIE_Container_119P101 { + A_SEQUENCE_OF(struct SecondaryRATDataUsageReport_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P101_t; +typedef struct ProtocolIE_Container_119P102 { + A_SEQUENCE_OF(struct SgNBActivityNotification_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P102_t; +typedef struct ProtocolIE_Container_119P103 { + A_SEQUENCE_OF(struct ENDCPartialResetRequired_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P103_t; +typedef struct ProtocolIE_Container_119P104 { + A_SEQUENCE_OF(struct ENDCPartialResetConfirm_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P104_t; +typedef struct ProtocolIE_Container_119P105 { + A_SEQUENCE_OF(struct EUTRANRCellResourceCoordinationRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P105_t; +typedef struct ProtocolIE_Container_119P106 { + A_SEQUENCE_OF(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P106_t; +typedef struct ProtocolIE_Container_119P107 { + A_SEQUENCE_OF(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P107_t; +typedef struct ProtocolIE_Container_119P108 { + A_SEQUENCE_OF(struct EUTRANRCellResourceCoordinationResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P108_t; +typedef struct ProtocolIE_Container_119P109 { + A_SEQUENCE_OF(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P109_t; +typedef struct ProtocolIE_Container_119P110 { + A_SEQUENCE_OF(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P110_t; +typedef struct ProtocolIE_Container_119P111 { + A_SEQUENCE_OF(struct ENDCX2RemovalRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P111_t; +typedef struct ProtocolIE_Container_119P112 { + A_SEQUENCE_OF(struct ENB_ENDCX2RemovalReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P112_t; +typedef struct ProtocolIE_Container_119P113 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2RemovalReqIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P113_t; +typedef struct ProtocolIE_Container_119P114 { + A_SEQUENCE_OF(struct ENDCX2RemovalResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P114_t; +typedef struct ProtocolIE_Container_119P115 { + A_SEQUENCE_OF(struct ENB_ENDCX2RemovalReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P115_t; +typedef struct ProtocolIE_Container_119P116 { + A_SEQUENCE_OF(struct En_gNB_ENDCX2RemovalReqAckIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P116_t; +typedef struct ProtocolIE_Container_119P117 { + A_SEQUENCE_OF(struct ENDCX2RemovalFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P117_t; +typedef struct ProtocolIE_Container_119P118 { + A_SEQUENCE_OF(struct DataForwardingAddressIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P118_t; +typedef struct ProtocolIE_Container_119P119 { + A_SEQUENCE_OF(struct GNBStatusIndicationIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_119P119_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P19_constr_39; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P20; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P20_specs_41; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P20_41[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P20_constr_41; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P21; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P21_specs_43; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P21_43[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P21_constr_43; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P22; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P22_specs_45; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P22_45[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P22_constr_45; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P23; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P23_specs_47; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P23_47[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P23_constr_47; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P24; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P24_specs_49; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P24_49[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P24_constr_49; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P25; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P25_specs_51; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P25_51[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P25_constr_51; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P26; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P26_specs_53; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P26_53[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P26_constr_53; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P27; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P27_specs_55; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P27_55[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P27_constr_55; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P28; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P28_specs_57; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P28_57[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P28_constr_57; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P29; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P29_specs_59; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P29_59[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P29_constr_59; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P30; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P30_specs_61; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P30_61[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P30_constr_61; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P31; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P31_specs_63; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P31_63[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P31_constr_63; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P32; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P32_specs_65; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P32_65[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P32_constr_65; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P33; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P33_specs_67; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P33_67[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P33_constr_67; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P34; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P34_specs_69; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P34_69[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P34_constr_69; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P35; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P35_specs_71; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P35_71[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P35_constr_71; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P36; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P36_specs_73; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P36_73[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P36_constr_73; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P37; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P37_specs_75; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P37_75[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P37_constr_75; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P38; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P38_specs_77; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P38_77[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P38_constr_77; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P39; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P39_specs_79; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P39_79[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P39_constr_79; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P40; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P40_specs_81; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P40_81[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P40_constr_81; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P41; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P41_specs_83; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P41_83[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P41_constr_83; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P42; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P42_specs_85; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P42_85[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P42_constr_85; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P43; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P43_specs_87; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P43_87[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P43_constr_87; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P44; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P44_specs_89; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P44_89[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P44_constr_89; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P45; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P45_specs_91; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P45_91[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P45_constr_91; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P46; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P46_specs_93; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P46_93[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P46_constr_93; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P47; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P47_specs_95; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P47_95[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P47_constr_95; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P48; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P48_specs_97; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P48_97[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P48_constr_97; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P49; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P49_specs_99; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P49_99[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P49_constr_99; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P50; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P50_specs_101; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P50_101[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P50_constr_101; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P51; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P51_specs_103; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P51_103[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P51_constr_103; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P52; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P52_specs_105; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P52_105[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P52_constr_105; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P53; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P53_specs_107; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P53_107[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P53_constr_107; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P54; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P54_specs_109; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P54_109[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P54_constr_109; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P55; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P55_specs_111; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P55_111[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P55_constr_111; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P56; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P56_specs_113; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P56_113[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P56_constr_113; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P57; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P57_specs_115; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P57_115[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P57_constr_115; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P58; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P58_specs_117; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P58_117[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P58_constr_117; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P59; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P59_specs_119; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P59_119[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P59_constr_119; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P60; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P60_specs_121; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P60_121[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P60_constr_121; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P61; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P61_specs_123; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P61_123[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P61_constr_123; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P62; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P62_specs_125; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P62_125[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P62_constr_125; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P63; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P63_specs_127; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P63_127[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P63_constr_127; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P64; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P64_specs_129; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P64_129[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P64_constr_129; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P65; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P65_specs_131; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P65_131[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P65_constr_131; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P66; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P66_specs_133; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P66_133[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P66_constr_133; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P67; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P67_specs_135; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P67_135[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P67_constr_135; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P68; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P68_specs_137; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P68_137[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P68_constr_137; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P69; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P69_specs_139; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P69_139[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P69_constr_139; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P70; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P70_specs_141; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P70_141[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P70_constr_141; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P71; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P71_specs_143; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P71_143[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P71_constr_143; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P72; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P72_specs_145; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P72_145[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P72_constr_145; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P73; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P73_specs_147; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P73_147[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P73_constr_147; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P74; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P74_specs_149; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P74_149[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P74_constr_149; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P75; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P75_specs_151; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P75_151[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P75_constr_151; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P76; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P76_specs_153; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P76_153[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P76_constr_153; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P77; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P77_specs_155; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P77_155[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P77_constr_155; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P78; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P78_specs_157; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P78_157[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P78_constr_157; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P79; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P79_specs_159; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P79_159[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P79_constr_159; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P80; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P80_specs_161; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P80_161[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P80_constr_161; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P81; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P81_specs_163; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P81_163[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P81_constr_163; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P82; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P82_specs_165; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P82_165[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P82_constr_165; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P83; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P83_specs_167; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P83_167[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P83_constr_167; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P84; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P84_specs_169; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P84_169[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P84_constr_169; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P85; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P85_specs_171; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P85_171[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P85_constr_171; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P86; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P86_specs_173; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P86_173[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P86_constr_173; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P87; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P87_specs_175; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P87_175[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P87_constr_175; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P88; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P88_specs_177; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P88_177[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P88_constr_177; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P89; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P89_specs_179; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P89_179[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P89_constr_179; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P90; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P90_specs_181; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P90_181[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P90_constr_181; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P91; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P91_specs_183; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P91_183[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P91_constr_183; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P92; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P92_specs_185; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P92_185[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P92_constr_185; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P93; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P93_specs_187; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P93_187[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P93_constr_187; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P94; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P94_specs_189; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P94_189[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P94_constr_189; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P95; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P95_specs_191; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P95_191[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P95_constr_191; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P96; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P96_specs_193; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P96_193[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P96_constr_193; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P97; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P97_specs_195; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P97_195[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P97_constr_195; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P98; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P98_specs_197; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P98_197[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P98_constr_197; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P99; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P99_specs_199; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P99_199[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P99_constr_199; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P100; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P100_specs_201; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P100_201[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P100_constr_201; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P101; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P101_specs_203; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P101_203[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P101_constr_203; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P102; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P102_specs_205; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P102_205[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P102_constr_205; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P103; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P103_specs_207; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P103_207[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P103_constr_207; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P104; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P104_specs_209; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P104_209[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P104_constr_209; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P105; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P105_specs_211; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P105_211[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P105_constr_211; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P106; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P106_specs_213; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P106_213[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P106_constr_213; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P107; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P107_specs_215; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P107_215[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P107_constr_215; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P108; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P108_specs_217; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P108_217[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P108_constr_217; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P109; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P109_specs_219; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P109_219[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P109_constr_219; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P110; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P110_specs_221; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P110_221[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P110_constr_221; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P111; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P111_specs_223; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P111_223[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P111_constr_223; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P112; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P112_specs_225; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P112_225[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P112_constr_225; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P113; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P113_specs_227; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P113_227[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P113_constr_227; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P114; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P114_specs_229; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P114_229[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P114_constr_229; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P115; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P115_specs_231; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P115_231[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P115_constr_231; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P116; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P116_specs_233; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P116_233[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P116_constr_233; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P117; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P117_specs_235; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P117_235[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P117_constr_235; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P118; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P118_specs_237; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P118_237[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P118_constr_237; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_119P119; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_119P119_specs_239; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_119P119_239[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_119P119_constr_239; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Container_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c new file mode 100644 index 0000000..8eb884f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerList.c @@ -0,0 +1,32 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerList.h" + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h new file mode 100644 index 0000000..050a2e7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerList.h @@ -0,0 +1,46 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerList_H_ +#define _ProtocolIE_ContainerList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c new file mode 100644 index 0000000..8ef1ae9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.c @@ -0,0 +1,32 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerPair.h" + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h new file mode 100644 index 0000000..a3e10dc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPair.h @@ -0,0 +1,46 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerPair_H_ +#define _ProtocolIE_ContainerPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPair_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c new file mode 100644 index 0000000..cb34b74 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.c @@ -0,0 +1,32 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ContainerPairList.h" + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000..748a1a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ContainerPairList.h @@ -0,0 +1,46 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ContainerPairList_H_ +#define _ProtocolIE_ContainerPairList_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPairList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Field.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Field.c new file mode 100644 index 0000000..e1351e7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Field.c @@ -0,0 +1,48586 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Field.h" + +static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 60011; +static const long asn_VAL_4_ignore = 1; +static const long asn_VAL_4_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_9_id_RICaction_Admitted_Item = 60013; +static const long asn_VAL_9_ignore = 1; +static const long asn_VAL_9_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 60015; +static const long asn_VAL_10_ignore = 1; +static const long asn_VAL_10_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } +}; +static const long asn_VAL_48_id_RANfunction_Item = 60001; +static const long asn_VAL_48_ignore = 1; +static const long asn_VAL_48_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_RANfunction_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } +}; +static const long asn_VAL_49_id_RANfunctionID_Item = 60004; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_RANfunctionID_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } +}; +static const long asn_VAL_52_id_RANfunctionIEcause_Item = 60005; +static const long asn_VAL_52_ignore = 1; +static const long asn_VAL_52_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RANfunctionIEcause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } +}; +static const long asn_VAL_79_id_E_RABs_ToBeSetup_Item = 4; +static const long asn_VAL_79_ignore = 1; +static const long asn_VAL_79_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_79_id_E_RABs_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_79_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_79_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_91_id_E_RABs_Admitted_Item = 0; +static const long asn_VAL_91_ignore = 1; +static const long asn_VAL_91_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_91_id_E_RABs_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_91_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_91_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_112_id_E_RABs_SubjectToStatusTransfer_Item = 19; +static const long asn_VAL_112_ignore = 1; +static const long asn_VAL_112_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_112_id_E_RABs_SubjectToStatusTransfer_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_112_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToStatusTransfer_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_112_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1_rows } +}; +static const long asn_VAL_146_id_CellInformation_Item = 7; +static const long asn_VAL_146_ignore = 1; +static const long asn_VAL_146_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellInformation_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_146_id_CellInformation_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_146_ignore }, + { "&Value", aioc__type, &asn_DEF_CellInformation_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_146_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellInformation_ItemIEs_1[] = { + { 1, 4, asn_IOS_CellInformation_ItemIEs_1_rows } +}; +static const long asn_VAL_166_id_CellToReport_Item = 31; +static const long asn_VAL_166_ignore = 1; +static const long asn_VAL_166_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellToReport_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_166_id_CellToReport_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_166_ignore }, + { "&Value", aioc__type, &asn_DEF_CellToReport_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_166_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellToReport_ItemIEs_1[] = { + { 1, 4, asn_IOS_CellToReport_ItemIEs_1_rows } +}; +static const long asn_VAL_171_id_MeasurementInitiationResult_Item = 66; +static const long asn_VAL_171_ignore = 1; +static const long asn_VAL_171_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_MeasurementInitiationResult_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_171_id_MeasurementInitiationResult_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_171_ignore }, + { "&Value", aioc__type, &asn_DEF_MeasurementInitiationResult_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_171_mandatory } +}; +static const asn_ioc_set_t asn_IOS_MeasurementInitiationResult_ItemIEs_1[] = { + { 1, 4, asn_IOS_MeasurementInitiationResult_ItemIEs_1_rows } +}; +static const long asn_VAL_172_id_MeasurementFailureCause_Item = 67; +static const long asn_VAL_172_ignore = 1; +static const long asn_VAL_172_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_MeasurementFailureCause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_172_id_MeasurementFailureCause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_172_ignore }, + { "&Value", aioc__type, &asn_DEF_MeasurementFailureCause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_172_mandatory } +}; +static const asn_ioc_set_t asn_IOS_MeasurementFailureCause_ItemIEs_1[] = { + { 1, 4, asn_IOS_MeasurementFailureCause_ItemIEs_1_rows } +}; +static const long asn_VAL_178_id_CompleteFailureCauseInformation_Item = 69; +static const long asn_VAL_178_ignore = 1; +static const long asn_VAL_178_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CompleteFailureCauseInformation_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_178_id_CompleteFailureCauseInformation_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_178_ignore }, + { "&Value", aioc__type, &asn_DEF_CompleteFailureCauseInformation_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_178_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CompleteFailureCauseInformation_ItemIEs_1[] = { + { 1, 4, asn_IOS_CompleteFailureCauseInformation_ItemIEs_1_rows } +}; +static const long asn_VAL_182_id_CellMeasurementResult_Item = 33; +static const long asn_VAL_182_ignore = 1; +static const long asn_VAL_182_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellMeasurementResult_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_182_id_CellMeasurementResult_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_182_ignore }, + { "&Value", aioc__type, &asn_DEF_CellMeasurementResult_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_182_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellMeasurementResult_ItemIEs_1[] = { + { 1, 4, asn_IOS_CellMeasurementResult_ItemIEs_1_rows } +}; +static const long asn_VAL_224_id_E_RABs_ToBeAdded_Item = 118; +static const long asn_VAL_224_reject = 0; +static const long asn_VAL_224_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_224_id_E_RABs_ToBeAdded_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_224_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_224_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_ItemIEs_1_rows } +}; +static const long asn_VAL_236_id_E_RABs_Admitted_ToBeAdded_Item = 121; +static const long asn_VAL_236_ignore = 1; +static const long asn_VAL_236_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_236_id_E_RABs_Admitted_ToBeAdded_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_236_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_236_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1_rows } +}; +static const long asn_VAL_258_id_E_RABs_ToBeAdded_ModReqItem = 125; +static const long asn_VAL_258_ignore = 1; +static const long asn_VAL_258_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_258_id_E_RABs_ToBeAdded_ModReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_258_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_ModReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_258_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1_rows } +}; +static const long asn_VAL_259_id_E_RABs_ToBeModified_ModReqItem = 126; +static const long asn_VAL_259_ignore = 1; +static const long asn_VAL_259_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_259_id_E_RABs_ToBeModified_ModReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_259_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_ModReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_259_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1_rows } +}; +static const long asn_VAL_260_id_E_RABs_ToBeReleased_ModReqItem = 127; +static const long asn_VAL_260_ignore = 1; +static const long asn_VAL_260_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_260_id_E_RABs_ToBeReleased_ModReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_260_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_ModReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_260_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1_rows } +}; +static const long asn_VAL_271_id_E_RABs_Admitted_ToBeAdded_ModAckItem = 131; +static const long asn_VAL_271_ignore = 1; +static const long asn_VAL_271_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_271_id_E_RABs_Admitted_ToBeAdded_ModAckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_271_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_271_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1_rows } +}; +static const long asn_VAL_272_id_E_RABs_Admitted_ToBeModified_ModAckItem = 132; +static const long asn_VAL_272_ignore = 1; +static const long asn_VAL_272_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_272_id_E_RABs_Admitted_ToBeModified_ModAckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_272_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_272_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1_rows } +}; +static const long asn_VAL_273_id_E_RABs_Admitted_ToBeReleased_ModAckItem = 133; +static const long asn_VAL_273_ignore = 1; +static const long asn_VAL_273_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_273_id_E_RABs_Admitted_ToBeReleased_ModAckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_273_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_273_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1_rows } +}; +static const long asn_VAL_288_id_E_RABs_ToBeReleased_ModReqdItem = 135; +static const long asn_VAL_288_ignore = 1; +static const long asn_VAL_288_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_288_id_E_RABs_ToBeReleased_ModReqdItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_288_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_ModReqdItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_288_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1_rows } +}; +static const long asn_VAL_310_id_E_RABs_ToBeReleased_RelReqItem = 138; +static const long asn_VAL_310_ignore = 1; +static const long asn_VAL_310_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_310_id_E_RABs_ToBeReleased_RelReqItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_310_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_RelReqItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_310_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1_rows } +}; +static const long asn_VAL_322_id_E_RABs_ToBeReleased_RelConfItem = 140; +static const long asn_VAL_322_ignore = 1; +static const long asn_VAL_322_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_322_id_E_RABs_ToBeReleased_RelConfItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_322_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_RelConfItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_322_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1_rows } +}; +static const long asn_VAL_328_id_E_RABs_SubjectToCounterCheckItem = 142; +static const long asn_VAL_328_ignore = 1; +static const long asn_VAL_328_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_328_id_E_RABs_SubjectToCounterCheckItem }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_328_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToCounterCheckItem }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_328_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1_rows } +}; +static const long asn_VAL_357_id_E_RABs_ToBeSetupRetrieve_Item = 174; +static const long asn_VAL_357_ignore = 1; +static const long asn_VAL_357_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_357_id_E_RABs_ToBeSetupRetrieve_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_357_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeSetupRetrieve_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_357_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1_rows } +}; +static const long asn_VAL_378_id_E_RABs_ToBeAdded_SgNBAddReq_Item = 209; +static const long asn_VAL_378_reject = 0; +static const long asn_VAL_378_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_378_id_E_RABs_ToBeAdded_SgNBAddReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_378_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_378_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1_rows } +}; +static const long asn_VAL_389_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item = 213; +static const long asn_VAL_389_ignore = 1; +static const long asn_VAL_389_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_389_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_389_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_389_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1_rows } +}; +static const long asn_VAL_411_id_E_RABs_ToBeAdded_SgNBModReq_Item = 216; +static const long asn_VAL_411_ignore = 1; +static const long asn_VAL_411_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_411_id_E_RABs_ToBeAdded_SgNBModReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_411_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_411_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1_rows } +}; +static const long asn_VAL_412_id_E_RABs_ToBeModified_SgNBModReq_Item = 217; +static const long asn_VAL_412_ignore = 1; +static const long asn_VAL_412_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_412_id_E_RABs_ToBeModified_SgNBModReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_412_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_412_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1_rows } +}; +static const long asn_VAL_413_id_E_RABs_ToBeReleased_SgNBModReq_Item = 218; +static const long asn_VAL_413_ignore = 1; +static const long asn_VAL_413_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_413_id_E_RABs_ToBeReleased_SgNBModReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_413_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_413_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1_rows } +}; +static const long asn_VAL_427_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item = 222; +static const long asn_VAL_427_ignore = 1; +static const long asn_VAL_427_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_427_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_427_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_427_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1_rows } +}; +static const long asn_VAL_428_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item = 223; +static const long asn_VAL_428_ignore = 1; +static const long asn_VAL_428_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_428_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_428_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_428_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1_rows } +}; +static const long asn_VAL_429_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item = 224; +static const long asn_VAL_429_ignore = 1; +static const long asn_VAL_429_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_429_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_429_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_429_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1_rows } +}; +static const long asn_VAL_445_id_E_RABs_ToBeReleased_SgNBModReqd_Item = 227; +static const long asn_VAL_445_ignore = 1; +static const long asn_VAL_445_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_445_id_E_RABs_ToBeReleased_SgNBModReqd_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_445_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_445_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1_rows } +}; +static const long asn_VAL_446_id_E_RABs_ToBeModified_SgNBModReqd_Item = 228; +static const long asn_VAL_446_ignore = 1; +static const long asn_VAL_446_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_446_id_E_RABs_ToBeModified_SgNBModReqd_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_446_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_446_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1_rows } +}; +static const long asn_VAL_454_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item = 295; +static const long asn_VAL_454_ignore = 1; +static const long asn_VAL_454_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_454_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_454_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_454_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1_rows } +}; +static const long asn_VAL_468_id_E_RABs_ToBeReleased_SgNBRelReq_Item = 232; +static const long asn_VAL_468_ignore = 1; +static const long asn_VAL_468_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_468_id_E_RABs_ToBeReleased_SgNBRelReq_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_468_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_468_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1_rows } +}; +static const long asn_VAL_474_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item = 319; +static const long asn_VAL_474_ignore = 1; +static const long asn_VAL_474_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_474_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_474_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_474_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1_rows } +}; +static const long asn_VAL_485_id_E_RABs_ToBeReleased_SgNBRelReqd_Item = 321; +static const long asn_VAL_485_ignore = 1; +static const long asn_VAL_485_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_485_id_E_RABs_ToBeReleased_SgNBRelReqd_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_485_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_485_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1_rows } +}; +static const long asn_VAL_491_id_E_RABs_ToBeReleased_SgNBRelConf_Item = 234; +static const long asn_VAL_491_ignore = 1; +static const long asn_VAL_491_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_491_id_E_RABs_ToBeReleased_SgNBRelConf_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_491_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_491_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1_rows } +}; +static const long asn_VAL_496_id_E_RABs_SubjectToSgNBCounterCheck_Item = 236; +static const long asn_VAL_496_ignore = 1; +static const long asn_VAL_496_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_496_id_E_RABs_SubjectToSgNBCounterCheck_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_496_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_496_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1_rows } +}; +static const long asn_VAL_508_id_E_RABs_ToBeReleased_SgNBChaConf_Item = 230; +static const long asn_VAL_508_ignore = 1; +static const long asn_VAL_508_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_508_id_E_RABs_ToBeReleased_SgNBChaConf_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_508_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_508_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1_rows } +}; +static const long asn_VAL_592_id_E_RABs_DataForwardingAddress_Item = 308; +static const long asn_VAL_592_ignore = 1; +static const long asn_VAL_592_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_592_id_E_RABs_DataForwardingAddress_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_592_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_DataForwardingAddress_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_592_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1_rows } +}; +static const long asn_VAL_1_id_RICrequestID = 60030; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_1_mandatory = 2; +static const long asn_VAL_2_id_RANfunctionID = 60003; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_2_mandatory = 2; +static const long asn_VAL_3_id_RICsubscription = 60033; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_3_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscription }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { + { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } +}; +static const long asn_VAL_5_id_RICrequestID = 60030; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_5_mandatory = 2; +static const long asn_VAL_6_id_RANfunctionID = 60003; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_6_mandatory = 2; +static const long asn_VAL_7_id_RICactions_Admitted = 60012; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_7_mandatory = 2; +static const long asn_VAL_8_id_RICactions_NotAdmitted = 60014; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_8_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } +}; +static const long asn_VAL_11_id_RICrequestID = 60030; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_11_mandatory = 2; +static const long asn_VAL_12_id_RANfunctionID = 60003; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_12_mandatory = 2; +static const long asn_VAL_13_id_RICactions_NotAdmitted = 60014; +static const long asn_VAL_13_reject = 0; +static const long asn_VAL_13_mandatory = 2; +static const long asn_VAL_14_id_CriticalityDiagnostics = 17; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_14_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } +}; +static const long asn_VAL_15_id_RICrequestID = 60030; +static const long asn_VAL_15_reject = 0; +static const long asn_VAL_15_mandatory = 2; +static const long asn_VAL_16_id_RANfunctionID = 60003; +static const long asn_VAL_16_reject = 0; +static const long asn_VAL_16_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } +}; +static const long asn_VAL_17_id_RICrequestID = 60030; +static const long asn_VAL_17_reject = 0; +static const long asn_VAL_17_mandatory = 2; +static const long asn_VAL_18_id_RANfunctionID = 60003; +static const long asn_VAL_18_reject = 0; +static const long asn_VAL_18_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } +}; +static const long asn_VAL_19_id_RICrequestID = 60030; +static const long asn_VAL_19_reject = 0; +static const long asn_VAL_19_mandatory = 2; +static const long asn_VAL_20_id_RANfunctionID = 60003; +static const long asn_VAL_20_reject = 0; +static const long asn_VAL_20_mandatory = 2; +static const long asn_VAL_21_id_RICcause = 60020; +static const long asn_VAL_21_ignore = 1; +static const long asn_VAL_21_mandatory = 2; +static const long asn_VAL_22_id_CriticalityDiagnostics = 17; +static const long asn_VAL_22_ignore = 1; +static const long asn_VAL_22_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_RICcause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, + { "&Value", aioc__type, &asn_DEF_RICcause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } +}; +static const long asn_VAL_23_id_RICrequestID = 60030; +static const long asn_VAL_23_reject = 0; +static const long asn_VAL_23_mandatory = 2; +static const long asn_VAL_24_id_RANfunctionID = 60003; +static const long asn_VAL_24_reject = 0; +static const long asn_VAL_24_mandatory = 2; +static const long asn_VAL_25_id_RICactionID = 60017; +static const long asn_VAL_25_reject = 0; +static const long asn_VAL_25_mandatory = 2; +static const long asn_VAL_26_id_RICindicationSN = 60028; +static const long asn_VAL_26_reject = 0; +static const long asn_VAL_26_mandatory = 2; +static const long asn_VAL_27_id_RICindicationType = 60029; +static const long asn_VAL_27_reject = 0; +static const long asn_VAL_27_mandatory = 2; +static const long asn_VAL_28_id_RICindicationHeader = 60026; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_RICindicationMessage = 60027; +static const long asn_VAL_29_reject = 0; +static const long asn_VAL_29_mandatory = 2; +static const long asn_VAL_30_id_RICcallProcessID = 60019; +static const long asn_VAL_30_reject = 0; +static const long asn_VAL_30_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, + { "&Value", aioc__type, &asn_DEF_RICactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RICindicationSN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationSN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICindicationType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } +}; +static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { + { 8, 4, asn_IOS_RICindication_IEs_1_rows } +}; +static const long asn_VAL_31_id_RICrequestID = 60030; +static const long asn_VAL_31_reject = 0; +static const long asn_VAL_31_mandatory = 2; +static const long asn_VAL_32_id_RANfunctionID = 60003; +static const long asn_VAL_32_reject = 0; +static const long asn_VAL_32_mandatory = 2; +static const long asn_VAL_33_id_RICcallProcessID = 60019; +static const long asn_VAL_33_reject = 0; +static const long asn_VAL_33_optional = 0; +static const long asn_VAL_34_id_RICcontrolHeader = 60022; +static const long asn_VAL_34_reject = 0; +static const long asn_VAL_34_mandatory = 2; +static const long asn_VAL_35_id_RICcontrolMessage = 60023; +static const long asn_VAL_35_reject = 0; +static const long asn_VAL_35_mandatory = 2; +static const long asn_VAL_36_id_RICcontrolAckRequest = 60021; +static const long asn_VAL_36_reject = 0; +static const long asn_VAL_36_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RICcontrolHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcontrolMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolAckRequest }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { + { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } +}; +static const long asn_VAL_37_id_RICrequestID = 60030; +static const long asn_VAL_37_reject = 0; +static const long asn_VAL_37_mandatory = 2; +static const long asn_VAL_38_id_RANfunctionID = 60003; +static const long asn_VAL_38_reject = 0; +static const long asn_VAL_38_mandatory = 2; +static const long asn_VAL_39_id_RICcallProcessID = 60019; +static const long asn_VAL_39_reject = 0; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_RICcontrolStatus = 60024; +static const long asn_VAL_40_reject = 0; +static const long asn_VAL_40_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RICcontrolStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { + { 4, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_41_id_RICrequestID = 60030; +static const long asn_VAL_41_reject = 0; +static const long asn_VAL_41_mandatory = 2; +static const long asn_VAL_42_id_RANfunctionID = 60003; +static const long asn_VAL_42_reject = 0; +static const long asn_VAL_42_mandatory = 2; +static const long asn_VAL_43_id_RICcallProcessID = 60019; +static const long asn_VAL_43_reject = 0; +static const long asn_VAL_43_optional = 0; +static const long asn_VAL_44_id_RICcause = 60020; +static const long asn_VAL_44_ignore = 1; +static const long asn_VAL_44_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RICcause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_ignore }, + { "&Value", aioc__type, &asn_DEF_RICcause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } +}; +static const long asn_VAL_45_id_RANfunctionsAdded = 60007; +static const long asn_VAL_45_reject = 0; +static const long asn_VAL_45_optional = 0; +static const long asn_VAL_46_id_RANfunctionsModified = 60009; +static const long asn_VAL_46_reject = 0; +static const long asn_VAL_46_optional = 0; +static const long asn_VAL_47_id_RANfunctionsDeleted = 60008; +static const long asn_VAL_47_reject = 0; +static const long asn_VAL_47_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_RANfunctionsModified }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RANfunctionsDeleted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } +}; +static const long asn_VAL_50_id_RANfunctionsAccepted = 60006; +static const long asn_VAL_50_reject = 0; +static const long asn_VAL_50_optional = 0; +static const long asn_VAL_51_id_RANfunctionsRejected = 60010; +static const long asn_VAL_51_reject = 0; +static const long asn_VAL_51_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { + { 2, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_53_id_RANfunctionsRejected = 60010; +static const long asn_VAL_53_ignore = 1; +static const long asn_VAL_53_optional = 0; +static const long asn_VAL_54_id_TimeToWait = 22; +static const long asn_VAL_54_ignore = 1; +static const long asn_VAL_54_optional = 0; +static const long asn_VAL_55_id_CriticalityDiagnostics = 17; +static const long asn_VAL_55_ignore = 1; +static const long asn_VAL_55_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_56_id_RANfunctionsAccepted = 60006; +static const long asn_VAL_56_reject = 0; +static const long asn_VAL_56_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { + { 1, 4, asn_IOS_RICserviceQuery_IEs_1_rows } +}; +static const long asn_VAL_57_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_57_reject = 0; +static const long asn_VAL_57_mandatory = 2; +static const long asn_VAL_58_id_Cause = 5; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_mandatory = 2; +static const long asn_VAL_59_id_TargetCell_ID = 11; +static const long asn_VAL_59_reject = 0; +static const long asn_VAL_59_mandatory = 2; +static const long asn_VAL_60_id_GUMMEI_ID = 23; +static const long asn_VAL_60_reject = 0; +static const long asn_VAL_60_mandatory = 2; +static const long asn_VAL_61_id_UE_ContextInformation = 14; +static const long asn_VAL_61_reject = 0; +static const long asn_VAL_61_mandatory = 2; +static const long asn_VAL_62_id_UE_HistoryInformation = 15; +static const long asn_VAL_62_ignore = 1; +static const long asn_VAL_62_mandatory = 2; +static const long asn_VAL_63_id_TraceActivation = 13; +static const long asn_VAL_63_ignore = 1; +static const long asn_VAL_63_optional = 0; +static const long asn_VAL_64_id_SRVCCOperationPossible = 36; +static const long asn_VAL_64_ignore = 1; +static const long asn_VAL_64_optional = 0; +static const long asn_VAL_65_id_CSGMembershipStatus = 71; +static const long asn_VAL_65_reject = 0; +static const long asn_VAL_65_optional = 0; +static const long asn_VAL_66_id_MobilityInformation = 82; +static const long asn_VAL_66_ignore = 1; +static const long asn_VAL_66_optional = 0; +static const long asn_VAL_67_id_Masked_IMEISV = 98; +static const long asn_VAL_67_ignore = 1; +static const long asn_VAL_67_optional = 0; +static const long asn_VAL_68_id_UE_HistoryInformationFromTheUE = 105; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_optional = 0; +static const long asn_VAL_69_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_optional = 0; +static const long asn_VAL_70_id_ProSeAuthorized = 103; +static const long asn_VAL_70_ignore = 1; +static const long asn_VAL_70_optional = 0; +static const long asn_VAL_71_id_UE_ContextReferenceAtSeNB = 153; +static const long asn_VAL_71_ignore = 1; +static const long asn_VAL_71_optional = 0; +static const long asn_VAL_72_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_72_reject = 0; +static const long asn_VAL_72_optional = 0; +static const long asn_VAL_73_id_V2XServicesAuthorized = 176; +static const long asn_VAL_73_ignore = 1; +static const long asn_VAL_73_optional = 0; +static const long asn_VAL_74_id_UE_ContextReferenceAtWT = 182; +static const long asn_VAL_74_ignore = 1; +static const long asn_VAL_74_optional = 0; +static const long asn_VAL_75_id_NRUESecurityCapabilities = 248; +static const long asn_VAL_75_ignore = 1; +static const long asn_VAL_75_optional = 0; +static const long asn_VAL_76_id_UE_ContextReferenceAtSgNB = 254; +static const long asn_VAL_76_ignore = 1; +static const long asn_VAL_76_optional = 0; +static const long asn_VAL_77_id_AerialUEsubscriptionInformation = 277; +static const long asn_VAL_77_ignore = 1; +static const long asn_VAL_77_optional = 0; +static const long asn_VAL_78_id_Subscription_Based_UE_DifferentiationInfo = 309; +static const long asn_VAL_78_ignore = 1; +static const long asn_VAL_78_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_TargetCell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_reject }, + { "&Value", aioc__type, &asn_DEF_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_UE_ContextInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_UE_HistoryInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_HistoryInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_ignore }, + { "&Value", aioc__type, &asn_DEF_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, + { "&Value", aioc__type, &asn_DEF_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_reject }, + { "&Value", aioc__type, &asn_DEF_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_MobilityInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_Masked_IMEISV }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_ignore }, + { "&Value", aioc__type, &asn_DEF_Masked_IMEISV }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_UE_HistoryInformationFromTheUE }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_HistoryInformationFromTheUE }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, + { "&Value", aioc__type, &asn_DEF_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_UE_ContextReferenceAtSeNB }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextReferenceAtSeNB }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_73_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_73_ignore }, + { "&Value", aioc__type, &asn_DEF_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_73_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_74_id_UE_ContextReferenceAtWT }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_74_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextReferenceAtWT }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_74_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_75_id_NRUESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_75_ignore }, + { "&Value", aioc__type, &asn_DEF_NRUESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_75_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_76_id_UE_ContextReferenceAtSgNB }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_76_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextReferenceAtSgNB }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_76_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_77_id_AerialUEsubscriptionInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_77_ignore }, + { "&Value", aioc__type, &asn_DEF_AerialUEsubscriptionInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_77_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_78_id_Subscription_Based_UE_DifferentiationInfo }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_78_ignore }, + { "&Value", aioc__type, &asn_DEF_Subscription_Based_UE_DifferentiationInfo }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_78_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverRequest_IEs_1[] = { + { 22, 4, asn_IOS_HandoverRequest_IEs_1_rows } +}; +static const long asn_VAL_80_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_80_ignore = 1; +static const long asn_VAL_80_mandatory = 2; +static const long asn_VAL_81_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_81_ignore = 1; +static const long asn_VAL_81_mandatory = 2; +static const long asn_VAL_82_id_E_RABs_Admitted_List = 1; +static const long asn_VAL_82_ignore = 1; +static const long asn_VAL_82_mandatory = 2; +static const long asn_VAL_83_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_83_ignore = 1; +static const long asn_VAL_83_optional = 0; +static const long asn_VAL_84_id_TargeteNBtoSource_eNBTransparentContainer = 12; +static const long asn_VAL_84_ignore = 1; +static const long asn_VAL_84_mandatory = 2; +static const long asn_VAL_85_id_CriticalityDiagnostics = 17; +static const long asn_VAL_85_ignore = 1; +static const long asn_VAL_85_optional = 0; +static const long asn_VAL_86_id_UE_ContextKeptIndicator = 154; +static const long asn_VAL_86_ignore = 1; +static const long asn_VAL_86_optional = 0; +static const long asn_VAL_87_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_87_ignore = 1; +static const long asn_VAL_87_optional = 0; +static const long asn_VAL_88_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_88_ignore = 1; +static const long asn_VAL_88_optional = 0; +static const long asn_VAL_89_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_89_reject = 0; +static const long asn_VAL_89_optional = 0; +static const long asn_VAL_90_id_WT_UE_ContextKeptIndicator = 183; +static const long asn_VAL_90_ignore = 1; +static const long asn_VAL_90_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_80_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_80_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_80_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_81_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_81_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_81_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_82_id_E_RABs_Admitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_82_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_82_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_83_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_83_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_83_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_84_id_TargeteNBtoSource_eNBTransparentContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_84_ignore }, + { "&Value", aioc__type, &asn_DEF_TargeteNBtoSource_eNBTransparentContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_84_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_85_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_85_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_85_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_86_id_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_86_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_86_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_87_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_87_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_87_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_88_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_88_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_88_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_89_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_89_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_89_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_90_id_WT_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_90_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_90_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverRequestAcknowledge_IEs_1[] = { + { 11, 4, asn_IOS_HandoverRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_92_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_92_ignore = 1; +static const long asn_VAL_92_mandatory = 2; +static const long asn_VAL_93_id_Cause = 5; +static const long asn_VAL_93_ignore = 1; +static const long asn_VAL_93_mandatory = 2; +static const long asn_VAL_94_id_CriticalityDiagnostics = 17; +static const long asn_VAL_94_ignore = 1; +static const long asn_VAL_94_optional = 0; +static const long asn_VAL_95_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_95_ignore = 1; +static const long asn_VAL_95_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverPreparationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_92_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_92_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_92_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_93_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_93_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_93_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_94_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_94_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_94_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_95_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_95_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_95_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverPreparationFailure_IEs_1[] = { + { 4, 4, asn_IOS_HandoverPreparationFailure_IEs_1_rows } +}; +static const long asn_VAL_96_id_HandoverReportType = 54; +static const long asn_VAL_96_ignore = 1; +static const long asn_VAL_96_mandatory = 2; +static const long asn_VAL_97_id_Cause = 5; +static const long asn_VAL_97_ignore = 1; +static const long asn_VAL_97_mandatory = 2; +static const long asn_VAL_98_id_SourceCellECGI = 52; +static const long asn_VAL_98_ignore = 1; +static const long asn_VAL_98_mandatory = 2; +static const long asn_VAL_99_id_FailureCellECGI = 53; +static const long asn_VAL_99_ignore = 1; +static const long asn_VAL_99_mandatory = 2; +static const long asn_VAL_100_id_Re_establishmentCellECGI = 49; +static const long asn_VAL_100_ignore = 1; +static const long asn_VAL_100_conditional = 1; +static const long asn_VAL_101_id_TargetCellInUTRAN = 81; +static const long asn_VAL_101_ignore = 1; +static const long asn_VAL_101_conditional = 1; +static const long asn_VAL_102_id_SourceCellCRNTI = 83; +static const long asn_VAL_102_ignore = 1; +static const long asn_VAL_102_optional = 0; +static const long asn_VAL_103_id_MobilityInformation = 82; +static const long asn_VAL_103_ignore = 1; +static const long asn_VAL_103_optional = 0; +static const long asn_VAL_104_id_UE_RLF_Report_Container = 60; +static const long asn_VAL_104_ignore = 1; +static const long asn_VAL_104_optional = 0; +static const long asn_VAL_105_id_UE_RLF_Report_Container_for_extended_bands = 107; +static const long asn_VAL_105_ignore = 1; +static const long asn_VAL_105_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverReport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_96_id_HandoverReportType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_96_ignore }, + { "&Value", aioc__type, &asn_DEF_HandoverReportType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_96_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_97_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_97_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_97_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_98_id_SourceCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_98_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_98_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_99_id_FailureCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_99_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_99_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_100_id_Re_establishmentCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_100_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_100_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_101_id_TargetCellInUTRAN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_101_ignore }, + { "&Value", aioc__type, &asn_DEF_TargetCellInUTRAN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_101_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_102_id_SourceCellCRNTI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_102_ignore }, + { "&Value", aioc__type, &asn_DEF_CRNTI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_102_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_103_id_MobilityInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_103_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_103_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_104_id_UE_RLF_Report_Container }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_104_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_104_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_105_id_UE_RLF_Report_Container_for_extended_bands }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_105_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container_for_extended_bands }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_105_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverReport_IEs_1[] = { + { 10, 4, asn_IOS_HandoverReport_IEs_1_rows } +}; +static const long asn_VAL_106_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_106_reject = 0; +static const long asn_VAL_106_mandatory = 2; +static const long asn_VAL_107_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_107_reject = 0; +static const long asn_VAL_107_mandatory = 2; +static const long asn_VAL_108_id_E_RABs_SubjectToStatusTransfer_List = 18; +static const long asn_VAL_108_ignore = 1; +static const long asn_VAL_108_mandatory = 2; +static const long asn_VAL_109_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_109_reject = 0; +static const long asn_VAL_109_optional = 0; +static const long asn_VAL_110_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_110_reject = 0; +static const long asn_VAL_110_optional = 0; +static const long asn_VAL_111_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_111_ignore = 1; +static const long asn_VAL_111_optional = 0; +static const asn_ioc_cell_t asn_IOS_SNStatusTransfer_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_106_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_106_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_106_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_107_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_107_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_107_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_108_id_E_RABs_SubjectToStatusTransfer_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_108_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToStatusTransfer_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_108_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_109_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_109_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_109_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_110_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_110_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_110_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_111_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_111_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_111_optional } +}; +static const asn_ioc_set_t asn_IOS_SNStatusTransfer_IEs_1[] = { + { 6, 4, asn_IOS_SNStatusTransfer_IEs_1_rows } +}; +static const long asn_VAL_113_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_113_reject = 0; +static const long asn_VAL_113_mandatory = 2; +static const long asn_VAL_114_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_114_reject = 0; +static const long asn_VAL_114_mandatory = 2; +static const long asn_VAL_115_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_115_reject = 0; +static const long asn_VAL_115_optional = 0; +static const long asn_VAL_116_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_116_reject = 0; +static const long asn_VAL_116_optional = 0; +static const long asn_VAL_117_id_SIPTO_BearerDeactivationIndication = 164; +static const long asn_VAL_117_ignore = 1; +static const long asn_VAL_117_optional = 0; +static const long asn_VAL_118_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_118_ignore = 1; +static const long asn_VAL_118_optional = 0; +static const asn_ioc_cell_t asn_IOS_UEContextRelease_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_113_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_113_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_113_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_114_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_114_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_114_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_115_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_115_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_115_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_116_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_116_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_116_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_117_id_SIPTO_BearerDeactivationIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_117_ignore }, + { "&Value", aioc__type, &asn_DEF_SIPTOBearerDeactivationIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_117_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_118_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_118_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_118_optional } +}; +static const asn_ioc_set_t asn_IOS_UEContextRelease_IEs_1[] = { + { 6, 4, asn_IOS_UEContextRelease_IEs_1_rows } +}; +static const long asn_VAL_119_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_119_reject = 0; +static const long asn_VAL_119_mandatory = 2; +static const long asn_VAL_120_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_120_ignore = 1; +static const long asn_VAL_120_optional = 0; +static const long asn_VAL_121_id_Cause = 5; +static const long asn_VAL_121_ignore = 1; +static const long asn_VAL_121_mandatory = 2; +static const long asn_VAL_122_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_122_reject = 0; +static const long asn_VAL_122_optional = 0; +static const long asn_VAL_123_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_123_ignore = 1; +static const long asn_VAL_123_optional = 0; +static const asn_ioc_cell_t asn_IOS_HandoverCancel_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_119_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_119_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_119_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_120_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_120_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_120_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_121_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_121_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_121_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_122_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_122_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_122_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_123_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_123_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_123_optional } +}; +static const asn_ioc_set_t asn_IOS_HandoverCancel_IEs_1[] = { + { 5, 4, asn_IOS_HandoverCancel_IEs_1_rows } +}; +static const long asn_VAL_124_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_124_ignore = 1; +static const long asn_VAL_124_optional = 0; +static const long asn_VAL_125_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_125_ignore = 1; +static const long asn_VAL_125_optional = 0; +static const long asn_VAL_126_id_Cause = 5; +static const long asn_VAL_126_ignore = 1; +static const long asn_VAL_126_optional = 0; +static const long asn_VAL_127_id_CriticalityDiagnostics = 17; +static const long asn_VAL_127_ignore = 1; +static const long asn_VAL_127_optional = 0; +static const long asn_VAL_128_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_128_ignore = 1; +static const long asn_VAL_128_optional = 0; +static const long asn_VAL_129_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_129_ignore = 1; +static const long asn_VAL_129_optional = 0; +static const long asn_VAL_130_id_Old_SgNB_UE_X2AP_ID = 264; +static const long asn_VAL_130_ignore = 1; +static const long asn_VAL_130_optional = 0; +static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_124_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_124_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_124_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_125_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_125_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_125_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_126_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_126_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_126_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_127_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_127_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_127_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_128_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_128_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_128_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_129_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_129_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_129_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_130_id_Old_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_130_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_130_optional } +}; +static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { + { 7, 4, asn_IOS_ErrorIndication_IEs_1_rows } +}; +static const long asn_VAL_131_id_Cause = 5; +static const long asn_VAL_131_ignore = 1; +static const long asn_VAL_131_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResetRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_131_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_131_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_131_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResetRequest_IEs_1[] = { + { 1, 4, asn_IOS_ResetRequest_IEs_1_rows } +}; +static const long asn_VAL_132_id_CriticalityDiagnostics = 17; +static const long asn_VAL_132_ignore = 1; +static const long asn_VAL_132_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResetResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_132_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_132_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_132_optional } +}; +static const asn_ioc_set_t asn_IOS_ResetResponse_IEs_1[] = { + { 1, 4, asn_IOS_ResetResponse_IEs_1_rows } +}; +static const long asn_VAL_133_id_GlobalENB_ID = 21; +static const long asn_VAL_133_reject = 0; +static const long asn_VAL_133_mandatory = 2; +static const long asn_VAL_134_id_ServedCells = 20; +static const long asn_VAL_134_reject = 0; +static const long asn_VAL_134_mandatory = 2; +static const long asn_VAL_135_id_GUGroupIDList = 24; +static const long asn_VAL_135_reject = 0; +static const long asn_VAL_135_optional = 0; +static const long asn_VAL_136_id_LHN_ID = 159; +static const long asn_VAL_136_ignore = 1; +static const long asn_VAL_136_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2SetupRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_133_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_133_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_133_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_134_id_ServedCells }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_134_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCells }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_134_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_135_id_GUGroupIDList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_135_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_135_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_136_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_136_ignore }, + { "&Value", aioc__type, &asn_DEF_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_136_optional } +}; +static const asn_ioc_set_t asn_IOS_X2SetupRequest_IEs_1[] = { + { 4, 4, asn_IOS_X2SetupRequest_IEs_1_rows } +}; +static const long asn_VAL_137_id_GlobalENB_ID = 21; +static const long asn_VAL_137_reject = 0; +static const long asn_VAL_137_mandatory = 2; +static const long asn_VAL_138_id_ServedCells = 20; +static const long asn_VAL_138_reject = 0; +static const long asn_VAL_138_mandatory = 2; +static const long asn_VAL_139_id_GUGroupIDList = 24; +static const long asn_VAL_139_reject = 0; +static const long asn_VAL_139_optional = 0; +static const long asn_VAL_140_id_CriticalityDiagnostics = 17; +static const long asn_VAL_140_ignore = 1; +static const long asn_VAL_140_optional = 0; +static const long asn_VAL_141_id_LHN_ID = 159; +static const long asn_VAL_141_ignore = 1; +static const long asn_VAL_141_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2SetupResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_137_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_137_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_137_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_138_id_ServedCells }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_138_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCells }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_138_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_139_id_GUGroupIDList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_139_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_139_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_140_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_140_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_140_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_141_id_LHN_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_141_ignore }, + { "&Value", aioc__type, &asn_DEF_LHN_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_141_optional } +}; +static const asn_ioc_set_t asn_IOS_X2SetupResponse_IEs_1[] = { + { 5, 4, asn_IOS_X2SetupResponse_IEs_1_rows } +}; +static const long asn_VAL_142_id_Cause = 5; +static const long asn_VAL_142_ignore = 1; +static const long asn_VAL_142_mandatory = 2; +static const long asn_VAL_143_id_TimeToWait = 22; +static const long asn_VAL_143_ignore = 1; +static const long asn_VAL_143_optional = 0; +static const long asn_VAL_144_id_CriticalityDiagnostics = 17; +static const long asn_VAL_144_ignore = 1; +static const long asn_VAL_144_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2SetupFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_142_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_142_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_142_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_143_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_143_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_143_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_144_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_144_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_144_optional } +}; +static const asn_ioc_set_t asn_IOS_X2SetupFailure_IEs_1[] = { + { 3, 4, asn_IOS_X2SetupFailure_IEs_1_rows } +}; +static const long asn_VAL_145_id_CellInformation = 6; +static const long asn_VAL_145_ignore = 1; +static const long asn_VAL_145_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_LoadInformation_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_145_id_CellInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_145_ignore }, + { "&Value", aioc__type, &asn_DEF_CellInformation_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_145_mandatory } +}; +static const asn_ioc_set_t asn_IOS_LoadInformation_IEs_1[] = { + { 1, 4, asn_IOS_LoadInformation_IEs_1_rows } +}; +static const long asn_VAL_147_id_ServedCellsToAdd = 25; +static const long asn_VAL_147_reject = 0; +static const long asn_VAL_147_optional = 0; +static const long asn_VAL_148_id_ServedCellsToModify = 26; +static const long asn_VAL_148_reject = 0; +static const long asn_VAL_148_optional = 0; +static const long asn_VAL_149_id_ServedCellsToDelete = 27; +static const long asn_VAL_149_reject = 0; +static const long asn_VAL_149_optional = 0; +static const long asn_VAL_150_id_GUGroupIDToAddList = 34; +static const long asn_VAL_150_reject = 0; +static const long asn_VAL_150_optional = 0; +static const long asn_VAL_151_id_GUGroupIDToDeleteList = 35; +static const long asn_VAL_151_reject = 0; +static const long asn_VAL_151_optional = 0; +static const long asn_VAL_152_id_CoverageModificationList = 143; +static const long asn_VAL_152_reject = 0; +static const long asn_VAL_152_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENBConfigurationUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_147_id_ServedCellsToAdd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_147_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCells }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_147_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_148_id_ServedCellsToModify }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_148_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCellsToModify }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_148_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_149_id_ServedCellsToDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_149_reject }, + { "&Value", aioc__type, &asn_DEF_Old_ECGIs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_149_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_150_id_GUGroupIDToAddList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_150_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_150_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_151_id_GUGroupIDToDeleteList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_151_reject }, + { "&Value", aioc__type, &asn_DEF_GUGroupIDList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_151_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_152_id_CoverageModificationList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_152_reject }, + { "&Value", aioc__type, &asn_DEF_CoverageModificationList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_152_optional } +}; +static const asn_ioc_set_t asn_IOS_ENBConfigurationUpdate_IEs_1[] = { + { 6, 4, asn_IOS_ENBConfigurationUpdate_IEs_1_rows } +}; +static const long asn_VAL_153_id_CriticalityDiagnostics = 17; +static const long asn_VAL_153_ignore = 1; +static const long asn_VAL_153_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_153_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_153_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_153_optional } +}; +static const asn_ioc_set_t asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1[] = { + { 1, 4, asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_154_id_Cause = 5; +static const long asn_VAL_154_ignore = 1; +static const long asn_VAL_154_mandatory = 2; +static const long asn_VAL_155_id_TimeToWait = 22; +static const long asn_VAL_155_ignore = 1; +static const long asn_VAL_155_optional = 0; +static const long asn_VAL_156_id_CriticalityDiagnostics = 17; +static const long asn_VAL_156_ignore = 1; +static const long asn_VAL_156_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENBConfigurationUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_154_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_154_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_154_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_155_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_155_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_155_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_156_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_156_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_156_optional } +}; +static const asn_ioc_set_t asn_IOS_ENBConfigurationUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENBConfigurationUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_157_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_157_reject = 0; +static const long asn_VAL_157_mandatory = 2; +static const long asn_VAL_158_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_158_ignore = 1; +static const long asn_VAL_158_conditional = 1; +static const long asn_VAL_159_id_Registration_Request = 28; +static const long asn_VAL_159_reject = 0; +static const long asn_VAL_159_mandatory = 2; +static const long asn_VAL_160_id_ReportCharacteristics = 38; +static const long asn_VAL_160_reject = 0; +static const long asn_VAL_160_optional = 0; +static const long asn_VAL_161_id_CellToReport = 29; +static const long asn_VAL_161_ignore = 1; +static const long asn_VAL_161_mandatory = 2; +static const long asn_VAL_162_id_ReportingPeriodicity = 30; +static const long asn_VAL_162_ignore = 1; +static const long asn_VAL_162_optional = 0; +static const long asn_VAL_163_id_PartialSuccessIndicator = 64; +static const long asn_VAL_163_ignore = 1; +static const long asn_VAL_163_optional = 0; +static const long asn_VAL_164_id_ReportingPeriodicityRSRPMR = 109; +static const long asn_VAL_164_ignore = 1; +static const long asn_VAL_164_optional = 0; +static const long asn_VAL_165_id_ReportingPeriodicityCSIR = 145; +static const long asn_VAL_165_ignore = 1; +static const long asn_VAL_165_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResourceStatusRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_157_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_157_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_157_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_158_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_158_ignore }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_158_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_159_id_Registration_Request }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_159_reject }, + { "&Value", aioc__type, &asn_DEF_Registration_Request }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_159_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_160_id_ReportCharacteristics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_160_reject }, + { "&Value", aioc__type, &asn_DEF_ReportCharacteristics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_160_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_161_id_CellToReport }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_161_ignore }, + { "&Value", aioc__type, &asn_DEF_CellToReport_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_161_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_162_id_ReportingPeriodicity }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_162_ignore }, + { "&Value", aioc__type, &asn_DEF_ReportingPeriodicity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_162_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_163_id_PartialSuccessIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_163_ignore }, + { "&Value", aioc__type, &asn_DEF_PartialSuccessIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_163_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_164_id_ReportingPeriodicityRSRPMR }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_164_ignore }, + { "&Value", aioc__type, &asn_DEF_ReportingPeriodicityRSRPMR }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_164_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_165_id_ReportingPeriodicityCSIR }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_165_ignore }, + { "&Value", aioc__type, &asn_DEF_ReportingPeriodicityCSIR }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_165_optional } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusRequest_IEs_1[] = { + { 9, 4, asn_IOS_ResourceStatusRequest_IEs_1_rows } +}; +static const long asn_VAL_167_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_167_reject = 0; +static const long asn_VAL_167_mandatory = 2; +static const long asn_VAL_168_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_168_reject = 0; +static const long asn_VAL_168_mandatory = 2; +static const long asn_VAL_169_id_CriticalityDiagnostics = 17; +static const long asn_VAL_169_ignore = 1; +static const long asn_VAL_169_optional = 0; +static const long asn_VAL_170_id_MeasurementInitiationResult_List = 65; +static const long asn_VAL_170_ignore = 1; +static const long asn_VAL_170_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResourceStatusResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_167_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_167_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_167_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_168_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_168_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_168_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_169_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_169_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_169_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_170_id_MeasurementInitiationResult_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_170_ignore }, + { "&Value", aioc__type, &asn_DEF_MeasurementInitiationResult_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_170_optional } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusResponse_IEs_1[] = { + { 4, 4, asn_IOS_ResourceStatusResponse_IEs_1_rows } +}; +static const long asn_VAL_173_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_173_reject = 0; +static const long asn_VAL_173_mandatory = 2; +static const long asn_VAL_174_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_174_reject = 0; +static const long asn_VAL_174_mandatory = 2; +static const long asn_VAL_175_id_Cause = 5; +static const long asn_VAL_175_ignore = 1; +static const long asn_VAL_175_mandatory = 2; +static const long asn_VAL_176_id_CriticalityDiagnostics = 17; +static const long asn_VAL_176_ignore = 1; +static const long asn_VAL_176_optional = 0; +static const long asn_VAL_177_id_CompleteFailureCauseInformation_List = 68; +static const long asn_VAL_177_ignore = 1; +static const long asn_VAL_177_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResourceStatusFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_173_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_173_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_173_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_174_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_174_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_174_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_175_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_175_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_175_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_176_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_176_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_176_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_177_id_CompleteFailureCauseInformation_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_177_ignore }, + { "&Value", aioc__type, &asn_DEF_CompleteFailureCauseInformation_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_177_optional } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusFailure_IEs_1[] = { + { 5, 4, asn_IOS_ResourceStatusFailure_IEs_1_rows } +}; +static const long asn_VAL_179_id_ENB1_Measurement_ID = 39; +static const long asn_VAL_179_reject = 0; +static const long asn_VAL_179_mandatory = 2; +static const long asn_VAL_180_id_ENB2_Measurement_ID = 40; +static const long asn_VAL_180_reject = 0; +static const long asn_VAL_180_mandatory = 2; +static const long asn_VAL_181_id_CellMeasurementResult = 32; +static const long asn_VAL_181_ignore = 1; +static const long asn_VAL_181_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResourceStatusUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_179_id_ENB1_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_179_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_179_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_180_id_ENB2_Measurement_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_180_reject }, + { "&Value", aioc__type, &asn_DEF_Measurement_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_180_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_181_id_CellMeasurementResult }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_181_ignore }, + { "&Value", aioc__type, &asn_DEF_CellMeasurementResult_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_181_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResourceStatusUpdate_IEs_1[] = { + { 3, 4, asn_IOS_ResourceStatusUpdate_IEs_1_rows } +}; +static const long asn_VAL_183_id_ENB1_Cell_ID = 43; +static const long asn_VAL_183_reject = 0; +static const long asn_VAL_183_mandatory = 2; +static const long asn_VAL_184_id_ENB2_Cell_ID = 44; +static const long asn_VAL_184_reject = 0; +static const long asn_VAL_184_mandatory = 2; +static const long asn_VAL_185_id_ENB1_Mobility_Parameters = 46; +static const long asn_VAL_185_ignore = 1; +static const long asn_VAL_185_optional = 0; +static const long asn_VAL_186_id_ENB2_Proposed_Mobility_Parameters = 45; +static const long asn_VAL_186_reject = 0; +static const long asn_VAL_186_mandatory = 2; +static const long asn_VAL_187_id_Cause = 5; +static const long asn_VAL_187_reject = 0; +static const long asn_VAL_187_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_MobilityChangeRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_183_id_ENB1_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_183_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_183_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_184_id_ENB2_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_184_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_184_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_185_id_ENB1_Mobility_Parameters }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_185_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityParametersInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_185_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_186_id_ENB2_Proposed_Mobility_Parameters }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_186_reject }, + { "&Value", aioc__type, &asn_DEF_MobilityParametersInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_186_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_187_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_187_reject }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_187_mandatory } +}; +static const asn_ioc_set_t asn_IOS_MobilityChangeRequest_IEs_1[] = { + { 5, 4, asn_IOS_MobilityChangeRequest_IEs_1_rows } +}; +static const long asn_VAL_188_id_ENB1_Cell_ID = 43; +static const long asn_VAL_188_reject = 0; +static const long asn_VAL_188_mandatory = 2; +static const long asn_VAL_189_id_ENB2_Cell_ID = 44; +static const long asn_VAL_189_reject = 0; +static const long asn_VAL_189_mandatory = 2; +static const long asn_VAL_190_id_CriticalityDiagnostics = 17; +static const long asn_VAL_190_ignore = 1; +static const long asn_VAL_190_optional = 0; +static const asn_ioc_cell_t asn_IOS_MobilityChangeAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_188_id_ENB1_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_188_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_188_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_189_id_ENB2_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_189_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_189_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_190_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_190_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_190_optional } +}; +static const asn_ioc_set_t asn_IOS_MobilityChangeAcknowledge_IEs_1[] = { + { 3, 4, asn_IOS_MobilityChangeAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_191_id_ENB1_Cell_ID = 43; +static const long asn_VAL_191_ignore = 1; +static const long asn_VAL_191_mandatory = 2; +static const long asn_VAL_192_id_ENB2_Cell_ID = 44; +static const long asn_VAL_192_ignore = 1; +static const long asn_VAL_192_mandatory = 2; +static const long asn_VAL_193_id_Cause = 5; +static const long asn_VAL_193_ignore = 1; +static const long asn_VAL_193_mandatory = 2; +static const long asn_VAL_194_id_ENB2_Mobility_Parameters_Modification_Range = 47; +static const long asn_VAL_194_ignore = 1; +static const long asn_VAL_194_optional = 0; +static const long asn_VAL_195_id_CriticalityDiagnostics = 17; +static const long asn_VAL_195_ignore = 1; +static const long asn_VAL_195_optional = 0; +static const asn_ioc_cell_t asn_IOS_MobilityChangeFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_191_id_ENB1_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_191_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_191_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_192_id_ENB2_Cell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_192_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_192_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_193_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_193_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_193_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_194_id_ENB2_Mobility_Parameters_Modification_Range }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_194_ignore }, + { "&Value", aioc__type, &asn_DEF_MobilityParametersModificationRange }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_194_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_195_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_195_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_195_optional } +}; +static const asn_ioc_set_t asn_IOS_MobilityChangeFailure_IEs_1[] = { + { 5, 4, asn_IOS_MobilityChangeFailure_IEs_1_rows } +}; +static const long asn_VAL_196_id_FailureCellPCI = 48; +static const long asn_VAL_196_ignore = 1; +static const long asn_VAL_196_mandatory = 2; +static const long asn_VAL_197_id_Re_establishmentCellECGI = 49; +static const long asn_VAL_197_ignore = 1; +static const long asn_VAL_197_mandatory = 2; +static const long asn_VAL_198_id_FailureCellCRNTI = 50; +static const long asn_VAL_198_ignore = 1; +static const long asn_VAL_198_mandatory = 2; +static const long asn_VAL_199_id_ShortMAC_I = 51; +static const long asn_VAL_199_ignore = 1; +static const long asn_VAL_199_optional = 0; +static const long asn_VAL_200_id_UE_RLF_Report_Container = 60; +static const long asn_VAL_200_ignore = 1; +static const long asn_VAL_200_optional = 0; +static const long asn_VAL_201_id_RRCConnSetupIndicator = 75; +static const long asn_VAL_201_reject = 0; +static const long asn_VAL_201_optional = 0; +static const long asn_VAL_202_id_RRCConnReestabIndicator = 78; +static const long asn_VAL_202_ignore = 1; +static const long asn_VAL_202_optional = 0; +static const long asn_VAL_203_id_UE_RLF_Report_Container_for_extended_bands = 107; +static const long asn_VAL_203_ignore = 1; +static const long asn_VAL_203_optional = 0; +static const asn_ioc_cell_t asn_IOS_RLFIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_196_id_FailureCellPCI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_196_ignore }, + { "&Value", aioc__type, &asn_DEF_PCI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_196_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_197_id_Re_establishmentCellECGI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_197_ignore }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_197_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_198_id_FailureCellCRNTI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_198_ignore }, + { "&Value", aioc__type, &asn_DEF_CRNTI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_198_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_199_id_ShortMAC_I }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_199_ignore }, + { "&Value", aioc__type, &asn_DEF_ShortMAC_I }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_199_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_200_id_UE_RLF_Report_Container }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_200_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_200_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_201_id_RRCConnSetupIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_201_reject }, + { "&Value", aioc__type, &asn_DEF_RRCConnSetupIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_201_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_202_id_RRCConnReestabIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_202_ignore }, + { "&Value", aioc__type, &asn_DEF_RRCConnReestabIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_202_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_203_id_UE_RLF_Report_Container_for_extended_bands }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_203_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_RLF_Report_Container_for_extended_bands }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_203_optional } +}; +static const asn_ioc_set_t asn_IOS_RLFIndication_IEs_1[] = { + { 8, 4, asn_IOS_RLFIndication_IEs_1_rows } +}; +static const long asn_VAL_204_id_ServedCellsToActivate = 57; +static const long asn_VAL_204_reject = 0; +static const long asn_VAL_204_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_CellActivationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_204_id_ServedCellsToActivate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_204_reject }, + { "&Value", aioc__type, &asn_DEF_ServedCellsToActivate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_204_mandatory } +}; +static const asn_ioc_set_t asn_IOS_CellActivationRequest_IEs_1[] = { + { 1, 4, asn_IOS_CellActivationRequest_IEs_1_rows } +}; +static const long asn_VAL_205_id_ActivatedCellList = 58; +static const long asn_VAL_205_ignore = 1; +static const long asn_VAL_205_mandatory = 2; +static const long asn_VAL_206_id_CriticalityDiagnostics = 17; +static const long asn_VAL_206_ignore = 1; +static const long asn_VAL_206_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellActivationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_205_id_ActivatedCellList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_205_ignore }, + { "&Value", aioc__type, &asn_DEF_ActivatedCellList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_205_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_206_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_206_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_206_optional } +}; +static const asn_ioc_set_t asn_IOS_CellActivationResponse_IEs_1[] = { + { 2, 4, asn_IOS_CellActivationResponse_IEs_1_rows } +}; +static const long asn_VAL_207_id_Cause = 5; +static const long asn_VAL_207_ignore = 1; +static const long asn_VAL_207_mandatory = 2; +static const long asn_VAL_208_id_CriticalityDiagnostics = 17; +static const long asn_VAL_208_ignore = 1; +static const long asn_VAL_208_optional = 0; +static const asn_ioc_cell_t asn_IOS_CellActivationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_207_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_207_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_207_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_208_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_208_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_208_optional } +}; +static const asn_ioc_set_t asn_IOS_CellActivationFailure_IEs_1[] = { + { 2, 4, asn_IOS_CellActivationFailure_IEs_1_rows } +}; +static const long asn_VAL_209_id_GlobalENB_ID = 21; +static const long asn_VAL_209_reject = 0; +static const long asn_VAL_209_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_X2Release_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_209_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_209_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_209_mandatory } +}; +static const asn_ioc_set_t asn_IOS_X2Release_IEs_1[] = { + { 1, 4, asn_IOS_X2Release_IEs_1_rows } +}; +static const long asn_VAL_210_id_RNL_Header = 101; +static const long asn_VAL_210_reject = 0; +static const long asn_VAL_210_mandatory = 2; +static const long asn_VAL_211_id_x2APMessage = 102; +static const long asn_VAL_211_reject = 0; +static const long asn_VAL_211_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2APMessageTransfer_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_210_id_RNL_Header }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_210_reject }, + { "&Value", aioc__type, &asn_DEF_RNL_Header }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_210_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_211_id_x2APMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_211_reject }, + { "&Value", aioc__type, &asn_DEF_X2AP_Message }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_211_optional } +}; +static const asn_ioc_set_t asn_IOS_X2APMessageTransfer_IEs_1[] = { + { 2, 4, asn_IOS_X2APMessageTransfer_IEs_1_rows } +}; +static const long asn_VAL_212_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_212_reject = 0; +static const long asn_VAL_212_mandatory = 2; +static const long asn_VAL_213_id_UE_SecurityCapabilities = 113; +static const long asn_VAL_213_reject = 0; +static const long asn_VAL_213_conditional = 1; +static const long asn_VAL_214_id_SeNBSecurityKey = 114; +static const long asn_VAL_214_reject = 0; +static const long asn_VAL_214_conditional = 1; +static const long asn_VAL_215_id_SeNBUEAggregateMaximumBitRate = 115; +static const long asn_VAL_215_reject = 0; +static const long asn_VAL_215_mandatory = 2; +static const long asn_VAL_216_id_ServingPLMN = 116; +static const long asn_VAL_216_ignore = 1; +static const long asn_VAL_216_optional = 0; +static const long asn_VAL_217_id_E_RABs_ToBeAdded_List = 117; +static const long asn_VAL_217_reject = 0; +static const long asn_VAL_217_mandatory = 2; +static const long asn_VAL_218_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_218_reject = 0; +static const long asn_VAL_218_mandatory = 2; +static const long asn_VAL_219_id_CSGMembershipStatus = 71; +static const long asn_VAL_219_reject = 0; +static const long asn_VAL_219_optional = 0; +static const long asn_VAL_220_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_220_reject = 0; +static const long asn_VAL_220_optional = 0; +static const long asn_VAL_221_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_221_reject = 0; +static const long asn_VAL_221_optional = 0; +static const long asn_VAL_222_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_222_ignore = 1; +static const long asn_VAL_222_optional = 0; +static const long asn_VAL_223_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_223_reject = 0; +static const long asn_VAL_223_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBAdditionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_212_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_212_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_212_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_213_id_UE_SecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_213_reject }, + { "&Value", aioc__type, &asn_DEF_UESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_213_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_214_id_SeNBSecurityKey }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_214_reject }, + { "&Value", aioc__type, &asn_DEF_SeNBSecurityKey }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_214_conditional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_215_id_SeNBUEAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_215_reject }, + { "&Value", aioc__type, &asn_DEF_UEAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_215_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_216_id_ServingPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_216_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_216_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_217_id_E_RABs_ToBeAdded_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_217_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_217_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_218_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_218_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_218_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_219_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_219_reject }, + { "&Value", aioc__type, &asn_DEF_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_219_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_220_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_220_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_220_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_221_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_221_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_221_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_222_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_222_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_222_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_223_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_223_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_223_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBAdditionRequest_IEs_1[] = { + { 12, 4, asn_IOS_SeNBAdditionRequest_IEs_1_rows } +}; +static const long asn_VAL_225_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_225_reject = 0; +static const long asn_VAL_225_mandatory = 2; +static const long asn_VAL_226_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_226_reject = 0; +static const long asn_VAL_226_mandatory = 2; +static const long asn_VAL_227_id_E_RABs_Admitted_ToBeAdded_List = 120; +static const long asn_VAL_227_ignore = 1; +static const long asn_VAL_227_mandatory = 2; +static const long asn_VAL_228_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_228_ignore = 1; +static const long asn_VAL_228_optional = 0; +static const long asn_VAL_229_id_SeNBtoMeNBContainer = 122; +static const long asn_VAL_229_reject = 0; +static const long asn_VAL_229_mandatory = 2; +static const long asn_VAL_230_id_CriticalityDiagnostics = 17; +static const long asn_VAL_230_ignore = 1; +static const long asn_VAL_230_optional = 0; +static const long asn_VAL_231_id_GW_TransportLayerAddress = 165; +static const long asn_VAL_231_ignore = 1; +static const long asn_VAL_231_optional = 0; +static const long asn_VAL_232_id_SIPTO_L_GW_TransportLayerAddress = 168; +static const long asn_VAL_232_ignore = 1; +static const long asn_VAL_232_optional = 0; +static const long asn_VAL_233_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_233_reject = 0; +static const long asn_VAL_233_optional = 0; +static const long asn_VAL_234_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_234_reject = 0; +static const long asn_VAL_234_optional = 0; +static const long asn_VAL_235_id_Tunnel_Information_for_BBF = 163; +static const long asn_VAL_235_ignore = 1; +static const long asn_VAL_235_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_225_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_225_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_225_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_226_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_226_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_226_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_227_id_E_RABs_Admitted_ToBeAdded_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_227_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_227_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_228_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_228_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_228_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_229_id_SeNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_229_reject }, + { "&Value", aioc__type, &asn_DEF_SeNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_229_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_230_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_230_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_230_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_231_id_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_231_ignore }, + { "&Value", aioc__type, &asn_DEF_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_231_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_232_id_SIPTO_L_GW_TransportLayerAddress }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_232_ignore }, + { "&Value", aioc__type, &asn_DEF_TransportLayerAddress }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_232_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_233_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_233_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_233_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_234_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_234_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_234_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_235_id_Tunnel_Information_for_BBF }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_235_ignore }, + { "&Value", aioc__type, &asn_DEF_TunnelInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_235_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1[] = { + { 11, 4, asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_237_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_237_reject = 0; +static const long asn_VAL_237_mandatory = 2; +static const long asn_VAL_238_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_238_reject = 0; +static const long asn_VAL_238_mandatory = 2; +static const long asn_VAL_239_id_Cause = 5; +static const long asn_VAL_239_ignore = 1; +static const long asn_VAL_239_mandatory = 2; +static const long asn_VAL_240_id_CriticalityDiagnostics = 17; +static const long asn_VAL_240_ignore = 1; +static const long asn_VAL_240_optional = 0; +static const long asn_VAL_241_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_241_reject = 0; +static const long asn_VAL_241_optional = 0; +static const long asn_VAL_242_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_242_reject = 0; +static const long asn_VAL_242_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBAdditionRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_237_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_237_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_237_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_238_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_238_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_238_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_239_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_239_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_239_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_240_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_240_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_240_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_241_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_241_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_241_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_242_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_242_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_242_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBAdditionRequestReject_IEs_1[] = { + { 6, 4, asn_IOS_SeNBAdditionRequestReject_IEs_1_rows } +}; +static const long asn_VAL_243_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_243_reject = 0; +static const long asn_VAL_243_mandatory = 2; +static const long asn_VAL_244_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_244_reject = 0; +static const long asn_VAL_244_mandatory = 2; +static const long asn_VAL_245_id_ResponseInformationSeNBReconfComp = 123; +static const long asn_VAL_245_ignore = 1; +static const long asn_VAL_245_mandatory = 2; +static const long asn_VAL_246_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_246_reject = 0; +static const long asn_VAL_246_optional = 0; +static const long asn_VAL_247_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_247_reject = 0; +static const long asn_VAL_247_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReconfigurationComplete_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_243_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_243_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_243_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_244_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_244_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_244_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_245_id_ResponseInformationSeNBReconfComp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_245_ignore }, + { "&Value", aioc__type, &asn_DEF_ResponseInformationSeNBReconfComp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_245_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_246_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_246_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_246_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_247_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_247_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_247_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReconfigurationComplete_IEs_1[] = { + { 5, 4, asn_IOS_SeNBReconfigurationComplete_IEs_1_rows } +}; +static const long asn_VAL_248_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_248_reject = 0; +static const long asn_VAL_248_mandatory = 2; +static const long asn_VAL_249_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_249_reject = 0; +static const long asn_VAL_249_mandatory = 2; +static const long asn_VAL_250_id_Cause = 5; +static const long asn_VAL_250_ignore = 1; +static const long asn_VAL_250_mandatory = 2; +static const long asn_VAL_251_id_SCGChangeIndication = 136; +static const long asn_VAL_251_ignore = 1; +static const long asn_VAL_251_optional = 0; +static const long asn_VAL_252_id_ServingPLMN = 116; +static const long asn_VAL_252_ignore = 1; +static const long asn_VAL_252_optional = 0; +static const long asn_VAL_253_id_UE_ContextInformationSeNBModReq = 124; +static const long asn_VAL_253_reject = 0; +static const long asn_VAL_253_optional = 0; +static const long asn_VAL_254_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_254_ignore = 1; +static const long asn_VAL_254_optional = 0; +static const long asn_VAL_255_id_CSGMembershipStatus = 71; +static const long asn_VAL_255_reject = 0; +static const long asn_VAL_255_optional = 0; +static const long asn_VAL_256_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_256_reject = 0; +static const long asn_VAL_256_optional = 0; +static const long asn_VAL_257_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_257_reject = 0; +static const long asn_VAL_257_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_248_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_248_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_248_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_249_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_249_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_249_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_250_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_250_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_250_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_251_id_SCGChangeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_251_ignore }, + { "&Value", aioc__type, &asn_DEF_SCGChangeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_251_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_252_id_ServingPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_252_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_252_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_253_id_UE_ContextInformationSeNBModReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_253_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformationSeNBModReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_253_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_254_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_254_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_254_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_255_id_CSGMembershipStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_255_reject }, + { "&Value", aioc__type, &asn_DEF_CSGMembershipStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_255_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_256_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_256_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_256_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_257_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_257_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_257_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequest_IEs_1[] = { + { 10, 4, asn_IOS_SeNBModificationRequest_IEs_1_rows } +}; +static const long asn_VAL_261_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_261_ignore = 1; +static const long asn_VAL_261_mandatory = 2; +static const long asn_VAL_262_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_262_ignore = 1; +static const long asn_VAL_262_mandatory = 2; +static const long asn_VAL_263_id_E_RABs_Admitted_ToBeAdded_ModAckList = 128; +static const long asn_VAL_263_ignore = 1; +static const long asn_VAL_263_optional = 0; +static const long asn_VAL_264_id_E_RABs_Admitted_ToBeModified_ModAckList = 129; +static const long asn_VAL_264_ignore = 1; +static const long asn_VAL_264_optional = 0; +static const long asn_VAL_265_id_E_RABs_Admitted_ToBeReleased_ModAckList = 130; +static const long asn_VAL_265_ignore = 1; +static const long asn_VAL_265_optional = 0; +static const long asn_VAL_266_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_266_ignore = 1; +static const long asn_VAL_266_optional = 0; +static const long asn_VAL_267_id_SeNBtoMeNBContainer = 122; +static const long asn_VAL_267_ignore = 1; +static const long asn_VAL_267_optional = 0; +static const long asn_VAL_268_id_CriticalityDiagnostics = 17; +static const long asn_VAL_268_ignore = 1; +static const long asn_VAL_268_optional = 0; +static const long asn_VAL_269_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_269_ignore = 1; +static const long asn_VAL_269_optional = 0; +static const long asn_VAL_270_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_270_ignore = 1; +static const long asn_VAL_270_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_261_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_261_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_261_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_262_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_262_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_262_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_263_id_E_RABs_Admitted_ToBeAdded_ModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_263_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_263_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_264_id_E_RABs_Admitted_ToBeModified_ModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_264_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_264_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_265_id_E_RABs_Admitted_ToBeReleased_ModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_265_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_265_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_266_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_266_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_266_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_267_id_SeNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_267_ignore }, + { "&Value", aioc__type, &asn_DEF_SeNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_267_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_268_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_268_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_268_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_269_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_269_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_269_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_270_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_270_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_270_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequestAcknowledge_IEs_1[] = { + { 10, 4, asn_IOS_SeNBModificationRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_274_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_274_ignore = 1; +static const long asn_VAL_274_mandatory = 2; +static const long asn_VAL_275_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_275_ignore = 1; +static const long asn_VAL_275_mandatory = 2; +static const long asn_VAL_276_id_Cause = 5; +static const long asn_VAL_276_ignore = 1; +static const long asn_VAL_276_mandatory = 2; +static const long asn_VAL_277_id_CriticalityDiagnostics = 17; +static const long asn_VAL_277_ignore = 1; +static const long asn_VAL_277_optional = 0; +static const long asn_VAL_278_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_278_ignore = 1; +static const long asn_VAL_278_optional = 0; +static const long asn_VAL_279_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_279_ignore = 1; +static const long asn_VAL_279_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_274_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_274_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_274_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_275_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_275_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_275_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_276_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_276_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_276_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_277_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_277_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_277_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_278_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_278_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_278_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_279_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_279_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_279_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequestReject_IEs_1[] = { + { 6, 4, asn_IOS_SeNBModificationRequestReject_IEs_1_rows } +}; +static const long asn_VAL_280_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_280_reject = 0; +static const long asn_VAL_280_mandatory = 2; +static const long asn_VAL_281_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_281_reject = 0; +static const long asn_VAL_281_mandatory = 2; +static const long asn_VAL_282_id_Cause = 5; +static const long asn_VAL_282_ignore = 1; +static const long asn_VAL_282_mandatory = 2; +static const long asn_VAL_283_id_SCGChangeIndication = 136; +static const long asn_VAL_283_ignore = 1; +static const long asn_VAL_283_optional = 0; +static const long asn_VAL_284_id_E_RABs_ToBeReleased_ModReqd = 134; +static const long asn_VAL_284_ignore = 1; +static const long asn_VAL_284_optional = 0; +static const long asn_VAL_285_id_SeNBtoMeNBContainer = 122; +static const long asn_VAL_285_ignore = 1; +static const long asn_VAL_285_optional = 0; +static const long asn_VAL_286_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_286_reject = 0; +static const long asn_VAL_286_optional = 0; +static const long asn_VAL_287_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_287_reject = 0; +static const long asn_VAL_287_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_280_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_280_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_280_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_281_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_281_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_281_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_282_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_282_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_282_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_283_id_SCGChangeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_283_ignore }, + { "&Value", aioc__type, &asn_DEF_SCGChangeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_283_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_284_id_E_RABs_ToBeReleased_ModReqd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_284_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_ModReqd }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_284_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_285_id_SeNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_285_ignore }, + { "&Value", aioc__type, &asn_DEF_SeNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_285_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_286_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_286_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_286_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_287_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_287_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_287_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRequired_IEs_1[] = { + { 8, 4, asn_IOS_SeNBModificationRequired_IEs_1_rows } +}; +static const long asn_VAL_289_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_289_ignore = 1; +static const long asn_VAL_289_mandatory = 2; +static const long asn_VAL_290_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_290_ignore = 1; +static const long asn_VAL_290_mandatory = 2; +static const long asn_VAL_291_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_291_ignore = 1; +static const long asn_VAL_291_optional = 0; +static const long asn_VAL_292_id_CriticalityDiagnostics = 17; +static const long asn_VAL_292_ignore = 1; +static const long asn_VAL_292_optional = 0; +static const long asn_VAL_293_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_293_ignore = 1; +static const long asn_VAL_293_optional = 0; +static const long asn_VAL_294_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_294_ignore = 1; +static const long asn_VAL_294_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_289_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_289_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_289_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_290_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_290_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_290_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_291_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_291_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_291_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_292_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_292_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_292_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_293_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_293_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_293_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_294_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_294_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_294_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationConfirm_IEs_1[] = { + { 6, 4, asn_IOS_SeNBModificationConfirm_IEs_1_rows } +}; +static const long asn_VAL_295_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_295_ignore = 1; +static const long asn_VAL_295_mandatory = 2; +static const long asn_VAL_296_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_296_ignore = 1; +static const long asn_VAL_296_mandatory = 2; +static const long asn_VAL_297_id_Cause = 5; +static const long asn_VAL_297_ignore = 1; +static const long asn_VAL_297_mandatory = 2; +static const long asn_VAL_298_id_MeNBtoSeNBContainer = 119; +static const long asn_VAL_298_ignore = 1; +static const long asn_VAL_298_optional = 0; +static const long asn_VAL_299_id_CriticalityDiagnostics = 17; +static const long asn_VAL_299_ignore = 1; +static const long asn_VAL_299_optional = 0; +static const long asn_VAL_300_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_300_ignore = 1; +static const long asn_VAL_300_optional = 0; +static const long asn_VAL_301_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_301_ignore = 1; +static const long asn_VAL_301_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBModificationRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_295_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_295_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_295_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_296_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_296_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_296_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_297_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_297_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_297_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_298_id_MeNBtoSeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_298_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_298_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_299_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_299_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_299_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_300_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_300_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_300_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_301_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_301_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_301_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBModificationRefuse_IEs_1[] = { + { 7, 4, asn_IOS_SeNBModificationRefuse_IEs_1_rows } +}; +static const long asn_VAL_302_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_302_reject = 0; +static const long asn_VAL_302_mandatory = 2; +static const long asn_VAL_303_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_303_reject = 0; +static const long asn_VAL_303_optional = 0; +static const long asn_VAL_304_id_Cause = 5; +static const long asn_VAL_304_ignore = 1; +static const long asn_VAL_304_optional = 0; +static const long asn_VAL_305_id_E_RABs_ToBeReleased_List_RelReq = 137; +static const long asn_VAL_305_ignore = 1; +static const long asn_VAL_305_optional = 0; +static const long asn_VAL_306_id_UE_ContextKeptIndicator = 154; +static const long asn_VAL_306_ignore = 1; +static const long asn_VAL_306_optional = 0; +static const long asn_VAL_307_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_307_reject = 0; +static const long asn_VAL_307_optional = 0; +static const long asn_VAL_308_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_308_reject = 0; +static const long asn_VAL_308_optional = 0; +static const long asn_VAL_309_id_MakeBeforeBreakIndicator = 181; +static const long asn_VAL_309_ignore = 1; +static const long asn_VAL_309_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReleaseRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_302_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_302_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_302_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_303_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_303_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_303_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_304_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_304_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_304_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_305_id_E_RABs_ToBeReleased_List_RelReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_305_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_List_RelReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_305_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_306_id_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_306_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_306_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_307_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_307_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_307_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_308_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_308_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_308_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_309_id_MakeBeforeBreakIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_309_ignore }, + { "&Value", aioc__type, &asn_DEF_MakeBeforeBreakIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_309_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReleaseRequest_IEs_1[] = { + { 8, 4, asn_IOS_SeNBReleaseRequest_IEs_1_rows } +}; +static const long asn_VAL_311_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_311_reject = 0; +static const long asn_VAL_311_mandatory = 2; +static const long asn_VAL_312_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_312_reject = 0; +static const long asn_VAL_312_mandatory = 2; +static const long asn_VAL_313_id_Cause = 5; +static const long asn_VAL_313_ignore = 1; +static const long asn_VAL_313_mandatory = 2; +static const long asn_VAL_314_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_314_reject = 0; +static const long asn_VAL_314_optional = 0; +static const long asn_VAL_315_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_315_reject = 0; +static const long asn_VAL_315_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReleaseRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_311_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_311_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_311_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_312_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_312_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_312_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_313_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_313_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_313_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_314_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_314_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_314_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_315_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_315_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_315_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReleaseRequired_IEs_1[] = { + { 5, 4, asn_IOS_SeNBReleaseRequired_IEs_1_rows } +}; +static const long asn_VAL_316_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_316_ignore = 1; +static const long asn_VAL_316_mandatory = 2; +static const long asn_VAL_317_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_317_ignore = 1; +static const long asn_VAL_317_mandatory = 2; +static const long asn_VAL_318_id_E_RABs_ToBeReleased_List_RelConf = 139; +static const long asn_VAL_318_ignore = 1; +static const long asn_VAL_318_optional = 0; +static const long asn_VAL_319_id_CriticalityDiagnostics = 17; +static const long asn_VAL_319_ignore = 1; +static const long asn_VAL_319_optional = 0; +static const long asn_VAL_320_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_320_ignore = 1; +static const long asn_VAL_320_optional = 0; +static const long asn_VAL_321_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_321_ignore = 1; +static const long asn_VAL_321_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBReleaseConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_316_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_316_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_316_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_317_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_317_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_317_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_318_id_E_RABs_ToBeReleased_List_RelConf }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_318_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_List_RelConf }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_318_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_319_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_319_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_319_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_320_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_320_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_320_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_321_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_321_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_321_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBReleaseConfirm_IEs_1[] = { + { 6, 4, asn_IOS_SeNBReleaseConfirm_IEs_1_rows } +}; +static const long asn_VAL_323_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_323_reject = 0; +static const long asn_VAL_323_mandatory = 2; +static const long asn_VAL_324_id_SeNB_UE_X2AP_ID = 112; +static const long asn_VAL_324_reject = 0; +static const long asn_VAL_324_mandatory = 2; +static const long asn_VAL_325_id_E_RABs_SubjectToCounterCheck_List = 141; +static const long asn_VAL_325_ignore = 1; +static const long asn_VAL_325_mandatory = 2; +static const long asn_VAL_326_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_326_ignore = 1; +static const long asn_VAL_326_optional = 0; +static const long asn_VAL_327_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_327_ignore = 1; +static const long asn_VAL_327_optional = 0; +static const asn_ioc_cell_t asn_IOS_SeNBCounterCheckRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_323_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_323_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_323_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_324_id_SeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_324_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_324_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_325_id_E_RABs_SubjectToCounterCheck_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_325_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToCounterCheck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_325_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_326_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_326_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_326_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_327_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_327_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_327_optional } +}; +static const asn_ioc_set_t asn_IOS_SeNBCounterCheckRequest_IEs_1[] = { + { 5, 4, asn_IOS_SeNBCounterCheckRequest_IEs_1_rows } +}; +static const long asn_VAL_329_id_GlobalENB_ID = 21; +static const long asn_VAL_329_reject = 0; +static const long asn_VAL_329_mandatory = 2; +static const long asn_VAL_330_id_X2RemovalThreshold = 169; +static const long asn_VAL_330_reject = 0; +static const long asn_VAL_330_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2RemovalRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_329_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_329_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_329_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_330_id_X2RemovalThreshold }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_330_reject }, + { "&Value", aioc__type, &asn_DEF_X2BenefitValue }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_330_optional } +}; +static const asn_ioc_set_t asn_IOS_X2RemovalRequest_IEs_1[] = { + { 2, 4, asn_IOS_X2RemovalRequest_IEs_1_rows } +}; +static const long asn_VAL_331_id_GlobalENB_ID = 21; +static const long asn_VAL_331_reject = 0; +static const long asn_VAL_331_mandatory = 2; +static const long asn_VAL_332_id_CriticalityDiagnostics = 17; +static const long asn_VAL_332_ignore = 1; +static const long asn_VAL_332_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2RemovalResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_331_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_331_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_331_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_332_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_332_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_332_optional } +}; +static const asn_ioc_set_t asn_IOS_X2RemovalResponse_IEs_1[] = { + { 2, 4, asn_IOS_X2RemovalResponse_IEs_1_rows } +}; +static const long asn_VAL_333_id_Cause = 5; +static const long asn_VAL_333_ignore = 1; +static const long asn_VAL_333_mandatory = 2; +static const long asn_VAL_334_id_CriticalityDiagnostics = 17; +static const long asn_VAL_334_ignore = 1; +static const long asn_VAL_334_optional = 0; +static const asn_ioc_cell_t asn_IOS_X2RemovalFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_333_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_333_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_333_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_334_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_334_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_334_optional } +}; +static const asn_ioc_set_t asn_IOS_X2RemovalFailure_IEs_1[] = { + { 2, 4, asn_IOS_X2RemovalFailure_IEs_1_rows } +}; +static const long asn_VAL_335_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_335_reject = 0; +static const long asn_VAL_335_mandatory = 2; +static const long asn_VAL_336_id_SeNB_UE_X2AP_ID_Extension = 158; +static const long asn_VAL_336_reject = 0; +static const long asn_VAL_336_optional = 0; +static const long asn_VAL_337_id_resumeID = 172; +static const long asn_VAL_337_reject = 0; +static const long asn_VAL_337_mandatory = 2; +static const long asn_VAL_338_id_ShortMAC_I = 51; +static const long asn_VAL_338_reject = 0; +static const long asn_VAL_338_mandatory = 2; +static const long asn_VAL_339_id_NewEUTRANCellIdentifier = 175; +static const long asn_VAL_339_reject = 0; +static const long asn_VAL_339_mandatory = 2; +static const long asn_VAL_340_id_FailureCellCRNTI = 50; +static const long asn_VAL_340_reject = 0; +static const long asn_VAL_340_optional = 0; +static const long asn_VAL_341_id_FailureCellPCI = 48; +static const long asn_VAL_341_reject = 0; +static const long asn_VAL_341_optional = 0; +static const asn_ioc_cell_t asn_IOS_RetrieveUEContextRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_335_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_335_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_335_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_336_id_SeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_336_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_336_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_337_id_resumeID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_337_reject }, + { "&Value", aioc__type, &asn_DEF_ResumeID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_337_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_338_id_ShortMAC_I }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_338_reject }, + { "&Value", aioc__type, &asn_DEF_ShortMAC_I }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_338_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_339_id_NewEUTRANCellIdentifier }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_339_reject }, + { "&Value", aioc__type, &asn_DEF_EUTRANCellIdentifier }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_339_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_340_id_FailureCellCRNTI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_340_reject }, + { "&Value", aioc__type, &asn_DEF_CRNTI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_340_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_341_id_FailureCellPCI }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_341_reject }, + { "&Value", aioc__type, &asn_DEF_PCI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_341_optional } +}; +static const asn_ioc_set_t asn_IOS_RetrieveUEContextRequest_IEs_1[] = { + { 7, 4, asn_IOS_RetrieveUEContextRequest_IEs_1_rows } +}; +static const long asn_VAL_342_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_342_ignore = 1; +static const long asn_VAL_342_mandatory = 2; +static const long asn_VAL_343_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_343_ignore = 1; +static const long asn_VAL_343_optional = 0; +static const long asn_VAL_344_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_344_ignore = 1; +static const long asn_VAL_344_mandatory = 2; +static const long asn_VAL_345_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_345_ignore = 1; +static const long asn_VAL_345_optional = 0; +static const long asn_VAL_346_id_GUMMEI_ID = 23; +static const long asn_VAL_346_reject = 0; +static const long asn_VAL_346_mandatory = 2; +static const long asn_VAL_347_id_UE_ContextInformationRetrieve = 173; +static const long asn_VAL_347_reject = 0; +static const long asn_VAL_347_mandatory = 2; +static const long asn_VAL_348_id_TraceActivation = 13; +static const long asn_VAL_348_ignore = 1; +static const long asn_VAL_348_optional = 0; +static const long asn_VAL_349_id_SRVCCOperationPossible = 36; +static const long asn_VAL_349_ignore = 1; +static const long asn_VAL_349_optional = 0; +static const long asn_VAL_350_id_Masked_IMEISV = 98; +static const long asn_VAL_350_ignore = 1; +static const long asn_VAL_350_optional = 0; +static const long asn_VAL_351_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_351_ignore = 1; +static const long asn_VAL_351_optional = 0; +static const long asn_VAL_352_id_ProSeAuthorized = 103; +static const long asn_VAL_352_ignore = 1; +static const long asn_VAL_352_optional = 0; +static const long asn_VAL_353_id_CriticalityDiagnostics = 17; +static const long asn_VAL_353_ignore = 1; +static const long asn_VAL_353_optional = 0; +static const long asn_VAL_354_id_V2XServicesAuthorized = 176; +static const long asn_VAL_354_ignore = 1; +static const long asn_VAL_354_optional = 0; +static const long asn_VAL_355_id_AerialUEsubscriptionInformation = 277; +static const long asn_VAL_355_ignore = 1; +static const long asn_VAL_355_optional = 0; +static const long asn_VAL_356_id_Subscription_Based_UE_DifferentiationInfo = 309; +static const long asn_VAL_356_ignore = 1; +static const long asn_VAL_356_optional = 0; +static const asn_ioc_cell_t asn_IOS_RetrieveUEContextResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_342_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_342_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_342_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_343_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_343_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_343_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_344_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_344_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_344_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_345_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_345_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_345_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_346_id_GUMMEI_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_346_reject }, + { "&Value", aioc__type, &asn_DEF_GUMMEI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_346_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_347_id_UE_ContextInformationRetrieve }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_347_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformationRetrieve }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_347_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_348_id_TraceActivation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_348_ignore }, + { "&Value", aioc__type, &asn_DEF_TraceActivation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_348_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_349_id_SRVCCOperationPossible }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_349_ignore }, + { "&Value", aioc__type, &asn_DEF_SRVCCOperationPossible }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_349_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_350_id_Masked_IMEISV }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_350_ignore }, + { "&Value", aioc__type, &asn_DEF_Masked_IMEISV }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_350_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_351_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_351_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_351_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_352_id_ProSeAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_352_ignore }, + { "&Value", aioc__type, &asn_DEF_ProSeAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_352_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_353_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_353_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_353_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_354_id_V2XServicesAuthorized }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_354_ignore }, + { "&Value", aioc__type, &asn_DEF_V2XServicesAuthorized }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_354_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_355_id_AerialUEsubscriptionInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_355_ignore }, + { "&Value", aioc__type, &asn_DEF_AerialUEsubscriptionInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_355_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_356_id_Subscription_Based_UE_DifferentiationInfo }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_356_ignore }, + { "&Value", aioc__type, &asn_DEF_Subscription_Based_UE_DifferentiationInfo }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_356_optional } +}; +static const asn_ioc_set_t asn_IOS_RetrieveUEContextResponse_IEs_1[] = { + { 15, 4, asn_IOS_RetrieveUEContextResponse_IEs_1_rows } +}; +static const long asn_VAL_358_id_New_eNB_UE_X2AP_ID = 9; +static const long asn_VAL_358_ignore = 1; +static const long asn_VAL_358_mandatory = 2; +static const long asn_VAL_359_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_359_ignore = 1; +static const long asn_VAL_359_optional = 0; +static const long asn_VAL_360_id_Cause = 5; +static const long asn_VAL_360_ignore = 1; +static const long asn_VAL_360_mandatory = 2; +static const long asn_VAL_361_id_CriticalityDiagnostics = 17; +static const long asn_VAL_361_ignore = 1; +static const long asn_VAL_361_optional = 0; +static const asn_ioc_cell_t asn_IOS_RetrieveUEContextFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_358_id_New_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_358_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_358_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_359_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_359_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_359_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_360_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_360_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_360_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_361_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_361_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_361_optional } +}; +static const asn_ioc_set_t asn_IOS_RetrieveUEContextFailure_IEs_1[] = { + { 4, 4, asn_IOS_RetrieveUEContextFailure_IEs_1_rows } +}; +static const long asn_VAL_362_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_362_reject = 0; +static const long asn_VAL_362_mandatory = 2; +static const long asn_VAL_363_id_NRUESecurityCapabilities = 248; +static const long asn_VAL_363_reject = 0; +static const long asn_VAL_363_mandatory = 2; +static const long asn_VAL_364_id_SgNBSecurityKey = 203; +static const long asn_VAL_364_reject = 0; +static const long asn_VAL_364_mandatory = 2; +static const long asn_VAL_365_id_SgNBUEAggregateMaximumBitRate = 204; +static const long asn_VAL_365_reject = 0; +static const long asn_VAL_365_mandatory = 2; +static const long asn_VAL_366_id_SelectedPLMN = 269; +static const long asn_VAL_366_ignore = 1; +static const long asn_VAL_366_optional = 0; +static const long asn_VAL_367_id_HandoverRestrictionList = 240; +static const long asn_VAL_367_ignore = 1; +static const long asn_VAL_367_optional = 0; +static const long asn_VAL_368_id_E_RABs_ToBeAdded_SgNBAddReqList = 205; +static const long asn_VAL_368_reject = 0; +static const long asn_VAL_368_mandatory = 2; +static const long asn_VAL_369_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_369_reject = 0; +static const long asn_VAL_369_mandatory = 2; +static const long asn_VAL_370_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_370_reject = 0; +static const long asn_VAL_370_optional = 0; +static const long asn_VAL_371_id_ExpectedUEBehaviour = 104; +static const long asn_VAL_371_ignore = 1; +static const long asn_VAL_371_optional = 0; +static const long asn_VAL_372_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_372_reject = 0; +static const long asn_VAL_372_optional = 0; +static const long asn_VAL_373_id_RequestedSplitSRBs = 208; +static const long asn_VAL_373_reject = 0; +static const long asn_VAL_373_optional = 0; +static const long asn_VAL_374_id_MeNBResourceCoordinationInformation = 257; +static const long asn_VAL_374_ignore = 1; +static const long asn_VAL_374_optional = 0; +static const long asn_VAL_375_id_SGNB_Addition_Trigger_Ind = 278; +static const long asn_VAL_375_reject = 0; +static const long asn_VAL_375_optional = 0; +static const long asn_VAL_376_id_SubscriberProfileIDforRFP = 275; +static const long asn_VAL_376_ignore = 1; +static const long asn_VAL_376_optional = 0; +static const long asn_VAL_377_id_MeNBCell_ID = 279; +static const long asn_VAL_377_reject = 0; +static const long asn_VAL_377_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_SgNBAdditionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_362_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_362_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_362_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_363_id_NRUESecurityCapabilities }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_363_reject }, + { "&Value", aioc__type, &asn_DEF_NRUESecurityCapabilities }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_363_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_364_id_SgNBSecurityKey }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_364_reject }, + { "&Value", aioc__type, &asn_DEF_SgNBSecurityKey }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_364_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_365_id_SgNBUEAggregateMaximumBitRate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_365_reject }, + { "&Value", aioc__type, &asn_DEF_UEAggregateMaximumBitRate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_365_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_366_id_SelectedPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_366_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_366_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_367_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_367_ignore }, + { "&Value", aioc__type, &asn_DEF_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_367_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_368_id_E_RABs_ToBeAdded_SgNBAddReqList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_368_reject }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_368_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_369_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_369_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_369_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_370_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_370_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_370_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_371_id_ExpectedUEBehaviour }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_371_ignore }, + { "&Value", aioc__type, &asn_DEF_ExpectedUEBehaviour }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_371_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_372_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_372_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_372_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_373_id_RequestedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_373_reject }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_373_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_374_id_MeNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_374_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_374_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_375_id_SGNB_Addition_Trigger_Ind }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_375_reject }, + { "&Value", aioc__type, &asn_DEF_SGNB_Addition_Trigger_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_375_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_376_id_SubscriberProfileIDforRFP }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_376_ignore }, + { "&Value", aioc__type, &asn_DEF_SubscriberProfileIDforRFP }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_376_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_377_id_MeNBCell_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_377_reject }, + { "&Value", aioc__type, &asn_DEF_ECGI }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_377_mandatory } +}; +static const asn_ioc_set_t asn_IOS_SgNBAdditionRequest_IEs_1[] = { + { 16, 4, asn_IOS_SgNBAdditionRequest_IEs_1_rows } +}; +static const long asn_VAL_379_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_379_reject = 0; +static const long asn_VAL_379_mandatory = 2; +static const long asn_VAL_380_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_380_reject = 0; +static const long asn_VAL_380_mandatory = 2; +static const long asn_VAL_381_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList = 210; +static const long asn_VAL_381_ignore = 1; +static const long asn_VAL_381_mandatory = 2; +static const long asn_VAL_382_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_382_ignore = 1; +static const long asn_VAL_382_optional = 0; +static const long asn_VAL_383_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_383_reject = 0; +static const long asn_VAL_383_mandatory = 2; +static const long asn_VAL_384_id_CriticalityDiagnostics = 17; +static const long asn_VAL_384_ignore = 1; +static const long asn_VAL_384_optional = 0; +static const long asn_VAL_385_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_385_reject = 0; +static const long asn_VAL_385_optional = 0; +static const long asn_VAL_386_id_AdmittedSplitSRBs = 212; +static const long asn_VAL_386_reject = 0; +static const long asn_VAL_386_optional = 0; +static const long asn_VAL_387_id_SgNBResourceCoordinationInformation = 258; +static const long asn_VAL_387_ignore = 1; +static const long asn_VAL_387_optional = 0; +static const long asn_VAL_388_id_RRCConfigIndication = 272; +static const long asn_VAL_388_reject = 0; +static const long asn_VAL_388_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_379_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_379_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_379_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_380_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_380_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_380_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_381_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_381_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_381_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_382_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_382_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_382_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_383_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_383_reject }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_383_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_384_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_384_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_384_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_385_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_385_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_385_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_386_id_AdmittedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_386_reject }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_386_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_387_id_SgNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_387_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_387_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_388_id_RRCConfigIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_388_reject }, + { "&Value", aioc__type, &asn_DEF_RRC_Config_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_388_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1[] = { + { 10, 4, asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_390_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_390_reject = 0; +static const long asn_VAL_390_mandatory = 2; +static const long asn_VAL_391_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_391_reject = 0; +static const long asn_VAL_391_optional = 0; +static const long asn_VAL_392_id_Cause = 5; +static const long asn_VAL_392_ignore = 1; +static const long asn_VAL_392_mandatory = 2; +static const long asn_VAL_393_id_CriticalityDiagnostics = 17; +static const long asn_VAL_393_ignore = 1; +static const long asn_VAL_393_optional = 0; +static const long asn_VAL_394_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_394_reject = 0; +static const long asn_VAL_394_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBAdditionRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_390_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_390_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_390_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_391_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_391_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_391_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_392_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_392_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_392_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_393_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_393_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_393_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_394_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_394_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_394_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBAdditionRequestReject_IEs_1[] = { + { 5, 4, asn_IOS_SgNBAdditionRequestReject_IEs_1_rows } +}; +static const long asn_VAL_395_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_395_reject = 0; +static const long asn_VAL_395_mandatory = 2; +static const long asn_VAL_396_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_396_reject = 0; +static const long asn_VAL_396_mandatory = 2; +static const long asn_VAL_397_id_ResponseInformationSgNBReconfComp = 214; +static const long asn_VAL_397_ignore = 1; +static const long asn_VAL_397_mandatory = 2; +static const long asn_VAL_398_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_398_reject = 0; +static const long asn_VAL_398_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReconfigurationComplete_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_395_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_395_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_395_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_396_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_396_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_396_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_397_id_ResponseInformationSgNBReconfComp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_397_ignore }, + { "&Value", aioc__type, &asn_DEF_ResponseInformationSgNBReconfComp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_397_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_398_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_398_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_398_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReconfigurationComplete_IEs_1[] = { + { 4, 4, asn_IOS_SgNBReconfigurationComplete_IEs_1_rows } +}; +static const long asn_VAL_399_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_399_reject = 0; +static const long asn_VAL_399_mandatory = 2; +static const long asn_VAL_400_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_400_reject = 0; +static const long asn_VAL_400_mandatory = 2; +static const long asn_VAL_401_id_Cause = 5; +static const long asn_VAL_401_ignore = 1; +static const long asn_VAL_401_mandatory = 2; +static const long asn_VAL_402_id_SelectedPLMN = 269; +static const long asn_VAL_402_ignore = 1; +static const long asn_VAL_402_optional = 0; +static const long asn_VAL_403_id_HandoverRestrictionList = 240; +static const long asn_VAL_403_ignore = 1; +static const long asn_VAL_403_optional = 0; +static const long asn_VAL_404_id_SCGConfigurationQuery = 241; +static const long asn_VAL_404_ignore = 1; +static const long asn_VAL_404_optional = 0; +static const long asn_VAL_405_id_UE_ContextInformation_SgNBModReq = 215; +static const long asn_VAL_405_reject = 0; +static const long asn_VAL_405_optional = 0; +static const long asn_VAL_406_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_406_reject = 0; +static const long asn_VAL_406_optional = 0; +static const long asn_VAL_407_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_407_reject = 0; +static const long asn_VAL_407_optional = 0; +static const long asn_VAL_408_id_MeNBResourceCoordinationInformation = 257; +static const long asn_VAL_408_ignore = 1; +static const long asn_VAL_408_optional = 0; +static const long asn_VAL_409_id_RequestedSplitSRBs = 208; +static const long asn_VAL_409_ignore = 1; +static const long asn_VAL_409_optional = 0; +static const long asn_VAL_410_id_RequestedSplitSRBsrelease = 280; +static const long asn_VAL_410_ignore = 1; +static const long asn_VAL_410_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_399_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_399_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_399_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_400_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_400_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_400_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_401_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_401_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_401_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_402_id_SelectedPLMN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_402_ignore }, + { "&Value", aioc__type, &asn_DEF_PLMN_Identity }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_402_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_403_id_HandoverRestrictionList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_403_ignore }, + { "&Value", aioc__type, &asn_DEF_HandoverRestrictionList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_403_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_404_id_SCGConfigurationQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_404_ignore }, + { "&Value", aioc__type, &asn_DEF_SCGConfigurationQuery }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_404_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_405_id_UE_ContextInformation_SgNBModReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_405_reject }, + { "&Value", aioc__type, &asn_DEF_UE_ContextInformation_SgNBModReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_405_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_406_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_406_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_406_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_407_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_407_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_407_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_408_id_MeNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_408_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_408_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_409_id_RequestedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_409_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_409_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_410_id_RequestedSplitSRBsrelease }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_410_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_410_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequest_IEs_1[] = { + { 12, 4, asn_IOS_SgNBModificationRequest_IEs_1_rows } +}; +static const long asn_VAL_414_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_414_ignore = 1; +static const long asn_VAL_414_mandatory = 2; +static const long asn_VAL_415_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_415_ignore = 1; +static const long asn_VAL_415_mandatory = 2; +static const long asn_VAL_416_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList = 219; +static const long asn_VAL_416_ignore = 1; +static const long asn_VAL_416_optional = 0; +static const long asn_VAL_417_id_E_RABs_Admitted_ToBeModified_SgNBModAckList = 220; +static const long asn_VAL_417_ignore = 1; +static const long asn_VAL_417_optional = 0; +static const long asn_VAL_418_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList = 221; +static const long asn_VAL_418_ignore = 1; +static const long asn_VAL_418_optional = 0; +static const long asn_VAL_419_id_E_RABs_NotAdmitted_List = 3; +static const long asn_VAL_419_ignore = 1; +static const long asn_VAL_419_optional = 0; +static const long asn_VAL_420_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_420_ignore = 1; +static const long asn_VAL_420_optional = 0; +static const long asn_VAL_421_id_CriticalityDiagnostics = 17; +static const long asn_VAL_421_ignore = 1; +static const long asn_VAL_421_optional = 0; +static const long asn_VAL_422_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_422_ignore = 1; +static const long asn_VAL_422_optional = 0; +static const long asn_VAL_423_id_SgNBResourceCoordinationInformation = 258; +static const long asn_VAL_423_ignore = 1; +static const long asn_VAL_423_optional = 0; +static const long asn_VAL_424_id_AdmittedSplitSRBs = 212; +static const long asn_VAL_424_ignore = 1; +static const long asn_VAL_424_optional = 0; +static const long asn_VAL_425_id_AdmittedSplitSRBsrelease = 281; +static const long asn_VAL_425_ignore = 1; +static const long asn_VAL_425_optional = 0; +static const long asn_VAL_426_id_RRCConfigIndication = 272; +static const long asn_VAL_426_reject = 0; +static const long asn_VAL_426_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_414_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_414_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_414_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_415_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_415_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_415_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_416_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_416_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_416_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_417_id_E_RABs_Admitted_ToBeModified_SgNBModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_417_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_417_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_418_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_418_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_418_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_419_id_E_RABs_NotAdmitted_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_419_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_419_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_420_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_420_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_420_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_421_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_421_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_421_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_422_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_422_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_422_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_423_id_SgNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_423_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_423_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_424_id_AdmittedSplitSRBs }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_424_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_424_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_425_id_AdmittedSplitSRBsrelease }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_425_ignore }, + { "&Value", aioc__type, &asn_DEF_SplitSRBs }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_425_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_426_id_RRCConfigIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_426_reject }, + { "&Value", aioc__type, &asn_DEF_RRC_Config_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_426_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequestAcknowledge_IEs_1[] = { + { 13, 4, asn_IOS_SgNBModificationRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_430_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_430_ignore = 1; +static const long asn_VAL_430_mandatory = 2; +static const long asn_VAL_431_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_431_ignore = 1; +static const long asn_VAL_431_mandatory = 2; +static const long asn_VAL_432_id_Cause = 5; +static const long asn_VAL_432_ignore = 1; +static const long asn_VAL_432_mandatory = 2; +static const long asn_VAL_433_id_CriticalityDiagnostics = 17; +static const long asn_VAL_433_ignore = 1; +static const long asn_VAL_433_optional = 0; +static const long asn_VAL_434_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_434_ignore = 1; +static const long asn_VAL_434_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_430_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_430_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_430_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_431_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_431_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_431_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_432_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_432_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_432_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_433_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_433_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_433_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_434_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_434_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_434_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequestReject_IEs_1[] = { + { 5, 4, asn_IOS_SgNBModificationRequestReject_IEs_1_rows } +}; +static const long asn_VAL_435_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_435_reject = 0; +static const long asn_VAL_435_mandatory = 2; +static const long asn_VAL_436_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_436_reject = 0; +static const long asn_VAL_436_mandatory = 2; +static const long asn_VAL_437_id_Cause = 5; +static const long asn_VAL_437_ignore = 1; +static const long asn_VAL_437_mandatory = 2; +static const long asn_VAL_438_id_PDCPChangeIndication = 249; +static const long asn_VAL_438_ignore = 1; +static const long asn_VAL_438_optional = 0; +static const long asn_VAL_439_id_E_RABs_ToBeReleased_SgNBModReqdList = 225; +static const long asn_VAL_439_ignore = 1; +static const long asn_VAL_439_optional = 0; +static const long asn_VAL_440_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_440_ignore = 1; +static const long asn_VAL_440_optional = 0; +static const long asn_VAL_441_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_441_reject = 0; +static const long asn_VAL_441_optional = 0; +static const long asn_VAL_442_id_E_RABs_ToBeModified_SgNBModReqdList = 226; +static const long asn_VAL_442_ignore = 1; +static const long asn_VAL_442_optional = 0; +static const long asn_VAL_443_id_SgNBResourceCoordinationInformation = 258; +static const long asn_VAL_443_ignore = 1; +static const long asn_VAL_443_optional = 0; +static const long asn_VAL_444_id_RRCConfigIndication = 272; +static const long asn_VAL_444_reject = 0; +static const long asn_VAL_444_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_435_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_435_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_435_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_436_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_436_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_436_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_437_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_437_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_437_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_438_id_PDCPChangeIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_438_ignore }, + { "&Value", aioc__type, &asn_DEF_PDCPChangeIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_438_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_439_id_E_RABs_ToBeReleased_SgNBModReqdList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_439_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_439_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_440_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_440_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_440_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_441_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_441_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_441_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_442_id_E_RABs_ToBeModified_SgNBModReqdList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_442_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeModified_SgNBModReqdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_442_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_443_id_SgNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_443_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_443_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_444_id_RRCConfigIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_444_reject }, + { "&Value", aioc__type, &asn_DEF_RRC_Config_Ind }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_444_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRequired_IEs_1[] = { + { 10, 4, asn_IOS_SgNBModificationRequired_IEs_1_rows } +}; +static const long asn_VAL_447_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_447_ignore = 1; +static const long asn_VAL_447_mandatory = 2; +static const long asn_VAL_448_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_448_ignore = 1; +static const long asn_VAL_448_mandatory = 2; +static const long asn_VAL_449_id_E_RABs_AdmittedToBeModified_SgNBModConfList = 294; +static const long asn_VAL_449_ignore = 1; +static const long asn_VAL_449_optional = 0; +static const long asn_VAL_450_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_450_ignore = 1; +static const long asn_VAL_450_optional = 0; +static const long asn_VAL_451_id_CriticalityDiagnostics = 17; +static const long asn_VAL_451_ignore = 1; +static const long asn_VAL_451_optional = 0; +static const long asn_VAL_452_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_452_ignore = 1; +static const long asn_VAL_452_optional = 0; +static const long asn_VAL_453_id_MeNBResourceCoordinationInformation = 257; +static const long asn_VAL_453_ignore = 1; +static const long asn_VAL_453_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_447_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_447_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_447_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_448_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_448_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_448_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_449_id_E_RABs_AdmittedToBeModified_SgNBModConfList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_449_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_449_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_450_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_450_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_450_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_451_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_451_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_451_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_452_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_452_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_452_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_453_id_MeNBResourceCoordinationInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_453_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBResourceCoordinationInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_453_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationConfirm_IEs_1[] = { + { 7, 4, asn_IOS_SgNBModificationConfirm_IEs_1_rows } +}; +static const long asn_VAL_455_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_455_ignore = 1; +static const long asn_VAL_455_mandatory = 2; +static const long asn_VAL_456_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_456_ignore = 1; +static const long asn_VAL_456_mandatory = 2; +static const long asn_VAL_457_id_Cause = 5; +static const long asn_VAL_457_ignore = 1; +static const long asn_VAL_457_mandatory = 2; +static const long asn_VAL_458_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_458_ignore = 1; +static const long asn_VAL_458_optional = 0; +static const long asn_VAL_459_id_CriticalityDiagnostics = 17; +static const long asn_VAL_459_ignore = 1; +static const long asn_VAL_459_optional = 0; +static const long asn_VAL_460_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_460_ignore = 1; +static const long asn_VAL_460_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBModificationRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_455_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_455_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_455_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_456_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_456_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_456_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_457_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_457_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_457_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_458_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_458_ignore }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_458_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_459_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_459_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_459_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_460_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_460_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_460_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBModificationRefuse_IEs_1[] = { + { 6, 4, asn_IOS_SgNBModificationRefuse_IEs_1_rows } +}; +static const long asn_VAL_461_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_461_reject = 0; +static const long asn_VAL_461_mandatory = 2; +static const long asn_VAL_462_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_462_reject = 0; +static const long asn_VAL_462_optional = 0; +static const long asn_VAL_463_id_Cause = 5; +static const long asn_VAL_463_ignore = 1; +static const long asn_VAL_463_mandatory = 2; +static const long asn_VAL_464_id_E_RABs_ToBeReleased_SgNBRelReqList = 231; +static const long asn_VAL_464_ignore = 1; +static const long asn_VAL_464_optional = 0; +static const long asn_VAL_465_id_UE_ContextKeptIndicator = 154; +static const long asn_VAL_465_ignore = 1; +static const long asn_VAL_465_optional = 0; +static const long asn_VAL_466_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_466_reject = 0; +static const long asn_VAL_466_optional = 0; +static const long asn_VAL_467_id_MeNBtoSgNBContainer = 206; +static const long asn_VAL_467_reject = 0; +static const long asn_VAL_467_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_461_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_461_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_461_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_462_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_462_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_462_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_463_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_463_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_463_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_464_id_E_RABs_ToBeReleased_SgNBRelReqList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_464_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_464_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_465_id_UE_ContextKeptIndicator }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_465_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_ContextKeptIndicator }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_465_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_466_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_466_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_466_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_467_id_MeNBtoSgNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_467_reject }, + { "&Value", aioc__type, &asn_DEF_MeNBtoSgNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_467_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequest_IEs_1[] = { + { 7, 4, asn_IOS_SgNBReleaseRequest_IEs_1_rows } +}; +static const long asn_VAL_469_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_469_ignore = 1; +static const long asn_VAL_469_mandatory = 2; +static const long asn_VAL_470_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_470_ignore = 1; +static const long asn_VAL_470_mandatory = 2; +static const long asn_VAL_471_id_CriticalityDiagnostics = 17; +static const long asn_VAL_471_ignore = 1; +static const long asn_VAL_471_optional = 0; +static const long asn_VAL_472_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_472_reject = 0; +static const long asn_VAL_472_optional = 0; +static const long asn_VAL_473_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList = 318; +static const long asn_VAL_473_ignore = 1; +static const long asn_VAL_473_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_469_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_469_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_469_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_470_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_470_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_470_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_471_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_471_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_471_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_472_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_472_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_472_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_473_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_473_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_473_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_475_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_475_ignore = 1; +static const long asn_VAL_475_mandatory = 2; +static const long asn_VAL_476_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_476_ignore = 1; +static const long asn_VAL_476_mandatory = 2; +static const long asn_VAL_477_id_Cause = 5; +static const long asn_VAL_477_ignore = 1; +static const long asn_VAL_477_mandatory = 2; +static const long asn_VAL_478_id_CriticalityDiagnostics = 17; +static const long asn_VAL_478_ignore = 1; +static const long asn_VAL_478_optional = 0; +static const long asn_VAL_479_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_479_reject = 0; +static const long asn_VAL_479_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequestReject_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_475_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_475_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_475_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_476_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_476_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_476_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_477_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_477_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_477_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_478_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_478_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_478_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_479_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_479_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_479_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequestReject_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseRequestReject_IEs_1_rows } +}; +static const long asn_VAL_480_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_480_reject = 0; +static const long asn_VAL_480_mandatory = 2; +static const long asn_VAL_481_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_481_reject = 0; +static const long asn_VAL_481_mandatory = 2; +static const long asn_VAL_482_id_Cause = 5; +static const long asn_VAL_482_ignore = 1; +static const long asn_VAL_482_mandatory = 2; +static const long asn_VAL_483_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_483_reject = 0; +static const long asn_VAL_483_optional = 0; +static const long asn_VAL_484_id_E_RABs_ToBeReleased_SgNBRelReqdList = 320; +static const long asn_VAL_484_ignore = 1; +static const long asn_VAL_484_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_480_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_480_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_480_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_481_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_481_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_481_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_482_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_482_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_482_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_483_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_483_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_483_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_484_id_E_RABs_ToBeReleased_SgNBRelReqdList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_484_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_484_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseRequired_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseRequired_IEs_1_rows } +}; +static const long asn_VAL_486_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_486_ignore = 1; +static const long asn_VAL_486_mandatory = 2; +static const long asn_VAL_487_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_487_ignore = 1; +static const long asn_VAL_487_mandatory = 2; +static const long asn_VAL_488_id_E_RABs_ToBeReleased_SgNBRelConfList = 233; +static const long asn_VAL_488_ignore = 1; +static const long asn_VAL_488_optional = 0; +static const long asn_VAL_489_id_CriticalityDiagnostics = 17; +static const long asn_VAL_489_ignore = 1; +static const long asn_VAL_489_optional = 0; +static const long asn_VAL_490_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_490_ignore = 1; +static const long asn_VAL_490_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBReleaseConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_486_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_486_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_486_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_487_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_487_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_487_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_488_id_E_RABs_ToBeReleased_SgNBRelConfList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_488_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_488_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_489_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_489_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_489_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_490_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_490_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_490_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBReleaseConfirm_IEs_1[] = { + { 5, 4, asn_IOS_SgNBReleaseConfirm_IEs_1_rows } +}; +static const long asn_VAL_492_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_492_reject = 0; +static const long asn_VAL_492_mandatory = 2; +static const long asn_VAL_493_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_493_reject = 0; +static const long asn_VAL_493_mandatory = 2; +static const long asn_VAL_494_id_E_RABs_SubjectToSgNBCounterCheck_List = 235; +static const long asn_VAL_494_ignore = 1; +static const long asn_VAL_494_mandatory = 2; +static const long asn_VAL_495_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_495_ignore = 1; +static const long asn_VAL_495_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBCounterCheckRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_492_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_492_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_492_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_493_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_493_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_493_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_494_id_E_RABs_SubjectToSgNBCounterCheck_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_494_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_494_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_495_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_495_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_495_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBCounterCheckRequest_IEs_1[] = { + { 4, 4, asn_IOS_SgNBCounterCheckRequest_IEs_1_rows } +}; +static const long asn_VAL_497_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_497_reject = 0; +static const long asn_VAL_497_mandatory = 2; +static const long asn_VAL_498_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_498_reject = 0; +static const long asn_VAL_498_mandatory = 2; +static const long asn_VAL_499_id_Target_SgNB_ID = 239; +static const long asn_VAL_499_reject = 0; +static const long asn_VAL_499_mandatory = 2; +static const long asn_VAL_500_id_Cause = 5; +static const long asn_VAL_500_ignore = 1; +static const long asn_VAL_500_mandatory = 2; +static const long asn_VAL_501_id_SgNBtoMeNBContainer = 211; +static const long asn_VAL_501_reject = 0; +static const long asn_VAL_501_optional = 0; +static const long asn_VAL_502_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_502_reject = 0; +static const long asn_VAL_502_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBChangeRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_497_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_497_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_497_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_498_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_498_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_498_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_499_id_Target_SgNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_499_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_499_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_500_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_500_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_500_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_501_id_SgNBtoMeNBContainer }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_501_reject }, + { "&Value", aioc__type, &asn_DEF_SgNBtoMeNBContainer }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_501_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_502_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_502_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_502_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBChangeRequired_IEs_1[] = { + { 6, 4, asn_IOS_SgNBChangeRequired_IEs_1_rows } +}; +static const long asn_VAL_503_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_503_ignore = 1; +static const long asn_VAL_503_mandatory = 2; +static const long asn_VAL_504_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_504_ignore = 1; +static const long asn_VAL_504_mandatory = 2; +static const long asn_VAL_505_id_E_RABs_ToBeReleased_SgNBChaConfList = 229; +static const long asn_VAL_505_ignore = 1; +static const long asn_VAL_505_optional = 0; +static const long asn_VAL_506_id_CriticalityDiagnostics = 17; +static const long asn_VAL_506_ignore = 1; +static const long asn_VAL_506_optional = 0; +static const long asn_VAL_507_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_507_ignore = 1; +static const long asn_VAL_507_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBChangeConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_503_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_503_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_503_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_504_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_504_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_504_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_505_id_E_RABs_ToBeReleased_SgNBChaConfList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_505_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_505_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_506_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_506_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_506_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_507_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_507_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_507_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBChangeConfirm_IEs_1[] = { + { 5, 4, asn_IOS_SgNBChangeConfirm_IEs_1_rows } +}; +static const long asn_VAL_509_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_509_reject = 0; +static const long asn_VAL_509_mandatory = 2; +static const long asn_VAL_510_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_510_reject = 0; +static const long asn_VAL_510_mandatory = 2; +static const long asn_VAL_511_id_SplitSRB = 242; +static const long asn_VAL_511_reject = 0; +static const long asn_VAL_511_optional = 0; +static const long asn_VAL_512_id_UENRMeasurement = 243; +static const long asn_VAL_512_reject = 0; +static const long asn_VAL_512_optional = 0; +static const long asn_VAL_513_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_513_reject = 0; +static const long asn_VAL_513_optional = 0; +static const asn_ioc_cell_t asn_IOS_RRCTransfer_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_509_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_509_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_509_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_510_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_510_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_510_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_511_id_SplitSRB }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_511_reject }, + { "&Value", aioc__type, &asn_DEF_SplitSRB }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_511_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_512_id_UENRMeasurement }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_512_reject }, + { "&Value", aioc__type, &asn_DEF_UENRMeasurement }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_512_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_513_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_513_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_513_optional } +}; +static const asn_ioc_set_t asn_IOS_RRCTransfer_IEs_1[] = { + { 5, 4, asn_IOS_RRCTransfer_IEs_1_rows } +}; +static const long asn_VAL_514_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_514_ignore = 1; +static const long asn_VAL_514_mandatory = 2; +static const long asn_VAL_515_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_515_ignore = 1; +static const long asn_VAL_515_mandatory = 2; +static const long asn_VAL_516_id_Cause = 5; +static const long asn_VAL_516_ignore = 1; +static const long asn_VAL_516_mandatory = 2; +static const long asn_VAL_517_id_CriticalityDiagnostics = 17; +static const long asn_VAL_517_ignore = 1; +static const long asn_VAL_517_optional = 0; +static const long asn_VAL_518_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_518_reject = 0; +static const long asn_VAL_518_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBChangeRefuse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_514_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_514_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_514_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_515_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_515_ignore }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_515_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_516_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_516_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_516_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_517_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_517_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_517_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_518_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_518_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_518_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBChangeRefuse_IEs_1[] = { + { 5, 4, asn_IOS_SgNBChangeRefuse_IEs_1_rows } +}; +static const long asn_VAL_519_id_InitiatingNodeType_EndcX2Setup = 244; +static const long asn_VAL_519_reject = 0; +static const long asn_VAL_519_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2SetupRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_519_id_InitiatingNodeType_EndcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_519_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EndcX2Setup }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_519_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2SetupRequest_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2SetupRequest_IEs_1_rows } +}; +static const long asn_VAL_520_id_GlobalENB_ID = 21; +static const long asn_VAL_520_reject = 0; +static const long asn_VAL_520_mandatory = 2; +static const long asn_VAL_521_id_ServedEUTRAcellsENDCX2ManagementList = 250; +static const long asn_VAL_521_reject = 0; +static const long asn_VAL_521_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2SetupReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_520_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_520_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_520_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_521_id_ServedEUTRAcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_521_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_521_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2SetupReqIEs_1[] = { + { 2, 4, asn_IOS_ENB_ENDCX2SetupReqIEs_1_rows } +}; +static const long asn_VAL_522_id_Globalen_gNB_ID = 252; +static const long asn_VAL_522_reject = 0; +static const long asn_VAL_522_mandatory = 2; +static const long asn_VAL_523_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_523_reject = 0; +static const long asn_VAL_523_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2SetupReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_522_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_522_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_522_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_523_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_523_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_523_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2SetupReqIEs_1[] = { + { 2, 4, asn_IOS_En_gNB_ENDCX2SetupReqIEs_1_rows } +}; +static const long asn_VAL_524_id_RespondingNodeType_EndcX2Setup = 246; +static const long asn_VAL_524_reject = 0; +static const long asn_VAL_524_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2SetupResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_524_id_RespondingNodeType_EndcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_524_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EndcX2Setup }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_524_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2SetupResponse_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2SetupResponse_IEs_1_rows } +}; +static const long asn_VAL_525_id_GlobalENB_ID = 21; +static const long asn_VAL_525_reject = 0; +static const long asn_VAL_525_mandatory = 2; +static const long asn_VAL_526_id_ServedEUTRAcellsENDCX2ManagementList = 250; +static const long asn_VAL_526_reject = 0; +static const long asn_VAL_526_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2SetupReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_525_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_525_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_525_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_526_id_ServedEUTRAcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_526_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_526_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2SetupReqAckIEs_1[] = { + { 2, 4, asn_IOS_ENB_ENDCX2SetupReqAckIEs_1_rows } +}; +static const long asn_VAL_527_id_Globalen_gNB_ID = 252; +static const long asn_VAL_527_reject = 0; +static const long asn_VAL_527_mandatory = 2; +static const long asn_VAL_528_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_528_reject = 0; +static const long asn_VAL_528_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_527_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_527_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_527_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_528_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_528_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_528_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1[] = { + { 2, 4, asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1_rows } +}; +static const long asn_VAL_529_id_Cause = 5; +static const long asn_VAL_529_ignore = 1; +static const long asn_VAL_529_mandatory = 2; +static const long asn_VAL_530_id_CriticalityDiagnostics = 17; +static const long asn_VAL_530_ignore = 1; +static const long asn_VAL_530_optional = 0; +static const long asn_VAL_531_id_TimeToWait = 22; +static const long asn_VAL_531_ignore = 1; +static const long asn_VAL_531_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCX2SetupFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_529_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_529_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_529_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_530_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_530_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_530_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_531_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_531_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_531_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2SetupFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENDCX2SetupFailure_IEs_1_rows } +}; +static const long asn_VAL_532_id_InitiatingNodeType_EndcConfigUpdate = 245; +static const long asn_VAL_532_reject = 0; +static const long asn_VAL_532_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCConfigurationUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_532_id_InitiatingNodeType_EndcConfigUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_532_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EndcConfigUpdate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_532_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCConfigurationUpdate_IEs_1[] = { + { 1, 4, asn_IOS_ENDCConfigurationUpdate_IEs_1_rows } +}; +static const long asn_VAL_533_id_CellAssistanceInformation = 251; +static const long asn_VAL_533_reject = 0; +static const long asn_VAL_533_optional = 0; +static const long asn_VAL_534_id_ServedEUTRAcellsENDCX2ManagementList = 250; +static const long asn_VAL_534_reject = 0; +static const long asn_VAL_534_optional = 0; +static const long asn_VAL_535_id_ServedEUTRAcellsToModifyListENDCConfUpd = 259; +static const long asn_VAL_535_reject = 0; +static const long asn_VAL_535_optional = 0; +static const long asn_VAL_536_id_ServedEUTRAcellsToDeleteListENDCConfUpd = 260; +static const long asn_VAL_536_reject = 0; +static const long asn_VAL_536_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCConfigUpdateIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_533_id_CellAssistanceInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_533_reject }, + { "&Value", aioc__type, &asn_DEF_CellAssistanceInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_533_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_534_id_ServedEUTRAcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_534_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_534_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_535_id_ServedEUTRAcellsToModifyListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_535_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_535_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_536_id_ServedEUTRAcellsToDeleteListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_536_reject }, + { "&Value", aioc__type, &asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_536_optional } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCConfigUpdateIEs_1[] = { + { 4, 4, asn_IOS_ENB_ENDCConfigUpdateIEs_1_rows } +}; +static const long asn_VAL_537_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_537_reject = 0; +static const long asn_VAL_537_optional = 0; +static const long asn_VAL_538_id_ServedNRcellsToModifyListENDCConfUpd = 261; +static const long asn_VAL_538_reject = 0; +static const long asn_VAL_538_optional = 0; +static const long asn_VAL_539_id_ServedNRcellsToDeleteListENDCConfUpd = 262; +static const long asn_VAL_539_reject = 0; +static const long asn_VAL_539_optional = 0; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCConfigUpdateIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_537_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_537_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_537_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_538_id_ServedNRcellsToModifyListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_538_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsToModifyENDCConfUpdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_538_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_539_id_ServedNRcellsToDeleteListENDCConfUpd }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_539_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsToDeleteENDCConfUpdList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_539_optional } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCConfigUpdateIEs_1[] = { + { 3, 4, asn_IOS_En_gNB_ENDCConfigUpdateIEs_1_rows } +}; +static const long asn_VAL_540_id_RespondingNodeType_EndcConfigUpdate = 247; +static const long asn_VAL_540_reject = 0; +static const long asn_VAL_540_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_540_id_RespondingNodeType_EndcConfigUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_540_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EndcConfigUpdate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_540_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1[] = { + { 1, 4, asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_541_id_ServedNRcellsENDCX2ManagementList = 253; +static const long asn_VAL_541_reject = 0; +static const long asn_VAL_541_optional = 0; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_541_id_ServedNRcellsENDCX2ManagementList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_541_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRcellsENDCX2ManagementList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_541_optional } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1[] = { + { 1, 4, asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1_rows } +}; +static const long asn_VAL_542_id_Cause = 5; +static const long asn_VAL_542_ignore = 1; +static const long asn_VAL_542_mandatory = 2; +static const long asn_VAL_543_id_CriticalityDiagnostics = 17; +static const long asn_VAL_543_ignore = 1; +static const long asn_VAL_543_optional = 0; +static const long asn_VAL_544_id_TimeToWait = 22; +static const long asn_VAL_544_ignore = 1; +static const long asn_VAL_544_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCConfigurationUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_542_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_542_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_542_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_543_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_543_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_543_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_544_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_544_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_544_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCConfigurationUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENDCConfigurationUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_545_id_ServedNRCellsToActivate = 267; +static const long asn_VAL_545_reject = 0; +static const long asn_VAL_545_mandatory = 2; +static const long asn_VAL_546_id_ActivationID = 256; +static const long asn_VAL_546_reject = 0; +static const long asn_VAL_546_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCCellActivationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_545_id_ServedNRCellsToActivate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_545_reject }, + { "&Value", aioc__type, &asn_DEF_ServedNRCellsToActivate }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_545_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_546_id_ActivationID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_546_reject }, + { "&Value", aioc__type, &asn_DEF_ActivationID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_546_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCCellActivationRequest_IEs_1[] = { + { 2, 4, asn_IOS_ENDCCellActivationRequest_IEs_1_rows } +}; +static const long asn_VAL_547_id_ActivatedNRCellList = 268; +static const long asn_VAL_547_ignore = 1; +static const long asn_VAL_547_mandatory = 2; +static const long asn_VAL_548_id_ActivationID = 256; +static const long asn_VAL_548_reject = 0; +static const long asn_VAL_548_mandatory = 2; +static const long asn_VAL_549_id_CriticalityDiagnostics = 17; +static const long asn_VAL_549_ignore = 1; +static const long asn_VAL_549_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCCellActivationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_547_id_ActivatedNRCellList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_547_ignore }, + { "&Value", aioc__type, &asn_DEF_ActivatedNRCellList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_547_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_548_id_ActivationID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_548_reject }, + { "&Value", aioc__type, &asn_DEF_ActivationID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_548_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_549_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_549_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_549_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCCellActivationResponse_IEs_1[] = { + { 3, 4, asn_IOS_ENDCCellActivationResponse_IEs_1_rows } +}; +static const long asn_VAL_550_id_ActivationID = 256; +static const long asn_VAL_550_reject = 0; +static const long asn_VAL_550_mandatory = 2; +static const long asn_VAL_551_id_Cause = 5; +static const long asn_VAL_551_ignore = 1; +static const long asn_VAL_551_mandatory = 2; +static const long asn_VAL_552_id_CriticalityDiagnostics = 17; +static const long asn_VAL_552_ignore = 1; +static const long asn_VAL_552_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCCellActivationFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_550_id_ActivationID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_550_reject }, + { "&Value", aioc__type, &asn_DEF_ActivationID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_550_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_551_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_551_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_551_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_552_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_552_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_552_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCCellActivationFailure_IEs_1[] = { + { 3, 4, asn_IOS_ENDCCellActivationFailure_IEs_1_rows } +}; +static const long asn_VAL_553_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_553_reject = 0; +static const long asn_VAL_553_mandatory = 2; +static const long asn_VAL_554_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_554_reject = 0; +static const long asn_VAL_554_mandatory = 2; +static const long asn_VAL_555_id_SecondaryRATUsageReportList = 265; +static const long asn_VAL_555_reject = 0; +static const long asn_VAL_555_mandatory = 2; +static const long asn_VAL_556_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_556_reject = 0; +static const long asn_VAL_556_optional = 0; +static const asn_ioc_cell_t asn_IOS_SecondaryRATDataUsageReport_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_553_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_553_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_553_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_554_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_554_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_554_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_555_id_SecondaryRATUsageReportList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_555_reject }, + { "&Value", aioc__type, &asn_DEF_SecondaryRATUsageReportList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_555_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_556_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_556_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_556_optional } +}; +static const asn_ioc_set_t asn_IOS_SecondaryRATDataUsageReport_IEs_1[] = { + { 4, 4, asn_IOS_SecondaryRATDataUsageReport_IEs_1_rows } +}; +static const long asn_VAL_557_id_MeNB_UE_X2AP_ID = 111; +static const long asn_VAL_557_reject = 0; +static const long asn_VAL_557_mandatory = 2; +static const long asn_VAL_558_id_SgNB_UE_X2AP_ID = 207; +static const long asn_VAL_558_reject = 0; +static const long asn_VAL_558_mandatory = 2; +static const long asn_VAL_559_id_UEContextLevelUserPlaneActivity = 296; +static const long asn_VAL_559_ignore = 1; +static const long asn_VAL_559_optional = 0; +static const long asn_VAL_560_id_ERABActivityNotifyItemList = 297; +static const long asn_VAL_560_ignore = 1; +static const long asn_VAL_560_optional = 0; +static const long asn_VAL_561_id_MeNB_UE_X2AP_ID_Extension = 157; +static const long asn_VAL_561_reject = 0; +static const long asn_VAL_561_optional = 0; +static const asn_ioc_cell_t asn_IOS_SgNBActivityNotification_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_557_id_MeNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_557_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_557_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_558_id_SgNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_558_reject }, + { "&Value", aioc__type, &asn_DEF_SgNB_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_558_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_559_id_UEContextLevelUserPlaneActivity }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_559_ignore }, + { "&Value", aioc__type, &asn_DEF_UserPlaneTrafficActivityReport }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_559_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_560_id_ERABActivityNotifyItemList }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_560_ignore }, + { "&Value", aioc__type, &asn_DEF_ERABActivityNotifyItemList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_560_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_561_id_MeNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_561_reject }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_561_optional } +}; +static const asn_ioc_set_t asn_IOS_SgNBActivityNotification_IEs_1[] = { + { 5, 4, asn_IOS_SgNBActivityNotification_IEs_1_rows } +}; +static const long asn_VAL_562_id_UEs_ToBeReset = 270; +static const long asn_VAL_562_reject = 0; +static const long asn_VAL_562_mandatory = 2; +static const long asn_VAL_563_id_Cause = 5; +static const long asn_VAL_563_ignore = 1; +static const long asn_VAL_563_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCPartialResetRequired_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_562_id_UEs_ToBeReset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_562_reject }, + { "&Value", aioc__type, &asn_DEF_UEsToBeResetList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_562_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_563_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_563_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_563_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCPartialResetRequired_IEs_1[] = { + { 2, 4, asn_IOS_ENDCPartialResetRequired_IEs_1_rows } +}; +static const long asn_VAL_564_id_UEs_Admitted_ToBeReset = 271; +static const long asn_VAL_564_reject = 0; +static const long asn_VAL_564_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCPartialResetConfirm_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_564_id_UEs_Admitted_ToBeReset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_564_reject }, + { "&Value", aioc__type, &asn_DEF_UEsToBeResetList }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_564_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCPartialResetConfirm_IEs_1[] = { + { 1, 4, asn_IOS_ENDCPartialResetConfirm_IEs_1_rows } +}; +static const long asn_VAL_565_id_InitiatingNodeType_EutranrCellResourceCoordination = 285; +static const long asn_VAL_565_reject = 0; +static const long asn_VAL_565_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_565_id_InitiatingNodeType_EutranrCellResourceCoordination }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_565_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_565_mandatory } +}; +static const asn_ioc_set_t asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1[] = { + { 1, 4, asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1_rows } +}; +static const long asn_VAL_566_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_566_reject = 0; +static const long asn_VAL_566_mandatory = 2; +static const long asn_VAL_567_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_567_reject = 0; +static const long asn_VAL_567_mandatory = 2; +static const long asn_VAL_568_id_ListofEUTRACellsinEUTRACoordinationReq = 289; +static const long asn_VAL_568_reject = 0; +static const long asn_VAL_568_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_566_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_566_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_566_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_567_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_567_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_567_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_568_id_ListofEUTRACellsinEUTRACoordinationReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_568_reject }, + { "&Value", aioc__type, &asn_DEF_ListofEUTRACellsinEUTRACoordinationReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_568_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1[] = { + { 3, 4, asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows } +}; +static const long asn_VAL_569_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_569_reject = 0; +static const long asn_VAL_569_mandatory = 2; +static const long asn_VAL_570_id_ListofEUTRACellsinNRCoordinationReq = 291; +static const long asn_VAL_570_reject = 0; +static const long asn_VAL_570_mandatory = 2; +static const long asn_VAL_571_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_571_reject = 0; +static const long asn_VAL_571_mandatory = 2; +static const long asn_VAL_572_id_ListofNRCellsinNRCoordinationReq = 292; +static const long asn_VAL_572_reject = 0; +static const long asn_VAL_572_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_569_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_569_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_569_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_570_id_ListofEUTRACellsinNRCoordinationReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_570_reject }, + { "&Value", aioc__type, &asn_DEF_ListofEUTRACellsinNRCoordinationReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_570_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_571_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_571_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_571_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_572_id_ListofNRCellsinNRCoordinationReq }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_572_reject }, + { "&Value", aioc__type, &asn_DEF_ListofNRCellsinNRCoordinationReq }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_572_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1[] = { + { 4, 4, asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1_rows } +}; +static const long asn_VAL_573_id_RespondingNodeType_EutranrCellResourceCoordination = 286; +static const long asn_VAL_573_reject = 0; +static const long asn_VAL_573_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_573_id_RespondingNodeType_EutranrCellResourceCoordination }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_573_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EutranrCellResourceCoordination }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_573_mandatory } +}; +static const asn_ioc_set_t asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1[] = { + { 1, 4, asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1_rows } +}; +static const long asn_VAL_574_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_574_reject = 0; +static const long asn_VAL_574_mandatory = 2; +static const long asn_VAL_575_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_575_reject = 0; +static const long asn_VAL_575_mandatory = 2; +static const long asn_VAL_576_id_ListofEUTRACellsinEUTRACoordinationResp = 290; +static const long asn_VAL_576_reject = 0; +static const long asn_VAL_576_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_574_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_574_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_574_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_575_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_575_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_575_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_576_id_ListofEUTRACellsinEUTRACoordinationResp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_576_reject }, + { "&Value", aioc__type, &asn_DEF_ListofEUTRACellsinEUTRACoordinationResp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_576_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1[] = { + { 3, 4, asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows } +}; +static const long asn_VAL_577_id_DataTrafficResourceIndication = 287; +static const long asn_VAL_577_reject = 0; +static const long asn_VAL_577_mandatory = 2; +static const long asn_VAL_578_id_SpectrumSharingGroupID = 288; +static const long asn_VAL_578_reject = 0; +static const long asn_VAL_578_mandatory = 2; +static const long asn_VAL_579_id_ListofNRCellsinNRCoordinationResp = 293; +static const long asn_VAL_579_reject = 0; +static const long asn_VAL_579_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_577_id_DataTrafficResourceIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_577_reject }, + { "&Value", aioc__type, &asn_DEF_DataTrafficResourceIndication }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_577_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_578_id_SpectrumSharingGroupID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_578_reject }, + { "&Value", aioc__type, &asn_DEF_SpectrumSharingGroupID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_578_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_579_id_ListofNRCellsinNRCoordinationResp }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_579_reject }, + { "&Value", aioc__type, &asn_DEF_ListofNRCellsinNRCoordinationResp }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_579_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1[] = { + { 3, 4, asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1_rows } +}; +static const long asn_VAL_580_id_InitiatingNodeType_EndcX2Removal = 298; +static const long asn_VAL_580_reject = 0; +static const long asn_VAL_580_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2RemovalRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_580_id_InitiatingNodeType_EndcX2Removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_580_reject }, + { "&Value", aioc__type, &asn_DEF_InitiatingNodeType_EndcX2Removal }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_580_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2RemovalRequest_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2RemovalRequest_IEs_1_rows } +}; +static const long asn_VAL_581_id_GlobalENB_ID = 21; +static const long asn_VAL_581_reject = 0; +static const long asn_VAL_581_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2RemovalReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_581_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_581_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_581_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2RemovalReqIEs_1[] = { + { 1, 4, asn_IOS_ENB_ENDCX2RemovalReqIEs_1_rows } +}; +static const long asn_VAL_582_id_Globalen_gNB_ID = 252; +static const long asn_VAL_582_reject = 0; +static const long asn_VAL_582_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_582_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_582_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_582_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1[] = { + { 1, 4, asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1_rows } +}; +static const long asn_VAL_583_id_RespondingNodeType_EndcX2Removal = 299; +static const long asn_VAL_583_reject = 0; +static const long asn_VAL_583_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENDCX2RemovalResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_583_id_RespondingNodeType_EndcX2Removal }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_583_reject }, + { "&Value", aioc__type, &asn_DEF_RespondingNodeType_EndcX2Removal }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_583_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2RemovalResponse_IEs_1[] = { + { 1, 4, asn_IOS_ENDCX2RemovalResponse_IEs_1_rows } +}; +static const long asn_VAL_584_id_GlobalENB_ID = 21; +static const long asn_VAL_584_reject = 0; +static const long asn_VAL_584_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_584_id_GlobalENB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_584_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalENB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_584_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1[] = { + { 1, 4, asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1_rows } +}; +static const long asn_VAL_585_id_Globalen_gNB_ID = 252; +static const long asn_VAL_585_reject = 0; +static const long asn_VAL_585_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_585_id_Globalen_gNB_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_585_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalGNB_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_585_mandatory } +}; +static const asn_ioc_set_t asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1[] = { + { 1, 4, asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1_rows } +}; +static const long asn_VAL_586_id_Cause = 5; +static const long asn_VAL_586_ignore = 1; +static const long asn_VAL_586_mandatory = 2; +static const long asn_VAL_587_id_CriticalityDiagnostics = 17; +static const long asn_VAL_587_ignore = 1; +static const long asn_VAL_587_optional = 0; +static const asn_ioc_cell_t asn_IOS_ENDCX2RemovalFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_586_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_586_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_586_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_587_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_587_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_587_optional } +}; +static const asn_ioc_set_t asn_IOS_ENDCX2RemovalFailure_IEs_1[] = { + { 2, 4, asn_IOS_ENDCX2RemovalFailure_IEs_1_rows } +}; +static const long asn_VAL_588_id_New_eNB_UE_X2AP_ID_Extension = 155; +static const long asn_VAL_588_ignore = 1; +static const long asn_VAL_588_optional = 0; +static const long asn_VAL_589_id_Old_eNB_UE_X2AP_ID = 10; +static const long asn_VAL_589_ignore = 1; +static const long asn_VAL_589_mandatory = 2; +static const long asn_VAL_590_id_Old_eNB_UE_X2AP_ID_Extension = 156; +static const long asn_VAL_590_ignore = 1; +static const long asn_VAL_590_optional = 0; +static const long asn_VAL_591_id_E_RABs_DataForwardingAddress_List = 307; +static const long asn_VAL_591_ignore = 1; +static const long asn_VAL_591_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_DataForwardingAddressIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_588_id_New_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_588_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_588_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_589_id_Old_eNB_UE_X2AP_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_589_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_589_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_590_id_Old_eNB_UE_X2AP_ID_Extension }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_590_ignore }, + { "&Value", aioc__type, &asn_DEF_UE_X2AP_ID_Extension }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_590_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_591_id_E_RABs_DataForwardingAddress_List }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_591_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABs_DataForwardingAddress_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_591_mandatory } +}; +static const asn_ioc_set_t asn_IOS_DataForwardingAddressIndication_IEs_1[] = { + { 4, 4, asn_IOS_DataForwardingAddressIndication_IEs_1_rows } +}; +static const long asn_VAL_593_id_GNBOverloadInformation = 310; +static const long asn_VAL_593_ignore = 1; +static const long asn_VAL_593_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_GNBStatusIndicationIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_593_id_GNBOverloadInformation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_593_ignore }, + { "&Value", aioc__type, &asn_DEF_GNBOverloadInformation }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_593_mandatory } +}; +static const asn_ioc_set_t asn_IOS_GNBStatusIndicationIEs_1[] = { + { 1, 4, asn_IOS_GNBStatusIndicationIEs_1_rows } +}; +static const long asn_VAL_594_id_E_RAB_Item = 2; +static const long asn_VAL_594_ignore = 1; +static const long asn_VAL_594_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RAB_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_594_id_E_RAB_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_594_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RAB_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_594_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RAB_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RAB_ItemIEs_1_rows } +}; +static const long asn_VAL_595_id_E_RABUsageReport_Item = 263; +static const long asn_VAL_595_ignore = 1; +static const long asn_VAL_595_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_E_RABUsageReport_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_595_id_E_RABUsageReport_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_595_ignore }, + { "&Value", aioc__type, &asn_DEF_E_RABUsageReport_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_595_mandatory } +}; +static const asn_ioc_set_t asn_IOS_E_RABUsageReport_ItemIEs_1[] = { + { 1, 4, asn_IOS_E_RABUsageReport_ItemIEs_1_rows } +}; +static const long asn_VAL_596_id_SecondaryRATUsageReport_Item = 266; +static const long asn_VAL_596_reject = 0; +static const long asn_VAL_596_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_SecondaryRATUsageReport_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_596_id_SecondaryRATUsageReport_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_596_reject }, + { "&Value", aioc__type, &asn_DEF_SecondaryRATUsageReport_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_596_mandatory } +}; +static const asn_ioc_set_t asn_IOS_SecondaryRATUsageReport_ItemIEs_1[] = { + { 1, 4, asn_IOS_SecondaryRATUsageReport_ItemIEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToStatusTransfer_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToStatusTransfer_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellInformation_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellInformation_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellToReport_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellToReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellToReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellToReport_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellToReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellToReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MeasurementInitiationResult_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementInitiationResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementInitiationResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MeasurementInitiationResult_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementInitiationResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementInitiationResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MeasurementFailureCause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementFailureCause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementFailureCause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MeasurementFailureCause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MeasurementFailureCause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MeasurementFailureCause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CompleteFailureCauseInformation_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CompleteFailureCauseInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CompleteFailureCauseInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CompleteFailureCauseInformation_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CompleteFailureCauseInformation_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CompleteFailureCauseInformation_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellMeasurementResult_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellMeasurementResult_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellMeasurementResult_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellMeasurementResult_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_ModReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_ModReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_ModReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqdItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_ModReqdItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_ModReqdItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelReqItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelReqItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelReqItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelConfItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_RelConfItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_RelConfItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToCounterCheckItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToCounterCheckItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToCounterCheckItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_105(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeSetupRetrieve_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeSetupRetrieve_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_109(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_113(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_117(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_121(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_125(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_129(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_133(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_137(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_141(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_145(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_149(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_153(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_157(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_161(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_165(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_169(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_173(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_177(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABs_DataForwardingAddress_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABs_DataForwardingAddress_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABs_DataForwardingAddress_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_181(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_185(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_189(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_193(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_197(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_201(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_205(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_209(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_213(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_217(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_221(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + static const int indexToPresent[] = { RICserviceUpdate_IEs__value_PR_NOTHING, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_225(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_229(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_233(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_237(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_241(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {HandoverRequestAcknowledge_IEs__value_PR_NOTHING, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + HandoverRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_List, + HandoverRequestAcknowledge_IEs__value_PR_E_RAB_List, + HandoverRequestAcknowledge_IEs__value_PR_TargeteNBtoSource_eNBTransparentContainer, + HandoverRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + HandoverRequestAcknowledge_IEs__value_PR_UE_ContextKeptIndicator, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequestAcknowledge_IEs__value_PR_UE_ContextKeptIndicator + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_245(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverPreparationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverPreparationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverPreparationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverPreparationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverPreparationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverPreparationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_249(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverReport_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverReport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverReport_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverReport_IEs, id)); + static const int indexToPresent[] = { HandoverReport_IEs__value_PR_NOTHING, + HandoverReport_IEs__value_PR_HandoverReportType, + HandoverReport_IEs__value_PR_Cause, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_TargetCellInUTRAN, + HandoverReport_IEs__value_PR_CRNTI, + HandoverReport_IEs__value_PR_MobilityInformation, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container_for_extended_bands + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_253(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SNStatusTransfer_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SNStatusTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SNStatusTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SNStatusTransfer_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SNStatusTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SNStatusTransfer_IEs, id)); +// EB Patch. + static const int indexToPresent[] = { SNStatusTransfer_IEs__value_PR_NOTHING, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID, + SNStatusTransfer_IEs__value_PR_E_RABs_SubjectToStatusTransfer_List, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID_Extension, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID_Extension, + SNStatusTransfer_IEs__value_PR_SgNB_UE_X2AP_ID + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_257(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UEContextRelease_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEContextRelease_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEContextRelease_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UEContextRelease_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_UEContextRelease_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UEContextRelease_IEs, id)); + static const int indexToPresent[] = { UEContextRelease_IEs__value_PR_NOTHING, + UEContextRelease_IEs__value_PR_UE_X2AP_ID, + UEContextRelease_IEs__value_PR_UE_X2AP_ID, + UEContextRelease_IEs__value_PR_UE_X2AP_ID_Extension, + UEContextRelease_IEs__value_PR_UE_X2AP_ID_Extension, + UEContextRelease_IEs__value_PR_SIPTOBearerDeactivationIndication, + UEContextRelease_IEs__value_PR_SgNB_UE_X2AP_ID + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_261(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_HandoverCancel_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverCancel_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverCancel_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_HandoverCancel_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_HandoverCancel_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct HandoverCancel_IEs, id)); + static const int indexToPresent[] = { HandoverCancel_IEs__value_PR_NOTHING, + HandoverCancel_IEs__value_PR_UE_X2AP_ID, + HandoverCancel_IEs__value_PR_UE_X2AP_ID, + HandoverCancel_IEs__value_PR_Cause, + HandoverCancel_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverCancel_IEs__value_PR_UE_X2AP_ID_Extension + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_265(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + static const int indexToPresent[] = {ErrorIndication_IEs__value_PR_NOTHING, + ErrorIndication_IEs__value_PR_UE_X2AP_ID, + ErrorIndication_IEs__value_PR_UE_X2AP_ID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics, + ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension, + ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension, + ErrorIndication_IEs__value_PR_SgNB_UE_X2AP_ID + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_269(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_273(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_277(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2SetupRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2SetupRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_281(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2SetupResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2SetupResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_285(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2SetupFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2SetupFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_289(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_LoadInformation_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LoadInformation_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LoadInformation_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_LoadInformation_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_LoadInformation_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct LoadInformation_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_293(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdate_IEs, id)); + static const int indexToPresent[] = {ENBConfigurationUpdate_IEs__value_PR_NOTHING, + ENBConfigurationUpdate_IEs__value_PR_ServedCells, + ENBConfigurationUpdate_IEs__value_PR_ServedCellsToModify, + ENBConfigurationUpdate_IEs__value_PR_Old_ECGIs, + ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList, + ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList, + ENBConfigurationUpdate_IEs__value_PR_CoverageModificationList + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_297(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_301(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENBConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENBConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENBConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_305(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusRequest_IEs, id)); + static const int indexToPresent[] = { ResourceStatusRequest_IEs__value_PR_NOTHING, + ResourceStatusRequest_IEs__value_PR_Measurement_ID, + ResourceStatusRequest_IEs__value_PR_Measurement_ID, + ResourceStatusRequest_IEs__value_PR_Registration_Request, + ResourceStatusRequest_IEs__value_PR_ReportCharacteristics, + ResourceStatusRequest_IEs__value_PR_CellToReport_List, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicity, + ResourceStatusRequest_IEs__value_PR_PartialSuccessIndicator, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityRSRPMR, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityCSIR + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_309(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusResponse_IEs, id)); + static const int indexToPresent[] = {ResourceStatusResponse_IEs__value_PR_NOTHING, + ResourceStatusResponse_IEs__value_PR_Measurement_ID, + ResourceStatusResponse_IEs__value_PR_Measurement_ID, + ResourceStatusResponse_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusResponse_IEs__value_PR_MeasurementInitiationResult_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_313(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusFailure_IEs, id)); + + static const int indexToPresent[] = {ResourceStatusFailure_IEs__value_PR_NOTHING, + ResourceStatusFailure_IEs__value_PR_Measurement_ID, + ResourceStatusFailure_IEs__value_PR_Measurement_ID, + ResourceStatusFailure_IEs__value_PR_Cause, + ResourceStatusFailure_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusFailure_IEs__value_PR_CompleteFailureCauseInformation_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_317(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResourceStatusUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResourceStatusUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResourceStatusUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResourceStatusUpdate_IEs, id)); + static const int indexToPresent[] = {ResourceStatusUpdate_IEs__value_PR_NOTHING, + ResourceStatusUpdate_IEs__value_PR_Measurement_ID, + ResourceStatusUpdate_IEs__value_PR_Measurement_ID, + ResourceStatusUpdate_IEs__value_PR_CellMeasurementResult_List + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_321(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MobilityChangeRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MobilityChangeRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeRequest_IEs, id)); + static const int indexToPresent[] = {MobilityChangeRequest_IEs__value_PR_NOTHING, + MobilityChangeRequest_IEs__value_PR_ECGI, + MobilityChangeRequest_IEs__value_PR_ECGI, + MobilityChangeRequest_IEs__value_PR_MobilityParametersInformation, + MobilityChangeRequest_IEs__value_PR_MobilityParametersInformation, + MobilityChangeRequest_IEs__value_PR_Cause + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_325(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MobilityChangeAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MobilityChangeAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeAcknowledge_IEs, id)); + static const int indexToPresent[] = {MobilityChangeAcknowledge_IEs__value_PR_NOTHING, + MobilityChangeAcknowledge_IEs__value_PR_ECGI, + MobilityChangeAcknowledge_IEs__value_PR_ECGI, + MobilityChangeAcknowledge_IEs__value_PR_CriticalityDiagnostics + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_329(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_MobilityChangeFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_MobilityChangeFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_MobilityChangeFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct MobilityChangeFailure_IEs, id)); + static const int indexToPresent[] = {MobilityChangeFailure_IEs__value_PR_NOTHING, + MobilityChangeFailure_IEs__value_PR_ECGI, + MobilityChangeFailure_IEs__value_PR_ECGI, + MobilityChangeFailure_IEs__value_PR_Cause, + MobilityChangeFailure_IEs__value_PR_MobilityParametersModificationRange, + MobilityChangeFailure_IEs__value_PR_CriticalityDiagnostics + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + + break; + } + } + + return result; +} + +static int +memb_value_constraint_333(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RLFIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RLFIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RLFIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RLFIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RLFIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RLFIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_337(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellActivationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellActivationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_341(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellActivationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellActivationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_345(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_CellActivationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_CellActivationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_CellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct CellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_349(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2Release_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2Release_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2Release_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2Release_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2Release_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2Release_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_353(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2APMessageTransfer_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2APMessageTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2APMessageTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2APMessageTransfer_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2APMessageTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2APMessageTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_357(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBAdditionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBAdditionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequest_IEs, id)); + static const int indexToPresent[] = {SeNBAdditionRequest_IEs__value_PR_NOTHING, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequest_IEs__value_PR_UESecurityCapabilities, + SeNBAdditionRequest_IEs__value_PR_SeNBSecurityKey, + SeNBAdditionRequest_IEs__value_PR_UEAggregateMaximumBitRate, + SeNBAdditionRequest_IEs__value_PR_PLMN_Identity, + SeNBAdditionRequest_IEs__value_PR_E_RABs_ToBeAdded_List, + SeNBAdditionRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBAdditionRequest_IEs__value_PR_CSGMembershipStatus, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequest_IEs__value_PR_ExpectedUEBehaviour, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_361(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {SeNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBAdditionRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TransportLayerAddress, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TransportLayerAddress, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TunnelInformation + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + + break; + } + } + + return result; +} + +static int +memb_value_constraint_365(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBAdditionRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBAdditionRequestReject_IEs, id)); + static const int indexToPresent[] = {SeNBAdditionRequestReject_IEs__value_PR_NOTHING, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestReject_IEs__value_PR_Cause, + SeNBAdditionRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_369(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReconfigurationComplete_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReconfigurationComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReconfigurationComplete_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReconfigurationComplete_IEs, id)); + static const int indexToPresent[] = {SeNBReconfigurationComplete_IEs__value_PR_NOTHING, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SeNBReconfigurationComplete_IEs__value_PR_ResponseInformationSeNBReconfComp, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_373(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequest_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequest_IEs__value_PR_NOTHING, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequest_IEs__value_PR_Cause, + SeNBModificationRequest_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequest_IEs__value_PR_PLMN_Identity, + SeNBModificationRequest_IEs__value_PR_UE_ContextInformationSeNBModReq, + SeNBModificationRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRequest_IEs__value_PR_CSGMembershipStatus, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_377(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBModificationRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_381(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequestReject_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequestReject_IEs__value_PR_NOTHING, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestReject_IEs__value_PR_Cause, + SeNBModificationRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_385(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRequired_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRequired_IEs__value_PR_NOTHING, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequired_IEs__value_PR_Cause, + SeNBModificationRequired_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequired_IEs__value_PR_E_RABs_ToBeReleased_ModReqd, + SeNBModificationRequired_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_389(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationConfirm_IEs, id)); + static const int indexToPresent[] = {SeNBModificationConfirm_IEs__value_PR_NOTHING, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBModificationConfirm_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_393(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBModificationRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBModificationRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBModificationRefuse_IEs, id)); + static const int indexToPresent[] = {SeNBModificationRefuse_IEs__value_PR_NOTHING, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRefuse_IEs__value_PR_Cause, + SeNBModificationRefuse_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRefuse_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_397(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReleaseRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReleaseRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequest_IEs, id)); + static const int indexToPresent[] = {SeNBReleaseRequest_IEs__value_PR_NOTHING, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequest_IEs__value_PR_Cause, + SeNBReleaseRequest_IEs__value_PR_E_RABs_ToBeReleased_List_RelReq, + SeNBReleaseRequest_IEs__value_PR_UE_ContextKeptIndicator, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequest_IEs__value_PR_MakeBeforeBreakIndicator + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_401(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReleaseRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReleaseRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseRequired_IEs, id)); + static const int indexToPresent[] = {SeNBReleaseRequired_IEs__value_PR_NOTHING, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequired_IEs__value_PR_Cause, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_405(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBReleaseConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBReleaseConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBReleaseConfirm_IEs, id)); + static const int indexToPresent[] = {SeNBReleaseConfirm_IEs__value_PR_NOTHING, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseConfirm_IEs__value_PR_E_RABs_ToBeReleased_List_RelConf, + SeNBReleaseConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension + }; + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_409(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SeNBCounterCheckRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBCounterCheckRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SeNBCounterCheckRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SeNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SeNBCounterCheckRequest_IEs, id)); + static const int indexToPresent[] = {SeNBCounterCheckRequest_IEs__value_PR_NOTHING, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SeNBCounterCheckRequest_IEs__value_PR_E_RABs_SubjectToCounterCheck_List, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_413(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2RemovalRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2RemovalRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_417(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2RemovalResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2RemovalResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_421(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_X2RemovalFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_X2RemovalFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_X2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct X2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_425(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEContextRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEContextRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_429(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEContextResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEContextResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextResponse_IEs, id)); + static const int indexToPresent[] = {RetrieveUEContextResponse_IEs__value_PR_NOTHING, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextResponse_IEs__value_PR_GUMMEI, + RetrieveUEContextResponse_IEs__value_PR_UE_ContextInformationRetrieve, + RetrieveUEContextResponse_IEs__value_PR_TraceActivation, + RetrieveUEContextResponse_IEs__value_PR_SRVCCOperationPossible, + RetrieveUEContextResponse_IEs__value_PR_Masked_IMEISV, + RetrieveUEContextResponse_IEs__value_PR_ExpectedUEBehaviour, + RetrieveUEContextResponse_IEs__value_PR_ProSeAuthorized, + RetrieveUEContextResponse_IEs__value_PR_CriticalityDiagnostics, + RetrieveUEContextResponse_IEs__value_PR_V2XServicesAuthorized, + RetrieveUEContextResponse_IEs__value_PR_AerialUEsubscriptionInformation, + RetrieveUEContextResponse_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_433(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RetrieveUEContextFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RetrieveUEContextFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RetrieveUEContextFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RetrieveUEContextFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_437(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBAdditionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBAdditionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_441(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_445(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBAdditionRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBAdditionRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBAdditionRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_449(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReconfigurationComplete_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReconfigurationComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReconfigurationComplete_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReconfigurationComplete_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReconfigurationComplete_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_453(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequest_IEs, id)); + static const int indexToPresent[] = {SgNBModificationRequest_IEs__value_PR_NOTHING, + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_Cause, + SgNBModificationRequest_IEs__value_PR_PLMN_Identity, + SgNBModificationRequest_IEs__value_PR_HandoverRestrictionList, + SgNBModificationRequest_IEs__value_PR_SCGConfigurationQuery, + SgNBModificationRequest_IEs__value_PR_UE_ContextInformation_SgNBModReq, + SgNBModificationRequest_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequest_IEs__value_PR_MeNBResourceCoordinationInformation, + SgNBModificationRequest_IEs__value_PR_SplitSRBs, + SgNBModificationRequest_IEs__value_PR_SplitSRBs + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_457(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestAcknowledge_IEs, id)); + static const int indexToPresent[] = {SgNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer, + SgNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBModificationRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBModificationRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBModificationRequestAcknowledge_IEs__value_PR_RRC_Config_Ind + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_461(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_465(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_469(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_473(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBModificationRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBModificationRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBModificationRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBModificationRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_477(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_481(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_485(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestReject_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequestReject_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequestReject_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequestReject_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_489(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_493(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBReleaseConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBReleaseConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBReleaseConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBReleaseConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_497(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBCounterCheckRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBCounterCheckRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBCounterCheckRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBCounterCheckRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBCounterCheckRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_501(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBChangeRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBChangeRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_505(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBChangeConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBChangeConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_509(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RRCTransfer_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RRCTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RRCTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RRCTransfer_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RRCTransfer_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RRCTransfer_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_513(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBChangeRefuse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBChangeRefuse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBChangeRefuse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBChangeRefuse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_517(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2SetupRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2SetupRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_521(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_525(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_529(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2SetupResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2SetupResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_533(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2SetupReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_537(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2SetupReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2SetupReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_541(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2SetupFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2SetupFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2SetupFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2SetupFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_545(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_549(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCConfigUpdateIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCConfigUpdateIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_553(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_557(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_561(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_criticality_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_value_constraint_565(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCConfigUpdateAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCConfigUpdateAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_569(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCConfigurationUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCConfigurationUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCConfigurationUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_573(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCCellActivationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCCellActivationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_577(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCCellActivationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCCellActivationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_581(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCCellActivationFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCCellActivationFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCCellActivationFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCCellActivationFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_585(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SecondaryRATDataUsageReport_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATDataUsageReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATDataUsageReport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SecondaryRATDataUsageReport_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATDataUsageReport_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATDataUsageReport_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_589(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SgNBActivityNotification_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBActivityNotification_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBActivityNotification_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SgNBActivityNotification_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SgNBActivityNotification_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SgNBActivityNotification_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_593(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCPartialResetRequired_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCPartialResetRequired_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetRequired_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetRequired_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_597(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCPartialResetConfirm_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCPartialResetConfirm_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCPartialResetConfirm_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCPartialResetConfirm_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_601(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_605(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_609(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_613(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_EUTRANRCellResourceCoordinationResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_EUTRANRCellResourceCoordinationResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_617(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_621(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_625(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2RemovalRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2RemovalRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_629(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_633(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_637(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2RemovalResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2RemovalResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_641(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENB_ENDCX2RemovalReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_645(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqAckIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_En_gNB_ENDCX2RemovalReqAckIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_En_gNB_ENDCX2RemovalReqAckIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_649(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ENDCX2RemovalFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ENDCX2RemovalFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ENDCX2RemovalFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ENDCX2RemovalFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_653(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_DataForwardingAddressIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_DataForwardingAddressIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct DataForwardingAddressIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_DataForwardingAddressIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_DataForwardingAddressIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct DataForwardingAddressIndication_IEs, id)); + static const int indexToPresent[] = {DataForwardingAddressIndication_IEs__value_PR_NOTHING, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID_Extension, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID_Extension, + DataForwardingAddressIndication_IEs__value_PR_E_RABs_DataForwardingAddress_List + }; + + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = indexToPresent[presence_index]; + break; + } + } + + return result; +} + +static int +memb_value_constraint_657(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_GNBStatusIndicationIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GNBStatusIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GNBStatusIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_GNBStatusIndicationIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_GNBStatusIndicationIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct GNBStatusIndicationIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_661(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RAB_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RAB_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RAB_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RAB_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_665(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E_RABUsageReport_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E_RABUsageReport_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E_RABUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E_RABUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_669(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SecondaryRATUsageReport_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SecondaryRATUsageReport_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_SecondaryRATUsageReport_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SecondaryRATUsageReport_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_673(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_106 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_107 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_108 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_110 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_111 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_112 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_114 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_115 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_116 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_118 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_119 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_120 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_122 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_123 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_124 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_126 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_127 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_128 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_130 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_131 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_132 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_134 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_135 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_136 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_138 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_139 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_140 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_142 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_143 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_144 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_146 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_147 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_148 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_150 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_151 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_152 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_154 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_155 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_156 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_158 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_159 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_160 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_162 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_163 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_164 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_166 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_167 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_168 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_170 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_171 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_172 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_174 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_175 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_176 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_178 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_179 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_180 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_182 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_183 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_184 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_186 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_187 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_188 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_190 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_191 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_192 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_194 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_195 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_196 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_198 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_199 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_200 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_202 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_203 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_204 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_206 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_207 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_208 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_210 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_211 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_212 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_214 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_215 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_216 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_218 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_219 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_220 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_222 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_223 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_224 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_226 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_227 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_228 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_230 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_231 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_232 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_234 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_235 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_236 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_238 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_239 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_240 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_242 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_243 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_244 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_246 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_247 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_248 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_250 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_251 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_252 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_254 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_255 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_256 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_258 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_259 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_260 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_262 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_263 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_264 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_266 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_267 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_268 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_270 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_271 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_272 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_274 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_275 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_276 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_278 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_279 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_280 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_282 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_283 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_284 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_286 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_287 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_288 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_290 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_291 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_292 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_294 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_295 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_296 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_298 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_299 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_300 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_302 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_303 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_304 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_306 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_307 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_308 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_310 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_311 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_312 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_314 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_315 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_316 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_318 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_319 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_320 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_322 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_323 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_324 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_326 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_327 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_328 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_330 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_331 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_332 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_334 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_335 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_336 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_338 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_339 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_340 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_342 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_343 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_344 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_346 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_347 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_348 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_350 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_351 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_352 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_354 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_355 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_356 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_358 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_359 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_360 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_362 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_363 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_364 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_366 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_367 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_368 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_370 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_371 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_372 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_374 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_375 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_376 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_378 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_379 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_380 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_382 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_383 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_384 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_386 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_387 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_388 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_390 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_391 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_392 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_394 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_395 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_396 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_398 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_399 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_400 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_402 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_403 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_404 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_406 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_407 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_408 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_410 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_411 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_412 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_414 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_415 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_416 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_418 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_419 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_420 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_422 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_423 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_424 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_426 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_427 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_428 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_430 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_431 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_432 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_434 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_435 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_436 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_438 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_439 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_440 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_442 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_443 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_444 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_446 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_447 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_448 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_450 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_451 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_452 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_454 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_455 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_456 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_458 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_459 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_460 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_462 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_463 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_464 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_466 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_467 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_468 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_470 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_471 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_472 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_474 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_475 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_476 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_478 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_479 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_480 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_482 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_483 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_484 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_486 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_487 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_488 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_490 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_491 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_492 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_494 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_495 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_496 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_498 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_499 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_500 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_502 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_503 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_504 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_506 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_507 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_508 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_510 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_511 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_512 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_514 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_515 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_516 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_518 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_519 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_520 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_522 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_523 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_524 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_526 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_527 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_528 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_530 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_531 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_532 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_534 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_535 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_536 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_538 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_539 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_540 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_542 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_543 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_544 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_546 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_547 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_548 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_550 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_551 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_552 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_554 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_555 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_556 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_558 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_559 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_560 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_562 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_563 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_564 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_566 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_567 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_568 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_570 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_571 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_572 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_574 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_575 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_576 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_578 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_579 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_580 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_582 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_583 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_584 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_586 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_587 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_588 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_590 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_591 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_592 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_594 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_595 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_596 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_598 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_599 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_600 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_602 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_603 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_604 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_606 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_607 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_608 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_610 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_611 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_612 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_614 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_615 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_616 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_618 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_619 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_620 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_622 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_623 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_624 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_626 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_627 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_628 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_630 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_631 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_632 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_634 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_635 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_636 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_638 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_639 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_640 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_642 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_643 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_644 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_646 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_647 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_648 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_650 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_651 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_652 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_654 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_655 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_656 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_658 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_659 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_660 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_662 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_663 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_664 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_666 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_667 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_668 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_670 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_671 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_672 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_674 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_675 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_676 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeSetup_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs__value), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_4, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 1, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_ToBeSetup_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_RICaction_ToBeSetup_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs), + offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { + "RICaction-ToBeSetup-ItemIEs", + "RICaction-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { + sizeof(struct RICaction_Admitted_ItemIEs__value), + offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_Admitted_ItemIEs__value, present), + sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_8 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_8, + 1, /* Elements count */ + &asn_SPC_value_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_Admitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_8, + select_RICaction_Admitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { + sizeof(struct RICaction_Admitted_ItemIEs), + offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { + "RICaction-Admitted-ItemIEs", + "RICaction-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs__value), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), + sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_12, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_12 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_12, + 1, /* Elements count */ + &asn_SPC_value_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_NotAdmitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_12, + select_RICaction_NotAdmitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs), + offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { + "RICaction-NotAdmitted-ItemIEs", + "RICaction-NotAdmitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunction_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunction-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { + sizeof(struct RANfunction_ItemIEs__value), + offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunction_ItemIEs__value, present), + sizeof(((struct RANfunction_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_16, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_16 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_16, + 1, /* Elements count */ + &asn_SPC_value_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunction_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_16, + select_RANfunction_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13 = { + sizeof(struct RANfunction_ItemIEs), + offsetof(struct RANfunction_ItemIEs, _asn_ctx), + asn_MAP_RANfunction_ItemIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { + "RANfunction-ItemIEs", + "RANfunction-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_ItemIEs_tags_13, + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + asn_DEF_RANfunction_ItemIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionID_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { + sizeof(struct RANfunctionID_ItemIEs__value), + offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionID_ItemIEs__value, present), + sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_20 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_20, + 1, /* Elements count */ + &asn_SPC_value_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionID_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_20, + select_RANfunctionID_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17 = { + sizeof(struct RANfunctionID_ItemIEs), + offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionID_ItemIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { + "RANfunctionID-ItemIEs", + "RANfunctionID-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_ItemIEs_tags_17, + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + asn_DEF_RANfunctionID_ItemIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionIDcause_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionIDcause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { + sizeof(struct RANfunctionIDcause_ItemIEs__value), + offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionIDcause_ItemIEs__value, present), + sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_24, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_24 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_24, + 1, /* Elements count */ + &asn_SPC_value_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionIDcause_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_24, + select_RANfunctionIDcause_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 = { + sizeof(struct RANfunctionIDcause_ItemIEs), + offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { + "RANfunctionIDcause-ItemIEs", + "RANfunctionIDcause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs__value, choice.E_RABs_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetup_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { + sizeof(struct E_RABs_ToBeSetup_ItemIEs__value), + offsetof(struct E_RABs_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeSetup_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_28, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_28 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_28, + 1, /* Elements count */ + &asn_SPC_value_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemIEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetup_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetup_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_28, + select_E_RABs_ToBeSetup_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetup_ItemIEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25 = { + sizeof(struct E_RABs_ToBeSetup_ItemIEs), + offsetof(struct E_RABs_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetup_ItemIEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemIEs = { + "E-RABs-ToBeSetup-ItemIEs", + "E-RABs-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25, + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25) + /sizeof(asn_DEF_E_RABs_ToBeSetup_ItemIEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_ItemIEs_25, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs__value, choice.E_RABs_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { + sizeof(struct E_RABs_Admitted_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_32, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_32 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_32, + 1, /* Elements count */ + &asn_SPC_value_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ItemIEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_32, + select_E_RABs_Admitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ItemIEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ItemIEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ItemIEs_specs_29 = { + sizeof(struct E_RABs_Admitted_ItemIEs), + offsetof(struct E_RABs_Admitted_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ItemIEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ItemIEs = { + "E-RABs-Admitted-ItemIEs", + "E-RABs-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ItemIEs_tags_29, + sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29) + /sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ItemIEs_tags_29, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29) + /sizeof(asn_DEF_E_RABs_Admitted_ItemIEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ItemIEs_29, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ItemIEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value, choice.E_RABs_SubjectToStatusTransfer_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToStatusTransfer_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToStatusTransfer-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-SubjectToStatusTransfer-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs__value, present), + sizeof(((struct E_RABs_SubjectToStatusTransfer_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_36, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_36 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_36, + 1, /* Elements count */ + &asn_SPC_value_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToStatusTransfer_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_36, + select_E_RABs_SubjectToStatusTransfer_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToStatusTransfer_ItemIEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33 = { + sizeof(struct E_RABs_SubjectToStatusTransfer_ItemIEs), + offsetof(struct E_RABs_SubjectToStatusTransfer_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToStatusTransfer_ItemIEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs = { + "E-RABs-SubjectToStatusTransfer-ItemIEs", + "E-RABs-SubjectToStatusTransfer-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33, + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33) + /sizeof(asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs__value, choice.CellInformation_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellInformation_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellInformation-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellInformation-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { + sizeof(struct CellInformation_ItemIEs__value), + offsetof(struct CellInformation_ItemIEs__value, _asn_ctx), + offsetof(struct CellInformation_ItemIEs__value, present), + sizeof(((struct CellInformation_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_40, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_40 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_40, + 1, /* Elements count */ + &asn_SPC_value_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellInformation_ItemIEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellInformation_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellInformation_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_40, + select_CellInformation_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellInformation_ItemIEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellInformation_ItemIEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellInformation_ItemIEs_specs_37 = { + sizeof(struct CellInformation_ItemIEs), + offsetof(struct CellInformation_ItemIEs, _asn_ctx), + asn_MAP_CellInformation_ItemIEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellInformation_ItemIEs = { + "CellInformation-ItemIEs", + "CellInformation-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellInformation_ItemIEs_tags_37, + sizeof(asn_DEF_CellInformation_ItemIEs_tags_37) + /sizeof(asn_DEF_CellInformation_ItemIEs_tags_37[0]), /* 1 */ + asn_DEF_CellInformation_ItemIEs_tags_37, /* Same as above */ + sizeof(asn_DEF_CellInformation_ItemIEs_tags_37) + /sizeof(asn_DEF_CellInformation_ItemIEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_ItemIEs_37, + 3, /* Elements count */ + &asn_SPC_CellInformation_ItemIEs_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_44[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs__value, choice.CellToReport_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellToReport_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellToReport-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellToReport-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { + sizeof(struct CellToReport_ItemIEs__value), + offsetof(struct CellToReport_ItemIEs__value, _asn_ctx), + offsetof(struct CellToReport_ItemIEs__value, present), + sizeof(((struct CellToReport_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_44, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_44 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_44, + 1, /* Elements count */ + &asn_SPC_value_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellToReport_ItemIEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellToReport_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellToReport_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_44, + select_CellToReport_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellToReport_ItemIEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellToReport_ItemIEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellToReport_ItemIEs_specs_41 = { + sizeof(struct CellToReport_ItemIEs), + offsetof(struct CellToReport_ItemIEs, _asn_ctx), + asn_MAP_CellToReport_ItemIEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellToReport_ItemIEs = { + "CellToReport-ItemIEs", + "CellToReport-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellToReport_ItemIEs_tags_41, + sizeof(asn_DEF_CellToReport_ItemIEs_tags_41) + /sizeof(asn_DEF_CellToReport_ItemIEs_tags_41[0]), /* 1 */ + asn_DEF_CellToReport_ItemIEs_tags_41, /* Same as above */ + sizeof(asn_DEF_CellToReport_ItemIEs_tags_41) + /sizeof(asn_DEF_CellToReport_ItemIEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_ItemIEs_41, + 3, /* Elements count */ + &asn_SPC_CellToReport_ItemIEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs__value, choice.MeasurementInitiationResult_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInitiationResult_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeasurementInitiationResult-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MeasurementInitiationResult-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { + sizeof(struct MeasurementInitiationResult_ItemIEs__value), + offsetof(struct MeasurementInitiationResult_ItemIEs__value, _asn_ctx), + offsetof(struct MeasurementInitiationResult_ItemIEs__value, present), + sizeof(((struct MeasurementInitiationResult_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_48, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_48 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_48, + 1, /* Elements count */ + &asn_SPC_value_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_ItemIEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MeasurementInitiationResult_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementInitiationResult_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_48, + select_MeasurementInitiationResult_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementInitiationResult_ItemIEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45 = { + sizeof(struct MeasurementInitiationResult_ItemIEs), + offsetof(struct MeasurementInitiationResult_ItemIEs, _asn_ctx), + asn_MAP_MeasurementInitiationResult_ItemIEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_ItemIEs = { + "MeasurementInitiationResult-ItemIEs", + "MeasurementInitiationResult-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45, + sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45) + /sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45[0]), /* 1 */ + asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45, /* Same as above */ + sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45) + /sizeof(asn_DEF_MeasurementInitiationResult_ItemIEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs__value, choice.MeasurementFailureCause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementFailureCause_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeasurementFailureCause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* MeasurementFailureCause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { + sizeof(struct MeasurementFailureCause_ItemIEs__value), + offsetof(struct MeasurementFailureCause_ItemIEs__value, _asn_ctx), + offsetof(struct MeasurementFailureCause_ItemIEs__value, present), + sizeof(((struct MeasurementFailureCause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_52, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_52 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_52, + 1, /* Elements count */ + &asn_SPC_value_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MeasurementFailureCause_ItemIEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MeasurementFailureCause_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MeasurementFailureCause_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_52, + select_MeasurementFailureCause_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MeasurementFailureCause_ItemIEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MeasurementFailureCause_ItemIEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_ItemIEs_specs_49 = { + sizeof(struct MeasurementFailureCause_ItemIEs), + offsetof(struct MeasurementFailureCause_ItemIEs, _asn_ctx), + asn_MAP_MeasurementFailureCause_ItemIEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_ItemIEs = { + "MeasurementFailureCause-ItemIEs", + "MeasurementFailureCause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_MeasurementFailureCause_ItemIEs_tags_49, + sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49) + /sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49[0]), /* 1 */ + asn_DEF_MeasurementFailureCause_ItemIEs_tags_49, /* Same as above */ + sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49) + /sizeof(asn_DEF_MeasurementFailureCause_ItemIEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_ItemIEs_49, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_ItemIEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs__value, choice.CompleteFailureCauseInformation_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompleteFailureCauseInformation_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CompleteFailureCauseInformation-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CompleteFailureCauseInformation-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { + sizeof(struct CompleteFailureCauseInformation_ItemIEs__value), + offsetof(struct CompleteFailureCauseInformation_ItemIEs__value, _asn_ctx), + offsetof(struct CompleteFailureCauseInformation_ItemIEs__value, present), + sizeof(((struct CompleteFailureCauseInformation_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_56, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_56 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_56, + 1, /* Elements count */ + &asn_SPC_value_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_ItemIEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CompleteFailureCauseInformation_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CompleteFailureCauseInformation_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_56, + select_CompleteFailureCauseInformation_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CompleteFailureCauseInformation_ItemIEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53 = { + sizeof(struct CompleteFailureCauseInformation_ItemIEs), + offsetof(struct CompleteFailureCauseInformation_ItemIEs, _asn_ctx), + asn_MAP_CompleteFailureCauseInformation_ItemIEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_ItemIEs = { + "CompleteFailureCauseInformation-ItemIEs", + "CompleteFailureCauseInformation-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53, + sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53) + /sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53[0]), /* 1 */ + asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53, /* Same as above */ + sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53) + /sizeof(asn_DEF_CompleteFailureCauseInformation_ItemIEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_ItemIEs_53, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs__value, choice.CellMeasurementResult_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellMeasurementResult_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellMeasurementResult-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellMeasurementResult-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { + sizeof(struct CellMeasurementResult_ItemIEs__value), + offsetof(struct CellMeasurementResult_ItemIEs__value, _asn_ctx), + offsetof(struct CellMeasurementResult_ItemIEs__value, present), + sizeof(((struct CellMeasurementResult_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_60, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_60 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_60, + 1, /* Elements count */ + &asn_SPC_value_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellMeasurementResult_ItemIEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellMeasurementResult_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellMeasurementResult_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_60, + select_CellMeasurementResult_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellMeasurementResult_ItemIEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellMeasurementResult_ItemIEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_ItemIEs_specs_57 = { + sizeof(struct CellMeasurementResult_ItemIEs), + offsetof(struct CellMeasurementResult_ItemIEs, _asn_ctx), + asn_MAP_CellMeasurementResult_ItemIEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_ItemIEs = { + "CellMeasurementResult-ItemIEs", + "CellMeasurementResult-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_CellMeasurementResult_ItemIEs_tags_57, + sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57) + /sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57[0]), /* 1 */ + asn_DEF_CellMeasurementResult_ItemIEs_tags_57, /* Same as above */ + sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57) + /sizeof(asn_DEF_CellMeasurementResult_ItemIEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_ItemIEs_57, + 3, /* Elements count */ + &asn_SPC_CellMeasurementResult_ItemIEs_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs__value, choice.E_RABs_ToBeAdded_Item), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeAdded_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { + sizeof(struct E_RABs_ToBeAdded_ItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_64, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_64 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_64, + 1, /* Elements count */ + &asn_SPC_value_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ItemIEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_64, + select_E_RABs_ToBeAdded_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ItemIEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61 = { + sizeof(struct E_RABs_ToBeAdded_ItemIEs), + offsetof(struct E_RABs_ToBeAdded_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ItemIEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ItemIEs = { + "E-RABs-ToBeAdded-ItemIEs", + "E-RABs-ToBeAdded-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61, + sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ItemIEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ItemIEs_61, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_68[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_Item), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_68, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_68 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_68, + 1, /* Elements count */ + &asn_SPC_value_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_68, + select_E_RABs_Admitted_ToBeAdded_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ItemIEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ItemIEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs = { + "E-RABs-Admitted-ToBeAdded-ItemIEs", + "E-RABs-Admitted-ToBeAdded-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs__value, choice.E_RABs_ToBeAdded_ModReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeAdded_ModReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-ModReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_ModReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_72, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_72 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_72, + 1, /* Elements count */ + &asn_SPC_value_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_ModReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_72, + select_E_RABs_ToBeAdded_ModReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_ModReqItemIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69 = { + sizeof(struct E_RABs_ToBeAdded_ModReqItemIEs), + offsetof(struct E_RABs_ToBeAdded_ModReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_ModReqItemIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs = { + "E-RABs-ToBeAdded-ModReqItemIEs", + "E-RABs-ToBeAdded-ModReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69, + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69) + /sizeof(asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs__value, choice.E_RABs_ToBeModified_ModReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeModified_ModReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-ModReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { + sizeof(struct E_RABs_ToBeModified_ModReqItemIEs__value), + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeModified_ModReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_76, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_76 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_76, + 1, /* Elements count */ + &asn_SPC_value_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_ModReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_76, + select_E_RABs_ToBeModified_ModReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_ModReqItemIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73 = { + sizeof(struct E_RABs_ToBeModified_ModReqItemIEs), + offsetof(struct E_RABs_ToBeModified_ModReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_ModReqItemIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItemIEs = { + "E-RABs-ToBeModified-ModReqItemIEs", + "E-RABs-ToBeModified-ModReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73, + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73) + /sizeof(asn_DEF_E_RABs_ToBeModified_ModReqItemIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_80[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs__value, choice.E_RABs_ToBeReleased_ModReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-ModReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_80, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_80 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_80, + 1, /* Elements count */ + &asn_SPC_value_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_ModReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_80, + select_E_RABs_ToBeReleased_ModReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqItemIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77 = { + sizeof(struct E_RABs_ToBeReleased_ModReqItemIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqItemIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs = { + "E-RABs-ToBeReleased-ModReqItemIEs", + "E-RABs-ToBeReleased-ModReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_84[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_ModAckItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-ModAckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_84, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_84 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_84, + 1, /* Elements count */ + &asn_SPC_value_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_84, + select_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs = { + "E-RABs-Admitted-ToBeAdded-ModAckItemIEs", + "E-RABs-Admitted-ToBeAdded-ModAckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value, choice.E_RABs_Admitted_ToBeModified_ModAckItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-ModAckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_88, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_88 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_88, + 1, /* Elements count */ + &asn_SPC_value_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_88, + select_E_RABs_Admitted_ToBeModified_ModAckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85 = { + sizeof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_ModAckItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs = { + "E-RABs-Admitted-ToBeModified-ModAckItemIEs", + "E-RABs-Admitted-ToBeModified-ModAckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_92[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value, choice.E_RABs_Admitted_ToReleased_ModAckItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_Admitted_ToReleased_ModAckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToReleased-ModAckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_92, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_92 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_92, + 1, /* Elements count */ + &asn_SPC_value_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_92, + select_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs = { + "E-RABs-Admitted-ToBeReleased-ModAckItemIEs", + "E-RABs-Admitted-ToBeReleased-ModAckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_96[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value, choice.E_RABs_ToBeReleased_ModReqdItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqdItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-ModReqdItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-ModReqdItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_ModReqdItemIEs__value *)0)->present), + asn_MAP_value_tag2el_96, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_96 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_96, + 1, /* Elements count */ + &asn_SPC_value_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_ModReqdItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_96, + select_E_RABs_ToBeReleased_ModReqdItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_ModReqdItemIEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93 = { + sizeof(struct E_RABs_ToBeReleased_ModReqdItemIEs), + offsetof(struct E_RABs_ToBeReleased_ModReqdItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_ModReqdItemIEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs = { + "E-RABs-ToBeReleased-ModReqdItemIEs", + "E-RABs-ToBeReleased-ModReqdItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93, + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93) + /sizeof(asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs__value, choice.E_RABs_ToBeReleased_RelReqItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeReleased_RelReqItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-RelReqItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_RelReqItemIEs__value *)0)->present), + asn_MAP_value_tag2el_100, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_100 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_100, + 1, /* Elements count */ + &asn_SPC_value_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_RelReqItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_100, + select_E_RABs_ToBeReleased_RelReqItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelReqItemIEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97 = { + sizeof(struct E_RABs_ToBeReleased_RelReqItemIEs), + offsetof(struct E_RABs_ToBeReleased_RelReqItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelReqItemIEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs = { + "E-RABs-ToBeReleased-RelReqItemIEs", + "E-RABs-ToBeReleased-RelReqItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs__value, choice.E_RABs_ToBeReleased_RelConfItem), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_E_RABs_ToBeReleased_RelConfItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-RelConfItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCG-Bearer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* split-Bearer */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_RelConfItemIEs__value *)0)->present), + asn_MAP_value_tag2el_104, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_104 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_104, + 1, /* Elements count */ + &asn_SPC_value_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_RelConfItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_104, + select_E_RABs_ToBeReleased_RelConfItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_RelConfItemIEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101 = { + sizeof(struct E_RABs_ToBeReleased_RelConfItemIEs), + offsetof(struct E_RABs_ToBeReleased_RelConfItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_RelConfItemIEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs = { + "E-RABs-ToBeReleased-RelConfItemIEs", + "E-RABs-ToBeReleased-RelConfItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101, + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101) + /sizeof(asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_108[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs__value, choice.E_RABs_SubjectToCounterCheckItem), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToCounterCheckItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToCounterCheckItem" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_108[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-SubjectToCounterCheckItem */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_108 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemIEs__value), + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs__value, present), + sizeof(((struct E_RABs_SubjectToCounterCheckItemIEs__value *)0)->present), + asn_MAP_value_tag2el_108, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_108 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_108, + 1, /* Elements count */ + &asn_SPC_value_specs_108 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_106, memb_id_constraint_105 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToCounterCheckItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_107, memb_criticality_constraint_105 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_108, + select_E_RABs_SubjectToCounterCheckItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_108, memb_value_constraint_105 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToCounterCheckItemIEs_tag2el_105[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105 = { + sizeof(struct E_RABs_SubjectToCounterCheckItemIEs), + offsetof(struct E_RABs_SubjectToCounterCheckItemIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToCounterCheckItemIEs_tag2el_105, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemIEs = { + "E-RABs-SubjectToCounterCheckItemIEs", + "E-RABs-SubjectToCounterCheckItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105, + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105) + /sizeof(asn_DEF_E_RABs_SubjectToCounterCheckItemIEs_tags_105[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_112[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value, choice.E_RABs_ToBeSetupRetrieve_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeSetupRetrieve_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeSetupRetrieve-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_112[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeSetupRetrieve-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_112 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeSetupRetrieve_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_112, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_112 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_112, + 1, /* Elements count */ + &asn_SPC_value_specs_112 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_110, memb_id_constraint_109 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeSetupRetrieve_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_111, memb_criticality_constraint_109 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_112, + select_E_RABs_ToBeSetupRetrieve_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_112, memb_value_constraint_109 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeSetupRetrieve_ItemIEs_tag2el_109[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109 = { + sizeof(struct E_RABs_ToBeSetupRetrieve_ItemIEs), + offsetof(struct E_RABs_ToBeSetupRetrieve_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeSetupRetrieve_ItemIEs_tag2el_109, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs = { + "E-RABs-ToBeSetupRetrieve-ItemIEs", + "E-RABs-ToBeSetupRetrieve-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109, + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109[0]), /* 1 */ + asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109) + /sizeof(asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs_tags_109[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_116[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value, choice.E_RABs_ToBeAdded_SgNBAddReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-SgNBAddReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_116[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeAdded-SgNBAddReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_116 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_116, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_116 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_116, + 1, /* Elements count */ + &asn_SPC_value_specs_116 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_114, memb_id_constraint_113 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_115, memb_criticality_constraint_113 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_116, + select_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_116, memb_value_constraint_113 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tag2el_113[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113 = { + sizeof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tag2el_113, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs = { + "E-RABs-ToBeAdded-SgNBAddReq-ItemIEs", + "E-RABs-ToBeAdded-SgNBAddReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_tags_113[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_120[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_120[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_120 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_120, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_120 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_120, + 1, /* Elements count */ + &asn_SPC_value_specs_120 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_118, memb_id_constraint_117 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_119, memb_criticality_constraint_117 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_120, + select_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_120, memb_value_constraint_117 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tag2el_117[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tag2el_117, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs", + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_tags_117[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_124[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value, choice.E_RABs_ToBeAdded_SgNBModReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-SgNBModReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_124[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeAdded-SgNBModReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_124 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_124, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_124 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_124, + 1, /* Elements count */ + &asn_SPC_value_specs_124 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_122, memb_id_constraint_121 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_123, memb_criticality_constraint_121 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_124, + select_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_124, memb_value_constraint_121 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tag2el_121[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121 = { + sizeof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs), + offsetof(struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tag2el_121, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs = { + "E-RABs-ToBeAdded-SgNBModReq-ItemIEs", + "E-RABs-ToBeAdded-SgNBModReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121, + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121[0]), /* 1 */ + asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121) + /sizeof(asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_tags_121[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_128[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value, choice.E_RABs_ToBeModified_SgNBModReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-SgNBModReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_128[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeModified-SgNBModReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_128 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_128, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_128 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_128, + 1, /* Elements count */ + &asn_SPC_value_specs_128 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_126, memb_id_constraint_125 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_127, memb_criticality_constraint_125 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_128, + select_E_RABs_ToBeModified_SgNBModReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_128, memb_value_constraint_125 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tag2el_125[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tag2el_125, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs = { + "E-RABs-ToBeModified-SgNBModReq-ItemIEs", + "E-RABs-ToBeModified-SgNBModReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs_tags_125[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_132[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBModReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBModReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_132[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBModReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_132 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_132, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_132 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_132, + 1, /* Elements count */ + &asn_SPC_value_specs_132 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_130, memb_id_constraint_129 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_131, memb_criticality_constraint_129 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_132, + select_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_132, memb_value_constraint_129 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tag2el_129[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tag2el_129, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs = { + "E-RABs-ToBeReleased-SgNBModReq-ItemIEs", + "E-RABs-ToBeReleased-SgNBModReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_tags_129[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_136[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBModAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_136[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeAdded-SgNBModAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_136 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_136, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_136 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_136, + 1, /* Elements count */ + &asn_SPC_value_specs_136 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_134, memb_id_constraint_133 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_135, memb_criticality_constraint_133 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_136, + select_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_136, memb_value_constraint_133 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tag2el_133[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133 = { + sizeof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tag2el_133, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs = { + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs", + "E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133, + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_tags_133[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_140[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeModified_SgNBModAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-SgNBModAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_140[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeModified-SgNBModAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_140 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_140, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_140 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_140, + 1, /* Elements count */ + &asn_SPC_value_specs_140 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_138, memb_id_constraint_137 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_139, memb_criticality_constraint_137 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_140, + select_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_140, memb_value_constraint_137 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tag2el_137[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137 = { + sizeof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tag2el_137, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs = { + "E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs", + "E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137, + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_tags_137[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_144[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value, choice.E_RABs_Admitted_ToReleased_SgNBModAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToReleased_SgNBModAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToReleased-SgNBModAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_144[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToReleased-SgNBModAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_144 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_144, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_144 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_144, + 1, /* Elements count */ + &asn_SPC_value_specs_144 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_142, memb_id_constraint_141 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_143, memb_criticality_constraint_141 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_144, + select_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_144, memb_value_constraint_141 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tag2el_141[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tag2el_141, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs", + "E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_tags_141[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_148[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBModReqd_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBModReqd-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_148[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBModReqd-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_148 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_148, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_148 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_148, + 1, /* Elements count */ + &asn_SPC_value_specs_148 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_146, memb_id_constraint_145 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_147, memb_criticality_constraint_145 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_148, + select_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_148, memb_value_constraint_145 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tag2el_145[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145 = { + sizeof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tag2el_145, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs = { + "E-RABs-ToBeReleased-SgNBModReqd-ItemIEs", + "E-RABs-ToBeReleased-SgNBModReqd-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_tags_145[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_152[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value, choice.E_RABs_ToBeModified_SgNBModReqd_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqd_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-SgNBModReqd-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_152[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeModified-SgNBModReqd-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_152 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_152, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_152 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_152, + 1, /* Elements count */ + &asn_SPC_value_specs_152 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_150, memb_id_constraint_149 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_151, memb_criticality_constraint_149 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_152, + select_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_152, memb_value_constraint_149 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tag2el_149[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149 = { + sizeof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs), + offsetof(struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tag2el_149, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs = { + "E-RABs-ToBeModified-SgNBModReqd-ItemIEs", + "E-RABs-ToBeModified-SgNBModReqd-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149, + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149[0]), /* 1 */ + asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149) + /sizeof(asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_tags_149[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_156[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value, choice.E_RABs_AdmittedToBeModified_SgNBModConf_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-AdmittedToBeModified-SgNBModConf-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_156[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-AdmittedToBeModified-SgNBModConf-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_156 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value, present), + sizeof(((struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_156, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_156 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_156, + 1, /* Elements count */ + &asn_SPC_value_specs_156 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_154, memb_id_constraint_153 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_155, memb_criticality_constraint_153 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_156, + select_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_156, memb_value_constraint_153 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tag2el_153[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153 = { + sizeof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs), + offsetof(struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tag2el_153, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs = { + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs", + "E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153, + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153[0]), /* 1 */ + asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153, /* Same as above */ + sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153) + /sizeof(asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_tags_153[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_160[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBRelReq_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReq-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_160[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBRelReq-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_160 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_160, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_160 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_160, + 1, /* Elements count */ + &asn_SPC_value_specs_160 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_158, memb_id_constraint_157 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_159, memb_criticality_constraint_157 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_160, + select_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_160, memb_value_constraint_157 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tag2el_157[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tag2el_157, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs = { + "E-RABs-ToBeReleased-SgNBRelReq-ItemIEs", + "E-RABs-ToBeReleased-SgNBRelReq-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_tags_157[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_164[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value, choice.E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_164[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_164 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value, present), + sizeof(((struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_164, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_164 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_164, + 1, /* Elements count */ + &asn_SPC_value_specs_164 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_162, memb_id_constraint_161 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_163, memb_criticality_constraint_161 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_164, + select_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_164, memb_value_constraint_161 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tag2el_161[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161 = { + sizeof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs), + offsetof(struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tag2el_161, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs = { + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs", + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161, + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161[0]), /* 1 */ + asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161, /* Same as above */ + sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161) + /sizeof(asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_tags_161[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_168[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBRelReqd_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReqd-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_168[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBRelReqd-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_168 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_168, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_168 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_168, + 1, /* Elements count */ + &asn_SPC_value_specs_168 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_166, memb_id_constraint_165 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_167, memb_criticality_constraint_165 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_168, + select_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_168, memb_value_constraint_165 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tag2el_165[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tag2el_165, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs = { + "E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs", + "E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_tags_165[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_172[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBRelConf_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelConf-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_172[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBRelConf-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_172 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_172, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_172 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_172, + 1, /* Elements count */ + &asn_SPC_value_specs_172 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_170, memb_id_constraint_169 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_171, memb_criticality_constraint_169 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_172, + select_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_172, memb_value_constraint_169 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tag2el_169[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169 = { + sizeof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tag2el_169, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs = { + "E-RABs-ToBeReleased-SgNBRelConf-ItemIEs", + "E-RABs-ToBeReleased-SgNBRelConf-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_tags_169[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_176[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value, choice.E_RABs_SubjectToSgNBCounterCheck_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToSgNBCounterCheck-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_176[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-SubjectToSgNBCounterCheck-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_176 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value, present), + sizeof(((struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_176, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_176 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_176, + 1, /* Elements count */ + &asn_SPC_value_specs_176 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_174, memb_id_constraint_173 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_175, memb_criticality_constraint_173 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_176, + select_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_176, memb_value_constraint_173 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tag2el_173[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173 = { + sizeof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs), + offsetof(struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tag2el_173, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs = { + "E-RABs-SubjectToSgNBCounterCheck-ItemIEs", + "E-RABs-SubjectToSgNBCounterCheck-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173, + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173[0]), /* 1 */ + asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173, /* Same as above */ + sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173) + /sizeof(asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_tags_173[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_180[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value, choice.E_RABs_ToBeReleased_SgNBChaConf_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBChaConf-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_180[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-ToBeReleased-SgNBChaConf-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_180 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value, present), + sizeof(((struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_180, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_180 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_180, + 1, /* Elements count */ + &asn_SPC_value_specs_180 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_178, memb_id_constraint_177 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_179, memb_criticality_constraint_177 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_180, + select_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_180, memb_value_constraint_177 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tag2el_177[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177 = { + sizeof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs), + offsetof(struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tag2el_177, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs = { + "E-RABs-ToBeReleased-SgNBChaConf-ItemIEs", + "E-RABs-ToBeReleased-SgNBChaConf-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177, + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177[0]), /* 1 */ + asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177, /* Same as above */ + sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177) + /sizeof(asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_tags_177[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_184[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs__value, choice.E_RABs_DataForwardingAddress_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_DataForwardingAddress_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-DataForwardingAddress-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_184[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABs-DataForwardingAddress-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_184 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemIEs__value), + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs__value, present), + sizeof(((struct E_RABs_DataForwardingAddress_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_184, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_184 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_184, + 1, /* Elements count */ + &asn_SPC_value_specs_184 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_182, memb_id_constraint_181 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E_RABs_DataForwardingAddress_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_183, memb_criticality_constraint_181 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_184, + select_E_RABs_DataForwardingAddress_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_184, memb_value_constraint_181 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABs_DataForwardingAddress_ItemIEs_tag2el_181[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181 = { + sizeof(struct E_RABs_DataForwardingAddress_ItemIEs), + offsetof(struct E_RABs_DataForwardingAddress_ItemIEs, _asn_ctx), + asn_MAP_E_RABs_DataForwardingAddress_ItemIEs_tag2el_181, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemIEs = { + "E-RABs-DataForwardingAddress-ItemIEs", + "E-RABs-DataForwardingAddress-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181, + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181[0]), /* 1 */ + asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181, /* Same as above */ + sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181) + /sizeof(asn_DEF_E_RABs_DataForwardingAddress_ItemIEs_tags_181[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_188[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscription), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscription, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscription" + }, +}; +static const unsigned asn_MAP_value_to_canonical_188[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_188[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_188[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscription */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_188 = { + sizeof(struct RICsubscriptionRequest_IEs__value), + offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionRequest_IEs__value, present), + sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_188, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_188, + asn_MAP_value_from_canonical_188, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_188 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_188, + 3, /* Elements count */ + &asn_SPC_value_specs_188 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_185[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_186, memb_id_constraint_185 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_187, memb_criticality_constraint_185 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_188, + select_RICsubscriptionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_188, memb_value_constraint_185 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_185[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_185[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_185 = { + sizeof(struct RICsubscriptionRequest_IEs), + offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionRequest_IEs_tag2el_185, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { + "RICsubscriptionRequest-IEs", + "RICsubscriptionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_IEs_tags_185, + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_IEs_tags_185, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_185[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_IEs_185, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_IEs_specs_185 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_192[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_192[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_192[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_192[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_192 = { + sizeof(struct RICsubscriptionResponse_IEs__value), + offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionResponse_IEs__value, present), + sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_192, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_192, + asn_MAP_value_from_canonical_192, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_192 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_192, + 4, /* Elements count */ + &asn_SPC_value_specs_192 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_189[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_190, memb_id_constraint_189 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_191, memb_criticality_constraint_189 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_192, + select_RICsubscriptionResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_192, memb_value_constraint_189 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_189[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_189[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_189 = { + sizeof(struct RICsubscriptionResponse_IEs), + offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionResponse_IEs_tag2el_189, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { + "RICsubscriptionResponse-IEs", + "RICsubscriptionResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_IEs_tags_189, + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_IEs_tags_189, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_189[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_IEs_189, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_IEs_specs_189 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_196[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_196[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_196[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_196[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-NotAdmitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_196 = { + sizeof(struct RICsubscriptionFailure_IEs__value), + offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionFailure_IEs__value, present), + sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_196, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_196, + asn_MAP_value_from_canonical_196, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_196 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_196, + 4, /* Elements count */ + &asn_SPC_value_specs_196 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_193[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_194, memb_id_constraint_193 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_195, memb_criticality_constraint_193 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_196, + select_RICsubscriptionFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_196, memb_value_constraint_193 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_193[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_193[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_193 = { + sizeof(struct RICsubscriptionFailure_IEs), + offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionFailure_IEs_tag2el_193, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { + "RICsubscriptionFailure-IEs", + "RICsubscriptionFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_IEs_tags_193, + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_IEs_tags_193, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_193[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_IEs_193, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_IEs_specs_193 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_200[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_200[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_200[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_200[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_200 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs__value), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_200, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_200, + asn_MAP_value_from_canonical_200, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_200 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_200, + 2, /* Elements count */ + &asn_SPC_value_specs_200 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_197[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_198, memb_id_constraint_197 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_199, memb_criticality_constraint_197 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_200, + select_RICsubscriptionDeleteRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_200, memb_value_constraint_197 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_197[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_197 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs), + offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_197, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { + "RICsubscriptionDeleteRequest-IEs", + "RICsubscriptionDeleteRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_197[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_IEs_197, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_197 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_204[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_204[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_204[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_204[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_204 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs__value), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_204, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_204, + asn_MAP_value_from_canonical_204, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_204 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_204, + 2, /* Elements count */ + &asn_SPC_value_specs_204 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_201[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_202, memb_id_constraint_201 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_203, memb_criticality_constraint_201 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_204, + select_RICsubscriptionDeleteResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_204, memb_value_constraint_201 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_201[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_201 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs), + offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_201, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { + "RICsubscriptionDeleteResponse-IEs", + "RICsubscriptionDeleteResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_201[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_IEs_201, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_201 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_208[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICcause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_208[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_208[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_208[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* misc */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* ric */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_208 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs__value), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_208, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_208, + asn_MAP_value_from_canonical_208, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_208 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_208, + 4, /* Elements count */ + &asn_SPC_value_specs_208 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_205[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_206, memb_id_constraint_205 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_207, memb_criticality_constraint_205 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_208, + select_RICsubscriptionDeleteFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_208, memb_value_constraint_205 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_205[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_205 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs), + offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_205, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { + "RICsubscriptionDeleteFailure-IEs", + "RICsubscriptionDeleteFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_205[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_IEs_205, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_205 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_212[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICindicationSN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationSN" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICindicationType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_212[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; +static const unsigned asn_MAP_value_from_canonical_212[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_212[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_212 = { + sizeof(struct RICindication_IEs__value), + offsetof(struct RICindication_IEs__value, _asn_ctx), + offsetof(struct RICindication_IEs__value, present), + sizeof(((struct RICindication_IEs__value *)0)->present), + asn_MAP_value_tag2el_212, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_212, + asn_MAP_value_from_canonical_212, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_212 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_212, + 8, /* Elements count */ + &asn_SPC_value_specs_212 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICindication_IEs_209[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_210, memb_id_constraint_209 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICindication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_211, memb_criticality_constraint_209 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_212, + select_RICindication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_212, memb_value_constraint_209 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_209[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_209[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_209 = { + sizeof(struct RICindication_IEs), + offsetof(struct RICindication_IEs, _asn_ctx), + asn_MAP_RICindication_IEs_tag2el_209, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { + "RICindication-IEs", + "RICindication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_IEs_tags_209, + sizeof(asn_DEF_RICindication_IEs_tags_209) + /sizeof(asn_DEF_RICindication_IEs_tags_209[0]), /* 1 */ + asn_DEF_RICindication_IEs_tags_209, /* Same as above */ + sizeof(asn_DEF_RICindication_IEs_tags_209) + /sizeof(asn_DEF_RICindication_IEs_tags_209[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_IEs_209, + 3, /* Elements count */ + &asn_SPC_RICindication_IEs_specs_209 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_216[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolAckRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAckRequest" + }, +}; +static const unsigned asn_MAP_value_to_canonical_216[] = { 1, 2, 3, 4, 5, 0 }; +static const unsigned asn_MAP_value_from_canonical_216[] = { 5, 0, 1, 2, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_216[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_216 = { + sizeof(struct RICcontrolRequest_IEs__value), + offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), + offsetof(struct RICcontrolRequest_IEs__value, present), + sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_216, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_216, + asn_MAP_value_from_canonical_216, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_216 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_216, + 6, /* Elements count */ + &asn_SPC_value_specs_216 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_213[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_214, memb_id_constraint_213 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_215, memb_criticality_constraint_213 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_216, + select_RICcontrolRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_216, memb_value_constraint_213 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_213[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_213[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_213 = { + sizeof(struct RICcontrolRequest_IEs), + offsetof(struct RICcontrolRequest_IEs, _asn_ctx), + asn_MAP_RICcontrolRequest_IEs_tag2el_213, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { + "RICcontrolRequest-IEs", + "RICcontrolRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_IEs_tags_213, + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213[0]), /* 1 */ + asn_DEF_RICcontrolRequest_IEs_tags_213, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_213[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_IEs_213, + 3, /* Elements count */ + &asn_SPC_RICcontrolRequest_IEs_specs_213 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_220[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolStatus" + }, +}; +static const unsigned asn_MAP_value_to_canonical_220[] = { 1, 2, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_220[] = { 3, 0, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_220[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* RICcontrolStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_220 = { + sizeof(struct RICcontrolAcknowledge_IEs__value), + offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICcontrolAcknowledge_IEs__value, present), + sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_220, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_220, + asn_MAP_value_from_canonical_220, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_220 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_220, + 4, /* Elements count */ + &asn_SPC_value_specs_220 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_217[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_218, memb_id_constraint_217 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_219, memb_criticality_constraint_217 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_220, + select_RICcontrolAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_220, memb_value_constraint_217 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_217[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_217[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_217 = { + sizeof(struct RICcontrolAcknowledge_IEs), + offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_IEs_tag2el_217, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { + "RICcontrolAcknowledge-IEs", + "RICcontrolAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_IEs_tags_217, + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_IEs_tags_217, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_217[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_IEs_217, + 3, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_IEs_specs_217 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_224[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcause" + }, +}; +static const unsigned asn_MAP_value_to_canonical_224[] = { 1, 2, 0, 3 }; +static const unsigned asn_MAP_value_from_canonical_224[] = { 2, 0, 1, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_224[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* misc */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* ric */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_224 = { + sizeof(struct RICcontrolFailure_IEs__value), + offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), + offsetof(struct RICcontrolFailure_IEs__value, present), + sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_224, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_224, + asn_MAP_value_from_canonical_224, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_224 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_224, + 4, /* Elements count */ + &asn_SPC_value_specs_224 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_221[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_222, memb_id_constraint_221 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_223, memb_criticality_constraint_221 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_224, + select_RICcontrolFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_224, memb_value_constraint_221 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_221[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_221[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_221 = { + sizeof(struct RICcontrolFailure_IEs), + offsetof(struct RICcontrolFailure_IEs, _asn_ctx), + asn_MAP_RICcontrolFailure_IEs_tag2el_221, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { + "RICcontrolFailure-IEs", + "RICcontrolFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_IEs_tags_221, + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221[0]), /* 1 */ + asn_DEF_RICcontrolFailure_IEs_tags_221, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_221[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_IEs_221, + 3, /* Elements count */ + &asn_SPC_RICcontrolFailure_IEs_specs_221 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_228[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_228[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_228 = { + sizeof(struct RICserviceUpdate_IEs__value), + offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdate_IEs__value, present), + sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_228, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_228 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_228, + 2, /* Elements count */ + &asn_SPC_value_specs_228 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_225[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_226, memb_id_constraint_225 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_227, memb_criticality_constraint_225 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_228, + select_RICserviceUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_228, memb_value_constraint_225 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_225[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_225[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_225 = { + sizeof(struct RICserviceUpdate_IEs), + offsetof(struct RICserviceUpdate_IEs, _asn_ctx), + asn_MAP_RICserviceUpdate_IEs_tag2el_225, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { + "RICserviceUpdate-IEs", + "RICserviceUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_IEs_tags_225, + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225[0]), /* 1 */ + asn_DEF_RICserviceUpdate_IEs_tags_225, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_225[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_IEs_225, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdate_IEs_specs_225 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_232[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_232[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_232 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs__value), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), + sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_232, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_232 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_232, + 2, /* Elements count */ + &asn_SPC_value_specs_232 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_229[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_230, memb_id_constraint_229 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_231, memb_criticality_constraint_229 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_232, + select_RICserviceUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_232, memb_value_constraint_229 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_229[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_229 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs), + offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_229, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { + "RICserviceUpdateAcknowledge-IEs", + "RICserviceUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_229[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_IEs_229, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_229 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_236[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_236[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_236[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_236[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsIDcause-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_236 = { + sizeof(struct RICserviceUpdateFailure_IEs__value), + offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateFailure_IEs__value, present), + sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_236, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_236, + asn_MAP_value_from_canonical_236, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_236 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_236, + 3, /* Elements count */ + &asn_SPC_value_specs_236 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_233[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_234, memb_id_constraint_233 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_235, memb_criticality_constraint_233 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_236, + select_RICserviceUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_236, memb_value_constraint_233 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_233[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_233[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_233 = { + sizeof(struct RICserviceUpdateFailure_IEs), + offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_IEs_tag2el_233, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { + "RICserviceUpdateFailure-IEs", + "RICserviceUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_IEs_tags_233, + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_IEs_tags_233, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_233[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_IEs_233, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_IEs_specs_233 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_240[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_240[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_240 = { + sizeof(struct RICserviceQuery_IEs__value), + offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), + offsetof(struct RICserviceQuery_IEs__value, present), + sizeof(((struct RICserviceQuery_IEs__value *)0)->present), + asn_MAP_value_tag2el_240, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_240 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_240, + 1, /* Elements count */ + &asn_SPC_value_specs_240 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_237[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_238, memb_id_constraint_237 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceQuery_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_239, memb_criticality_constraint_237 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_240, + select_RICserviceQuery_IEs_value_type, + { 0, &asn_PER_memb_value_constr_240, memb_value_constraint_237 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_237[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_237[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_237 = { + sizeof(struct RICserviceQuery_IEs), + offsetof(struct RICserviceQuery_IEs, _asn_ctx), + asn_MAP_RICserviceQuery_IEs_tag2el_237, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { + "RICserviceQuery-IEs", + "RICserviceQuery-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_IEs_tags_237, + sizeof(asn_DEF_RICserviceQuery_IEs_tags_237) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_237[0]), /* 1 */ + asn_DEF_RICserviceQuery_IEs_tags_237, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_IEs_tags_237) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_237[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_IEs_237, + 3, /* Elements count */ + &asn_SPC_RICserviceQuery_IEs_specs_237 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_244[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_HistoryInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_HistoryInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-HistoryInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.MobilityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_MobilityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.Masked_IMEISV), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_Masked_IMEISV, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Masked-IMEISV" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_HistoryInformationFromTheUE), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_HistoryInformationFromTheUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-HistoryInformationFromTheUE" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextReferenceAtSeNB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSeNB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextReferenceAtSeNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextReferenceAtWT), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtWT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextReferenceAtWT" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.NRUESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRUESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRUESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.UE_ContextReferenceAtSgNB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextReferenceAtSgNB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextReferenceAtSgNB" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.AerialUEsubscriptionInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_AerialUEsubscriptionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AerialUEsubscriptionInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs__value, choice.Subscription_Based_UE_DifferentiationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Subscription_Based_UE_DifferentiationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Subscription-Based-UE-DifferentiationInfo" + }, +}; +static const unsigned asn_MAP_value_to_canonical_244[] = { 0, 15, 9, 10, 11, 7, 8, 20, 2, 3, 4, 5, 6, 12, 13, 14, 16, 17, 18, 19, 21, 1 }; +static const unsigned asn_MAP_value_from_canonical_244[] = { 0, 21, 8, 9, 10, 11, 12, 5, 6, 2, 3, 4, 13, 14, 15, 1, 16, 17, 18, 19, 7, 20 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_244[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 15, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 9, 0, 1 }, /* MobilityInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 10, -1, 0 }, /* Masked-IMEISV */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 11, 0, 0 }, /* UE-HistoryInformationFromTheUE */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 2 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 8, -1, 1 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 20, -2, 0 }, /* AerialUEsubscriptionInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 12 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 11 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 10 }, /* UE-ContextInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 9 }, /* UE-HistoryInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -4, 8 }, /* TraceActivation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -5, 7 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 13, -6, 6 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 14, -7, 5 }, /* UE-ContextReferenceAtSeNB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 16, -8, 4 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 17, -9, 3 }, /* UE-ContextReferenceAtWT */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 18, -10, 2 }, /* NRUESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 19, -11, 1 }, /* UE-ContextReferenceAtSgNB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 21, -12, 0 }, /* Subscription-Based-UE-DifferentiationInfo */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_244 = { + sizeof(struct HandoverRequest_IEs__value), + offsetof(struct HandoverRequest_IEs__value, _asn_ctx), + offsetof(struct HandoverRequest_IEs__value, present), + sizeof(((struct HandoverRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_244, + 25, /* Count of tags in the map */ + asn_MAP_value_to_canonical_244, + asn_MAP_value_from_canonical_244, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_244 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_244, + 22, /* Elements count */ + &asn_SPC_value_specs_244 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverRequest_IEs_241[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_242, memb_id_constraint_241 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_243, memb_criticality_constraint_241 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_244, + select_HandoverRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_244, memb_value_constraint_241 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequest_IEs_tags_241[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequest_IEs_tag2el_241[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRequest_IEs_specs_241 = { + sizeof(struct HandoverRequest_IEs), + offsetof(struct HandoverRequest_IEs, _asn_ctx), + asn_MAP_HandoverRequest_IEs_tag2el_241, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequest_IEs = { + "HandoverRequest-IEs", + "HandoverRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequest_IEs_tags_241, + sizeof(asn_DEF_HandoverRequest_IEs_tags_241) + /sizeof(asn_DEF_HandoverRequest_IEs_tags_241[0]), /* 1 */ + asn_DEF_HandoverRequest_IEs_tags_241, /* Same as above */ + sizeof(asn_DEF_HandoverRequest_IEs_tags_241) + /sizeof(asn_DEF_HandoverRequest_IEs_tags_241[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequest_IEs_241, + 3, /* Elements count */ + &asn_SPC_HandoverRequest_IEs_specs_241 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_248[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.TargeteNBtoSource_eNBTransparentContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TargeteNBtoSource_eNBTransparentContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TargeteNBtoSource-eNBTransparentContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.UE_ContextKeptIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UE_ContextKeptIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextKeptIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_248[] = { 0, 6, 3, 5, 1, 2, 4 }; +static const unsigned asn_MAP_value_from_canonical_248[] = { 0, 4, 5, 2, 6, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_248[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* TargeteNBtoSource-eNBTransparentContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* UE-ContextKeptIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* E-RABs-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_248 = { + sizeof(struct HandoverRequestAcknowledge_IEs__value), + offsetof(struct HandoverRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct HandoverRequestAcknowledge_IEs__value, present), + sizeof(((struct HandoverRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_248, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_248, + asn_MAP_value_from_canonical_248, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_248 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_248, + 7, /* Elements count */ + &asn_SPC_value_specs_248 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledge_IEs_245[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_246, memb_id_constraint_245 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_247, memb_criticality_constraint_245 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_248, + select_HandoverRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_248, memb_value_constraint_245 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverRequestAcknowledge_IEs_tags_245[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverRequestAcknowledge_IEs_tag2el_245[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledge_IEs_specs_245 = { + sizeof(struct HandoverRequestAcknowledge_IEs), + offsetof(struct HandoverRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_HandoverRequestAcknowledge_IEs_tag2el_245, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge_IEs = { + "HandoverRequestAcknowledge-IEs", + "HandoverRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverRequestAcknowledge_IEs_tags_245, + sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245) + /sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245[0]), /* 1 */ + asn_DEF_HandoverRequestAcknowledge_IEs_tags_245, /* Same as above */ + sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245) + /sizeof(asn_DEF_HandoverRequestAcknowledge_IEs_tags_245[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverRequestAcknowledge_IEs_245, + 3, /* Elements count */ + &asn_SPC_HandoverRequestAcknowledge_IEs_specs_245 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_252[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_252[] = { 0, 3, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_252[] = { 0, 3, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_252[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_252 = { + sizeof(struct HandoverPreparationFailure_IEs__value), + offsetof(struct HandoverPreparationFailure_IEs__value, _asn_ctx), + offsetof(struct HandoverPreparationFailure_IEs__value, present), + sizeof(((struct HandoverPreparationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_252, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_252, + asn_MAP_value_from_canonical_252, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_252 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_252, + 4, /* Elements count */ + &asn_SPC_value_specs_252 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverPreparationFailure_IEs_249[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_250, memb_id_constraint_249 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverPreparationFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_251, memb_criticality_constraint_249 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_252, + select_HandoverPreparationFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_252, memb_value_constraint_249 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverPreparationFailure_IEs_tags_249[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverPreparationFailure_IEs_tag2el_249[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailure_IEs_specs_249 = { + sizeof(struct HandoverPreparationFailure_IEs), + offsetof(struct HandoverPreparationFailure_IEs, _asn_ctx), + asn_MAP_HandoverPreparationFailure_IEs_tag2el_249, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure_IEs = { + "HandoverPreparationFailure-IEs", + "HandoverPreparationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverPreparationFailure_IEs_tags_249, + sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249) + /sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249[0]), /* 1 */ + asn_DEF_HandoverPreparationFailure_IEs_tags_249, /* Same as above */ + sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249) + /sizeof(asn_DEF_HandoverPreparationFailure_IEs_tags_249[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverPreparationFailure_IEs_249, + 3, /* Elements count */ + &asn_SPC_HandoverPreparationFailure_IEs_specs_249 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_256[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.HandoverReportType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_HandoverReportType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverReportType" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.TargetCellInUTRAN), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TargetCellInUTRAN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TargetCellInUTRAN" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.CRNTI), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CRNTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CRNTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.MobilityInformation), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_MobilityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.UE_RLF_Report_Container), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs__value, choice.UE_RLF_Report_Container_for_extended_bands), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container_for_extended_bands, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container-for-extended-bands" + }, +}; +static const unsigned asn_MAP_value_to_canonical_256[] = { 4, 5, 3, 6, 7, 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_256[] = { 5, 7, 6, 2, 0, 1, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_256[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 4, 0, 1 }, /* CRNTI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, -1, 0 }, /* MobilityInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 2 }, /* TargetCellInUTRAN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* UE-RLF-Report-Container */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* UE-RLF-Report-Container-for-extended-bands */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* HandoverReportType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* ECGI */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_256 = { + sizeof(struct HandoverReport_IEs__value), + offsetof(struct HandoverReport_IEs__value, _asn_ctx), + offsetof(struct HandoverReport_IEs__value, present), + sizeof(((struct HandoverReport_IEs__value *)0)->present), + asn_MAP_value_tag2el_256, + 11, /* Count of tags in the map */ + asn_MAP_value_to_canonical_256, + asn_MAP_value_from_canonical_256, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_256 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_256, + 8, /* Elements count */ + &asn_SPC_value_specs_256 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverReport_IEs_253[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_254, memb_id_constraint_253 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverReport_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_255, memb_criticality_constraint_253 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverReport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_256, + select_HandoverReport_IEs_value_type, + { 0, &asn_PER_memb_value_constr_256, memb_value_constraint_253 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverReport_IEs_tags_253[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverReport_IEs_tag2el_253[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverReport_IEs_specs_253 = { + sizeof(struct HandoverReport_IEs), + offsetof(struct HandoverReport_IEs, _asn_ctx), + asn_MAP_HandoverReport_IEs_tag2el_253, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverReport_IEs = { + "HandoverReport-IEs", + "HandoverReport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverReport_IEs_tags_253, + sizeof(asn_DEF_HandoverReport_IEs_tags_253) + /sizeof(asn_DEF_HandoverReport_IEs_tags_253[0]), /* 1 */ + asn_DEF_HandoverReport_IEs_tags_253, /* Same as above */ + sizeof(asn_DEF_HandoverReport_IEs_tags_253) + /sizeof(asn_DEF_HandoverReport_IEs_tags_253[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverReport_IEs_253, + 3, /* Elements count */ + &asn_SPC_HandoverReport_IEs_specs_253 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_260[] = { + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.E_RABs_SubjectToStatusTransfer_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToStatusTransfer_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToStatusTransfer-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_260[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_260[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_260[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* E-RABs-SubjectToStatusTransfer-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_260 = { + sizeof(struct SNStatusTransfer_IEs__value), + offsetof(struct SNStatusTransfer_IEs__value, _asn_ctx), + offsetof(struct SNStatusTransfer_IEs__value, present), + sizeof(((struct SNStatusTransfer_IEs__value *)0)->present), + asn_MAP_value_tag2el_260, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_260, + asn_MAP_value_from_canonical_260, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_260 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_260, + 4, /* Elements count */ + &asn_SPC_value_specs_260 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SNStatusTransfer_IEs_257[] = { + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_258, memb_id_constraint_257 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SNStatusTransfer_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_259, memb_criticality_constraint_257 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_260, + select_SNStatusTransfer_IEs_value_type, + { 0, &asn_PER_memb_value_constr_260, memb_value_constraint_257 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SNStatusTransfer_IEs_tags_257[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SNStatusTransfer_IEs_tag2el_257[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SNStatusTransfer_IEs_specs_257 = { + sizeof(struct SNStatusTransfer_IEs), + offsetof(struct SNStatusTransfer_IEs, _asn_ctx), + asn_MAP_SNStatusTransfer_IEs_tag2el_257, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer_IEs = { + "SNStatusTransfer-IEs", + "SNStatusTransfer-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SNStatusTransfer_IEs_tags_257, + sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257) + /sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257[0]), /* 1 */ + asn_DEF_SNStatusTransfer_IEs_tags_257, /* Same as above */ + sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257) + /sizeof(asn_DEF_SNStatusTransfer_IEs_tags_257[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SNStatusTransfer_IEs_257, + 3, /* Elements count */ + &asn_SPC_SNStatusTransfer_IEs_specs_257 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_264[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.SIPTOBearerDeactivationIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SIPTOBearerDeactivationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SIPTOBearerDeactivationIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_264[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_264[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_264[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 } /* SIPTOBearerDeactivationIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_264 = { + sizeof(struct UEContextRelease_IEs__value), + offsetof(struct UEContextRelease_IEs__value, _asn_ctx), + offsetof(struct UEContextRelease_IEs__value, present), + sizeof(((struct UEContextRelease_IEs__value *)0)->present), + asn_MAP_value_tag2el_264, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_264, + asn_MAP_value_from_canonical_264, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_264 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_264, + 4, /* Elements count */ + &asn_SPC_value_specs_264 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UEContextRelease_IEs_261[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_262, memb_id_constraint_261 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UEContextRelease_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_263, memb_criticality_constraint_261 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UEContextRelease_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_264, + select_UEContextRelease_IEs_value_type, + { 0, &asn_PER_memb_value_constr_264, memb_value_constraint_261 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEContextRelease_IEs_tags_261[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEContextRelease_IEs_tag2el_261[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEContextRelease_IEs_specs_261 = { + sizeof(struct UEContextRelease_IEs), + offsetof(struct UEContextRelease_IEs, _asn_ctx), + asn_MAP_UEContextRelease_IEs_tag2el_261, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEContextRelease_IEs = { + "UEContextRelease-IEs", + "UEContextRelease-IEs", + &asn_OP_SEQUENCE, + asn_DEF_UEContextRelease_IEs_tags_261, + sizeof(asn_DEF_UEContextRelease_IEs_tags_261) + /sizeof(asn_DEF_UEContextRelease_IEs_tags_261[0]), /* 1 */ + asn_DEF_UEContextRelease_IEs_tags_261, /* Same as above */ + sizeof(asn_DEF_UEContextRelease_IEs_tags_261) + /sizeof(asn_DEF_UEContextRelease_IEs_tags_261[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEContextRelease_IEs_261, + 3, /* Elements count */ + &asn_SPC_UEContextRelease_IEs_specs_261 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_268[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_268[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_268[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_268[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_268 = { + sizeof(struct HandoverCancel_IEs__value), + offsetof(struct HandoverCancel_IEs__value, _asn_ctx), + offsetof(struct HandoverCancel_IEs__value, present), + sizeof(((struct HandoverCancel_IEs__value *)0)->present), + asn_MAP_value_tag2el_268, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_268, + asn_MAP_value_from_canonical_268, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_268 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_268, + 3, /* Elements count */ + &asn_SPC_value_specs_268 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_HandoverCancel_IEs_265[] = { + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_266, memb_id_constraint_265 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_HandoverCancel_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_267, memb_criticality_constraint_265 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct HandoverCancel_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_268, + select_HandoverCancel_IEs_value_type, + { 0, &asn_PER_memb_value_constr_268, memb_value_constraint_265 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_HandoverCancel_IEs_tags_265[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_HandoverCancel_IEs_tag2el_265[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_HandoverCancel_IEs_specs_265 = { + sizeof(struct HandoverCancel_IEs), + offsetof(struct HandoverCancel_IEs, _asn_ctx), + asn_MAP_HandoverCancel_IEs_tag2el_265, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_HandoverCancel_IEs = { + "HandoverCancel-IEs", + "HandoverCancel-IEs", + &asn_OP_SEQUENCE, + asn_DEF_HandoverCancel_IEs_tags_265, + sizeof(asn_DEF_HandoverCancel_IEs_tags_265) + /sizeof(asn_DEF_HandoverCancel_IEs_tags_265[0]), /* 1 */ + asn_DEF_HandoverCancel_IEs_tags_265, /* Same as above */ + sizeof(asn_DEF_HandoverCancel_IEs_tags_265) + /sizeof(asn_DEF_HandoverCancel_IEs_tags_265[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_HandoverCancel_IEs_265, + 3, /* Elements count */ + &asn_SPC_HandoverCancel_IEs_specs_265 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_272[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_272[] = { 0, 3, 4, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_272[] = { 0, 4, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_272[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_272 = { + sizeof(struct ErrorIndication_IEs__value), + offsetof(struct ErrorIndication_IEs__value, _asn_ctx), + offsetof(struct ErrorIndication_IEs__value, present), + sizeof(((struct ErrorIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_272, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_272, + asn_MAP_value_from_canonical_272, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_272 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_272, + 5, /* Elements count */ + &asn_SPC_value_specs_272 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_269[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_270, memb_id_constraint_269 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ErrorIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_271, memb_criticality_constraint_269 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_272, + select_ErrorIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_272, memb_value_constraint_269 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_269[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_269[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_269 = { + sizeof(struct ErrorIndication_IEs), + offsetof(struct ErrorIndication_IEs, _asn_ctx), + asn_MAP_ErrorIndication_IEs_tag2el_269, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { + "ErrorIndication-IEs", + "ErrorIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_IEs_tags_269, + sizeof(asn_DEF_ErrorIndication_IEs_tags_269) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_269[0]), /* 1 */ + asn_DEF_ErrorIndication_IEs_tags_269, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_IEs_tags_269) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_269[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_IEs_269, + 3, /* Elements count */ + &asn_SPC_ErrorIndication_IEs_specs_269 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_276[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_276[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_276 = { + sizeof(struct ResetRequest_IEs__value), + offsetof(struct ResetRequest_IEs__value, _asn_ctx), + offsetof(struct ResetRequest_IEs__value, present), + sizeof(((struct ResetRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_276, + 4, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_276 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_276, + 1, /* Elements count */ + &asn_SPC_value_specs_276 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetRequest_IEs_273[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_274, memb_id_constraint_273 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_275, memb_criticality_constraint_273 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_276, + select_ResetRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_276, memb_value_constraint_273 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_IEs_tags_273[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_IEs_tag2el_273[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_IEs_specs_273 = { + sizeof(struct ResetRequest_IEs), + offsetof(struct ResetRequest_IEs, _asn_ctx), + asn_MAP_ResetRequest_IEs_tag2el_273, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest_IEs = { + "ResetRequest-IEs", + "ResetRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_IEs_tags_273, + sizeof(asn_DEF_ResetRequest_IEs_tags_273) + /sizeof(asn_DEF_ResetRequest_IEs_tags_273[0]), /* 1 */ + asn_DEF_ResetRequest_IEs_tags_273, /* Same as above */ + sizeof(asn_DEF_ResetRequest_IEs_tags_273) + /sizeof(asn_DEF_ResetRequest_IEs_tags_273[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequest_IEs_273, + 3, /* Elements count */ + &asn_SPC_ResetRequest_IEs_specs_273 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_280[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_280[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_280 = { + sizeof(struct ResetResponse_IEs__value), + offsetof(struct ResetResponse_IEs__value, _asn_ctx), + offsetof(struct ResetResponse_IEs__value, present), + sizeof(((struct ResetResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_280, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_280 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_280, + 1, /* Elements count */ + &asn_SPC_value_specs_280 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetResponse_IEs_277[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_278, memb_id_constraint_277 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_279, memb_criticality_constraint_277 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_280, + select_ResetResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_280, memb_value_constraint_277 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_IEs_tags_277[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_IEs_tag2el_277[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_IEs_specs_277 = { + sizeof(struct ResetResponse_IEs), + offsetof(struct ResetResponse_IEs, _asn_ctx), + asn_MAP_ResetResponse_IEs_tag2el_277, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse_IEs = { + "ResetResponse-IEs", + "ResetResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_IEs_tags_277, + sizeof(asn_DEF_ResetResponse_IEs_tags_277) + /sizeof(asn_DEF_ResetResponse_IEs_tags_277[0]), /* 1 */ + asn_DEF_ResetResponse_IEs_tags_277, /* Same as above */ + sizeof(asn_DEF_ResetResponse_IEs_tags_277) + /sizeof(asn_DEF_ResetResponse_IEs_tags_277[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponse_IEs_277, + 3, /* Elements count */ + &asn_SPC_ResetResponse_IEs_specs_277 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_284[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.ServedCells), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCells" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.GUGroupIDList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUGroupIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUGroupIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_284[] = { 3, 0, 1, 2 }; +static const unsigned asn_MAP_value_from_canonical_284[] = { 1, 2, 3, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_284[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* ServedCells */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* GUGroupIDList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_284 = { + sizeof(struct X2SetupRequest_IEs__value), + offsetof(struct X2SetupRequest_IEs__value, _asn_ctx), + offsetof(struct X2SetupRequest_IEs__value, present), + sizeof(((struct X2SetupRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_284, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_284, + asn_MAP_value_from_canonical_284, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_284 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_284, + 4, /* Elements count */ + &asn_SPC_value_specs_284 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2SetupRequest_IEs_281[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_282, memb_id_constraint_281 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2SetupRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_283, memb_criticality_constraint_281 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_284, + select_X2SetupRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_284, memb_value_constraint_281 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupRequest_IEs_tags_281[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupRequest_IEs_tag2el_281[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_IEs_specs_281 = { + sizeof(struct X2SetupRequest_IEs), + offsetof(struct X2SetupRequest_IEs, _asn_ctx), + asn_MAP_X2SetupRequest_IEs_tag2el_281, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupRequest_IEs = { + "X2SetupRequest-IEs", + "X2SetupRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupRequest_IEs_tags_281, + sizeof(asn_DEF_X2SetupRequest_IEs_tags_281) + /sizeof(asn_DEF_X2SetupRequest_IEs_tags_281[0]), /* 1 */ + asn_DEF_X2SetupRequest_IEs_tags_281, /* Same as above */ + sizeof(asn_DEF_X2SetupRequest_IEs_tags_281) + /sizeof(asn_DEF_X2SetupRequest_IEs_tags_281[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupRequest_IEs_281, + 3, /* Elements count */ + &asn_SPC_X2SetupRequest_IEs_specs_281 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_288[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.ServedCells), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCells" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.GUGroupIDList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUGroupIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUGroupIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs__value, choice.LHN_ID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_LHN_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "LHN-ID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_288[] = { 4, 0, 1, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_288[] = { 1, 2, 3, 4, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_288[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* LHN-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 3 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 2 }, /* ServedCells */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 1 }, /* GUGroupIDList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_288 = { + sizeof(struct X2SetupResponse_IEs__value), + offsetof(struct X2SetupResponse_IEs__value, _asn_ctx), + offsetof(struct X2SetupResponse_IEs__value, present), + sizeof(((struct X2SetupResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_288, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_288, + asn_MAP_value_from_canonical_288, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_288 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_288, + 5, /* Elements count */ + &asn_SPC_value_specs_288 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2SetupResponse_IEs_285[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_286, memb_id_constraint_285 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2SetupResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_287, memb_criticality_constraint_285 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_288, + select_X2SetupResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_288, memb_value_constraint_285 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupResponse_IEs_tags_285[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupResponse_IEs_tag2el_285[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_IEs_specs_285 = { + sizeof(struct X2SetupResponse_IEs), + offsetof(struct X2SetupResponse_IEs, _asn_ctx), + asn_MAP_X2SetupResponse_IEs_tag2el_285, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupResponse_IEs = { + "X2SetupResponse-IEs", + "X2SetupResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupResponse_IEs_tags_285, + sizeof(asn_DEF_X2SetupResponse_IEs_tags_285) + /sizeof(asn_DEF_X2SetupResponse_IEs_tags_285[0]), /* 1 */ + asn_DEF_X2SetupResponse_IEs_tags_285, /* Same as above */ + sizeof(asn_DEF_X2SetupResponse_IEs_tags_285) + /sizeof(asn_DEF_X2SetupResponse_IEs_tags_285[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupResponse_IEs_285, + 3, /* Elements count */ + &asn_SPC_X2SetupResponse_IEs_specs_285 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_292[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_292[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_292[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_292[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_292 = { + sizeof(struct X2SetupFailure_IEs__value), + offsetof(struct X2SetupFailure_IEs__value, _asn_ctx), + offsetof(struct X2SetupFailure_IEs__value, present), + sizeof(((struct X2SetupFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_292, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_292, + asn_MAP_value_from_canonical_292, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_292 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_292, + 3, /* Elements count */ + &asn_SPC_value_specs_292 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2SetupFailure_IEs_289[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_290, memb_id_constraint_289 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2SetupFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_291, memb_criticality_constraint_289 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_292, + select_X2SetupFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_292, memb_value_constraint_289 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupFailure_IEs_tags_289[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupFailure_IEs_tag2el_289[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_IEs_specs_289 = { + sizeof(struct X2SetupFailure_IEs), + offsetof(struct X2SetupFailure_IEs, _asn_ctx), + asn_MAP_X2SetupFailure_IEs_tag2el_289, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupFailure_IEs = { + "X2SetupFailure-IEs", + "X2SetupFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupFailure_IEs_tags_289, + sizeof(asn_DEF_X2SetupFailure_IEs_tags_289) + /sizeof(asn_DEF_X2SetupFailure_IEs_tags_289[0]), /* 1 */ + asn_DEF_X2SetupFailure_IEs_tags_289, /* Same as above */ + sizeof(asn_DEF_X2SetupFailure_IEs_tags_289) + /sizeof(asn_DEF_X2SetupFailure_IEs_tags_289[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupFailure_IEs_289, + 3, /* Elements count */ + &asn_SPC_X2SetupFailure_IEs_specs_289 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_296[] = { + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs__value, choice.CellInformation_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellInformation_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellInformation-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_296[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CellInformation-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_296 = { + sizeof(struct LoadInformation_IEs__value), + offsetof(struct LoadInformation_IEs__value, _asn_ctx), + offsetof(struct LoadInformation_IEs__value, present), + sizeof(((struct LoadInformation_IEs__value *)0)->present), + asn_MAP_value_tag2el_296, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_296 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_296, + 1, /* Elements count */ + &asn_SPC_value_specs_296 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_LoadInformation_IEs_293[] = { + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_294, memb_id_constraint_293 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_LoadInformation_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_295, memb_criticality_constraint_293 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct LoadInformation_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_296, + select_LoadInformation_IEs_value_type, + { 0, &asn_PER_memb_value_constr_296, memb_value_constraint_293 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_LoadInformation_IEs_tags_293[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_LoadInformation_IEs_tag2el_293[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_IEs_specs_293 = { + sizeof(struct LoadInformation_IEs), + offsetof(struct LoadInformation_IEs, _asn_ctx), + asn_MAP_LoadInformation_IEs_tag2el_293, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_LoadInformation_IEs = { + "LoadInformation-IEs", + "LoadInformation-IEs", + &asn_OP_SEQUENCE, + asn_DEF_LoadInformation_IEs_tags_293, + sizeof(asn_DEF_LoadInformation_IEs_tags_293) + /sizeof(asn_DEF_LoadInformation_IEs_tags_293[0]), /* 1 */ + asn_DEF_LoadInformation_IEs_tags_293, /* Same as above */ + sizeof(asn_DEF_LoadInformation_IEs_tags_293) + /sizeof(asn_DEF_LoadInformation_IEs_tags_293[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_LoadInformation_IEs_293, + 3, /* Elements count */ + &asn_SPC_LoadInformation_IEs_specs_293 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_300[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.ServedCells), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCells, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCells" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.ServedCellsToModify), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToModify, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCellsToModify" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.Old_ECGIs), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Old_ECGIs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Old-ECGIs" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.GUGroupIDList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUGroupIDList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUGroupIDList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs__value, choice.CoverageModificationList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CoverageModificationList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CoverageModificationList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_300[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* ServedCells */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* ServedCellsToModify */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* Old-ECGIs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 1 }, /* GUGroupIDList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 0 } /* CoverageModificationList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_300 = { + sizeof(struct ENBConfigurationUpdate_IEs__value), + offsetof(struct ENBConfigurationUpdate_IEs__value, _asn_ctx), + offsetof(struct ENBConfigurationUpdate_IEs__value, present), + sizeof(((struct ENBConfigurationUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_300, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_300 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_300, + 5, /* Elements count */ + &asn_SPC_value_specs_300 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_IEs_297[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_298, memb_id_constraint_297 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENBConfigurationUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_299, memb_criticality_constraint_297 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_300, + select_ENBConfigurationUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_300, memb_value_constraint_297 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdate_IEs_tags_297[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdate_IEs_tag2el_297[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_IEs_specs_297 = { + sizeof(struct ENBConfigurationUpdate_IEs), + offsetof(struct ENBConfigurationUpdate_IEs, _asn_ctx), + asn_MAP_ENBConfigurationUpdate_IEs_tag2el_297, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate_IEs = { + "ENBConfigurationUpdate-IEs", + "ENBConfigurationUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdate_IEs_tags_297, + sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297) + /sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdate_IEs_tags_297, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297) + /sizeof(asn_DEF_ENBConfigurationUpdate_IEs_tags_297[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdate_IEs_297, + 3, /* Elements count */ + &asn_SPC_ENBConfigurationUpdate_IEs_specs_297 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_304[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_304[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_304 = { + sizeof(struct ENBConfigurationUpdateAcknowledge_IEs__value), + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs__value, present), + sizeof(((struct ENBConfigurationUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_304, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_304 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_304, + 1, /* Elements count */ + &asn_SPC_value_specs_304 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_301[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_302, memb_id_constraint_301 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENBConfigurationUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_303, memb_criticality_constraint_301 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_304, + select_ENBConfigurationUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_304, memb_value_constraint_301 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateAcknowledge_IEs_tag2el_301[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_301 = { + sizeof(struct ENBConfigurationUpdateAcknowledge_IEs), + offsetof(struct ENBConfigurationUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_ENBConfigurationUpdateAcknowledge_IEs_tag2el_301, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs = { + "ENBConfigurationUpdateAcknowledge-IEs", + "ENBConfigurationUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301, + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301) + /sizeof(asn_DEF_ENBConfigurationUpdateAcknowledge_IEs_tags_301[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_301, + 3, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_301 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_308[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_308[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_308[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_308[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_308 = { + sizeof(struct ENBConfigurationUpdateFailure_IEs__value), + offsetof(struct ENBConfigurationUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct ENBConfigurationUpdateFailure_IEs__value, present), + sizeof(((struct ENBConfigurationUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_308, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_308, + asn_MAP_value_from_canonical_308, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_308 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_308, + 3, /* Elements count */ + &asn_SPC_value_specs_308 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_IEs_305[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_306, memb_id_constraint_305 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENBConfigurationUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_307, memb_criticality_constraint_305 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENBConfigurationUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_308, + select_ENBConfigurationUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_308, memb_value_constraint_305 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENBConfigurationUpdateFailure_IEs_tag2el_305[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_305 = { + sizeof(struct ENBConfigurationUpdateFailure_IEs), + offsetof(struct ENBConfigurationUpdateFailure_IEs, _asn_ctx), + asn_MAP_ENBConfigurationUpdateFailure_IEs_tag2el_305, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure_IEs = { + "ENBConfigurationUpdateFailure-IEs", + "ENBConfigurationUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305, + sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305[0]), /* 1 */ + asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305, /* Same as above */ + sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305) + /sizeof(asn_DEF_ENBConfigurationUpdateFailure_IEs_tags_305[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENBConfigurationUpdateFailure_IEs_305, + 3, /* Elements count */ + &asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_305 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_312[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.Registration_Request), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Registration_Request, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Registration-Request" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportCharacteristics), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ReportCharacteristics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportCharacteristics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.CellToReport_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellToReport_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellToReport-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportingPeriodicity), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ReportingPeriodicity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportingPeriodicity" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.PartialSuccessIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PartialSuccessIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PartialSuccessIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportingPeriodicityRSRPMR), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ReportingPeriodicityRSRPMR, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportingPeriodicityRSRPMR" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs__value, choice.ReportingPeriodicityCSIR), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_ReportingPeriodicityCSIR, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ReportingPeriodicityCSIR" + }, +}; +static const unsigned asn_MAP_value_to_canonical_312[] = { 0, 2, 1, 4, 5, 6, 7, 3 }; +static const unsigned asn_MAP_value_from_canonical_312[] = { 0, 2, 1, 7, 3, 4, 5, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_312[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* ReportCharacteristics */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 4 }, /* Registration-Request */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, -1, 3 }, /* ReportingPeriodicity */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -2, 2 }, /* PartialSuccessIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -3, 1 }, /* ReportingPeriodicityRSRPMR */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, -4, 0 }, /* ReportingPeriodicityCSIR */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* CellToReport-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_312 = { + sizeof(struct ResourceStatusRequest_IEs__value), + offsetof(struct ResourceStatusRequest_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusRequest_IEs__value, present), + sizeof(((struct ResourceStatusRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_312, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_312, + asn_MAP_value_from_canonical_312, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_312 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_312, + 8, /* Elements count */ + &asn_SPC_value_specs_312 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusRequest_IEs_309[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_310, memb_id_constraint_309 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_311, memb_criticality_constraint_309 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_312, + select_ResourceStatusRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_312, memb_value_constraint_309 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusRequest_IEs_tags_309[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusRequest_IEs_tag2el_309[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_IEs_specs_309 = { + sizeof(struct ResourceStatusRequest_IEs), + offsetof(struct ResourceStatusRequest_IEs, _asn_ctx), + asn_MAP_ResourceStatusRequest_IEs_tag2el_309, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest_IEs = { + "ResourceStatusRequest-IEs", + "ResourceStatusRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusRequest_IEs_tags_309, + sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309) + /sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309[0]), /* 1 */ + asn_DEF_ResourceStatusRequest_IEs_tags_309, /* Same as above */ + sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309) + /sizeof(asn_DEF_ResourceStatusRequest_IEs_tags_309[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusRequest_IEs_309, + 3, /* Elements count */ + &asn_SPC_ResourceStatusRequest_IEs_specs_309 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_316[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs__value, choice.MeasurementInitiationResult_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeasurementInitiationResult_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeasurementInitiationResult-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_316[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* MeasurementInitiationResult-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_316 = { + sizeof(struct ResourceStatusResponse_IEs__value), + offsetof(struct ResourceStatusResponse_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusResponse_IEs__value, present), + sizeof(((struct ResourceStatusResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_316, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_316 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_316, + 3, /* Elements count */ + &asn_SPC_value_specs_316 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusResponse_IEs_313[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_314, memb_id_constraint_313 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_315, memb_criticality_constraint_313 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_316, + select_ResourceStatusResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_316, memb_value_constraint_313 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusResponse_IEs_tags_313[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusResponse_IEs_tag2el_313[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_IEs_specs_313 = { + sizeof(struct ResourceStatusResponse_IEs), + offsetof(struct ResourceStatusResponse_IEs, _asn_ctx), + asn_MAP_ResourceStatusResponse_IEs_tag2el_313, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse_IEs = { + "ResourceStatusResponse-IEs", + "ResourceStatusResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusResponse_IEs_tags_313, + sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313) + /sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313[0]), /* 1 */ + asn_DEF_ResourceStatusResponse_IEs_tags_313, /* Same as above */ + sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313) + /sizeof(asn_DEF_ResourceStatusResponse_IEs_tags_313[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusResponse_IEs_313, + 3, /* Elements count */ + &asn_SPC_ResourceStatusResponse_IEs_specs_313 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_320[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs__value, choice.CompleteFailureCauseInformation_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CompleteFailureCauseInformation_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CompleteFailureCauseInformation-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_320[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_320[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_320[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CompleteFailureCauseInformation-List */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_320 = { + sizeof(struct ResourceStatusFailure_IEs__value), + offsetof(struct ResourceStatusFailure_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusFailure_IEs__value, present), + sizeof(((struct ResourceStatusFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_320, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_320, + asn_MAP_value_from_canonical_320, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_320 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_320, + 4, /* Elements count */ + &asn_SPC_value_specs_320 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusFailure_IEs_317[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_318, memb_id_constraint_317 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_319, memb_criticality_constraint_317 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_320, + select_ResourceStatusFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_320, memb_value_constraint_317 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusFailure_IEs_tags_317[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusFailure_IEs_tag2el_317[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_IEs_specs_317 = { + sizeof(struct ResourceStatusFailure_IEs), + offsetof(struct ResourceStatusFailure_IEs, _asn_ctx), + asn_MAP_ResourceStatusFailure_IEs_tag2el_317, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure_IEs = { + "ResourceStatusFailure-IEs", + "ResourceStatusFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusFailure_IEs_tags_317, + sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317) + /sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317[0]), /* 1 */ + asn_DEF_ResourceStatusFailure_IEs_tags_317, /* Same as above */ + sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317) + /sizeof(asn_DEF_ResourceStatusFailure_IEs_tags_317[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusFailure_IEs_317, + 3, /* Elements count */ + &asn_SPC_ResourceStatusFailure_IEs_specs_317 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_324[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs__value, choice.Measurement_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_Measurement_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Measurement-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs__value, choice.CellMeasurementResult_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CellMeasurementResult_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellMeasurementResult-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_324[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* Measurement-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* CellMeasurementResult-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_324 = { + sizeof(struct ResourceStatusUpdate_IEs__value), + offsetof(struct ResourceStatusUpdate_IEs__value, _asn_ctx), + offsetof(struct ResourceStatusUpdate_IEs__value, present), + sizeof(((struct ResourceStatusUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_324, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_324 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_324, + 2, /* Elements count */ + &asn_SPC_value_specs_324 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_IEs_321[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_322, memb_id_constraint_321 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResourceStatusUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_323, memb_criticality_constraint_321 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_324, + select_ResourceStatusUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_324, memb_value_constraint_321 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusUpdate_IEs_tags_321[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusUpdate_IEs_tag2el_321[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_IEs_specs_321 = { + sizeof(struct ResourceStatusUpdate_IEs), + offsetof(struct ResourceStatusUpdate_IEs, _asn_ctx), + asn_MAP_ResourceStatusUpdate_IEs_tag2el_321, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate_IEs = { + "ResourceStatusUpdate-IEs", + "ResourceStatusUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusUpdate_IEs_tags_321, + sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321) + /sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321[0]), /* 1 */ + asn_DEF_ResourceStatusUpdate_IEs_tags_321, /* Same as above */ + sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321) + /sizeof(asn_DEF_ResourceStatusUpdate_IEs_tags_321[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusUpdate_IEs_321, + 3, /* Elements count */ + &asn_SPC_ResourceStatusUpdate_IEs_specs_321 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_328[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs__value, choice.MobilityParametersInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityParametersInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityParametersInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_328[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 }, /* MobilityParametersInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_328 = { + sizeof(struct MobilityChangeRequest_IEs__value), + offsetof(struct MobilityChangeRequest_IEs__value, _asn_ctx), + offsetof(struct MobilityChangeRequest_IEs__value, present), + sizeof(((struct MobilityChangeRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_328, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_328 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_328, + 3, /* Elements count */ + &asn_SPC_value_specs_328 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MobilityChangeRequest_IEs_325[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_326, memb_id_constraint_325 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MobilityChangeRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_327, memb_criticality_constraint_325 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MobilityChangeRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_328, + select_MobilityChangeRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_328, memb_value_constraint_325 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeRequest_IEs_tags_325[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeRequest_IEs_tag2el_325[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeRequest_IEs_specs_325 = { + sizeof(struct MobilityChangeRequest_IEs), + offsetof(struct MobilityChangeRequest_IEs, _asn_ctx), + asn_MAP_MobilityChangeRequest_IEs_tag2el_325, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest_IEs = { + "MobilityChangeRequest-IEs", + "MobilityChangeRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeRequest_IEs_tags_325, + sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325) + /sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325[0]), /* 1 */ + asn_DEF_MobilityChangeRequest_IEs_tags_325, /* Same as above */ + sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325) + /sizeof(asn_DEF_MobilityChangeRequest_IEs_tags_325[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeRequest_IEs_325, + 3, /* Elements count */ + &asn_SPC_MobilityChangeRequest_IEs_specs_325 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_332[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_332[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_332 = { + sizeof(struct MobilityChangeAcknowledge_IEs__value), + offsetof(struct MobilityChangeAcknowledge_IEs__value, _asn_ctx), + offsetof(struct MobilityChangeAcknowledge_IEs__value, present), + sizeof(((struct MobilityChangeAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_332, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_332 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_332, + 2, /* Elements count */ + &asn_SPC_value_specs_332 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MobilityChangeAcknowledge_IEs_329[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_330, memb_id_constraint_329 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MobilityChangeAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_331, memb_criticality_constraint_329 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MobilityChangeAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_332, + select_MobilityChangeAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_332, memb_value_constraint_329 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeAcknowledge_IEs_tags_329[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeAcknowledge_IEs_tag2el_329[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeAcknowledge_IEs_specs_329 = { + sizeof(struct MobilityChangeAcknowledge_IEs), + offsetof(struct MobilityChangeAcknowledge_IEs, _asn_ctx), + asn_MAP_MobilityChangeAcknowledge_IEs_tag2el_329, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge_IEs = { + "MobilityChangeAcknowledge-IEs", + "MobilityChangeAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeAcknowledge_IEs_tags_329, + sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329) + /sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329[0]), /* 1 */ + asn_DEF_MobilityChangeAcknowledge_IEs_tags_329, /* Same as above */ + sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329) + /sizeof(asn_DEF_MobilityChangeAcknowledge_IEs_tags_329[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeAcknowledge_IEs_329, + 3, /* Elements count */ + &asn_SPC_MobilityChangeAcknowledge_IEs_specs_329 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_336[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.MobilityParametersModificationRange), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MobilityParametersModificationRange, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MobilityParametersModificationRange" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_336[] = { 0, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_336[] = { 0, 3, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_336[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* ECGI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* MobilityParametersModificationRange */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_336 = { + sizeof(struct MobilityChangeFailure_IEs__value), + offsetof(struct MobilityChangeFailure_IEs__value, _asn_ctx), + offsetof(struct MobilityChangeFailure_IEs__value, present), + sizeof(((struct MobilityChangeFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_336, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_336, + asn_MAP_value_from_canonical_336, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_336 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_336, + 4, /* Elements count */ + &asn_SPC_value_specs_336 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_MobilityChangeFailure_IEs_333[] = { + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_334, memb_id_constraint_333 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_MobilityChangeFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_335, memb_criticality_constraint_333 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct MobilityChangeFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_336, + select_MobilityChangeFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_336, memb_value_constraint_333 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_MobilityChangeFailure_IEs_tags_333[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_MobilityChangeFailure_IEs_tag2el_333[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeFailure_IEs_specs_333 = { + sizeof(struct MobilityChangeFailure_IEs), + offsetof(struct MobilityChangeFailure_IEs, _asn_ctx), + asn_MAP_MobilityChangeFailure_IEs_tag2el_333, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure_IEs = { + "MobilityChangeFailure-IEs", + "MobilityChangeFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_MobilityChangeFailure_IEs_tags_333, + sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333) + /sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333[0]), /* 1 */ + asn_DEF_MobilityChangeFailure_IEs_tags_333, /* Same as above */ + sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333) + /sizeof(asn_DEF_MobilityChangeFailure_IEs_tags_333[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MobilityChangeFailure_IEs_333, + 3, /* Elements count */ + &asn_SPC_MobilityChangeFailure_IEs_specs_333 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_340[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.PCI), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.CRNTI), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CRNTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CRNTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.ShortMAC_I), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ShortMAC_I, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ShortMAC-I" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.UE_RLF_Report_Container), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.RRCConnSetupIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRCConnSetupIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRCConnSetupIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.RRCConnReestabIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRCConnReestabIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRCConnReestabIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs__value, choice.UE_RLF_Report_Container_for_extended_bands), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_UE_RLF_Report_Container_for_extended_bands, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-RLF-Report-Container-for-extended-bands" + }, +}; +static const unsigned asn_MAP_value_to_canonical_340[] = { 0, 2, 3, 4, 7, 5, 6, 1 }; +static const unsigned asn_MAP_value_from_canonical_340[] = { 0, 7, 1, 2, 3, 5, 6, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_340[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* PCI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 1 }, /* CRNTI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, -1, 0 }, /* ShortMAC-I */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 1 }, /* UE-RLF-Report-Container */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 0 }, /* UE-RLF-Report-Container-for-extended-bands */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 1 }, /* RRCConnSetupIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -1, 0 }, /* RRCConnReestabIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* ECGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_340 = { + sizeof(struct RLFIndication_IEs__value), + offsetof(struct RLFIndication_IEs__value, _asn_ctx), + offsetof(struct RLFIndication_IEs__value, present), + sizeof(((struct RLFIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_340, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_340, + asn_MAP_value_from_canonical_340, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_340 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_340, + 8, /* Elements count */ + &asn_SPC_value_specs_340 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RLFIndication_IEs_337[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_338, memb_id_constraint_337 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RLFIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_339, memb_criticality_constraint_337 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RLFIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_340, + select_RLFIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_340, memb_value_constraint_337 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RLFIndication_IEs_tags_337[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLFIndication_IEs_tag2el_337[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RLFIndication_IEs_specs_337 = { + sizeof(struct RLFIndication_IEs), + offsetof(struct RLFIndication_IEs, _asn_ctx), + asn_MAP_RLFIndication_IEs_tag2el_337, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLFIndication_IEs = { + "RLFIndication-IEs", + "RLFIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RLFIndication_IEs_tags_337, + sizeof(asn_DEF_RLFIndication_IEs_tags_337) + /sizeof(asn_DEF_RLFIndication_IEs_tags_337[0]), /* 1 */ + asn_DEF_RLFIndication_IEs_tags_337, /* Same as above */ + sizeof(asn_DEF_RLFIndication_IEs_tags_337) + /sizeof(asn_DEF_RLFIndication_IEs_tags_337[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLFIndication_IEs_337, + 3, /* Elements count */ + &asn_SPC_RLFIndication_IEs_specs_337 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_344[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs__value, choice.ServedCellsToActivate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedCellsToActivate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_344[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ServedCellsToActivate */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_344 = { + sizeof(struct CellActivationRequest_IEs__value), + offsetof(struct CellActivationRequest_IEs__value, _asn_ctx), + offsetof(struct CellActivationRequest_IEs__value, present), + sizeof(((struct CellActivationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_344, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_344 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_344, + 1, /* Elements count */ + &asn_SPC_value_specs_344 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellActivationRequest_IEs_341[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_342, memb_id_constraint_341 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellActivationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_343, memb_criticality_constraint_341 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellActivationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_344, + select_CellActivationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_344, memb_value_constraint_341 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationRequest_IEs_tags_341[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationRequest_IEs_tag2el_341[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellActivationRequest_IEs_specs_341 = { + sizeof(struct CellActivationRequest_IEs), + offsetof(struct CellActivationRequest_IEs, _asn_ctx), + asn_MAP_CellActivationRequest_IEs_tag2el_341, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationRequest_IEs = { + "CellActivationRequest-IEs", + "CellActivationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationRequest_IEs_tags_341, + sizeof(asn_DEF_CellActivationRequest_IEs_tags_341) + /sizeof(asn_DEF_CellActivationRequest_IEs_tags_341[0]), /* 1 */ + asn_DEF_CellActivationRequest_IEs_tags_341, /* Same as above */ + sizeof(asn_DEF_CellActivationRequest_IEs_tags_341) + /sizeof(asn_DEF_CellActivationRequest_IEs_tags_341[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationRequest_IEs_341, + 3, /* Elements count */ + &asn_SPC_CellActivationRequest_IEs_specs_341 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_348[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs__value, choice.ActivatedCellList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedCellList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivatedCellList" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_348[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ActivatedCellList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_348 = { + sizeof(struct CellActivationResponse_IEs__value), + offsetof(struct CellActivationResponse_IEs__value, _asn_ctx), + offsetof(struct CellActivationResponse_IEs__value, present), + sizeof(((struct CellActivationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_348, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_348 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_348, + 2, /* Elements count */ + &asn_SPC_value_specs_348 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellActivationResponse_IEs_345[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_346, memb_id_constraint_345 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellActivationResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_347, memb_criticality_constraint_345 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellActivationResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_348, + select_CellActivationResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_348, memb_value_constraint_345 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationResponse_IEs_tags_345[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationResponse_IEs_tag2el_345[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellActivationResponse_IEs_specs_345 = { + sizeof(struct CellActivationResponse_IEs), + offsetof(struct CellActivationResponse_IEs, _asn_ctx), + asn_MAP_CellActivationResponse_IEs_tag2el_345, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationResponse_IEs = { + "CellActivationResponse-IEs", + "CellActivationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationResponse_IEs_tags_345, + sizeof(asn_DEF_CellActivationResponse_IEs_tags_345) + /sizeof(asn_DEF_CellActivationResponse_IEs_tags_345[0]), /* 1 */ + asn_DEF_CellActivationResponse_IEs_tags_345, /* Same as above */ + sizeof(asn_DEF_CellActivationResponse_IEs_tags_345) + /sizeof(asn_DEF_CellActivationResponse_IEs_tags_345[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationResponse_IEs_345, + 3, /* Elements count */ + &asn_SPC_CellActivationResponse_IEs_specs_345 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_352[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_352[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_352[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_352[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_352 = { + sizeof(struct CellActivationFailure_IEs__value), + offsetof(struct CellActivationFailure_IEs__value, _asn_ctx), + offsetof(struct CellActivationFailure_IEs__value, present), + sizeof(((struct CellActivationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_352, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_352, + asn_MAP_value_from_canonical_352, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_352 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_352, + 2, /* Elements count */ + &asn_SPC_value_specs_352 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_CellActivationFailure_IEs_349[] = { + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_350, memb_id_constraint_349 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_CellActivationFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_351, memb_criticality_constraint_349 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct CellActivationFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_352, + select_CellActivationFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_352, memb_value_constraint_349 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_CellActivationFailure_IEs_tags_349[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CellActivationFailure_IEs_tag2el_349[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CellActivationFailure_IEs_specs_349 = { + sizeof(struct CellActivationFailure_IEs), + offsetof(struct CellActivationFailure_IEs, _asn_ctx), + asn_MAP_CellActivationFailure_IEs_tag2el_349, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CellActivationFailure_IEs = { + "CellActivationFailure-IEs", + "CellActivationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_CellActivationFailure_IEs_tags_349, + sizeof(asn_DEF_CellActivationFailure_IEs_tags_349) + /sizeof(asn_DEF_CellActivationFailure_IEs_tags_349[0]), /* 1 */ + asn_DEF_CellActivationFailure_IEs_tags_349, /* Same as above */ + sizeof(asn_DEF_CellActivationFailure_IEs_tags_349) + /sizeof(asn_DEF_CellActivationFailure_IEs_tags_349[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellActivationFailure_IEs_349, + 3, /* Elements count */ + &asn_SPC_CellActivationFailure_IEs_specs_349 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_356[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_356[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_356 = { + sizeof(struct X2Release_IEs__value), + offsetof(struct X2Release_IEs__value, _asn_ctx), + offsetof(struct X2Release_IEs__value, present), + sizeof(((struct X2Release_IEs__value *)0)->present), + asn_MAP_value_tag2el_356, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_356 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_356, + 1, /* Elements count */ + &asn_SPC_value_specs_356 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2Release_IEs_353[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_354, memb_id_constraint_353 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2Release_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_355, memb_criticality_constraint_353 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2Release_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_356, + select_X2Release_IEs_value_type, + { 0, &asn_PER_memb_value_constr_356, memb_value_constraint_353 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2Release_IEs_tags_353[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2Release_IEs_tag2el_353[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2Release_IEs_specs_353 = { + sizeof(struct X2Release_IEs), + offsetof(struct X2Release_IEs, _asn_ctx), + asn_MAP_X2Release_IEs_tag2el_353, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2Release_IEs = { + "X2Release-IEs", + "X2Release-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2Release_IEs_tags_353, + sizeof(asn_DEF_X2Release_IEs_tags_353) + /sizeof(asn_DEF_X2Release_IEs_tags_353[0]), /* 1 */ + asn_DEF_X2Release_IEs_tags_353, /* Same as above */ + sizeof(asn_DEF_X2Release_IEs_tags_353) + /sizeof(asn_DEF_X2Release_IEs_tags_353[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2Release_IEs_353, + 3, /* Elements count */ + &asn_SPC_X2Release_IEs_specs_353 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_360[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs__value, choice.RNL_Header), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RNL_Header, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RNL-Header" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs__value, choice.X2AP_Message), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_X2AP_Message, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2AP-Message" + }, +}; +static const unsigned asn_MAP_value_to_canonical_360[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_360[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_360[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* X2AP-Message */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RNL-Header */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_360 = { + sizeof(struct X2APMessageTransfer_IEs__value), + offsetof(struct X2APMessageTransfer_IEs__value, _asn_ctx), + offsetof(struct X2APMessageTransfer_IEs__value, present), + sizeof(((struct X2APMessageTransfer_IEs__value *)0)->present), + asn_MAP_value_tag2el_360, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_360, + asn_MAP_value_from_canonical_360, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_360 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_360, + 2, /* Elements count */ + &asn_SPC_value_specs_360 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2APMessageTransfer_IEs_357[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_358, memb_id_constraint_357 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2APMessageTransfer_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_359, memb_criticality_constraint_357 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_360, + select_X2APMessageTransfer_IEs_value_type, + { 0, &asn_PER_memb_value_constr_360, memb_value_constraint_357 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2APMessageTransfer_IEs_tags_357[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2APMessageTransfer_IEs_tag2el_357[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2APMessageTransfer_IEs_specs_357 = { + sizeof(struct X2APMessageTransfer_IEs), + offsetof(struct X2APMessageTransfer_IEs, _asn_ctx), + asn_MAP_X2APMessageTransfer_IEs_tag2el_357, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer_IEs = { + "X2APMessageTransfer-IEs", + "X2APMessageTransfer-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2APMessageTransfer_IEs_tags_357, + sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357) + /sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357[0]), /* 1 */ + asn_DEF_X2APMessageTransfer_IEs_tags_357, /* Same as above */ + sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357) + /sizeof(asn_DEF_X2APMessageTransfer_IEs_tags_357[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2APMessageTransfer_IEs_357, + 3, /* Elements count */ + &asn_SPC_X2APMessageTransfer_IEs_specs_357 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_364[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.SeNBSecurityKey), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_SeNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBSecurityKey" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UEAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitRate" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.E_RABs_ToBeAdded_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, +}; +static const unsigned asn_MAP_value_to_canonical_364[] = { 0, 8, 2, 4, 6, 7, 1, 3, 5, 9 }; +static const unsigned asn_MAP_value_from_canonical_364[] = { 0, 6, 2, 7, 3, 8, 4, 5, 1, 9 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_364[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* SeNBSecurityKey */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 0 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* UESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* UEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 1 }, /* E-RABs-ToBeAdded-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -3, 0 } /* ExpectedUEBehaviour */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_364 = { + sizeof(struct SeNBAdditionRequest_IEs__value), + offsetof(struct SeNBAdditionRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBAdditionRequest_IEs__value, present), + sizeof(((struct SeNBAdditionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_364, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_364, + asn_MAP_value_from_canonical_364, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_364 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_364, + 10, /* Elements count */ + &asn_SPC_value_specs_364 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBAdditionRequest_IEs_361[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_362, memb_id_constraint_361 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBAdditionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_363, memb_criticality_constraint_361 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_364, + select_SeNBAdditionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_364, memb_value_constraint_361 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequest_IEs_tags_361[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequest_IEs_tag2el_361[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequest_IEs_specs_361 = { + sizeof(struct SeNBAdditionRequest_IEs), + offsetof(struct SeNBAdditionRequest_IEs, _asn_ctx), + asn_MAP_SeNBAdditionRequest_IEs_tag2el_361, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest_IEs = { + "SeNBAdditionRequest-IEs", + "SeNBAdditionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequest_IEs_tags_361, + sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361) + /sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361[0]), /* 1 */ + asn_DEF_SeNBAdditionRequest_IEs_tags_361, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361) + /sizeof(asn_DEF_SeNBAdditionRequest_IEs_tags_361[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequest_IEs_361, + 3, /* Elements count */ + &asn_SPC_SeNBAdditionRequest_IEs_specs_361 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_368[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.SeNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SeNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.TransportLayerAddress), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TransportLayerAddress" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, choice.TunnelInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TunnelInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TunnelInformation" + }, +}; +static const unsigned asn_MAP_value_to_canonical_368[] = { 0, 6, 5, 3, 1, 2, 4, 7 }; +static const unsigned asn_MAP_value_from_canonical_368[] = { 0, 4, 5, 3, 6, 2, 1, 7 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_368[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, 0, 0 }, /* TransportLayerAddress */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* SeNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 3 }, /* E-RABs-Admitted-ToBeAdded-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 2 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -3, 0 } /* TunnelInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_368 = { + sizeof(struct SeNBAdditionRequestAcknowledge_IEs__value), + offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SeNBAdditionRequestAcknowledge_IEs__value, present), + sizeof(((struct SeNBAdditionRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_368, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_368, + asn_MAP_value_from_canonical_368, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_368 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_368, + 8, /* Elements count */ + &asn_SPC_value_specs_368 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBAdditionRequestAcknowledge_IEs_365[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_366, memb_id_constraint_365 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBAdditionRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_367, memb_criticality_constraint_365 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_368, + select_SeNBAdditionRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_368, memb_value_constraint_365 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestAcknowledge_IEs_tag2el_365[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestAcknowledge_IEs_specs_365 = { + sizeof(struct SeNBAdditionRequestAcknowledge_IEs), + offsetof(struct SeNBAdditionRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SeNBAdditionRequestAcknowledge_IEs_tag2el_365, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge_IEs = { + "SeNBAdditionRequestAcknowledge-IEs", + "SeNBAdditionRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365, + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_IEs_tags_365[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestAcknowledge_IEs_365, + 3, /* Elements count */ + &asn_SPC_SeNBAdditionRequestAcknowledge_IEs_specs_365 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_372[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_372[] = { 0, 3, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_372[] = { 0, 3, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_372[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_372 = { + sizeof(struct SeNBAdditionRequestReject_IEs__value), + offsetof(struct SeNBAdditionRequestReject_IEs__value, _asn_ctx), + offsetof(struct SeNBAdditionRequestReject_IEs__value, present), + sizeof(((struct SeNBAdditionRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_372, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_372, + asn_MAP_value_from_canonical_372, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_372 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_372, + 4, /* Elements count */ + &asn_SPC_value_specs_372 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBAdditionRequestReject_IEs_369[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_370, memb_id_constraint_369 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBAdditionRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_371, memb_criticality_constraint_369 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_372, + select_SeNBAdditionRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_372, memb_value_constraint_369 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestReject_IEs_tags_369[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestReject_IEs_tag2el_369[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestReject_IEs_specs_369 = { + sizeof(struct SeNBAdditionRequestReject_IEs), + offsetof(struct SeNBAdditionRequestReject_IEs, _asn_ctx), + asn_MAP_SeNBAdditionRequestReject_IEs_tag2el_369, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject_IEs = { + "SeNBAdditionRequestReject-IEs", + "SeNBAdditionRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestReject_IEs_tags_369, + sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369) + /sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestReject_IEs_tags_369, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369) + /sizeof(asn_DEF_SeNBAdditionRequestReject_IEs_tags_369[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestReject_IEs_369, + 3, /* Elements count */ + &asn_SPC_SeNBAdditionRequestReject_IEs_specs_369 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_376[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs__value, choice.ResponseInformationSeNBReconfComp), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ResponseInformationSeNBReconfComp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResponseInformationSeNBReconfComp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_376[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_376[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_376[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* success */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reject-by-MeNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_376 = { + sizeof(struct SeNBReconfigurationComplete_IEs__value), + offsetof(struct SeNBReconfigurationComplete_IEs__value, _asn_ctx), + offsetof(struct SeNBReconfigurationComplete_IEs__value, present), + sizeof(((struct SeNBReconfigurationComplete_IEs__value *)0)->present), + asn_MAP_value_tag2el_376, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_376, + asn_MAP_value_from_canonical_376, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_376 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_376, + 3, /* Elements count */ + &asn_SPC_value_specs_376 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_IEs_373[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_374, memb_id_constraint_373 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReconfigurationComplete_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_375, memb_criticality_constraint_373 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_376, + select_SeNBReconfigurationComplete_IEs_value_type, + { 0, &asn_PER_memb_value_constr_376, memb_value_constraint_373 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReconfigurationComplete_IEs_tags_373[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReconfigurationComplete_IEs_tag2el_373[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_IEs_specs_373 = { + sizeof(struct SeNBReconfigurationComplete_IEs), + offsetof(struct SeNBReconfigurationComplete_IEs, _asn_ctx), + asn_MAP_SeNBReconfigurationComplete_IEs_tag2el_373, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete_IEs = { + "SeNBReconfigurationComplete-IEs", + "SeNBReconfigurationComplete-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReconfigurationComplete_IEs_tags_373, + sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373) + /sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373[0]), /* 1 */ + asn_DEF_SeNBReconfigurationComplete_IEs_tags_373, /* Same as above */ + sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373) + /sizeof(asn_DEF_SeNBReconfigurationComplete_IEs_tags_373[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReconfigurationComplete_IEs_373, + 3, /* Elements count */ + &asn_SPC_SeNBReconfigurationComplete_IEs_specs_373 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_380[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.SCGChangeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SCGChangeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SCGChangeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.UE_ContextInformationSeNBModReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationSeNBModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformationSeNBModReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.CSGMembershipStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_CSGMembershipStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CSGMembershipStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_380[] = { 0, 7, 3, 5, 2, 6, 4, 1 }; +static const unsigned asn_MAP_value_from_canonical_380[] = { 0, 7, 4, 2, 6, 3, 5, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_380[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 7, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, -1, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 1 }, /* SCGChangeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 6, -1, 0 }, /* CSGMembershipStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* UE-ContextInformationSeNBModReq */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_380 = { + sizeof(struct SeNBModificationRequest_IEs__value), + offsetof(struct SeNBModificationRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequest_IEs__value, present), + sizeof(((struct SeNBModificationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_380, + 11, /* Count of tags in the map */ + asn_MAP_value_to_canonical_380, + asn_MAP_value_from_canonical_380, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_380 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_380, + 8, /* Elements count */ + &asn_SPC_value_specs_380 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequest_IEs_377[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_378, memb_id_constraint_377 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_379, memb_criticality_constraint_377 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_380, + select_SeNBModificationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_380, memb_value_constraint_377 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequest_IEs_tags_377[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequest_IEs_tag2el_377[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequest_IEs_specs_377 = { + sizeof(struct SeNBModificationRequest_IEs), + offsetof(struct SeNBModificationRequest_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequest_IEs_tag2el_377, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest_IEs = { + "SeNBModificationRequest-IEs", + "SeNBModificationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequest_IEs_tags_377, + sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377) + /sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377[0]), /* 1 */ + asn_DEF_SeNBModificationRequest_IEs_tags_377, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377) + /sizeof(asn_DEF_SeNBModificationRequest_IEs_tags_377[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequest_IEs_377, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequest_IEs_specs_377 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_384[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_ModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-ModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeModified_ModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_ModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-ModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeReleased_ModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-ModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.SeNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SeNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_384[] = { 0, 7, 5, 1, 2, 3, 4, 6 }; +static const unsigned asn_MAP_value_from_canonical_384[] = { 0, 3, 4, 5, 6, 2, 7, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_384[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 7, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 0 }, /* SeNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 4 }, /* E-RABs-Admitted-ToBeAdded-ModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 3 }, /* E-RABs-Admitted-ToBeModified-ModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 2 }, /* E-RABs-Admitted-ToBeReleased-ModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -3, 1 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -4, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_384 = { + sizeof(struct SeNBModificationRequestAcknowledge_IEs__value), + offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequestAcknowledge_IEs__value, present), + sizeof(((struct SeNBModificationRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_384, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_384, + asn_MAP_value_from_canonical_384, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_384 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_384, + 8, /* Elements count */ + &asn_SPC_value_specs_384 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequestAcknowledge_IEs_381[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_382, memb_id_constraint_381 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_383, memb_criticality_constraint_381 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_384, + select_SeNBModificationRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_384, memb_value_constraint_381 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestAcknowledge_IEs_tag2el_381[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestAcknowledge_IEs_specs_381 = { + sizeof(struct SeNBModificationRequestAcknowledge_IEs), + offsetof(struct SeNBModificationRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequestAcknowledge_IEs_tag2el_381, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge_IEs = { + "SeNBModificationRequestAcknowledge-IEs", + "SeNBModificationRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381, + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381[0]), /* 1 */ + asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_IEs_tags_381[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestAcknowledge_IEs_381, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequestAcknowledge_IEs_specs_381 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_388[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_388[] = { 0, 3, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_388[] = { 0, 3, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_388[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_388 = { + sizeof(struct SeNBModificationRequestReject_IEs__value), + offsetof(struct SeNBModificationRequestReject_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequestReject_IEs__value, present), + sizeof(((struct SeNBModificationRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_388, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_388, + asn_MAP_value_from_canonical_388, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_388 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_388, + 4, /* Elements count */ + &asn_SPC_value_specs_388 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequestReject_IEs_385[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_386, memb_id_constraint_385 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_387, memb_criticality_constraint_385 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_388, + select_SeNBModificationRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_388, memb_value_constraint_385 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestReject_IEs_tags_385[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestReject_IEs_tag2el_385[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestReject_IEs_specs_385 = { + sizeof(struct SeNBModificationRequestReject_IEs), + offsetof(struct SeNBModificationRequestReject_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequestReject_IEs_tag2el_385, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject_IEs = { + "SeNBModificationRequestReject-IEs", + "SeNBModificationRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestReject_IEs_tags_385, + sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385) + /sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385[0]), /* 1 */ + asn_DEF_SeNBModificationRequestReject_IEs_tags_385, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385) + /sizeof(asn_DEF_SeNBModificationRequestReject_IEs_tags_385[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestReject_IEs_385, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequestReject_IEs_specs_385 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_392[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.SCGChangeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SCGChangeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SCGChangeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.E_RABs_ToBeReleased_ModReqd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_ModReqd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-ModReqd" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.SeNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SeNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SeNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_392[] = { 0, 5, 4, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_392[] = { 0, 5, 3, 4, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_392[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* SeNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* SCGChangeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* E-RABs-ToBeReleased-ModReqd */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_392 = { + sizeof(struct SeNBModificationRequired_IEs__value), + offsetof(struct SeNBModificationRequired_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRequired_IEs__value, present), + sizeof(((struct SeNBModificationRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_392, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_392, + asn_MAP_value_from_canonical_392, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_392 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_392, + 6, /* Elements count */ + &asn_SPC_value_specs_392 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRequired_IEs_389[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_390, memb_id_constraint_389 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_391, memb_criticality_constraint_389 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_392, + select_SeNBModificationRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_392, memb_value_constraint_389 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequired_IEs_tags_389[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequired_IEs_tag2el_389[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequired_IEs_specs_389 = { + sizeof(struct SeNBModificationRequired_IEs), + offsetof(struct SeNBModificationRequired_IEs, _asn_ctx), + asn_MAP_SeNBModificationRequired_IEs_tag2el_389, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired_IEs = { + "SeNBModificationRequired-IEs", + "SeNBModificationRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequired_IEs_tags_389, + sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389) + /sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389[0]), /* 1 */ + asn_DEF_SeNBModificationRequired_IEs_tags_389, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389) + /sizeof(asn_DEF_SeNBModificationRequired_IEs_tags_389[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequired_IEs_389, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRequired_IEs_specs_389 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_396[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_396[] = { 0, 3, 1, 2 }; +static const unsigned asn_MAP_value_from_canonical_396[] = { 0, 2, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_396[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_396 = { + sizeof(struct SeNBModificationConfirm_IEs__value), + offsetof(struct SeNBModificationConfirm_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationConfirm_IEs__value, present), + sizeof(((struct SeNBModificationConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_396, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_396, + asn_MAP_value_from_canonical_396, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_396 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_396, + 4, /* Elements count */ + &asn_SPC_value_specs_396 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationConfirm_IEs_393[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_394, memb_id_constraint_393 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_395, memb_criticality_constraint_393 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_396, + select_SeNBModificationConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_396, memb_value_constraint_393 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationConfirm_IEs_tags_393[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationConfirm_IEs_tag2el_393[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationConfirm_IEs_specs_393 = { + sizeof(struct SeNBModificationConfirm_IEs), + offsetof(struct SeNBModificationConfirm_IEs, _asn_ctx), + asn_MAP_SeNBModificationConfirm_IEs_tag2el_393, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm_IEs = { + "SeNBModificationConfirm-IEs", + "SeNBModificationConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationConfirm_IEs_tags_393, + sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393) + /sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393[0]), /* 1 */ + asn_DEF_SeNBModificationConfirm_IEs_tags_393, /* Same as above */ + sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393) + /sizeof(asn_DEF_SeNBModificationConfirm_IEs_tags_393[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationConfirm_IEs_393, + 3, /* Elements count */ + &asn_SPC_SeNBModificationConfirm_IEs_specs_393 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_400[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.MeNBtoSeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_400[] = { 0, 4, 2, 3, 1 }; +static const unsigned asn_MAP_value_from_canonical_400[] = { 0, 4, 2, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_400[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 0 }, /* MeNBtoSeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_400 = { + sizeof(struct SeNBModificationRefuse_IEs__value), + offsetof(struct SeNBModificationRefuse_IEs__value, _asn_ctx), + offsetof(struct SeNBModificationRefuse_IEs__value, present), + sizeof(((struct SeNBModificationRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_400, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_400, + asn_MAP_value_from_canonical_400, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_400 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_400, + 5, /* Elements count */ + &asn_SPC_value_specs_400 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBModificationRefuse_IEs_397[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_398, memb_id_constraint_397 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBModificationRefuse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_399, memb_criticality_constraint_397 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_400, + select_SeNBModificationRefuse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_400, memb_value_constraint_397 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRefuse_IEs_tags_397[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRefuse_IEs_tag2el_397[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRefuse_IEs_specs_397 = { + sizeof(struct SeNBModificationRefuse_IEs), + offsetof(struct SeNBModificationRefuse_IEs, _asn_ctx), + asn_MAP_SeNBModificationRefuse_IEs_tag2el_397, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse_IEs = { + "SeNBModificationRefuse-IEs", + "SeNBModificationRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRefuse_IEs_tags_397, + sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397) + /sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397[0]), /* 1 */ + asn_DEF_SeNBModificationRefuse_IEs_tags_397, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397) + /sizeof(asn_DEF_SeNBModificationRefuse_IEs_tags_397[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRefuse_IEs_397, + 3, /* Elements count */ + &asn_SPC_SeNBModificationRefuse_IEs_specs_397 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_404[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.E_RABs_ToBeReleased_List_RelReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_List_RelReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-List-RelReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.UE_ContextKeptIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UE_ContextKeptIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextKeptIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs__value, choice.MakeBeforeBreakIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_MakeBeforeBreakIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MakeBeforeBreakIndicator" + }, +}; +static const unsigned asn_MAP_value_to_canonical_404[] = { 0, 4, 3, 5, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_404[] = { 0, 5, 4, 2, 1, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_404[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* UE-ContextKeptIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, -1, 0 }, /* MakeBeforeBreakIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* E-RABs-ToBeReleased-List-RelReq */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_404 = { + sizeof(struct SeNBReleaseRequest_IEs__value), + offsetof(struct SeNBReleaseRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBReleaseRequest_IEs__value, present), + sizeof(((struct SeNBReleaseRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_404, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_404, + asn_MAP_value_from_canonical_404, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_404 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_404, + 6, /* Elements count */ + &asn_SPC_value_specs_404 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReleaseRequest_IEs_401[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_402, memb_id_constraint_401 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReleaseRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_403, memb_criticality_constraint_401 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_404, + select_SeNBReleaseRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_404, memb_value_constraint_401 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequest_IEs_tags_401[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequest_IEs_tag2el_401[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequest_IEs_specs_401 = { + sizeof(struct SeNBReleaseRequest_IEs), + offsetof(struct SeNBReleaseRequest_IEs, _asn_ctx), + asn_MAP_SeNBReleaseRequest_IEs_tag2el_401, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest_IEs = { + "SeNBReleaseRequest-IEs", + "SeNBReleaseRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequest_IEs_tags_401, + sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401) + /sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401[0]), /* 1 */ + asn_DEF_SeNBReleaseRequest_IEs_tags_401, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401) + /sizeof(asn_DEF_SeNBReleaseRequest_IEs_tags_401[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequest_IEs_401, + 3, /* Elements count */ + &asn_SPC_SeNBReleaseRequest_IEs_specs_401 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_408[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_408[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_408[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_408[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_408 = { + sizeof(struct SeNBReleaseRequired_IEs__value), + offsetof(struct SeNBReleaseRequired_IEs__value, _asn_ctx), + offsetof(struct SeNBReleaseRequired_IEs__value, present), + sizeof(((struct SeNBReleaseRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_408, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_408, + asn_MAP_value_from_canonical_408, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_408 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_408, + 3, /* Elements count */ + &asn_SPC_value_specs_408 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReleaseRequired_IEs_405[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_406, memb_id_constraint_405 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReleaseRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_407, memb_criticality_constraint_405 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_408, + select_SeNBReleaseRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_408, memb_value_constraint_405 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequired_IEs_tags_405[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequired_IEs_tag2el_405[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequired_IEs_specs_405 = { + sizeof(struct SeNBReleaseRequired_IEs), + offsetof(struct SeNBReleaseRequired_IEs, _asn_ctx), + asn_MAP_SeNBReleaseRequired_IEs_tag2el_405, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired_IEs = { + "SeNBReleaseRequired-IEs", + "SeNBReleaseRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequired_IEs_tags_405, + sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405) + /sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405[0]), /* 1 */ + asn_DEF_SeNBReleaseRequired_IEs_tags_405, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405) + /sizeof(asn_DEF_SeNBReleaseRequired_IEs_tags_405[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequired_IEs_405, + 3, /* Elements count */ + &asn_SPC_SeNBReleaseRequired_IEs_specs_405 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_412[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.E_RABs_ToBeReleased_List_RelConf), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_List_RelConf, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-List-RelConf" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_412[] = { 0, 3, 1, 2 }; +static const unsigned asn_MAP_value_from_canonical_412[] = { 0, 2, 3, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_412[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 1 }, /* E-RABs-ToBeReleased-List-RelConf */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_412 = { + sizeof(struct SeNBReleaseConfirm_IEs__value), + offsetof(struct SeNBReleaseConfirm_IEs__value, _asn_ctx), + offsetof(struct SeNBReleaseConfirm_IEs__value, present), + sizeof(((struct SeNBReleaseConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_412, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_412, + asn_MAP_value_from_canonical_412, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_412 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_412, + 4, /* Elements count */ + &asn_SPC_value_specs_412 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBReleaseConfirm_IEs_409[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_410, memb_id_constraint_409 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBReleaseConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_411, memb_criticality_constraint_409 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_412, + select_SeNBReleaseConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_412, memb_value_constraint_409 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseConfirm_IEs_tags_409[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseConfirm_IEs_tag2el_409[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseConfirm_IEs_specs_409 = { + sizeof(struct SeNBReleaseConfirm_IEs), + offsetof(struct SeNBReleaseConfirm_IEs, _asn_ctx), + asn_MAP_SeNBReleaseConfirm_IEs_tag2el_409, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm_IEs = { + "SeNBReleaseConfirm-IEs", + "SeNBReleaseConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseConfirm_IEs_tags_409, + sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409) + /sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409[0]), /* 1 */ + asn_DEF_SeNBReleaseConfirm_IEs_tags_409, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409) + /sizeof(asn_DEF_SeNBReleaseConfirm_IEs_tags_409[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseConfirm_IEs_409, + 3, /* Elements count */ + &asn_SPC_SeNBReleaseConfirm_IEs_specs_409 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_416[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs__value, choice.E_RABs_SubjectToCounterCheck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToCounterCheck_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToCounterCheck-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_416[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_416[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_416[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* E-RABs-SubjectToCounterCheck-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_416 = { + sizeof(struct SeNBCounterCheckRequest_IEs__value), + offsetof(struct SeNBCounterCheckRequest_IEs__value, _asn_ctx), + offsetof(struct SeNBCounterCheckRequest_IEs__value, present), + sizeof(((struct SeNBCounterCheckRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_416, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_416, + asn_MAP_value_from_canonical_416, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_416 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_416, + 3, /* Elements count */ + &asn_SPC_value_specs_416 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SeNBCounterCheckRequest_IEs_413[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_414, memb_id_constraint_413 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SeNBCounterCheckRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_415, memb_criticality_constraint_413 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_416, + select_SeNBCounterCheckRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_416, memb_value_constraint_413 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBCounterCheckRequest_IEs_tags_413[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBCounterCheckRequest_IEs_tag2el_413[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SeNBCounterCheckRequest_IEs_specs_413 = { + sizeof(struct SeNBCounterCheckRequest_IEs), + offsetof(struct SeNBCounterCheckRequest_IEs, _asn_ctx), + asn_MAP_SeNBCounterCheckRequest_IEs_tag2el_413, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest_IEs = { + "SeNBCounterCheckRequest-IEs", + "SeNBCounterCheckRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SeNBCounterCheckRequest_IEs_tags_413, + sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413) + /sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413[0]), /* 1 */ + asn_DEF_SeNBCounterCheckRequest_IEs_tags_413, /* Same as above */ + sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413) + /sizeof(asn_DEF_SeNBCounterCheckRequest_IEs_tags_413[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBCounterCheckRequest_IEs_413, + 3, /* Elements count */ + &asn_SPC_SeNBCounterCheckRequest_IEs_specs_413 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_420[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs__value, choice.X2BenefitValue), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_X2BenefitValue, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2BenefitValue" + }, +}; +static const unsigned asn_MAP_value_to_canonical_420[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_420[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_420[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* X2BenefitValue */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_420 = { + sizeof(struct X2RemovalRequest_IEs__value), + offsetof(struct X2RemovalRequest_IEs__value, _asn_ctx), + offsetof(struct X2RemovalRequest_IEs__value, present), + sizeof(((struct X2RemovalRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_420, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_420, + asn_MAP_value_from_canonical_420, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_420 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_420, + 2, /* Elements count */ + &asn_SPC_value_specs_420 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2RemovalRequest_IEs_417[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_418, memb_id_constraint_417 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2RemovalRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_419, memb_criticality_constraint_417 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_420, + select_X2RemovalRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_420, memb_value_constraint_417 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalRequest_IEs_tags_417[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalRequest_IEs_tag2el_417[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2RemovalRequest_IEs_specs_417 = { + sizeof(struct X2RemovalRequest_IEs), + offsetof(struct X2RemovalRequest_IEs, _asn_ctx), + asn_MAP_X2RemovalRequest_IEs_tag2el_417, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest_IEs = { + "X2RemovalRequest-IEs", + "X2RemovalRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalRequest_IEs_tags_417, + sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417) + /sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417[0]), /* 1 */ + asn_DEF_X2RemovalRequest_IEs_tags_417, /* Same as above */ + sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417) + /sizeof(asn_DEF_X2RemovalRequest_IEs_tags_417[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalRequest_IEs_417, + 3, /* Elements count */ + &asn_SPC_X2RemovalRequest_IEs_specs_417 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_424[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_424[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_424 = { + sizeof(struct X2RemovalResponse_IEs__value), + offsetof(struct X2RemovalResponse_IEs__value, _asn_ctx), + offsetof(struct X2RemovalResponse_IEs__value, present), + sizeof(((struct X2RemovalResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_424, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_424 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_424, + 2, /* Elements count */ + &asn_SPC_value_specs_424 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2RemovalResponse_IEs_421[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_422, memb_id_constraint_421 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2RemovalResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_423, memb_criticality_constraint_421 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_424, + select_X2RemovalResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_424, memb_value_constraint_421 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalResponse_IEs_tags_421[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalResponse_IEs_tag2el_421[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2RemovalResponse_IEs_specs_421 = { + sizeof(struct X2RemovalResponse_IEs), + offsetof(struct X2RemovalResponse_IEs, _asn_ctx), + asn_MAP_X2RemovalResponse_IEs_tag2el_421, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse_IEs = { + "X2RemovalResponse-IEs", + "X2RemovalResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalResponse_IEs_tags_421, + sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421) + /sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421[0]), /* 1 */ + asn_DEF_X2RemovalResponse_IEs_tags_421, /* Same as above */ + sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421) + /sizeof(asn_DEF_X2RemovalResponse_IEs_tags_421[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalResponse_IEs_421, + 3, /* Elements count */ + &asn_SPC_X2RemovalResponse_IEs_specs_421 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_428[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_428[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_428[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_428[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_428 = { + sizeof(struct X2RemovalFailure_IEs__value), + offsetof(struct X2RemovalFailure_IEs__value, _asn_ctx), + offsetof(struct X2RemovalFailure_IEs__value, present), + sizeof(((struct X2RemovalFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_428, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_428, + asn_MAP_value_from_canonical_428, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_428 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_428, + 2, /* Elements count */ + &asn_SPC_value_specs_428 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_X2RemovalFailure_IEs_425[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_426, memb_id_constraint_425 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_X2RemovalFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_427, memb_criticality_constraint_425 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_428, + select_X2RemovalFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_428, memb_value_constraint_425 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalFailure_IEs_tags_425[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalFailure_IEs_tag2el_425[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2RemovalFailure_IEs_specs_425 = { + sizeof(struct X2RemovalFailure_IEs), + offsetof(struct X2RemovalFailure_IEs, _asn_ctx), + asn_MAP_X2RemovalFailure_IEs_tag2el_425, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure_IEs = { + "X2RemovalFailure-IEs", + "X2RemovalFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalFailure_IEs_tags_425, + sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425) + /sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425[0]), /* 1 */ + asn_DEF_X2RemovalFailure_IEs_tags_425, /* Same as above */ + sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425) + /sizeof(asn_DEF_X2RemovalFailure_IEs_tags_425[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalFailure_IEs_425, + 3, /* Elements count */ + &asn_SPC_X2RemovalFailure_IEs_specs_425 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_432[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.ResumeID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ResumeID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResumeID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.ShortMAC_I), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_ShortMAC_I, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ShortMAC-I" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.EUTRANCellIdentifier), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_EUTRANCellIdentifier, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "EUTRANCellIdentifier" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.CRNTI), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_CRNTI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CRNTI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs__value, choice.PCI), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PCI" + }, +}; +static const unsigned asn_MAP_value_to_canonical_432[] = { 0, 1, 6, 3, 4, 5, 2 }; +static const unsigned asn_MAP_value_from_canonical_432[] = { 0, 1, 6, 3, 4, 5, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_432[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -2, 0 }, /* PCI */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 3, 0, 2 }, /* ShortMAC-I */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 4, -1, 1 }, /* EUTRANCellIdentifier */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 5, -2, 0 }, /* CRNTI */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* non-truncated */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* truncated */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_432 = { + sizeof(struct RetrieveUEContextRequest_IEs__value), + offsetof(struct RetrieveUEContextRequest_IEs__value, _asn_ctx), + offsetof(struct RetrieveUEContextRequest_IEs__value, present), + sizeof(((struct RetrieveUEContextRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_432, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_432, + asn_MAP_value_from_canonical_432, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_432 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_432, + 7, /* Elements count */ + &asn_SPC_value_specs_432 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RetrieveUEContextRequest_IEs_429[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_430, memb_id_constraint_429 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RetrieveUEContextRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_431, memb_criticality_constraint_429 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_432, + select_RetrieveUEContextRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_432, memb_value_constraint_429 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextRequest_IEs_tags_429[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextRequest_IEs_tag2el_429[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextRequest_IEs_specs_429 = { + sizeof(struct RetrieveUEContextRequest_IEs), + offsetof(struct RetrieveUEContextRequest_IEs, _asn_ctx), + asn_MAP_RetrieveUEContextRequest_IEs_tag2el_429, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest_IEs = { + "RetrieveUEContextRequest-IEs", + "RetrieveUEContextRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextRequest_IEs_tags_429, + sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429) + /sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429[0]), /* 1 */ + asn_DEF_RetrieveUEContextRequest_IEs_tags_429, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429) + /sizeof(asn_DEF_RetrieveUEContextRequest_IEs_tags_429[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextRequest_IEs_429, + 3, /* Elements count */ + &asn_SPC_RetrieveUEContextRequest_IEs_specs_429 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_436[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.GUMMEI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GUMMEI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GUMMEI" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.UE_ContextInformationRetrieve), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformationRetrieve, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformationRetrieve" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.TraceActivation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TraceActivation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TraceActivation" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.SRVCCOperationPossible), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SRVCCOperationPossible, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SRVCCOperationPossible" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.Masked_IMEISV), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_Masked_IMEISV, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Masked-IMEISV" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.ProSeAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProSeAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ProSeAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.V2XServicesAuthorized), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_V2XServicesAuthorized, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "V2XServicesAuthorized" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.AerialUEsubscriptionInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_AerialUEsubscriptionInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "AerialUEsubscriptionInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs__value, choice.Subscription_Based_UE_DifferentiationInfo), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Subscription_Based_UE_DifferentiationInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Subscription-Based-UE-DifferentiationInfo" + }, +}; +static const unsigned asn_MAP_value_to_canonical_436[] = { 0, 1, 6, 5, 11, 2, 3, 4, 7, 8, 9, 10, 12 }; +static const unsigned asn_MAP_value_from_canonical_436[] = { 0, 1, 5, 6, 7, 3, 2, 8, 9, 10, 11, 4, 12 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_436[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 6, 0, 0 }, /* Masked-IMEISV */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 1 }, /* SRVCCOperationPossible */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -1, 0 }, /* AerialUEsubscriptionInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 7 }, /* GUMMEI */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 6 }, /* UE-ContextInformationRetrieve */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 5 }, /* TraceActivation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -3, 4 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -4, 3 }, /* ProSeAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -5, 2 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 10, -6, 1 }, /* V2XServicesAuthorized */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -7, 0 } /* Subscription-Based-UE-DifferentiationInfo */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_436 = { + sizeof(struct RetrieveUEContextResponse_IEs__value), + offsetof(struct RetrieveUEContextResponse_IEs__value, _asn_ctx), + offsetof(struct RetrieveUEContextResponse_IEs__value, present), + sizeof(((struct RetrieveUEContextResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_436, + 13, /* Count of tags in the map */ + asn_MAP_value_to_canonical_436, + asn_MAP_value_from_canonical_436, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_436 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_436, + 13, /* Elements count */ + &asn_SPC_value_specs_436 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RetrieveUEContextResponse_IEs_433[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_434, memb_id_constraint_433 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RetrieveUEContextResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_435, memb_criticality_constraint_433 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_436, + select_RetrieveUEContextResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_436, memb_value_constraint_433 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextResponse_IEs_tags_433[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextResponse_IEs_tag2el_433[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextResponse_IEs_specs_433 = { + sizeof(struct RetrieveUEContextResponse_IEs), + offsetof(struct RetrieveUEContextResponse_IEs, _asn_ctx), + asn_MAP_RetrieveUEContextResponse_IEs_tag2el_433, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse_IEs = { + "RetrieveUEContextResponse-IEs", + "RetrieveUEContextResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextResponse_IEs_tags_433, + sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433) + /sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433[0]), /* 1 */ + asn_DEF_RetrieveUEContextResponse_IEs_tags_433, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433) + /sizeof(asn_DEF_RetrieveUEContextResponse_IEs_tags_433[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextResponse_IEs_433, + 3, /* Elements count */ + &asn_SPC_RetrieveUEContextResponse_IEs_specs_433 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_440[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_440[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_440[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_440[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_440 = { + sizeof(struct RetrieveUEContextFailure_IEs__value), + offsetof(struct RetrieveUEContextFailure_IEs__value, _asn_ctx), + offsetof(struct RetrieveUEContextFailure_IEs__value, present), + sizeof(((struct RetrieveUEContextFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_440, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_440, + asn_MAP_value_from_canonical_440, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_440 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_440, + 4, /* Elements count */ + &asn_SPC_value_specs_440 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RetrieveUEContextFailure_IEs_437[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_438, memb_id_constraint_437 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RetrieveUEContextFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_439, memb_criticality_constraint_437 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_440, + select_RetrieveUEContextFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_440, memb_value_constraint_437 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextFailure_IEs_tags_437[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextFailure_IEs_tag2el_437[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextFailure_IEs_specs_437 = { + sizeof(struct RetrieveUEContextFailure_IEs), + offsetof(struct RetrieveUEContextFailure_IEs, _asn_ctx), + asn_MAP_RetrieveUEContextFailure_IEs_tag2el_437, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure_IEs = { + "RetrieveUEContextFailure-IEs", + "RetrieveUEContextFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextFailure_IEs_tags_437, + sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437) + /sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437[0]), /* 1 */ + asn_DEF_RetrieveUEContextFailure_IEs_tags_437, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437) + /sizeof(asn_DEF_RetrieveUEContextFailure_IEs_tags_437[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextFailure_IEs_437, + 3, /* Elements count */ + &asn_SPC_RetrieveUEContextFailure_IEs_specs_437 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_444[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.NRUESecurityCapabilities), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRUESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "NRUESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SgNBSecurityKey), + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), + 0, + &asn_DEF_SgNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBSecurityKey" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.UEAggregateMaximumBitRate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEAggregateMaximumBitRate" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.E_RABs_ToBeAdded_SgNBAddReqList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeAdded_SgNBAddReqList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeAdded-SgNBAddReqList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.ExpectedUEBehaviour), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ExpectedUEBehaviour, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ExpectedUEBehaviour" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.MeNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SGNB_Addition_Trigger_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SGNB_Addition_Trigger_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SGNB-Addition-Trigger-Ind" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.SubscriberProfileIDforRFP), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SubscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs__value, choice.ECGI), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ECGI" + }, +}; +static const unsigned asn_MAP_value_to_canonical_444[] = { 0, 8, 10, 14, 2, 4, 7, 11, 13, 1, 3, 5, 6, 9, 12, 15 }; +static const unsigned asn_MAP_value_from_canonical_444[] = { 0, 9, 4, 10, 5, 11, 12, 6, 1, 13, 2, 7, 14, 8, 3, 15 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_444[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 3 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -1, 2 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 10, -2, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 14, -3, 0 }, /* SubscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* SgNBSecurityKey */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, 0, 1 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 13, -1, 0 }, /* SGNB-Addition-Trigger-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 6 }, /* NRUESecurityCapabilities */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 5 }, /* UEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 4 }, /* HandoverRestrictionList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -3, 3 }, /* E-RABs-ToBeAdded-SgNBAddReqList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -4, 2 }, /* ExpectedUEBehaviour */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 12, -5, 1 }, /* MeNBResourceCoordinationInformation */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 15, -6, 0 } /* ECGI */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_444 = { + sizeof(struct SgNBAdditionRequest_IEs__value), + offsetof(struct SgNBAdditionRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBAdditionRequest_IEs__value, present), + sizeof(((struct SgNBAdditionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_444, + 16, /* Count of tags in the map */ + asn_MAP_value_to_canonical_444, + asn_MAP_value_from_canonical_444, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_444 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_444, + 16, /* Elements count */ + &asn_SPC_value_specs_444 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBAdditionRequest_IEs_441[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_442, memb_id_constraint_441 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBAdditionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_443, memb_criticality_constraint_441 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_444, + select_SgNBAdditionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_444, memb_value_constraint_441 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequest_IEs_tags_441[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequest_IEs_tag2el_441[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequest_IEs_specs_441 = { + sizeof(struct SgNBAdditionRequest_IEs), + offsetof(struct SgNBAdditionRequest_IEs, _asn_ctx), + asn_MAP_SgNBAdditionRequest_IEs_tag2el_441, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest_IEs = { + "SgNBAdditionRequest-IEs", + "SgNBAdditionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequest_IEs_tags_441, + sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441) + /sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441[0]), /* 1 */ + asn_DEF_SgNBAdditionRequest_IEs_tags_441, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441) + /sizeof(asn_DEF_SgNBAdditionRequest_IEs_tags_441[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequest_IEs_441, + 3, /* Elements count */ + &asn_SPC_SgNBAdditionRequest_IEs_specs_441 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_448[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.SgNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, choice.RRC_Config_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRC_Config_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Config-Ind" + }, +}; +static const unsigned asn_MAP_value_to_canonical_448[] = { 0, 1, 6, 4, 7, 9, 2, 3, 5, 8 }; +static const unsigned asn_MAP_value_from_canonical_448[] = { 0, 1, 6, 7, 3, 8, 2, 4, 9, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_448[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 7, 0, 1 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -1, 0 }, /* RRC-Config-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 3 }, /* E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 2 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -2, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -3, 0 } /* SgNBResourceCoordinationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_448 = { + sizeof(struct SgNBAdditionRequestAcknowledge_IEs__value), + offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SgNBAdditionRequestAcknowledge_IEs__value, present), + sizeof(((struct SgNBAdditionRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_448, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_448, + asn_MAP_value_from_canonical_448, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_448 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_448, + 10, /* Elements count */ + &asn_SPC_value_specs_448 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBAdditionRequestAcknowledge_IEs_445[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_446, memb_id_constraint_445 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBAdditionRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_447, memb_criticality_constraint_445 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_448, + select_SgNBAdditionRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_448, memb_value_constraint_445 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestAcknowledge_IEs_tag2el_445[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestAcknowledge_IEs_specs_445 = { + sizeof(struct SgNBAdditionRequestAcknowledge_IEs), + offsetof(struct SgNBAdditionRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SgNBAdditionRequestAcknowledge_IEs_tag2el_445, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge_IEs = { + "SgNBAdditionRequestAcknowledge-IEs", + "SgNBAdditionRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445, + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_IEs_tags_445[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestAcknowledge_IEs_445, + 3, /* Elements count */ + &asn_SPC_SgNBAdditionRequestAcknowledge_IEs_specs_445 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_452[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_452[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_452[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_452[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_452 = { + sizeof(struct SgNBAdditionRequestReject_IEs__value), + offsetof(struct SgNBAdditionRequestReject_IEs__value, _asn_ctx), + offsetof(struct SgNBAdditionRequestReject_IEs__value, present), + sizeof(((struct SgNBAdditionRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_452, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_452, + asn_MAP_value_from_canonical_452, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_452 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_452, + 5, /* Elements count */ + &asn_SPC_value_specs_452 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBAdditionRequestReject_IEs_449[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_450, memb_id_constraint_449 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBAdditionRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_451, memb_criticality_constraint_449 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_452, + select_SgNBAdditionRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_452, memb_value_constraint_449 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestReject_IEs_tags_449[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestReject_IEs_tag2el_449[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestReject_IEs_specs_449 = { + sizeof(struct SgNBAdditionRequestReject_IEs), + offsetof(struct SgNBAdditionRequestReject_IEs, _asn_ctx), + asn_MAP_SgNBAdditionRequestReject_IEs_tag2el_449, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject_IEs = { + "SgNBAdditionRequestReject-IEs", + "SgNBAdditionRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestReject_IEs_tags_449, + sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449) + /sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestReject_IEs_tags_449, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449) + /sizeof(asn_DEF_SgNBAdditionRequestReject_IEs_tags_449[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestReject_IEs_449, + 3, /* Elements count */ + &asn_SPC_SgNBAdditionRequestReject_IEs_specs_449 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_456[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.ResponseInformationSgNBReconfComp), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_ResponseInformationSgNBReconfComp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResponseInformationSgNBReconfComp" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_456[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_456[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_456[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* success-SgNBReconfComp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 } /* reject-by-MeNB-SgNBReconfComp */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_456 = { + sizeof(struct SgNBReconfigurationComplete_IEs__value), + offsetof(struct SgNBReconfigurationComplete_IEs__value, _asn_ctx), + offsetof(struct SgNBReconfigurationComplete_IEs__value, present), + sizeof(((struct SgNBReconfigurationComplete_IEs__value *)0)->present), + asn_MAP_value_tag2el_456, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_456, + asn_MAP_value_from_canonical_456, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_456 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_456, + 4, /* Elements count */ + &asn_SPC_value_specs_456 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReconfigurationComplete_IEs_453[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_454, memb_id_constraint_453 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReconfigurationComplete_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_455, memb_criticality_constraint_453 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_456, + select_SgNBReconfigurationComplete_IEs_value_type, + { 0, &asn_PER_memb_value_constr_456, memb_value_constraint_453 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReconfigurationComplete_IEs_tags_453[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReconfigurationComplete_IEs_tag2el_453[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReconfigurationComplete_IEs_specs_453 = { + sizeof(struct SgNBReconfigurationComplete_IEs), + offsetof(struct SgNBReconfigurationComplete_IEs, _asn_ctx), + asn_MAP_SgNBReconfigurationComplete_IEs_tag2el_453, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete_IEs = { + "SgNBReconfigurationComplete-IEs", + "SgNBReconfigurationComplete-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReconfigurationComplete_IEs_tags_453, + sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453) + /sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453[0]), /* 1 */ + asn_DEF_SgNBReconfigurationComplete_IEs_tags_453, /* Same as above */ + sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453) + /sizeof(asn_DEF_SgNBReconfigurationComplete_IEs_tags_453[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReconfigurationComplete_IEs_453, + 3, /* Elements count */ + &asn_SPC_SgNBReconfigurationComplete_IEs_specs_453 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_460[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.PLMN_Identity), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.HandoverRestrictionList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "HandoverRestrictionList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.SCGConfigurationQuery), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SCGConfigurationQuery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SCGConfigurationQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.UE_ContextInformation_SgNBModReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UE_ContextInformation_SgNBModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextInformation-SgNBModReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.MeNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, +}; +static const unsigned asn_MAP_value_to_canonical_460[] = { 0, 1, 8, 3, 7, 5, 10, 4, 6, 9, 2 }; +static const unsigned asn_MAP_value_from_canonical_460[] = { 0, 1, 10, 3, 7, 5, 8, 4, 2, 9, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_460[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 1 }, /* PLMN-Identity */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -1, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 1 }, /* SCGConfigurationQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, -1, 0 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 2 }, /* HandoverRestrictionList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -1, 1 }, /* UE-ContextInformation-SgNBModReq */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -2, 0 }, /* MeNBResourceCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_460 = { + sizeof(struct SgNBModificationRequest_IEs__value), + offsetof(struct SgNBModificationRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequest_IEs__value, present), + sizeof(((struct SgNBModificationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_460, + 14, /* Count of tags in the map */ + asn_MAP_value_to_canonical_460, + asn_MAP_value_from_canonical_460, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_460 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_460, + 11, /* Elements count */ + &asn_SPC_value_specs_460 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequest_IEs_457[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_458, memb_id_constraint_457 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_459, memb_criticality_constraint_457 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_460, + select_SgNBModificationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_460, memb_value_constraint_457 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequest_IEs_tags_457[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequest_IEs_tag2el_457[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequest_IEs_specs_457 = { + sizeof(struct SgNBModificationRequest_IEs), + offsetof(struct SgNBModificationRequest_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequest_IEs_tag2el_457, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest_IEs = { + "SgNBModificationRequest-IEs", + "SgNBModificationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequest_IEs_tags_457, + sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457) + /sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457[0]), /* 1 */ + asn_DEF_SgNBModificationRequest_IEs_tags_457, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457) + /sizeof(asn_DEF_SgNBModificationRequest_IEs_tags_457[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequest_IEs_457, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequest_IEs_specs_457 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_464[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeAdded_SgNBModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeAdded-SgNBModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeModified_SgNBModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeModified-SgNBModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeReleased_SgNBModAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-SgNBModAckList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.E_RAB_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SgNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.SplitSRBs), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_SplitSRBs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRBs" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, choice.RRC_Config_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRC_Config_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Config-Ind" + }, +}; +static const unsigned asn_MAP_value_to_canonical_464[] = { 0, 1, 8, 6, 10, 11, 2, 3, 4, 5, 7, 9 }; +static const unsigned asn_MAP_value_from_canonical_464[] = { 0, 1, 6, 7, 8, 9, 3, 10, 2, 11, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_464[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 8, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 10, 0, 1 }, /* SplitSRBs */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 11, -1, 0 }, /* RRC-Config-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 5 }, /* E-RABs-Admitted-ToBeAdded-SgNBModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 4 }, /* E-RABs-Admitted-ToBeModified-SgNBModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -2, 3 }, /* E-RABs-Admitted-ToBeReleased-SgNBModAckList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -3, 2 }, /* E-RAB-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -4, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -5, 0 } /* SgNBResourceCoordinationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_464 = { + sizeof(struct SgNBModificationRequestAcknowledge_IEs__value), + offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequestAcknowledge_IEs__value, present), + sizeof(((struct SgNBModificationRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_464, + 12, /* Count of tags in the map */ + asn_MAP_value_to_canonical_464, + asn_MAP_value_from_canonical_464, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_464 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_464, + 12, /* Elements count */ + &asn_SPC_value_specs_464 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequestAcknowledge_IEs_461[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_462, memb_id_constraint_461 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_463, memb_criticality_constraint_461 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_464, + select_SgNBModificationRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_464, memb_value_constraint_461 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestAcknowledge_IEs_tag2el_461[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestAcknowledge_IEs_specs_461 = { + sizeof(struct SgNBModificationRequestAcknowledge_IEs), + offsetof(struct SgNBModificationRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequestAcknowledge_IEs_tag2el_461, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge_IEs = { + "SgNBModificationRequestAcknowledge-IEs", + "SgNBModificationRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461, + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461[0]), /* 1 */ + asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_IEs_tags_461[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestAcknowledge_IEs_461, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequestAcknowledge_IEs_specs_461 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_468[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_468[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_468[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_468[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_468 = { + sizeof(struct SgNBModificationRequestReject_IEs__value), + offsetof(struct SgNBModificationRequestReject_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequestReject_IEs__value, present), + sizeof(((struct SgNBModificationRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_468, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_468, + asn_MAP_value_from_canonical_468, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_468 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_468, + 5, /* Elements count */ + &asn_SPC_value_specs_468 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequestReject_IEs_465[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_466, memb_id_constraint_465 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_467, memb_criticality_constraint_465 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_468, + select_SgNBModificationRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_468, memb_value_constraint_465 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestReject_IEs_tags_465[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestReject_IEs_tag2el_465[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestReject_IEs_specs_465 = { + sizeof(struct SgNBModificationRequestReject_IEs), + offsetof(struct SgNBModificationRequestReject_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequestReject_IEs_tag2el_465, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject_IEs = { + "SgNBModificationRequestReject-IEs", + "SgNBModificationRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestReject_IEs_tags_465, + sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465) + /sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465[0]), /* 1 */ + asn_DEF_SgNBModificationRequestReject_IEs_tags_465, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465) + /sizeof(asn_DEF_SgNBModificationRequestReject_IEs_tags_465[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestReject_IEs_465, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequestReject_IEs_specs_465 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_472[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.PDCPChangeIndication), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_PDCPChangeIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "PDCPChangeIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.E_RABs_ToBeReleased_SgNBModReqdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBModReqdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBModReqdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.E_RABs_ToBeModified_SgNBModReqdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeModified_SgNBModReqdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeModified-SgNBModReqdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.SgNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SgNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBResourceCoordinationInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs__value, choice.RRC_Config_Ind), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RRC_Config_Ind, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RRC-Config-Ind" + }, +}; +static const unsigned asn_MAP_value_to_canonical_472[] = { 0, 1, 6, 5, 3, 9, 4, 7, 8, 2 }; +static const unsigned asn_MAP_value_from_canonical_472[] = { 0, 1, 9, 4, 6, 3, 2, 7, 8, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_472[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 6, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 1 }, /* PDCPChangeIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 9, -1, 0 }, /* RRC-Config-Ind */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 2 }, /* E-RABs-ToBeReleased-SgNBModReqdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -1, 1 }, /* E-RABs-ToBeModified-SgNBModReqdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -2, 0 }, /* SgNBResourceCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_472 = { + sizeof(struct SgNBModificationRequired_IEs__value), + offsetof(struct SgNBModificationRequired_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRequired_IEs__value, present), + sizeof(((struct SgNBModificationRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_472, + 13, /* Count of tags in the map */ + asn_MAP_value_to_canonical_472, + asn_MAP_value_from_canonical_472, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_472 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_472, + 10, /* Elements count */ + &asn_SPC_value_specs_472 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRequired_IEs_469[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_470, memb_id_constraint_469 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_471, memb_criticality_constraint_469 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_472, + select_SgNBModificationRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_472, memb_value_constraint_469 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequired_IEs_tags_469[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequired_IEs_tag2el_469[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequired_IEs_specs_469 = { + sizeof(struct SgNBModificationRequired_IEs), + offsetof(struct SgNBModificationRequired_IEs, _asn_ctx), + asn_MAP_SgNBModificationRequired_IEs_tag2el_469, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired_IEs = { + "SgNBModificationRequired-IEs", + "SgNBModificationRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequired_IEs_tags_469, + sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469) + /sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469[0]), /* 1 */ + asn_DEF_SgNBModificationRequired_IEs_tags_469, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469) + /sizeof(asn_DEF_SgNBModificationRequired_IEs_tags_469[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequired_IEs_469, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRequired_IEs_specs_469 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_476[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.E_RABs_AdmittedToBeModified_SgNBModConfList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConfList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-AdmittedToBeModified-SgNBModConfList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs__value, choice.MeNBResourceCoordinationInformation), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_MeNBResourceCoordinationInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBResourceCoordinationInformation" + }, +}; +static const unsigned asn_MAP_value_to_canonical_476[] = { 0, 1, 5, 3, 2, 4, 6 }; +static const unsigned asn_MAP_value_from_canonical_476[] = { 0, 1, 4, 3, 5, 2, 6 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_476[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 2 }, /* E-RABs-AdmittedToBeModified-SgNBModConfList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -2, 0 } /* MeNBResourceCoordinationInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_476 = { + sizeof(struct SgNBModificationConfirm_IEs__value), + offsetof(struct SgNBModificationConfirm_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationConfirm_IEs__value, present), + sizeof(((struct SgNBModificationConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_476, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_476, + asn_MAP_value_from_canonical_476, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_476 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_476, + 7, /* Elements count */ + &asn_SPC_value_specs_476 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationConfirm_IEs_473[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_474, memb_id_constraint_473 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_475, memb_criticality_constraint_473 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_476, + select_SgNBModificationConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_476, memb_value_constraint_473 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationConfirm_IEs_tags_473[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationConfirm_IEs_tag2el_473[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationConfirm_IEs_specs_473 = { + sizeof(struct SgNBModificationConfirm_IEs), + offsetof(struct SgNBModificationConfirm_IEs, _asn_ctx), + asn_MAP_SgNBModificationConfirm_IEs_tag2el_473, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm_IEs = { + "SgNBModificationConfirm-IEs", + "SgNBModificationConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationConfirm_IEs_tags_473, + sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473) + /sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473[0]), /* 1 */ + asn_DEF_SgNBModificationConfirm_IEs_tags_473, /* Same as above */ + sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473) + /sizeof(asn_DEF_SgNBModificationConfirm_IEs_tags_473[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationConfirm_IEs_473, + 3, /* Elements count */ + &asn_SPC_SgNBModificationConfirm_IEs_specs_473 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_480[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_480[] = { 0, 1, 5, 3, 4, 2 }; +static const unsigned asn_MAP_value_from_canonical_480[] = { 0, 1, 5, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_480[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_480 = { + sizeof(struct SgNBModificationRefuse_IEs__value), + offsetof(struct SgNBModificationRefuse_IEs__value, _asn_ctx), + offsetof(struct SgNBModificationRefuse_IEs__value, present), + sizeof(((struct SgNBModificationRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_480, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_480, + asn_MAP_value_from_canonical_480, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_480 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_480, + 6, /* Elements count */ + &asn_SPC_value_specs_480 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBModificationRefuse_IEs_477[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_478, memb_id_constraint_477 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBModificationRefuse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_479, memb_criticality_constraint_477 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_480, + select_SgNBModificationRefuse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_480, memb_value_constraint_477 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRefuse_IEs_tags_477[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRefuse_IEs_tag2el_477[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRefuse_IEs_specs_477 = { + sizeof(struct SgNBModificationRefuse_IEs), + offsetof(struct SgNBModificationRefuse_IEs, _asn_ctx), + asn_MAP_SgNBModificationRefuse_IEs_tag2el_477, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse_IEs = { + "SgNBModificationRefuse-IEs", + "SgNBModificationRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRefuse_IEs_tags_477, + sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477) + /sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477[0]), /* 1 */ + asn_DEF_SgNBModificationRefuse_IEs_tags_477, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477) + /sizeof(asn_DEF_SgNBModificationRefuse_IEs_tags_477[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRefuse_IEs_477, + 3, /* Elements count */ + &asn_SPC_SgNBModificationRefuse_IEs_specs_477 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_484[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.E_RABs_ToBeReleased_SgNBRelReqList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReqList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.UE_ContextKeptIndicator), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UE_ContextKeptIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-ContextKeptIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs__value, choice.MeNBtoSgNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "MeNBtoSgNBContainer" + }, +}; +static const unsigned asn_MAP_value_to_canonical_484[] = { 0, 1, 5, 6, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_484[] = { 0, 1, 6, 5, 4, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_484[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, 0, 0 }, /* MeNBtoSgNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* UE-ContextKeptIndicator */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* E-RABs-ToBeReleased-SgNBRelReqList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_484 = { + sizeof(struct SgNBReleaseRequest_IEs__value), + offsetof(struct SgNBReleaseRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequest_IEs__value, present), + sizeof(((struct SgNBReleaseRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_484, + 10, /* Count of tags in the map */ + asn_MAP_value_to_canonical_484, + asn_MAP_value_from_canonical_484, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_484 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_484, + 7, /* Elements count */ + &asn_SPC_value_specs_484 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequest_IEs_481[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_482, memb_id_constraint_481 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_483, memb_criticality_constraint_481 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_484, + select_SgNBReleaseRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_484, memb_value_constraint_481 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequest_IEs_tags_481[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequest_IEs_tag2el_481[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequest_IEs_specs_481 = { + sizeof(struct SgNBReleaseRequest_IEs), + offsetof(struct SgNBReleaseRequest_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequest_IEs_tag2el_481, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest_IEs = { + "SgNBReleaseRequest-IEs", + "SgNBReleaseRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequest_IEs_tags_481, + sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481) + /sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481[0]), /* 1 */ + asn_DEF_SgNBReleaseRequest_IEs_tags_481, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481) + /sizeof(asn_DEF_SgNBReleaseRequest_IEs_tags_481[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequest_IEs_481, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequest_IEs_specs_481 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_488[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, choice.E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList" + }, +}; +static const unsigned asn_MAP_value_to_canonical_488[] = { 0, 1, 3, 2, 4 }; +static const unsigned asn_MAP_value_from_canonical_488[] = { 0, 1, 3, 2, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_488[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -1, 0 } /* E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_488 = { + sizeof(struct SgNBReleaseRequestAcknowledge_IEs__value), + offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequestAcknowledge_IEs__value, present), + sizeof(((struct SgNBReleaseRequestAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_488, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_488, + asn_MAP_value_from_canonical_488, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_488 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_488, + 5, /* Elements count */ + &asn_SPC_value_specs_488 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequestAcknowledge_IEs_485[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_486, memb_id_constraint_485 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequestAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_487, memb_criticality_constraint_485 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_488, + select_SgNBReleaseRequestAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_488, memb_value_constraint_485 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestAcknowledge_IEs_tag2el_485[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestAcknowledge_IEs_specs_485 = { + sizeof(struct SgNBReleaseRequestAcknowledge_IEs), + offsetof(struct SgNBReleaseRequestAcknowledge_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequestAcknowledge_IEs_tag2el_485, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge_IEs = { + "SgNBReleaseRequestAcknowledge-IEs", + "SgNBReleaseRequestAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485, + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_IEs_tags_485[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestAcknowledge_IEs_485, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequestAcknowledge_IEs_specs_485 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_492[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_492[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_492[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_492[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_492 = { + sizeof(struct SgNBReleaseRequestReject_IEs__value), + offsetof(struct SgNBReleaseRequestReject_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequestReject_IEs__value, present), + sizeof(((struct SgNBReleaseRequestReject_IEs__value *)0)->present), + asn_MAP_value_tag2el_492, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_492, + asn_MAP_value_from_canonical_492, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_492 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_492, + 5, /* Elements count */ + &asn_SPC_value_specs_492 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequestReject_IEs_489[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_490, memb_id_constraint_489 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequestReject_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_491, memb_criticality_constraint_489 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_492, + select_SgNBReleaseRequestReject_IEs_value_type, + { 0, &asn_PER_memb_value_constr_492, memb_value_constraint_489 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestReject_IEs_tags_489[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestReject_IEs_tag2el_489[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestReject_IEs_specs_489 = { + sizeof(struct SgNBReleaseRequestReject_IEs), + offsetof(struct SgNBReleaseRequestReject_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequestReject_IEs_tag2el_489, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject_IEs = { + "SgNBReleaseRequestReject-IEs", + "SgNBReleaseRequestReject-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestReject_IEs_tags_489, + sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489) + /sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestReject_IEs_tags_489, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489) + /sizeof(asn_DEF_SgNBReleaseRequestReject_IEs_tags_489[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestReject_IEs_489, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequestReject_IEs_specs_489 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_496[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs__value, choice.E_RABs_ToBeReleased_SgNBRelReqdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelReqdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelReqdList" + }, +}; +static const unsigned asn_MAP_value_to_canonical_496[] = { 0, 1, 3, 4, 2 }; +static const unsigned asn_MAP_value_from_canonical_496[] = { 0, 1, 4, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_496[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, 0, 0 }, /* E-RABs-ToBeReleased-SgNBRelReqdList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_496 = { + sizeof(struct SgNBReleaseRequired_IEs__value), + offsetof(struct SgNBReleaseRequired_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseRequired_IEs__value, present), + sizeof(((struct SgNBReleaseRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_496, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_496, + asn_MAP_value_from_canonical_496, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_496 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_496, + 5, /* Elements count */ + &asn_SPC_value_specs_496 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseRequired_IEs_493[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_494, memb_id_constraint_493 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_495, memb_criticality_constraint_493 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_496, + select_SgNBReleaseRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_496, memb_value_constraint_493 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequired_IEs_tags_493[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequired_IEs_tag2el_493[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequired_IEs_specs_493 = { + sizeof(struct SgNBReleaseRequired_IEs), + offsetof(struct SgNBReleaseRequired_IEs, _asn_ctx), + asn_MAP_SgNBReleaseRequired_IEs_tag2el_493, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired_IEs = { + "SgNBReleaseRequired-IEs", + "SgNBReleaseRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequired_IEs_tags_493, + sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493) + /sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493[0]), /* 1 */ + asn_DEF_SgNBReleaseRequired_IEs_tags_493, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493) + /sizeof(asn_DEF_SgNBReleaseRequired_IEs_tags_493[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequired_IEs_493, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseRequired_IEs_specs_493 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_500[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.E_RABs_ToBeReleased_SgNBRelConfList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBRelConfList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBRelConfList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_500[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_500[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_500[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* E-RABs-ToBeReleased-SgNBRelConfList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_500 = { + sizeof(struct SgNBReleaseConfirm_IEs__value), + offsetof(struct SgNBReleaseConfirm_IEs__value, _asn_ctx), + offsetof(struct SgNBReleaseConfirm_IEs__value, present), + sizeof(((struct SgNBReleaseConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_500, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_500, + asn_MAP_value_from_canonical_500, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_500 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_500, + 5, /* Elements count */ + &asn_SPC_value_specs_500 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBReleaseConfirm_IEs_497[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_498, memb_id_constraint_497 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBReleaseConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_499, memb_criticality_constraint_497 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_500, + select_SgNBReleaseConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_500, memb_value_constraint_497 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseConfirm_IEs_tags_497[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseConfirm_IEs_tag2el_497[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseConfirm_IEs_specs_497 = { + sizeof(struct SgNBReleaseConfirm_IEs), + offsetof(struct SgNBReleaseConfirm_IEs, _asn_ctx), + asn_MAP_SgNBReleaseConfirm_IEs_tag2el_497, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm_IEs = { + "SgNBReleaseConfirm-IEs", + "SgNBReleaseConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseConfirm_IEs_tags_497, + sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497) + /sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497[0]), /* 1 */ + asn_DEF_SgNBReleaseConfirm_IEs_tags_497, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497) + /sizeof(asn_DEF_SgNBReleaseConfirm_IEs_tags_497[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseConfirm_IEs_497, + 3, /* Elements count */ + &asn_SPC_SgNBReleaseConfirm_IEs_specs_497 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_504[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.E_RABs_SubjectToSgNBCounterCheck_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_SubjectToSgNBCounterCheck_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-SubjectToSgNBCounterCheck-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_504[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_504[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_504[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* E-RABs-SubjectToSgNBCounterCheck-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_504 = { + sizeof(struct SgNBCounterCheckRequest_IEs__value), + offsetof(struct SgNBCounterCheckRequest_IEs__value, _asn_ctx), + offsetof(struct SgNBCounterCheckRequest_IEs__value, present), + sizeof(((struct SgNBCounterCheckRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_504, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_504, + asn_MAP_value_from_canonical_504, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_504 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_504, + 4, /* Elements count */ + &asn_SPC_value_specs_504 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBCounterCheckRequest_IEs_501[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_502, memb_id_constraint_501 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBCounterCheckRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_503, memb_criticality_constraint_501 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_504, + select_SgNBCounterCheckRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_504, memb_value_constraint_501 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBCounterCheckRequest_IEs_tags_501[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBCounterCheckRequest_IEs_tag2el_501[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBCounterCheckRequest_IEs_specs_501 = { + sizeof(struct SgNBCounterCheckRequest_IEs), + offsetof(struct SgNBCounterCheckRequest_IEs, _asn_ctx), + asn_MAP_SgNBCounterCheckRequest_IEs_tag2el_501, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest_IEs = { + "SgNBCounterCheckRequest-IEs", + "SgNBCounterCheckRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBCounterCheckRequest_IEs_tags_501, + sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501) + /sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501[0]), /* 1 */ + asn_DEF_SgNBCounterCheckRequest_IEs_tags_501, /* Same as above */ + sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501) + /sizeof(asn_DEF_SgNBCounterCheckRequest_IEs_tags_501[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBCounterCheckRequest_IEs_501, + 3, /* Elements count */ + &asn_SPC_SgNBCounterCheckRequest_IEs_specs_501 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_508[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.SgNBtoMeNBContainer), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_SgNBtoMeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNBtoMeNBContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_508[] = { 0, 1, 5, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_508[] = { 0, 1, 4, 5, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_508[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 5, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, 0, 0 }, /* SgNBtoMeNBContainer */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* GlobalGNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_508 = { + sizeof(struct SgNBChangeRequired_IEs__value), + offsetof(struct SgNBChangeRequired_IEs__value, _asn_ctx), + offsetof(struct SgNBChangeRequired_IEs__value, present), + sizeof(((struct SgNBChangeRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_508, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_508, + asn_MAP_value_from_canonical_508, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_508 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_508, + 6, /* Elements count */ + &asn_SPC_value_specs_508 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBChangeRequired_IEs_505[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_506, memb_id_constraint_505 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBChangeRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_507, memb_criticality_constraint_505 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_508, + select_SgNBChangeRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_508, memb_value_constraint_505 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRequired_IEs_tags_505[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRequired_IEs_tag2el_505[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRequired_IEs_specs_505 = { + sizeof(struct SgNBChangeRequired_IEs), + offsetof(struct SgNBChangeRequired_IEs, _asn_ctx), + asn_MAP_SgNBChangeRequired_IEs_tag2el_505, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired_IEs = { + "SgNBChangeRequired-IEs", + "SgNBChangeRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRequired_IEs_tags_505, + sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505) + /sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505[0]), /* 1 */ + asn_DEF_SgNBChangeRequired_IEs_tags_505, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505) + /sizeof(asn_DEF_SgNBChangeRequired_IEs_tags_505[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRequired_IEs_505, + 3, /* Elements count */ + &asn_SPC_SgNBChangeRequired_IEs_specs_505 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_512[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.E_RABs_ToBeReleased_SgNBChaConfList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_ToBeReleased_SgNBChaConfList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-ToBeReleased-SgNBChaConfList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_512[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_512[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_512[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* E-RABs-ToBeReleased-SgNBChaConfList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_512 = { + sizeof(struct SgNBChangeConfirm_IEs__value), + offsetof(struct SgNBChangeConfirm_IEs__value, _asn_ctx), + offsetof(struct SgNBChangeConfirm_IEs__value, present), + sizeof(((struct SgNBChangeConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_512, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_512, + asn_MAP_value_from_canonical_512, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_512 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_512, + 5, /* Elements count */ + &asn_SPC_value_specs_512 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBChangeConfirm_IEs_509[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_510, memb_id_constraint_509 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBChangeConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_511, memb_criticality_constraint_509 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_512, + select_SgNBChangeConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_512, memb_value_constraint_509 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeConfirm_IEs_tags_509[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeConfirm_IEs_tag2el_509[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeConfirm_IEs_specs_509 = { + sizeof(struct SgNBChangeConfirm_IEs), + offsetof(struct SgNBChangeConfirm_IEs, _asn_ctx), + asn_MAP_SgNBChangeConfirm_IEs_tag2el_509, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm_IEs = { + "SgNBChangeConfirm-IEs", + "SgNBChangeConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeConfirm_IEs_tags_509, + sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509) + /sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509[0]), /* 1 */ + asn_DEF_SgNBChangeConfirm_IEs_tags_509, /* Same as above */ + sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509) + /sizeof(asn_DEF_SgNBChangeConfirm_IEs_tags_509[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeConfirm_IEs_509, + 3, /* Elements count */ + &asn_SPC_SgNBChangeConfirm_IEs_specs_509 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_516[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.SplitSRB), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SplitSRB, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SplitSRB" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.UENRMeasurement), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UENRMeasurement, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UENRMeasurement" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_516[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_516[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_516[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 1 }, /* SplitSRB */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 } /* UENRMeasurement */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_516 = { + sizeof(struct RRCTransfer_IEs__value), + offsetof(struct RRCTransfer_IEs__value, _asn_ctx), + offsetof(struct RRCTransfer_IEs__value, present), + sizeof(((struct RRCTransfer_IEs__value *)0)->present), + asn_MAP_value_tag2el_516, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_516, + asn_MAP_value_from_canonical_516, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_516 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_516, + 5, /* Elements count */ + &asn_SPC_value_specs_516 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RRCTransfer_IEs_513[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_514, memb_id_constraint_513 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RRCTransfer_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_515, memb_criticality_constraint_513 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RRCTransfer_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_516, + select_RRCTransfer_IEs_value_type, + { 0, &asn_PER_memb_value_constr_516, memb_value_constraint_513 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RRCTransfer_IEs_tags_513[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RRCTransfer_IEs_tag2el_513[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RRCTransfer_IEs_specs_513 = { + sizeof(struct RRCTransfer_IEs), + offsetof(struct RRCTransfer_IEs, _asn_ctx), + asn_MAP_RRCTransfer_IEs_tag2el_513, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RRCTransfer_IEs = { + "RRCTransfer-IEs", + "RRCTransfer-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RRCTransfer_IEs_tags_513, + sizeof(asn_DEF_RRCTransfer_IEs_tags_513) + /sizeof(asn_DEF_RRCTransfer_IEs_tags_513[0]), /* 1 */ + asn_DEF_RRCTransfer_IEs_tags_513, /* Same as above */ + sizeof(asn_DEF_RRCTransfer_IEs_tags_513) + /sizeof(asn_DEF_RRCTransfer_IEs_tags_513[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RRCTransfer_IEs_513, + 3, /* Elements count */ + &asn_SPC_RRCTransfer_IEs_specs_513 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_520[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_520[] = { 0, 1, 4, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_520[] = { 0, 1, 4, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_520[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_520 = { + sizeof(struct SgNBChangeRefuse_IEs__value), + offsetof(struct SgNBChangeRefuse_IEs__value, _asn_ctx), + offsetof(struct SgNBChangeRefuse_IEs__value, present), + sizeof(((struct SgNBChangeRefuse_IEs__value *)0)->present), + asn_MAP_value_tag2el_520, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_520, + asn_MAP_value_from_canonical_520, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_520 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_520, + 5, /* Elements count */ + &asn_SPC_value_specs_520 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBChangeRefuse_IEs_517[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_518, memb_id_constraint_517 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBChangeRefuse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_519, memb_criticality_constraint_517 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_520, + select_SgNBChangeRefuse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_520, memb_value_constraint_517 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRefuse_IEs_tags_517[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRefuse_IEs_tag2el_517[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRefuse_IEs_specs_517 = { + sizeof(struct SgNBChangeRefuse_IEs), + offsetof(struct SgNBChangeRefuse_IEs, _asn_ctx), + asn_MAP_SgNBChangeRefuse_IEs_tag2el_517, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse_IEs = { + "SgNBChangeRefuse-IEs", + "SgNBChangeRefuse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRefuse_IEs_tags_517, + sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517) + /sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517[0]), /* 1 */ + asn_DEF_SgNBChangeRefuse_IEs_tags_517, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517) + /sizeof(asn_DEF_SgNBChangeRefuse_IEs_tags_517[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRefuse_IEs_517, + 3, /* Elements count */ + &asn_SPC_SgNBChangeRefuse_IEs_specs_517 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_524[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs__value, choice.InitiatingNodeType_EndcX2Setup), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EndcX2Setup, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EndcX2Setup" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_524[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_524 = { + sizeof(struct ENDCX2SetupRequest_IEs__value), + offsetof(struct ENDCX2SetupRequest_IEs__value, _asn_ctx), + offsetof(struct ENDCX2SetupRequest_IEs__value, present), + sizeof(((struct ENDCX2SetupRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_524, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_524 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_524, + 1, /* Elements count */ + &asn_SPC_value_specs_524 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_IEs_521[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_522, memb_id_constraint_521 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2SetupRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_523, memb_criticality_constraint_521 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_524, + select_ENDCX2SetupRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_524, memb_value_constraint_521 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupRequest_IEs_tags_521[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupRequest_IEs_tag2el_521[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_IEs_specs_521 = { + sizeof(struct ENDCX2SetupRequest_IEs), + offsetof(struct ENDCX2SetupRequest_IEs, _asn_ctx), + asn_MAP_ENDCX2SetupRequest_IEs_tag2el_521, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest_IEs = { + "ENDCX2SetupRequest-IEs", + "ENDCX2SetupRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupRequest_IEs_tags_521, + sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521) + /sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521[0]), /* 1 */ + asn_DEF_ENDCX2SetupRequest_IEs_tags_521, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521) + /sizeof(asn_DEF_ENDCX2SetupRequest_IEs_tags_521[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupRequest_IEs_521, + 3, /* Elements count */ + &asn_SPC_ENDCX2SetupRequest_IEs_specs_521 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_528[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs__value, choice.ServedEUTRAcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_528[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedEUTRAcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_528 = { + sizeof(struct ENB_ENDCX2SetupReqIEs__value), + offsetof(struct ENB_ENDCX2SetupReqIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2SetupReqIEs__value, present), + sizeof(((struct ENB_ENDCX2SetupReqIEs__value *)0)->present), + asn_MAP_value_tag2el_528, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_528 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_528, + 2, /* Elements count */ + &asn_SPC_value_specs_528 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqIEs_525[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_526, memb_id_constraint_525 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2SetupReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_527, memb_criticality_constraint_525 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_528, + select_ENB_ENDCX2SetupReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_528, memb_value_constraint_525 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2SetupReqIEs_tag2el_525[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqIEs_specs_525 = { + sizeof(struct ENB_ENDCX2SetupReqIEs), + offsetof(struct ENB_ENDCX2SetupReqIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2SetupReqIEs_tag2el_525, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqIEs = { + "ENB-ENDCX2SetupReqIEs", + "ENB-ENDCX2SetupReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525, + sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525[0]), /* 1 */ + asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqIEs_tags_525[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2SetupReqIEs_525, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2SetupReqIEs_specs_525 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_532[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_532[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalGNB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedNRcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_532 = { + sizeof(struct En_gNB_ENDCX2SetupReqIEs__value), + offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2SetupReqIEs__value, present), + sizeof(((struct En_gNB_ENDCX2SetupReqIEs__value *)0)->present), + asn_MAP_value_tag2el_532, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_532 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_532, + 2, /* Elements count */ + &asn_SPC_value_specs_532 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqIEs_529[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_530, memb_id_constraint_529 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2SetupReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_531, memb_criticality_constraint_529 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_532, + select_En_gNB_ENDCX2SetupReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_532, memb_value_constraint_529 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2SetupReqIEs_tag2el_529[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_529 = { + sizeof(struct En_gNB_ENDCX2SetupReqIEs), + offsetof(struct En_gNB_ENDCX2SetupReqIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2SetupReqIEs_tag2el_529, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqIEs = { + "En-gNB-ENDCX2SetupReqIEs", + "En-gNB-ENDCX2SetupReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529, + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqIEs_tags_529[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2SetupReqIEs_529, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_529 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_536[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs__value, choice.RespondingNodeType_EndcX2Setup), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EndcX2Setup, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EndcX2Setup" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_536[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_536 = { + sizeof(struct ENDCX2SetupResponse_IEs__value), + offsetof(struct ENDCX2SetupResponse_IEs__value, _asn_ctx), + offsetof(struct ENDCX2SetupResponse_IEs__value, present), + sizeof(((struct ENDCX2SetupResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_536, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_536 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_536, + 1, /* Elements count */ + &asn_SPC_value_specs_536 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_IEs_533[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_534, memb_id_constraint_533 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2SetupResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_535, memb_criticality_constraint_533 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_536, + select_ENDCX2SetupResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_536, memb_value_constraint_533 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupResponse_IEs_tags_533[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupResponse_IEs_tag2el_533[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_IEs_specs_533 = { + sizeof(struct ENDCX2SetupResponse_IEs), + offsetof(struct ENDCX2SetupResponse_IEs, _asn_ctx), + asn_MAP_ENDCX2SetupResponse_IEs_tag2el_533, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse_IEs = { + "ENDCX2SetupResponse-IEs", + "ENDCX2SetupResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupResponse_IEs_tags_533, + sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533) + /sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533[0]), /* 1 */ + asn_DEF_ENDCX2SetupResponse_IEs_tags_533, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533) + /sizeof(asn_DEF_ENDCX2SetupResponse_IEs_tags_533[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupResponse_IEs_533, + 3, /* Elements count */ + &asn_SPC_ENDCX2SetupResponse_IEs_specs_533 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_540[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, choice.ServedEUTRAcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_540[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalENB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedEUTRAcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_540 = { + sizeof(struct ENB_ENDCX2SetupReqAckIEs__value), + offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2SetupReqAckIEs__value, present), + sizeof(((struct ENB_ENDCX2SetupReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_540, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_540 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_540, + 2, /* Elements count */ + &asn_SPC_value_specs_540 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqAckIEs_537[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_538, memb_id_constraint_537 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2SetupReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_539, memb_criticality_constraint_537 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2SetupReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_540, + select_ENB_ENDCX2SetupReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_540, memb_value_constraint_537 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2SetupReqAckIEs_tag2el_537[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_537 = { + sizeof(struct ENB_ENDCX2SetupReqAckIEs), + offsetof(struct ENB_ENDCX2SetupReqAckIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2SetupReqAckIEs_tag2el_537, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqAckIEs = { + "ENB-ENDCX2SetupReqAckIEs", + "ENB-ENDCX2SetupReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537, + sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537[0]), /* 1 */ + asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537) + /sizeof(asn_DEF_ENB_ENDCX2SetupReqAckIEs_tags_537[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2SetupReqAckIEs_537, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_537 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_544[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_544[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* GlobalGNB-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* ServedNRcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_544 = { + sizeof(struct En_gNB_ENDCX2SetupReqAckIEs__value), + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs__value, present), + sizeof(((struct En_gNB_ENDCX2SetupReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_544, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_544 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_544, + 2, /* Elements count */ + &asn_SPC_value_specs_544 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_541[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_542, memb_id_constraint_541 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2SetupReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_543, memb_criticality_constraint_541 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_544, + select_En_gNB_ENDCX2SetupReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_544, memb_value_constraint_541 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2SetupReqAckIEs_tag2el_541[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_541 = { + sizeof(struct En_gNB_ENDCX2SetupReqAckIEs), + offsetof(struct En_gNB_ENDCX2SetupReqAckIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2SetupReqAckIEs_tag2el_541, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs = { + "En-gNB-ENDCX2SetupReqAckIEs", + "En-gNB-ENDCX2SetupReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541, + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541) + /sizeof(asn_DEF_En_gNB_ENDCX2SetupReqAckIEs_tags_541[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_541, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_541 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_548[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, +}; +static const unsigned asn_MAP_value_to_canonical_548[] = { 2, 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_548[] = { 2, 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_548[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_548 = { + sizeof(struct ENDCX2SetupFailure_IEs__value), + offsetof(struct ENDCX2SetupFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCX2SetupFailure_IEs__value, present), + sizeof(((struct ENDCX2SetupFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_548, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_548, + asn_MAP_value_from_canonical_548, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_548 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_548, + 3, /* Elements count */ + &asn_SPC_value_specs_548 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_IEs_545[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_546, memb_id_constraint_545 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2SetupFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_547, memb_criticality_constraint_545 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2SetupFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_548, + select_ENDCX2SetupFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_548, memb_value_constraint_545 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2SetupFailure_IEs_tags_545[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2SetupFailure_IEs_tag2el_545[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_IEs_specs_545 = { + sizeof(struct ENDCX2SetupFailure_IEs), + offsetof(struct ENDCX2SetupFailure_IEs, _asn_ctx), + asn_MAP_ENDCX2SetupFailure_IEs_tag2el_545, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure_IEs = { + "ENDCX2SetupFailure-IEs", + "ENDCX2SetupFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2SetupFailure_IEs_tags_545, + sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545) + /sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545[0]), /* 1 */ + asn_DEF_ENDCX2SetupFailure_IEs_tags_545, /* Same as above */ + sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545) + /sizeof(asn_DEF_ENDCX2SetupFailure_IEs_tags_545[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2SetupFailure_IEs_545, + 3, /* Elements count */ + &asn_SPC_ENDCX2SetupFailure_IEs_specs_545 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_552[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs__value, choice.InitiatingNodeType_EndcConfigUpdate), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EndcConfigUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EndcConfigUpdate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_552[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_552 = { + sizeof(struct ENDCConfigurationUpdate_IEs__value), + offsetof(struct ENDCConfigurationUpdate_IEs__value, _asn_ctx), + offsetof(struct ENDCConfigurationUpdate_IEs__value, present), + sizeof(((struct ENDCConfigurationUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_552, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_552 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_552, + 1, /* Elements count */ + &asn_SPC_value_specs_552 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_IEs_549[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_550, memb_id_constraint_549 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCConfigurationUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_551, memb_criticality_constraint_549 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_552, + select_ENDCConfigurationUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_552, memb_value_constraint_549 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdate_IEs_tags_549[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdate_IEs_tag2el_549[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_IEs_specs_549 = { + sizeof(struct ENDCConfigurationUpdate_IEs), + offsetof(struct ENDCConfigurationUpdate_IEs, _asn_ctx), + asn_MAP_ENDCConfigurationUpdate_IEs_tag2el_549, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate_IEs = { + "ENDCConfigurationUpdate-IEs", + "ENDCConfigurationUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdate_IEs_tags_549, + sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549) + /sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdate_IEs_tags_549, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549) + /sizeof(asn_DEF_ENDCConfigurationUpdate_IEs_tags_549[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdate_IEs_549, + 3, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdate_IEs_specs_549 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_556[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.CellAssistanceInformation), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_CellAssistanceInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CellAssistanceInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.ServedEUTRAcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsENDCX2ManagementList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.ServedEUTRAcellsToModifyListENDCConfUpd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsToModifyListENDCConfUpd" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs__value, choice.ServedEUTRAcellsToDeleteListENDCConfUpd), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedEUTRAcellsToDeleteListENDCConfUpd" + }, +}; +static const unsigned asn_MAP_value_to_canonical_556[] = { 1, 2, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_556[] = { 3, 0, 1, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_556[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 2 }, /* ServedEUTRAcellsENDCX2ManagementList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* ServedEUTRAcellsToModifyListENDCConfUpd */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 }, /* ServedEUTRAcellsToDeleteListENDCConfUpd */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* limited-list */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* full-list */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_556 = { + sizeof(struct ENB_ENDCConfigUpdateIEs__value), + offsetof(struct ENB_ENDCConfigUpdateIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCConfigUpdateIEs__value, present), + sizeof(((struct ENB_ENDCConfigUpdateIEs__value *)0)->present), + asn_MAP_value_tag2el_556, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_556, + asn_MAP_value_from_canonical_556, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_556 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_556, + 4, /* Elements count */ + &asn_SPC_value_specs_556 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateIEs_553[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_554, memb_id_constraint_553 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCConfigUpdateIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_555, memb_criticality_constraint_553 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_556, + select_ENB_ENDCConfigUpdateIEs_value_type, + { 0, &asn_PER_memb_value_constr_556, memb_value_constraint_553 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCConfigUpdateIEs_tag2el_553[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateIEs_specs_553 = { + sizeof(struct ENB_ENDCConfigUpdateIEs), + offsetof(struct ENB_ENDCConfigUpdateIEs, _asn_ctx), + asn_MAP_ENB_ENDCConfigUpdateIEs_tag2el_553, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateIEs = { + "ENB-ENDCConfigUpdateIEs", + "ENB-ENDCConfigUpdateIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553, + sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553[0]), /* 1 */ + asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateIEs_tags_553[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCConfigUpdateIEs_553, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCConfigUpdateIEs_specs_553 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_560[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, choice.ServedNRcellsToModifyENDCConfUpdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsToModifyENDCConfUpdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsToModifyENDCConfUpdList" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, choice.ServedNRcellsToDeleteENDCConfUpdList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsToDeleteENDCConfUpdList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsToDeleteENDCConfUpdList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_560[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* ServedNRcellsENDCX2ManagementList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* ServedNRcellsToModifyENDCConfUpdList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* ServedNRcellsToDeleteENDCConfUpdList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_560 = { + sizeof(struct En_gNB_ENDCConfigUpdateIEs__value), + offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCConfigUpdateIEs__value, present), + sizeof(((struct En_gNB_ENDCConfigUpdateIEs__value *)0)->present), + asn_MAP_value_tag2el_560, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_560 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_560, + 3, /* Elements count */ + &asn_SPC_value_specs_560 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateIEs_557[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_558, memb_id_constraint_557 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCConfigUpdateIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_559, memb_criticality_constraint_557 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_560, + select_En_gNB_ENDCConfigUpdateIEs_value_type, + { 0, &asn_PER_memb_value_constr_560, memb_value_constraint_557 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCConfigUpdateIEs_tag2el_557[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_557 = { + sizeof(struct En_gNB_ENDCConfigUpdateIEs), + offsetof(struct En_gNB_ENDCConfigUpdateIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCConfigUpdateIEs_tag2el_557, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateIEs = { + "En-gNB-ENDCConfigUpdateIEs", + "En-gNB-ENDCConfigUpdateIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557, + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557[0]), /* 1 */ + asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateIEs_tags_557[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCConfigUpdateIEs_557, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_557 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_564[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs__value, choice.RespondingNodeType_EndcConfigUpdate), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EndcConfigUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EndcConfigUpdate" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_564[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_564 = { + sizeof(struct ENDCConfigurationUpdateAcknowledge_IEs__value), + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs__value, present), + sizeof(((struct ENDCConfigurationUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_564, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_564 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_564, + 1, /* Elements count */ + &asn_SPC_value_specs_564 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_561[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_562, memb_id_constraint_561 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCConfigurationUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_563, memb_criticality_constraint_561 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_564, + select_ENDCConfigurationUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_564, memb_value_constraint_561 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateAcknowledge_IEs_tag2el_561[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_561 = { + sizeof(struct ENDCConfigurationUpdateAcknowledge_IEs), + offsetof(struct ENDCConfigurationUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateAcknowledge_IEs_tag2el_561, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs = { + "ENDCConfigurationUpdateAcknowledge-IEs", + "ENDCConfigurationUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561, + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561) + /sizeof(asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs_tags_561[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_561, + 3, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_561 /* Additional specs */ +}; + +static asn_CHOICE_specifics_t asn_SPC_value_specs_568 = { + sizeof(struct ENB_ENDCConfigUpdateAckIEs__value), + offsetof(struct ENB_ENDCConfigUpdateAckIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCConfigUpdateAckIEs__value, present), + sizeof(((struct ENB_ENDCConfigUpdateAckIEs__value *)0)->present), + 0, /* No top level tags */ + 0, /* No tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_568 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + 0, 0, /* No members */ + &asn_SPC_value_specs_568 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateAckIEs_565[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_566, memb_id_constraint_565 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, &asn_PER_memb_criticality_constr_567, memb_criticality_constraint_565 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCConfigUpdateAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_568, + 0, + { 0, &asn_PER_memb_value_constr_568, memb_value_constraint_565 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCConfigUpdateAckIEs_tag2el_565[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_565 = { + sizeof(struct ENB_ENDCConfigUpdateAckIEs), + offsetof(struct ENB_ENDCConfigUpdateAckIEs, _asn_ctx), + asn_MAP_ENB_ENDCConfigUpdateAckIEs_tag2el_565, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateAckIEs = { + "ENB-ENDCConfigUpdateAckIEs", + "ENB-ENDCConfigUpdateAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565, + sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565[0]), /* 1 */ + asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565) + /sizeof(asn_DEF_ENB_ENDCConfigUpdateAckIEs_tags_565[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCConfigUpdateAckIEs_565, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_565 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_572[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs__value, choice.ServedNRcellsENDCX2ManagementList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRcellsENDCX2ManagementList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRcellsENDCX2ManagementList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_572[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ServedNRcellsENDCX2ManagementList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_572 = { + sizeof(struct En_gNB_ENDCConfigUpdateAckIEs__value), + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs__value, present), + sizeof(((struct En_gNB_ENDCConfigUpdateAckIEs__value *)0)->present), + asn_MAP_value_tag2el_572, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_572 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_572, + 1, /* Elements count */ + &asn_SPC_value_specs_572 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_569[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_570, memb_id_constraint_569 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCConfigUpdateAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_571, memb_criticality_constraint_569 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_572, + select_En_gNB_ENDCConfigUpdateAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_572, memb_value_constraint_569 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCConfigUpdateAckIEs_tag2el_569[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_569 = { + sizeof(struct En_gNB_ENDCConfigUpdateAckIEs), + offsetof(struct En_gNB_ENDCConfigUpdateAckIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCConfigUpdateAckIEs_tag2el_569, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs = { + "En-gNB-ENDCConfigUpdateAckIEs", + "En-gNB-ENDCConfigUpdateAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569, + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569[0]), /* 1 */ + asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569) + /sizeof(asn_DEF_En_gNB_ENDCConfigUpdateAckIEs_tags_569[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_569, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_569 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_576[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, +}; +static const unsigned asn_MAP_value_to_canonical_576[] = { 2, 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_576[] = { 2, 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_576[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_576 = { + sizeof(struct ENDCConfigurationUpdateFailure_IEs__value), + offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCConfigurationUpdateFailure_IEs__value, present), + sizeof(((struct ENDCConfigurationUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_576, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_576, + asn_MAP_value_from_canonical_576, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_576 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_576, + 3, /* Elements count */ + &asn_SPC_value_specs_576 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_IEs_573[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_574, memb_id_constraint_573 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCConfigurationUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_575, memb_criticality_constraint_573 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCConfigurationUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_576, + select_ENDCConfigurationUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_576, memb_value_constraint_573 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCConfigurationUpdateFailure_IEs_tag2el_573[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_573 = { + sizeof(struct ENDCConfigurationUpdateFailure_IEs), + offsetof(struct ENDCConfigurationUpdateFailure_IEs, _asn_ctx), + asn_MAP_ENDCConfigurationUpdateFailure_IEs_tag2el_573, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure_IEs = { + "ENDCConfigurationUpdateFailure-IEs", + "ENDCConfigurationUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573, + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573[0]), /* 1 */ + asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573, /* Same as above */ + sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573) + /sizeof(asn_DEF_ENDCConfigurationUpdateFailure_IEs_tags_573[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCConfigurationUpdateFailure_IEs_573, + 3, /* Elements count */ + &asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_573 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_580[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs__value, choice.ServedNRCellsToActivate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToActivate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ServedNRCellsToActivate" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs__value, choice.ActivationID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ActivationID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivationID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_580[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_580[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_580[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* ActivationID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* ServedNRCellsToActivate */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_580 = { + sizeof(struct ENDCCellActivationRequest_IEs__value), + offsetof(struct ENDCCellActivationRequest_IEs__value, _asn_ctx), + offsetof(struct ENDCCellActivationRequest_IEs__value, present), + sizeof(((struct ENDCCellActivationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_580, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_580, + asn_MAP_value_from_canonical_580, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_580 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_580, + 2, /* Elements count */ + &asn_SPC_value_specs_580 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCCellActivationRequest_IEs_577[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_578, memb_id_constraint_577 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCCellActivationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_579, memb_criticality_constraint_577 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_580, + select_ENDCCellActivationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_580, memb_value_constraint_577 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationRequest_IEs_tags_577[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationRequest_IEs_tag2el_577[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationRequest_IEs_specs_577 = { + sizeof(struct ENDCCellActivationRequest_IEs), + offsetof(struct ENDCCellActivationRequest_IEs, _asn_ctx), + asn_MAP_ENDCCellActivationRequest_IEs_tag2el_577, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest_IEs = { + "ENDCCellActivationRequest-IEs", + "ENDCCellActivationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationRequest_IEs_tags_577, + sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577) + /sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577[0]), /* 1 */ + asn_DEF_ENDCCellActivationRequest_IEs_tags_577, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577) + /sizeof(asn_DEF_ENDCCellActivationRequest_IEs_tags_577[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationRequest_IEs_577, + 3, /* Elements count */ + &asn_SPC_ENDCCellActivationRequest_IEs_specs_577 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_584[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs__value, choice.ActivatedNRCellList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ActivatedNRCellList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivatedNRCellList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs__value, choice.ActivationID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ActivationID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivationID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_584[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_584[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_584[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* ActivationID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* ActivatedNRCellList */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_584 = { + sizeof(struct ENDCCellActivationResponse_IEs__value), + offsetof(struct ENDCCellActivationResponse_IEs__value, _asn_ctx), + offsetof(struct ENDCCellActivationResponse_IEs__value, present), + sizeof(((struct ENDCCellActivationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_584, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_584, + asn_MAP_value_from_canonical_584, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_584 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_584, + 3, /* Elements count */ + &asn_SPC_value_specs_584 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCCellActivationResponse_IEs_581[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_582, memb_id_constraint_581 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCCellActivationResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_583, memb_criticality_constraint_581 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_584, + select_ENDCCellActivationResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_584, memb_value_constraint_581 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationResponse_IEs_tags_581[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationResponse_IEs_tag2el_581[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationResponse_IEs_specs_581 = { + sizeof(struct ENDCCellActivationResponse_IEs), + offsetof(struct ENDCCellActivationResponse_IEs, _asn_ctx), + asn_MAP_ENDCCellActivationResponse_IEs_tag2el_581, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse_IEs = { + "ENDCCellActivationResponse-IEs", + "ENDCCellActivationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationResponse_IEs_tags_581, + sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581) + /sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581[0]), /* 1 */ + asn_DEF_ENDCCellActivationResponse_IEs_tags_581, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581) + /sizeof(asn_DEF_ENDCCellActivationResponse_IEs_tags_581[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationResponse_IEs_581, + 3, /* Elements count */ + &asn_SPC_ENDCCellActivationResponse_IEs_specs_581 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_588[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs__value, choice.ActivationID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ActivationID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ActivationID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_588[] = { 0, 2, 1 }; +static const unsigned asn_MAP_value_from_canonical_588[] = { 0, 2, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_588[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* ActivationID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_588 = { + sizeof(struct ENDCCellActivationFailure_IEs__value), + offsetof(struct ENDCCellActivationFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCCellActivationFailure_IEs__value, present), + sizeof(((struct ENDCCellActivationFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_588, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_588, + asn_MAP_value_from_canonical_588, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_588 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_588, + 3, /* Elements count */ + &asn_SPC_value_specs_588 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCCellActivationFailure_IEs_585[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_586, memb_id_constraint_585 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCCellActivationFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_587, memb_criticality_constraint_585 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCCellActivationFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_588, + select_ENDCCellActivationFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_588, memb_value_constraint_585 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCCellActivationFailure_IEs_tags_585[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCCellActivationFailure_IEs_tag2el_585[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationFailure_IEs_specs_585 = { + sizeof(struct ENDCCellActivationFailure_IEs), + offsetof(struct ENDCCellActivationFailure_IEs, _asn_ctx), + asn_MAP_ENDCCellActivationFailure_IEs_tag2el_585, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure_IEs = { + "ENDCCellActivationFailure-IEs", + "ENDCCellActivationFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCCellActivationFailure_IEs_tags_585, + sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585) + /sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585[0]), /* 1 */ + asn_DEF_ENDCCellActivationFailure_IEs_tags_585, /* Same as above */ + sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585) + /sizeof(asn_DEF_ENDCCellActivationFailure_IEs_tags_585[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCCellActivationFailure_IEs_585, + 3, /* Elements count */ + &asn_SPC_ENDCCellActivationFailure_IEs_specs_585 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_592[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.SecondaryRATUsageReportList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATUsageReportList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecondaryRATUsageReportList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_592[] = { 0, 1, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_592[] = { 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_592[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* SecondaryRATUsageReportList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_592 = { + sizeof(struct SecondaryRATDataUsageReport_IEs__value), + offsetof(struct SecondaryRATDataUsageReport_IEs__value, _asn_ctx), + offsetof(struct SecondaryRATDataUsageReport_IEs__value, present), + sizeof(((struct SecondaryRATDataUsageReport_IEs__value *)0)->present), + asn_MAP_value_tag2el_592, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_592, + asn_MAP_value_from_canonical_592, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_592 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_592, + 4, /* Elements count */ + &asn_SPC_value_specs_592 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReport_IEs_589[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_590, memb_id_constraint_589 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SecondaryRATDataUsageReport_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_591, memb_criticality_constraint_589 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_592, + select_SecondaryRATDataUsageReport_IEs_value_type, + { 0, &asn_PER_memb_value_constr_592, memb_value_constraint_589 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATDataUsageReport_IEs_tag2el_589[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReport_IEs_specs_589 = { + sizeof(struct SecondaryRATDataUsageReport_IEs), + offsetof(struct SecondaryRATDataUsageReport_IEs, _asn_ctx), + asn_MAP_SecondaryRATDataUsageReport_IEs_tag2el_589, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport_IEs = { + "SecondaryRATDataUsageReport-IEs", + "SecondaryRATDataUsageReport-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589, + sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589[0]), /* 1 */ + asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589, /* Same as above */ + sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_IEs_tags_589[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATDataUsageReport_IEs_589, + 3, /* Elements count */ + &asn_SPC_SecondaryRATDataUsageReport_IEs_specs_589 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_596[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.SgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SgNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.UserPlaneTrafficActivityReport), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UserPlaneTrafficActivityReport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UserPlaneTrafficActivityReport" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.ERABActivityNotifyItemList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ERABActivityNotifyItemList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ERABActivityNotifyItemList" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, +}; +static const unsigned asn_MAP_value_to_canonical_596[] = { 0, 1, 4, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_596[] = { 0, 1, 3, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_596[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 2 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 1 }, /* SgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 4, -2, 0 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, 0, 0 }, /* UserPlaneTrafficActivityReport */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, 0, 0 } /* ERABActivityNotifyItemList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_596 = { + sizeof(struct SgNBActivityNotification_IEs__value), + offsetof(struct SgNBActivityNotification_IEs__value, _asn_ctx), + offsetof(struct SgNBActivityNotification_IEs__value, present), + sizeof(((struct SgNBActivityNotification_IEs__value *)0)->present), + asn_MAP_value_tag2el_596, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_596, + asn_MAP_value_from_canonical_596, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_596 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_596, + 5, /* Elements count */ + &asn_SPC_value_specs_596 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SgNBActivityNotification_IEs_593[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_594, memb_id_constraint_593 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SgNBActivityNotification_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_595, memb_criticality_constraint_593 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_596, + select_SgNBActivityNotification_IEs_value_type, + { 0, &asn_PER_memb_value_constr_596, memb_value_constraint_593 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBActivityNotification_IEs_tags_593[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBActivityNotification_IEs_tag2el_593[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBActivityNotification_IEs_specs_593 = { + sizeof(struct SgNBActivityNotification_IEs), + offsetof(struct SgNBActivityNotification_IEs, _asn_ctx), + asn_MAP_SgNBActivityNotification_IEs_tag2el_593, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification_IEs = { + "SgNBActivityNotification-IEs", + "SgNBActivityNotification-IEs", + &asn_OP_SEQUENCE, + asn_DEF_SgNBActivityNotification_IEs_tags_593, + sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593) + /sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593[0]), /* 1 */ + asn_DEF_SgNBActivityNotification_IEs_tags_593, /* Same as above */ + sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593) + /sizeof(asn_DEF_SgNBActivityNotification_IEs_tags_593[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBActivityNotification_IEs_593, + 3, /* Elements count */ + &asn_SPC_SgNBActivityNotification_IEs_specs_593 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_600[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs__value, choice.UEsToBeResetList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEsToBeResetList" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_600[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* UEsToBeResetList */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_600 = { + sizeof(struct ENDCPartialResetRequired_IEs__value), + offsetof(struct ENDCPartialResetRequired_IEs__value, _asn_ctx), + offsetof(struct ENDCPartialResetRequired_IEs__value, present), + sizeof(((struct ENDCPartialResetRequired_IEs__value *)0)->present), + asn_MAP_value_tag2el_600, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_600 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_600, + 2, /* Elements count */ + &asn_SPC_value_specs_600 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCPartialResetRequired_IEs_597[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_598, memb_id_constraint_597 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCPartialResetRequired_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_599, memb_criticality_constraint_597 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetRequired_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_600, + select_ENDCPartialResetRequired_IEs_value_type, + { 0, &asn_PER_memb_value_constr_600, memb_value_constraint_597 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetRequired_IEs_tags_597[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetRequired_IEs_tag2el_597[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetRequired_IEs_specs_597 = { + sizeof(struct ENDCPartialResetRequired_IEs), + offsetof(struct ENDCPartialResetRequired_IEs, _asn_ctx), + asn_MAP_ENDCPartialResetRequired_IEs_tag2el_597, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired_IEs = { + "ENDCPartialResetRequired-IEs", + "ENDCPartialResetRequired-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetRequired_IEs_tags_597, + sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597) + /sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597[0]), /* 1 */ + asn_DEF_ENDCPartialResetRequired_IEs_tags_597, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597) + /sizeof(asn_DEF_ENDCPartialResetRequired_IEs_tags_597[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetRequired_IEs_597, + 3, /* Elements count */ + &asn_SPC_ENDCPartialResetRequired_IEs_specs_597 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_604[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs__value, choice.UEsToBeResetList), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UEsToBeResetList" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_604[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* UEsToBeResetList */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_604 = { + sizeof(struct ENDCPartialResetConfirm_IEs__value), + offsetof(struct ENDCPartialResetConfirm_IEs__value, _asn_ctx), + offsetof(struct ENDCPartialResetConfirm_IEs__value, present), + sizeof(((struct ENDCPartialResetConfirm_IEs__value *)0)->present), + asn_MAP_value_tag2el_604, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_604 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_604, + 1, /* Elements count */ + &asn_SPC_value_specs_604 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCPartialResetConfirm_IEs_601[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_602, memb_id_constraint_601 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCPartialResetConfirm_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_603, memb_criticality_constraint_601 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCPartialResetConfirm_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_604, + select_ENDCPartialResetConfirm_IEs_value_type, + { 0, &asn_PER_memb_value_constr_604, memb_value_constraint_601 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCPartialResetConfirm_IEs_tags_601[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCPartialResetConfirm_IEs_tag2el_601[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetConfirm_IEs_specs_601 = { + sizeof(struct ENDCPartialResetConfirm_IEs), + offsetof(struct ENDCPartialResetConfirm_IEs, _asn_ctx), + asn_MAP_ENDCPartialResetConfirm_IEs_tag2el_601, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm_IEs = { + "ENDCPartialResetConfirm-IEs", + "ENDCPartialResetConfirm-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCPartialResetConfirm_IEs_tags_601, + sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601) + /sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601[0]), /* 1 */ + asn_DEF_ENDCPartialResetConfirm_IEs_tags_601, /* Same as above */ + sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601) + /sizeof(asn_DEF_ENDCPartialResetConfirm_IEs_tags_601[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCPartialResetConfirm_IEs_601, + 3, /* Elements count */ + &asn_SPC_ENDCPartialResetConfirm_IEs_specs_601 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_608[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs__value, choice.InitiatingNodeType_EutranrCellResourceCoordination), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EutranrCellResourceCoordination, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EutranrCellResourceCoordination" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_608[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiate-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* initiate-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_608 = { + sizeof(struct EUTRANRCellResourceCoordinationRequest_IEs__value), + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs__value, _asn_ctx), + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs__value, present), + sizeof(((struct EUTRANRCellResourceCoordinationRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_608, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_608 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_608, + 1, /* Elements count */ + &asn_SPC_value_specs_608 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationRequest_IEs_605[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_606, memb_id_constraint_605 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_EUTRANRCellResourceCoordinationRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_607, memb_criticality_constraint_605 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_608, + select_EUTRANRCellResourceCoordinationRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_608, memb_value_constraint_605 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationRequest_IEs_tag2el_605[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationRequest_IEs_specs_605 = { + sizeof(struct EUTRANRCellResourceCoordinationRequest_IEs), + offsetof(struct EUTRANRCellResourceCoordinationRequest_IEs, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationRequest_IEs_tag2el_605, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs = { + "EUTRANRCellResourceCoordinationRequest-IEs", + "EUTRANRCellResourceCoordinationRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs_tags_605[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationRequest_IEs_605, + 3, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationRequest_IEs_specs_605 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_612[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.ListofEUTRACellsinEUTRACoordinationReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofEUTRACellsinEUTRACoordinationReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofEUTRACellsinEUTRACoordinationReq" + }, +}; +static const unsigned asn_MAP_value_to_canonical_612[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_612[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_612[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* ListofEUTRACellsinEUTRACoordinationReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_612 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, _asn_ctx), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value, present), + sizeof(((struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value *)0)->present), + asn_MAP_value_tag2el_612, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_612, + asn_MAP_value_from_canonical_612, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_612 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_612, + 3, /* Elements count */ + &asn_SPC_value_specs_612 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqIEs_609[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_610, memb_id_constraint_609 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_611, memb_criticality_constraint_609 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_612, + select_ENB_EUTRA_NRCellResourceCoordinationReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_612, memb_value_constraint_609 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_609[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqIEs_specs_609 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqIEs, _asn_ctx), + asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_609, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs = { + "ENB-EUTRA-NRCellResourceCoordinationReqIEs", + "ENB-EUTRA-NRCellResourceCoordinationReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609, + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609[0]), /* 1 */ + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609, /* Same as above */ + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs_tags_609[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqIEs_609, + 3, /* Elements count */ + &asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqIEs_specs_609 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_616[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.ListofEUTRACellsinNRCoordinationReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofEUTRACellsinNRCoordinationReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofEUTRACellsinNRCoordinationReq" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, choice.ListofNRCellsinNRCoordinationReq), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofNRCellsinNRCoordinationReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofNRCellsinNRCoordinationReq" + }, +}; +static const unsigned asn_MAP_value_to_canonical_616[] = { 2, 0, 1, 3 }; +static const unsigned asn_MAP_value_from_canonical_616[] = { 1, 2, 0, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_616[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* ListofEUTRACellsinNRCoordinationReq */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* ListofNRCellsinNRCoordinationReq */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_616 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, _asn_ctx), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value, present), + sizeof(((struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value *)0)->present), + asn_MAP_value_tag2el_616, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_616, + asn_MAP_value_from_canonical_616, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_616 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_616, + 4, /* Elements count */ + &asn_SPC_value_specs_616 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_613[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_614, memb_id_constraint_613 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_615, memb_criticality_constraint_613 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_616, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_616, memb_value_constraint_613 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_613[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_specs_613 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs, _asn_ctx), + asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tag2el_613, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs = { + "En-gNB-EUTRA-NRCellResourceCoordinationReqIEs", + "En-gNB-EUTRA-NRCellResourceCoordinationReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613, + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613[0]), /* 1 */ + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613, /* Same as above */ + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_tags_613[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_613, + 3, /* Elements count */ + &asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_specs_613 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_620[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs__value, choice.RespondingNodeType_EutranrCellResourceCoordination), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EutranrCellResourceCoordination, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EutranrCellResourceCoordination" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_620[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_620 = { + sizeof(struct EUTRANRCellResourceCoordinationResponse_IEs__value), + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs__value, _asn_ctx), + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs__value, present), + sizeof(((struct EUTRANRCellResourceCoordinationResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_620, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_620 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_620, + 1, /* Elements count */ + &asn_SPC_value_specs_620 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationResponse_IEs_617[] = { + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_618, memb_id_constraint_617 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_EUTRANRCellResourceCoordinationResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_619, memb_criticality_constraint_617 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_620, + select_EUTRANRCellResourceCoordinationResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_620, memb_value_constraint_617 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_EUTRANRCellResourceCoordinationResponse_IEs_tag2el_617[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationResponse_IEs_specs_617 = { + sizeof(struct EUTRANRCellResourceCoordinationResponse_IEs), + offsetof(struct EUTRANRCellResourceCoordinationResponse_IEs, _asn_ctx), + asn_MAP_EUTRANRCellResourceCoordinationResponse_IEs_tag2el_617, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs = { + "EUTRANRCellResourceCoordinationResponse-IEs", + "EUTRANRCellResourceCoordinationResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617, + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617[0]), /* 1 */ + asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617, /* Same as above */ + sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617) + /sizeof(asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs_tags_617[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_EUTRANRCellResourceCoordinationResponse_IEs_617, + 3, /* Elements count */ + &asn_SPC_EUTRANRCellResourceCoordinationResponse_IEs_specs_617 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_624[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.ListofEUTRACellsinEUTRACoordinationResp), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofEUTRACellsinEUTRACoordinationResp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofEUTRACellsinEUTRACoordinationResp" + }, +}; +static const unsigned asn_MAP_value_to_canonical_624[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_624[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_624[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* ListofEUTRACellsinEUTRACoordinationResp */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_624 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, _asn_ctx), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, present), + sizeof(((struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_624, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_624, + asn_MAP_value_from_canonical_624, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_624 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_624, + 3, /* Elements count */ + &asn_SPC_value_specs_624 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_621[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_622, memb_id_constraint_621 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_623, memb_criticality_constraint_621 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_624, + select_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_624, memb_value_constraint_621 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_621[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_621 = { + sizeof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs), + offsetof(struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs, _asn_ctx), + asn_MAP_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_621, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs = { + "ENB-EUTRA-NRCellResourceCoordinationReqAckIEs", + "ENB-EUTRA-NRCellResourceCoordinationReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621, + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621[0]), /* 1 */ + asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621, /* Same as above */ + sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621) + /sizeof(asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_621[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_621, + 3, /* Elements count */ + &asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_621 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_628[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.DataTrafficResourceIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_DataTrafficResourceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "DataTrafficResourceIndication" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.SpectrumSharingGroupID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_SpectrumSharingGroupID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SpectrumSharingGroupID" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, choice.ListofNRCellsinNRCoordinationResp), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ListofNRCellsinNRCoordinationResp, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ListofNRCellsinNRCoordinationResp" + }, +}; +static const unsigned asn_MAP_value_to_canonical_628[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_628[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_628[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* SpectrumSharingGroupID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* DataTrafficResourceIndication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* ListofNRCellsinNRCoordinationResp */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_628 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value, present), + sizeof(((struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_628, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_628, + asn_MAP_value_from_canonical_628, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_628 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_628, + 3, /* Elements count */ + &asn_SPC_value_specs_628 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_625[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_626, memb_id_constraint_625 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_627, memb_criticality_constraint_625 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_628, + select_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_628, memb_value_constraint_625 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_625[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_625 = { + sizeof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs), + offsetof(struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs, _asn_ctx), + asn_MAP_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tag2el_625, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs = { + "En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs", + "En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625, + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625[0]), /* 1 */ + asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625, /* Same as above */ + sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625) + /sizeof(asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_tags_625[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_625, + 3, /* Elements count */ + &asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_625 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_632[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs__value, choice.InitiatingNodeType_EndcX2Removal), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_InitiatingNodeType_EndcX2Removal, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "InitiatingNodeType-EndcX2Removal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_632[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* init-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* init-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_632 = { + sizeof(struct ENDCX2RemovalRequest_IEs__value), + offsetof(struct ENDCX2RemovalRequest_IEs__value, _asn_ctx), + offsetof(struct ENDCX2RemovalRequest_IEs__value, present), + sizeof(((struct ENDCX2RemovalRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_632, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_632 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_632, + 1, /* Elements count */ + &asn_SPC_value_specs_632 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2RemovalRequest_IEs_629[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_630, memb_id_constraint_629 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2RemovalRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_631, memb_criticality_constraint_629 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_632, + select_ENDCX2RemovalRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_632, memb_value_constraint_629 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalRequest_IEs_tags_629[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalRequest_IEs_tag2el_629[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalRequest_IEs_specs_629 = { + sizeof(struct ENDCX2RemovalRequest_IEs), + offsetof(struct ENDCX2RemovalRequest_IEs, _asn_ctx), + asn_MAP_ENDCX2RemovalRequest_IEs_tag2el_629, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest_IEs = { + "ENDCX2RemovalRequest-IEs", + "ENDCX2RemovalRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalRequest_IEs_tags_629, + sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629) + /sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629[0]), /* 1 */ + asn_DEF_ENDCX2RemovalRequest_IEs_tags_629, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629) + /sizeof(asn_DEF_ENDCX2RemovalRequest_IEs_tags_629[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalRequest_IEs_629, + 3, /* Elements count */ + &asn_SPC_ENDCX2RemovalRequest_IEs_specs_629 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_636[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_636[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_636 = { + sizeof(struct ENB_ENDCX2RemovalReqIEs__value), + offsetof(struct ENB_ENDCX2RemovalReqIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2RemovalReqIEs__value, present), + sizeof(((struct ENB_ENDCX2RemovalReqIEs__value *)0)->present), + asn_MAP_value_tag2el_636, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_636 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_636, + 1, /* Elements count */ + &asn_SPC_value_specs_636 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqIEs_633[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_634, memb_id_constraint_633 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2RemovalReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_635, memb_criticality_constraint_633 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_636, + select_ENB_ENDCX2RemovalReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_636, memb_value_constraint_633 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2RemovalReqIEs_tag2el_633[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqIEs_specs_633 = { + sizeof(struct ENB_ENDCX2RemovalReqIEs), + offsetof(struct ENB_ENDCX2RemovalReqIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2RemovalReqIEs_tag2el_633, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqIEs = { + "ENB-ENDCX2RemovalReqIEs", + "ENB-ENDCX2RemovalReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633, + sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633[0]), /* 1 */ + asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqIEs_tags_633[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2RemovalReqIEs_633, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2RemovalReqIEs_specs_633 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_640[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_640[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalGNB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_640 = { + sizeof(struct En_gNB_ENDCX2RemovalReqIEs__value), + offsetof(struct En_gNB_ENDCX2RemovalReqIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2RemovalReqIEs__value, present), + sizeof(((struct En_gNB_ENDCX2RemovalReqIEs__value *)0)->present), + asn_MAP_value_tag2el_640, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_640 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_640, + 1, /* Elements count */ + &asn_SPC_value_specs_640 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqIEs_637[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_638, memb_id_constraint_637 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2RemovalReqIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_639, memb_criticality_constraint_637 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_640, + select_En_gNB_ENDCX2RemovalReqIEs_value_type, + { 0, &asn_PER_memb_value_constr_640, memb_value_constraint_637 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2RemovalReqIEs_tag2el_637[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqIEs_specs_637 = { + sizeof(struct En_gNB_ENDCX2RemovalReqIEs), + offsetof(struct En_gNB_ENDCX2RemovalReqIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2RemovalReqIEs_tag2el_637, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqIEs = { + "En-gNB-ENDCX2RemovalReqIEs", + "En-gNB-ENDCX2RemovalReqIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637, + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqIEs_tags_637[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2RemovalReqIEs_637, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2RemovalReqIEs_specs_637 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_644[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs__value, choice.RespondingNodeType_EndcX2Removal), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_RespondingNodeType_EndcX2Removal, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RespondingNodeType-EndcX2Removal" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_644[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_644 = { + sizeof(struct ENDCX2RemovalResponse_IEs__value), + offsetof(struct ENDCX2RemovalResponse_IEs__value, _asn_ctx), + offsetof(struct ENDCX2RemovalResponse_IEs__value, present), + sizeof(((struct ENDCX2RemovalResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_644, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_644 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_644, + 1, /* Elements count */ + &asn_SPC_value_specs_644 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2RemovalResponse_IEs_641[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_642, memb_id_constraint_641 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2RemovalResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_643, memb_criticality_constraint_641 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_644, + select_ENDCX2RemovalResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_644, memb_value_constraint_641 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalResponse_IEs_tags_641[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalResponse_IEs_tag2el_641[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalResponse_IEs_specs_641 = { + sizeof(struct ENDCX2RemovalResponse_IEs), + offsetof(struct ENDCX2RemovalResponse_IEs, _asn_ctx), + asn_MAP_ENDCX2RemovalResponse_IEs_tag2el_641, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse_IEs = { + "ENDCX2RemovalResponse-IEs", + "ENDCX2RemovalResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalResponse_IEs_tags_641, + sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641) + /sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641[0]), /* 1 */ + asn_DEF_ENDCX2RemovalResponse_IEs_tags_641, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641) + /sizeof(asn_DEF_ENDCX2RemovalResponse_IEs_tags_641[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalResponse_IEs_641, + 3, /* Elements count */ + &asn_SPC_ENDCX2RemovalResponse_IEs_specs_641 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_648[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs__value, choice.GlobalENB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalENB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_648[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalENB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_648 = { + sizeof(struct ENB_ENDCX2RemovalReqAckIEs__value), + offsetof(struct ENB_ENDCX2RemovalReqAckIEs__value, _asn_ctx), + offsetof(struct ENB_ENDCX2RemovalReqAckIEs__value, present), + sizeof(((struct ENB_ENDCX2RemovalReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_648, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_648 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_648, + 1, /* Elements count */ + &asn_SPC_value_specs_648 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqAckIEs_645[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_646, memb_id_constraint_645 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENB_ENDCX2RemovalReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_647, memb_criticality_constraint_645 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENB_ENDCX2RemovalReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_648, + select_ENB_ENDCX2RemovalReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_648, memb_value_constraint_645 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ENDCX2RemovalReqAckIEs_tag2el_645[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqAckIEs_specs_645 = { + sizeof(struct ENB_ENDCX2RemovalReqAckIEs), + offsetof(struct ENB_ENDCX2RemovalReqAckIEs, _asn_ctx), + asn_MAP_ENB_ENDCX2RemovalReqAckIEs_tag2el_645, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqAckIEs = { + "ENB-ENDCX2RemovalReqAckIEs", + "ENB-ENDCX2RemovalReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645, + sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645[0]), /* 1 */ + asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645, /* Same as above */ + sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645) + /sizeof(asn_DEF_ENB_ENDCX2RemovalReqAckIEs_tags_645[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENB_ENDCX2RemovalReqAckIEs_645, + 3, /* Elements count */ + &asn_SPC_ENB_ENDCX2RemovalReqAckIEs_specs_645 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_652[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs__value, choice.GlobalGNB_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalGNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_652[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* GlobalGNB-ID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_652 = { + sizeof(struct En_gNB_ENDCX2RemovalReqAckIEs__value), + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs__value, _asn_ctx), + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs__value, present), + sizeof(((struct En_gNB_ENDCX2RemovalReqAckIEs__value *)0)->present), + asn_MAP_value_tag2el_652, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_652 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_652, + 1, /* Elements count */ + &asn_SPC_value_specs_652 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqAckIEs_649[] = { + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_650, memb_id_constraint_649 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_En_gNB_ENDCX2RemovalReqAckIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_651, memb_criticality_constraint_649 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_652, + select_En_gNB_ENDCX2RemovalReqAckIEs_value_type, + { 0, &asn_PER_memb_value_constr_652, memb_value_constraint_649 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_En_gNB_ENDCX2RemovalReqAckIEs_tag2el_649[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqAckIEs_specs_649 = { + sizeof(struct En_gNB_ENDCX2RemovalReqAckIEs), + offsetof(struct En_gNB_ENDCX2RemovalReqAckIEs, _asn_ctx), + asn_MAP_En_gNB_ENDCX2RemovalReqAckIEs_tag2el_649, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs = { + "En-gNB-ENDCX2RemovalReqAckIEs", + "En-gNB-ENDCX2RemovalReqAckIEs", + &asn_OP_SEQUENCE, + asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649, + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649[0]), /* 1 */ + asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649, /* Same as above */ + sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649) + /sizeof(asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs_tags_649[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_En_gNB_ENDCX2RemovalReqAckIEs_649, + 3, /* Elements count */ + &asn_SPC_En_gNB_ENDCX2RemovalReqAckIEs_specs_649 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_656[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_656[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_656[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_656[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_656 = { + sizeof(struct ENDCX2RemovalFailure_IEs__value), + offsetof(struct ENDCX2RemovalFailure_IEs__value, _asn_ctx), + offsetof(struct ENDCX2RemovalFailure_IEs__value, present), + sizeof(((struct ENDCX2RemovalFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_656, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_656, + asn_MAP_value_from_canonical_656, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_656 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_656, + 2, /* Elements count */ + &asn_SPC_value_specs_656 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ENDCX2RemovalFailure_IEs_653[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_654, memb_id_constraint_653 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ENDCX2RemovalFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_655, memb_criticality_constraint_653 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ENDCX2RemovalFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_656, + select_ENDCX2RemovalFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_656, memb_value_constraint_653 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ENDCX2RemovalFailure_IEs_tags_653[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ENDCX2RemovalFailure_IEs_tag2el_653[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalFailure_IEs_specs_653 = { + sizeof(struct ENDCX2RemovalFailure_IEs), + offsetof(struct ENDCX2RemovalFailure_IEs, _asn_ctx), + asn_MAP_ENDCX2RemovalFailure_IEs_tag2el_653, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure_IEs = { + "ENDCX2RemovalFailure-IEs", + "ENDCX2RemovalFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ENDCX2RemovalFailure_IEs_tags_653, + sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653) + /sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653[0]), /* 1 */ + asn_DEF_ENDCX2RemovalFailure_IEs_tags_653, /* Same as above */ + sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653) + /sizeof(asn_DEF_ENDCX2RemovalFailure_IEs_tags_653[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ENDCX2RemovalFailure_IEs_653, + 3, /* Elements count */ + &asn_SPC_ENDCX2RemovalFailure_IEs_specs_653 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_660[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs__value, choice.UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID-Extension" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs__value, choice.UE_X2AP_ID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs__value, choice.E_RABs_DataForwardingAddress_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABs_DataForwardingAddress_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABs-DataForwardingAddress-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_660[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* UE-X2AP-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 } /* E-RABs-DataForwardingAddress-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_660 = { + sizeof(struct DataForwardingAddressIndication_IEs__value), + offsetof(struct DataForwardingAddressIndication_IEs__value, _asn_ctx), + offsetof(struct DataForwardingAddressIndication_IEs__value, present), + sizeof(((struct DataForwardingAddressIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_660, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_660 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_660, + 3, /* Elements count */ + &asn_SPC_value_specs_660 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_DataForwardingAddressIndication_IEs_657[] = { + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_658, memb_id_constraint_657 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_DataForwardingAddressIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_659, memb_criticality_constraint_657 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct DataForwardingAddressIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_660, + select_DataForwardingAddressIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_660, memb_value_constraint_657 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_DataForwardingAddressIndication_IEs_tags_657[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_DataForwardingAddressIndication_IEs_tag2el_657[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_DataForwardingAddressIndication_IEs_specs_657 = { + sizeof(struct DataForwardingAddressIndication_IEs), + offsetof(struct DataForwardingAddressIndication_IEs, _asn_ctx), + asn_MAP_DataForwardingAddressIndication_IEs_tag2el_657, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication_IEs = { + "DataForwardingAddressIndication-IEs", + "DataForwardingAddressIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_DataForwardingAddressIndication_IEs_tags_657, + sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657) + /sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657[0]), /* 1 */ + asn_DEF_DataForwardingAddressIndication_IEs_tags_657, /* Same as above */ + sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657) + /sizeof(asn_DEF_DataForwardingAddressIndication_IEs_tags_657[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_DataForwardingAddressIndication_IEs_657, + 3, /* Elements count */ + &asn_SPC_DataForwardingAddressIndication_IEs_specs_657 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_664[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs__value, choice.GNBOverloadInformation), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_GNBOverloadInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GNBOverloadInformation" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_664[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* GNBOverloadInformation */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_664 = { + sizeof(struct GNBStatusIndicationIEs__value), + offsetof(struct GNBStatusIndicationIEs__value, _asn_ctx), + offsetof(struct GNBStatusIndicationIEs__value, present), + sizeof(((struct GNBStatusIndicationIEs__value *)0)->present), + asn_MAP_value_tag2el_664, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_664 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_664, + 1, /* Elements count */ + &asn_SPC_value_specs_664 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_GNBStatusIndicationIEs_661[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_662, memb_id_constraint_661 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_GNBStatusIndicationIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_663, memb_criticality_constraint_661 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct GNBStatusIndicationIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_664, + select_GNBStatusIndicationIEs_value_type, + { 0, &asn_PER_memb_value_constr_664, memb_value_constraint_661 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_GNBStatusIndicationIEs_tags_661[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GNBStatusIndicationIEs_tag2el_661[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndicationIEs_specs_661 = { + sizeof(struct GNBStatusIndicationIEs), + offsetof(struct GNBStatusIndicationIEs, _asn_ctx), + asn_MAP_GNBStatusIndicationIEs_tag2el_661, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GNBStatusIndicationIEs = { + "GNBStatusIndicationIEs", + "GNBStatusIndicationIEs", + &asn_OP_SEQUENCE, + asn_DEF_GNBStatusIndicationIEs_tags_661, + sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661) + /sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661[0]), /* 1 */ + asn_DEF_GNBStatusIndicationIEs_tags_661, /* Same as above */ + sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661) + /sizeof(asn_DEF_GNBStatusIndicationIEs_tags_661[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GNBStatusIndicationIEs_661, + 3, /* Elements count */ + &asn_SPC_GNBStatusIndicationIEs_specs_661 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_668[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs__value, choice.E_RAB_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RAB_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RAB-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_668[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RAB-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_668 = { + sizeof(struct E_RAB_ItemIEs__value), + offsetof(struct E_RAB_ItemIEs__value, _asn_ctx), + offsetof(struct E_RAB_ItemIEs__value, present), + sizeof(((struct E_RAB_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_668, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_668 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_668, + 1, /* Elements count */ + &asn_SPC_value_specs_668 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RAB_ItemIEs_665[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_666, memb_id_constraint_665 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E_RAB_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_667, memb_criticality_constraint_665 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RAB_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_668, + select_E_RAB_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_668, memb_value_constraint_665 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RAB_ItemIEs_tags_665[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RAB_ItemIEs_tag2el_665[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RAB_ItemIEs_specs_665 = { + sizeof(struct E_RAB_ItemIEs), + offsetof(struct E_RAB_ItemIEs, _asn_ctx), + asn_MAP_E_RAB_ItemIEs_tag2el_665, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RAB_ItemIEs = { + "E-RAB-ItemIEs", + "E-RAB-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RAB_ItemIEs_tags_665, + sizeof(asn_DEF_E_RAB_ItemIEs_tags_665) + /sizeof(asn_DEF_E_RAB_ItemIEs_tags_665[0]), /* 1 */ + asn_DEF_E_RAB_ItemIEs_tags_665, /* Same as above */ + sizeof(asn_DEF_E_RAB_ItemIEs_tags_665) + /sizeof(asn_DEF_E_RAB_ItemIEs_tags_665[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_ItemIEs_665, + 3, /* Elements count */ + &asn_SPC_E_RAB_ItemIEs_specs_665 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_672[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs__value, choice.E_RABUsageReport_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E_RABUsageReport_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E-RABUsageReport-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_672[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* E-RABUsageReport-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_672 = { + sizeof(struct E_RABUsageReport_ItemIEs__value), + offsetof(struct E_RABUsageReport_ItemIEs__value, _asn_ctx), + offsetof(struct E_RABUsageReport_ItemIEs__value, present), + sizeof(((struct E_RABUsageReport_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_672, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_672 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_672, + 1, /* Elements count */ + &asn_SPC_value_specs_672 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E_RABUsageReport_ItemIEs_669[] = { + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_670, memb_id_constraint_669 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_E_RABUsageReport_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_671, memb_criticality_constraint_669 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E_RABUsageReport_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_672, + select_E_RABUsageReport_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_672, memb_value_constraint_669 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E_RABUsageReport_ItemIEs_tags_669[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E_RABUsageReport_ItemIEs_tag2el_669[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_ItemIEs_specs_669 = { + sizeof(struct E_RABUsageReport_ItemIEs), + offsetof(struct E_RABUsageReport_ItemIEs, _asn_ctx), + asn_MAP_E_RABUsageReport_ItemIEs_tag2el_669, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_ItemIEs = { + "E-RABUsageReport-ItemIEs", + "E-RABUsageReport-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_E_RABUsageReport_ItemIEs_tags_669, + sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669) + /sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669[0]), /* 1 */ + asn_DEF_E_RABUsageReport_ItemIEs_tags_669, /* Same as above */ + sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669) + /sizeof(asn_DEF_E_RABUsageReport_ItemIEs_tags_669[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_ItemIEs_669, + 3, /* Elements count */ + &asn_SPC_E_RABUsageReport_ItemIEs_specs_669 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_676[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs__value, choice.SecondaryRATUsageReport_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SecondaryRATUsageReport_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "SecondaryRATUsageReport-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_676[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* SecondaryRATUsageReport-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_676 = { + sizeof(struct SecondaryRATUsageReport_ItemIEs__value), + offsetof(struct SecondaryRATUsageReport_ItemIEs__value, _asn_ctx), + offsetof(struct SecondaryRATUsageReport_ItemIEs__value, present), + sizeof(((struct SecondaryRATUsageReport_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_676, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_676 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_676, + 1, /* Elements count */ + &asn_SPC_value_specs_676 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_ItemIEs_673[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs, id), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_674, memb_id_constraint_673 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs, criticality), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_Criticality, + select_SecondaryRATUsageReport_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_675, memb_criticality_constraint_673 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_ItemIEs, value), + -1 /* Ambiguous tag (ANY?) */, + 0, + &asn_DEF_value_676, + select_SecondaryRATUsageReport_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_676, memb_value_constraint_673 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATUsageReport_ItemIEs_tag2el_673[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 } /* criticality */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673 = { + sizeof(struct SecondaryRATUsageReport_ItemIEs), + offsetof(struct SecondaryRATUsageReport_ItemIEs, _asn_ctx), + asn_MAP_SecondaryRATUsageReport_ItemIEs_tag2el_673, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_ItemIEs = { + "SecondaryRATUsageReport-ItemIEs", + "SecondaryRATUsageReport-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673, + sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673) + /sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673) + /sizeof(asn_DEF_SecondaryRATUsageReport_ItemIEs_tags_673[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_ItemIEs_673, + 3, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Field.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Field.h new file mode 100644 index 0000000..6b5638e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Field.h @@ -0,0 +1,4908 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Field_H_ +#define _ProtocolIE_Field_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICaction-ToBeSetup-Item.h" +#include "Presence.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" +#include "RICaction-Admitted-Item.h" +#include "RICaction-NotAdmitted-Item.h" +#include "RANfunction-Item.h" +#include "RANfunctionID-Item.h" +#include "RANfunctionIDcause-Item.h" +#include "E-RABs-ToBeSetup-Item.h" +#include "E-RABs-Admitted-Item.h" +#include "E-RABs-SubjectToStatusTransfer-Item.h" +#include "CellInformation-Item.h" +#include "CellToReport-Item.h" +#include "MeasurementInitiationResult-Item.h" +#include "MeasurementFailureCause-Item.h" +#include "CompleteFailureCauseInformation-Item.h" +#include "CellMeasurementResult-Item.h" +#include "E-RABs-ToBeAdded-Item.h" +#include "E-RABs-Admitted-ToBeAdded-Item.h" +#include "E-RABs-ToBeAdded-ModReqItem.h" +#include "E-RABs-ToBeModified-ModReqItem.h" +#include "E-RABs-ToBeReleased-ModReqItem.h" +#include "E-RABs-Admitted-ToBeAdded-ModAckItem.h" +#include "E-RABs-Admitted-ToBeModified-ModAckItem.h" +#include "E-RABs-Admitted-ToReleased-ModAckItem.h" +#include "E-RABs-ToBeReleased-ModReqdItem.h" +#include "E-RABs-ToBeReleased-RelReqItem.h" +#include "E-RABs-ToBeReleased-RelConfItem.h" +#include "E-RABs-SubjectToCounterCheckItem.h" +#include "E-RABs-ToBeSetupRetrieve-Item.h" +#include "E-RABs-ToBeAdded-SgNBAddReq-Item.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item.h" +#include "E-RABs-ToBeAdded-SgNBModReq-Item.h" +#include "E-RABs-ToBeModified-SgNBModReq-Item.h" +#include "E-RABs-ToBeReleased-SgNBModReq-Item.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAck-Item.h" +#include "E-RABs-Admitted-ToReleased-SgNBModAck-Item.h" +#include "E-RABs-ToBeReleased-SgNBModReqd-Item.h" +#include "E-RABs-ToBeModified-SgNBModReqd-Item.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConf-Item.h" +#include "E-RABs-ToBeReleased-SgNBRelReq-Item.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item.h" +#include "E-RABs-ToBeReleased-SgNBRelReqd-Item.h" +#include "E-RABs-ToBeReleased-SgNBRelConf-Item.h" +#include "E-RABs-SubjectToSgNBCounterCheck-Item.h" +#include "E-RABs-ToBeReleased-SgNBChaConf-Item.h" +#include "E-RABs-DataForwardingAddress-Item.h" +#include "RICrequestID.h" +#include "RANfunctionID.h" +#include "RICsubscription.h" +#include "RICaction-Admitted-List.h" +#include "RICaction-NotAdmitted-List.h" +#include "CriticalityDiagnostics.h" +#include "RICcause.h" +#include "RICactionID.h" +#include "RICindicationSN.h" +#include "RICindicationType.h" +#include "RICindicationHeader.h" +#include "RICindicationMessage.h" +#include "RICcallProcessID.h" +#include "RICcontrolHeader.h" +#include "RICcontrolMessage.h" +#include "RICcontrolAckRequest.h" +#include "RICcontrolStatus.h" +#include "RANfunctions-List.h" +#include "RANfunctionsID-List.h" +#include "RANfunctionsIDcause-List.h" +#include "TimeToWait.h" +#include "UE-X2AP-ID.h" +#include "Cause.h" +#include "ECGI.h" +#include "GUMMEI.h" +#include "UE-ContextInformation.h" +#include "UE-HistoryInformation.h" +#include "TraceActivation.h" +#include "SRVCCOperationPossible.h" +#include "CSGMembershipStatus.h" +#include "MobilityInformation.h" +#include "Masked-IMEISV.h" +#include "UE-HistoryInformationFromTheUE.h" +#include "ExpectedUEBehaviour.h" +#include "ProSeAuthorized.h" +#include "UE-ContextReferenceAtSeNB.h" +#include "UE-X2AP-ID-Extension.h" +#include "V2XServicesAuthorized.h" +#include "UE-ContextReferenceAtWT.h" +#include "NRUESecurityCapabilities.h" +#include "UE-ContextReferenceAtSgNB.h" +#include "AerialUEsubscriptionInformation.h" +#include "Subscription-Based-UE-DifferentiationInfo.h" +#include "E-RABs-Admitted-List.h" +#include "E-RAB-List.h" +#include "TargeteNBtoSource-eNBTransparentContainer.h" +#include "UE-ContextKeptIndicator.h" +#include "HandoverReportType.h" +#include "TargetCellInUTRAN.h" +#include "CRNTI.h" +#include "UE-RLF-Report-Container.h" +#include "UE-RLF-Report-Container-for-extended-bands.h" +#include "E-RABs-SubjectToStatusTransfer-List.h" +#include "SgNB-UE-X2AP-ID.h" +#include "SIPTOBearerDeactivationIndication.h" +#include "GlobalENB-ID.h" +#include "ServedCells.h" +#include "GUGroupIDList.h" +#include "LHN-ID.h" +#include "CellInformation-List.h" +#include "ServedCellsToModify.h" +#include "Old-ECGIs.h" +#include "CoverageModificationList.h" +#include "Measurement-ID.h" +#include "Registration-Request.h" +#include "ReportCharacteristics.h" +#include "CellToReport-List.h" +#include "ReportingPeriodicity.h" +#include "PartialSuccessIndicator.h" +#include "ReportingPeriodicityRSRPMR.h" +#include "ReportingPeriodicityCSIR.h" +#include "MeasurementInitiationResult-List.h" +#include "CompleteFailureCauseInformation-List.h" +#include "CellMeasurementResult-List.h" +#include "MobilityParametersInformation.h" +#include "MobilityParametersModificationRange.h" +#include "PCI.h" +#include "ShortMAC-I.h" +#include "RRCConnSetupIndicator.h" +#include "RRCConnReestabIndicator.h" +#include "ServedCellsToActivate.h" +#include "ActivatedCellList.h" +#include "RNL-Header.h" +#include "X2AP-Message.h" +#include "UESecurityCapabilities.h" +#include "SeNBSecurityKey.h" +#include "UEAggregateMaximumBitRate.h" +#include "PLMN-Identity.h" +#include "E-RABs-ToBeAdded-List.h" +#include "MeNBtoSeNBContainer.h" +#include "E-RABs-Admitted-ToBeAdded-List.h" +#include "SeNBtoMeNBContainer.h" +#include "TransportLayerAddress.h" +#include "TunnelInformation.h" +#include "ResponseInformationSeNBReconfComp.h" +#include "SCGChangeIndication.h" +#include "UE-ContextInformationSeNBModReq.h" +#include "E-RABs-Admitted-ToBeAdded-ModAckList.h" +#include "E-RABs-Admitted-ToBeModified-ModAckList.h" +#include "E-RABs-Admitted-ToBeReleased-ModAckList.h" +#include "E-RABs-ToBeReleased-ModReqd.h" +#include "E-RABs-ToBeReleased-List-RelReq.h" +#include "MakeBeforeBreakIndicator.h" +#include "E-RABs-ToBeReleased-List-RelConf.h" +#include "E-RABs-SubjectToCounterCheck-List.h" +#include "X2BenefitValue.h" +#include "ResumeID.h" +#include "EUTRANCellIdentifier.h" +#include "UE-ContextInformationRetrieve.h" +#include "SgNBSecurityKey.h" +#include "HandoverRestrictionList.h" +#include "E-RABs-ToBeAdded-SgNBAddReqList.h" +#include "MeNBtoSgNBContainer.h" +#include "SplitSRBs.h" +#include "MeNBResourceCoordinationInformation.h" +#include "SGNB-Addition-Trigger-Ind.h" +#include "SubscriberProfileIDforRFP.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList.h" +#include "SgNBtoMeNBContainer.h" +#include "SgNBResourceCoordinationInformation.h" +#include "RRC-Config-Ind.h" +#include "ResponseInformationSgNBReconfComp.h" +#include "SCGConfigurationQuery.h" +#include "UE-ContextInformation-SgNBModReq.h" +#include "E-RABs-Admitted-ToBeAdded-SgNBModAckList.h" +#include "E-RABs-Admitted-ToBeModified-SgNBModAckList.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBModAckList.h" +#include "PDCPChangeIndication.h" +#include "E-RABs-ToBeReleased-SgNBModReqdList.h" +#include "E-RABs-ToBeModified-SgNBModReqdList.h" +#include "E-RABs-AdmittedToBeModified-SgNBModConfList.h" +#include "E-RABs-ToBeReleased-SgNBRelReqList.h" +#include "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList.h" +#include "E-RABs-ToBeReleased-SgNBRelReqdList.h" +#include "E-RABs-ToBeReleased-SgNBRelConfList.h" +#include "E-RABs-SubjectToSgNBCounterCheck-List.h" +#include "GlobalGNB-ID.h" +#include "E-RABs-ToBeReleased-SgNBChaConfList.h" +#include "SplitSRB.h" +#include "UENRMeasurement.h" +#include "InitiatingNodeType-EndcX2Setup.h" +#include "ServedEUTRAcellsENDCX2ManagementList.h" +#include "ServedNRcellsENDCX2ManagementList.h" +#include "RespondingNodeType-EndcX2Setup.h" +#include "InitiatingNodeType-EndcConfigUpdate.h" +#include "CellAssistanceInformation.h" +#include "ServedEUTRAcellsToModifyListENDCConfUpd.h" +#include "ServedEUTRAcellsToDeleteListENDCConfUpd.h" +#include "ServedNRcellsToModifyENDCConfUpdList.h" +#include "ServedNRcellsToDeleteENDCConfUpdList.h" +#include "RespondingNodeType-EndcConfigUpdate.h" +#include "ServedNRCellsToActivate.h" +#include "ActivationID.h" +#include "ActivatedNRCellList.h" +#include "SecondaryRATUsageReportList.h" +#include "UserPlaneTrafficActivityReport.h" +#include "ERABActivityNotifyItemList.h" +#include "UEsToBeResetList.h" +#include "InitiatingNodeType-EutranrCellResourceCoordination.h" +#include "DataTrafficResourceIndication.h" +#include "SpectrumSharingGroupID.h" +#include "ListofEUTRACellsinEUTRACoordinationReq.h" +#include "ListofEUTRACellsinNRCoordinationReq.h" +#include "ListofNRCellsinNRCoordinationReq.h" +#include "RespondingNodeType-EutranrCellResourceCoordination.h" +#include "ListofEUTRACellsinEUTRACoordinationResp.h" +#include "ListofNRCellsinNRCoordinationResp.h" +#include "InitiatingNodeType-EndcX2Removal.h" +#include "RespondingNodeType-EndcX2Removal.h" +#include "E-RABs-DataForwardingAddress-List.h" +#include "GNBOverloadInformation.h" +#include "E-RAB-Item.h" +#include "E-RABUsageReport-Item.h" +#include "SecondaryRATUsageReport-Item.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { + RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item +} RICaction_ToBeSetup_ItemIEs__value_PR; +typedef enum RICaction_Admitted_ItemIEs__value_PR { + RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item +} RICaction_Admitted_ItemIEs__value_PR; +typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { + RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item +} RICaction_NotAdmitted_ItemIEs__value_PR; +typedef enum RANfunction_ItemIEs__value_PR { + RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunction_ItemIEs__value_PR_RANfunction_Item +} RANfunction_ItemIEs__value_PR; +typedef enum RANfunctionID_ItemIEs__value_PR { + RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item +} RANfunctionID_ItemIEs__value_PR; +typedef enum RANfunctionIDcause_ItemIEs__value_PR { + RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item +} RANfunctionIDcause_ItemIEs__value_PR; +typedef enum E_RABs_ToBeSetup_ItemIEs__value_PR { + E_RABs_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetup_ItemIEs__value_PR_E_RABs_ToBeSetup_Item +} E_RABs_ToBeSetup_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ItemIEs__value_PR { + E_RABs_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ItemIEs__value_PR_E_RABs_Admitted_Item +} E_RABs_Admitted_ItemIEs__value_PR; +typedef enum E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR { + E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR_E_RABs_SubjectToStatusTransfer_Item +} E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR; +typedef enum CellInformation_ItemIEs__value_PR { + CellInformation_ItemIEs__value_PR_NOTHING, /* No components present */ + CellInformation_ItemIEs__value_PR_CellInformation_Item +} CellInformation_ItemIEs__value_PR; +typedef enum CellToReport_ItemIEs__value_PR { + CellToReport_ItemIEs__value_PR_NOTHING, /* No components present */ + CellToReport_ItemIEs__value_PR_CellToReport_Item +} CellToReport_ItemIEs__value_PR; +typedef enum MeasurementInitiationResult_ItemIEs__value_PR { + MeasurementInitiationResult_ItemIEs__value_PR_NOTHING, /* No components present */ + MeasurementInitiationResult_ItemIEs__value_PR_MeasurementInitiationResult_Item +} MeasurementInitiationResult_ItemIEs__value_PR; +typedef enum MeasurementFailureCause_ItemIEs__value_PR { + MeasurementFailureCause_ItemIEs__value_PR_NOTHING, /* No components present */ + MeasurementFailureCause_ItemIEs__value_PR_MeasurementFailureCause_Item +} MeasurementFailureCause_ItemIEs__value_PR; +typedef enum CompleteFailureCauseInformation_ItemIEs__value_PR { + CompleteFailureCauseInformation_ItemIEs__value_PR_NOTHING, /* No components present */ + CompleteFailureCauseInformation_ItemIEs__value_PR_CompleteFailureCauseInformation_Item +} CompleteFailureCauseInformation_ItemIEs__value_PR; +typedef enum CellMeasurementResult_ItemIEs__value_PR { + CellMeasurementResult_ItemIEs__value_PR_NOTHING, /* No components present */ + CellMeasurementResult_ItemIEs__value_PR_CellMeasurementResult_Item +} CellMeasurementResult_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_ItemIEs__value_PR { + E_RABs_ToBeAdded_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ItemIEs__value_PR_E_RABs_ToBeAdded_Item +} E_RABs_ToBeAdded_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_Item +} E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_ModReqItemIEs__value_PR { + E_RABs_ToBeAdded_ModReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_ModReqItemIEs__value_PR_E_RABs_ToBeAdded_ModReqItem +} E_RABs_ToBeAdded_ModReqItemIEs__value_PR; +typedef enum E_RABs_ToBeModified_ModReqItemIEs__value_PR { + E_RABs_ToBeModified_ModReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_ModReqItemIEs__value_PR_E_RABs_ToBeModified_ModReqItem +} E_RABs_ToBeModified_ModReqItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_ModReqItemIEs__value_PR { + E_RABs_ToBeReleased_ModReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_ModReqItemIEs__value_PR_E_RABs_ToBeReleased_ModReqItem +} E_RABs_ToBeReleased_ModReqItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_ModAckItem +} E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR { + E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR_E_RABs_Admitted_ToBeModified_ModAckItem +} E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR { + E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR_E_RABs_Admitted_ToReleased_ModAckItem +} E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_ModReqdItemIEs__value_PR { + E_RABs_ToBeReleased_ModReqdItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_ModReqdItemIEs__value_PR_E_RABs_ToBeReleased_ModReqdItem +} E_RABs_ToBeReleased_ModReqdItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_RelReqItemIEs__value_PR { + E_RABs_ToBeReleased_RelReqItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelReqItemIEs__value_PR_E_RABs_ToBeReleased_RelReqItem +} E_RABs_ToBeReleased_RelReqItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_RelConfItemIEs__value_PR { + E_RABs_ToBeReleased_RelConfItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_RelConfItemIEs__value_PR_E_RABs_ToBeReleased_RelConfItem +} E_RABs_ToBeReleased_RelConfItemIEs__value_PR; +typedef enum E_RABs_SubjectToCounterCheckItemIEs__value_PR { + E_RABs_SubjectToCounterCheckItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_SubjectToCounterCheckItemIEs__value_PR_E_RABs_SubjectToCounterCheckItem +} E_RABs_SubjectToCounterCheckItemIEs__value_PR; +typedef enum E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR { + E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR_E_RABs_ToBeSetupRetrieve_Item +} E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR { + E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR_E_RABs_ToBeAdded_SgNBAddReq_Item +} E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR { + E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR_E_RABs_ToBeAdded_SgNBModReq_Item +} E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR; +typedef enum E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR { + E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR_E_RABs_ToBeModified_SgNBModReq_Item +} E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBModReq_Item +} E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeModified_SgNBModAck_Item +} E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR_E_RABs_Admitted_ToReleased_SgNBModAck_Item +} E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBModReqd_Item +} E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR; +typedef enum E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR { + E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR_E_RABs_ToBeModified_SgNBModReqd_Item +} E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR; +typedef enum E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR_E_RABs_AdmittedToBeModified_SgNBModConf_Item +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBRelReq_Item +} E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR; +typedef enum E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBRelReqd_Item +} E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBRelConf_Item +} E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR; +typedef enum E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR { + E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR_E_RABs_SubjectToSgNBCounterCheck_Item +} E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR; +typedef enum E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR { + E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR_E_RABs_ToBeReleased_SgNBChaConf_Item +} E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR; +typedef enum E_RABs_DataForwardingAddress_ItemIEs__value_PR { + E_RABs_DataForwardingAddress_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABs_DataForwardingAddress_ItemIEs__value_PR_E_RABs_DataForwardingAddress_Item +} E_RABs_DataForwardingAddress_ItemIEs__value_PR; +typedef enum RICsubscriptionRequest_IEs__value_PR { + RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionRequest_IEs__value_PR_RICrequestID, + RICsubscriptionRequest_IEs__value_PR_RANfunctionID, + RICsubscriptionRequest_IEs__value_PR_RICsubscription +} RICsubscriptionRequest_IEs__value_PR; +typedef enum RICsubscriptionResponse_IEs__value_PR { + RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionResponse_IEs__value_PR_RICrequestID, + RICsubscriptionResponse_IEs__value_PR_RANfunctionID, + RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, + RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List +} RICsubscriptionResponse_IEs__value_PR; +typedef enum RICsubscriptionFailure_IEs__value_PR { + RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionFailure_IEs__value_PR_RICrequestID, + RICsubscriptionFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List, + RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionFailure_IEs__value_PR; +typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { + RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteRequest_IEs__value_PR; +typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { + RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteResponse_IEs__value_PR; +typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { + RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionDeleteFailure_IEs__value_PR_RICcause, + RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionDeleteFailure_IEs__value_PR; +typedef enum RICindication_IEs__value_PR { + RICindication_IEs__value_PR_NOTHING, /* No components present */ + RICindication_IEs__value_PR_RICrequestID, + RICindication_IEs__value_PR_RANfunctionID, + RICindication_IEs__value_PR_RICactionID, + RICindication_IEs__value_PR_RICindicationSN, + RICindication_IEs__value_PR_RICindicationType, + RICindication_IEs__value_PR_RICindicationHeader, + RICindication_IEs__value_PR_RICindicationMessage, + RICindication_IEs__value_PR_RICcallProcessID +} RICindication_IEs__value_PR; +typedef enum RICcontrolRequest_IEs__value_PR { + RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolRequest_IEs__value_PR_RICrequestID, + RICcontrolRequest_IEs__value_PR_RANfunctionID, + RICcontrolRequest_IEs__value_PR_RICcallProcessID, + RICcontrolRequest_IEs__value_PR_RICcontrolHeader, + RICcontrolRequest_IEs__value_PR_RICcontrolMessage, + RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest +} RICcontrolRequest_IEs__value_PR; +typedef enum RICcontrolAcknowledge_IEs__value_PR { + RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolAcknowledge_IEs__value_PR_RICrequestID, + RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, + RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus +} RICcontrolAcknowledge_IEs__value_PR; +typedef enum RICcontrolFailure_IEs__value_PR { + RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolFailure_IEs__value_PR_RICrequestID, + RICcontrolFailure_IEs__value_PR_RANfunctionID, + RICcontrolFailure_IEs__value_PR_RICcallProcessID, + RICcontrolFailure_IEs__value_PR_RICcause +} RICcontrolFailure_IEs__value_PR; +typedef enum RICserviceUpdate_IEs__value_PR { + RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List +} RICserviceUpdate_IEs__value_PR; +typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { + RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List +} RICserviceUpdateAcknowledge_IEs__value_PR; +typedef enum RICserviceUpdateFailure_IEs__value_PR { + RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateFailure_IEs__value_PR_RANfunctionsIDcause_List, + RICserviceUpdateFailure_IEs__value_PR_TimeToWait, + RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} RICserviceUpdateFailure_IEs__value_PR; +typedef enum RICserviceQuery_IEs__value_PR { + RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ + RICserviceQuery_IEs__value_PR_RANfunctionsID_List +} RICserviceQuery_IEs__value_PR; +typedef enum HandoverRequest_IEs__value_PR { + HandoverRequest_IEs__value_PR_NOTHING, /* No components present */ + HandoverRequest_IEs__value_PR_UE_X2AP_ID, + HandoverRequest_IEs__value_PR_Cause, + HandoverRequest_IEs__value_PR_ECGI, + HandoverRequest_IEs__value_PR_GUMMEI, + HandoverRequest_IEs__value_PR_UE_ContextInformation, + HandoverRequest_IEs__value_PR_UE_HistoryInformation, + HandoverRequest_IEs__value_PR_TraceActivation, + HandoverRequest_IEs__value_PR_SRVCCOperationPossible, + HandoverRequest_IEs__value_PR_CSGMembershipStatus, + HandoverRequest_IEs__value_PR_MobilityInformation, + HandoverRequest_IEs__value_PR_Masked_IMEISV, + HandoverRequest_IEs__value_PR_UE_HistoryInformationFromTheUE, + HandoverRequest_IEs__value_PR_ExpectedUEBehaviour, + HandoverRequest_IEs__value_PR_ProSeAuthorized, + HandoverRequest_IEs__value_PR_UE_ContextReferenceAtSeNB, + HandoverRequest_IEs__value_PR_UE_X2AP_ID_Extension, + HandoverRequest_IEs__value_PR_V2XServicesAuthorized, + HandoverRequest_IEs__value_PR_UE_ContextReferenceAtWT, + HandoverRequest_IEs__value_PR_NRUESecurityCapabilities, + HandoverRequest_IEs__value_PR_UE_ContextReferenceAtSgNB, + HandoverRequest_IEs__value_PR_AerialUEsubscriptionInformation, + HandoverRequest_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo +} HandoverRequest_IEs__value_PR; +typedef enum HandoverRequestAcknowledge_IEs__value_PR { + HandoverRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + HandoverRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_List, + HandoverRequestAcknowledge_IEs__value_PR_E_RAB_List, + HandoverRequestAcknowledge_IEs__value_PR_TargeteNBtoSource_eNBTransparentContainer, + HandoverRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + HandoverRequestAcknowledge_IEs__value_PR_UE_ContextKeptIndicator, + HandoverRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension +} HandoverRequestAcknowledge_IEs__value_PR; +typedef enum HandoverPreparationFailure_IEs__value_PR { + HandoverPreparationFailure_IEs__value_PR_NOTHING, /* No components present */ + HandoverPreparationFailure_IEs__value_PR_UE_X2AP_ID, + HandoverPreparationFailure_IEs__value_PR_Cause, + HandoverPreparationFailure_IEs__value_PR_CriticalityDiagnostics, + HandoverPreparationFailure_IEs__value_PR_UE_X2AP_ID_Extension +} HandoverPreparationFailure_IEs__value_PR; +typedef enum HandoverReport_IEs__value_PR { + HandoverReport_IEs__value_PR_NOTHING, /* No components present */ + HandoverReport_IEs__value_PR_HandoverReportType, + HandoverReport_IEs__value_PR_Cause, + HandoverReport_IEs__value_PR_ECGI, + HandoverReport_IEs__value_PR_TargetCellInUTRAN, + HandoverReport_IEs__value_PR_CRNTI, + HandoverReport_IEs__value_PR_MobilityInformation, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container, + HandoverReport_IEs__value_PR_UE_RLF_Report_Container_for_extended_bands +} HandoverReport_IEs__value_PR; +typedef enum SNStatusTransfer_IEs__value_PR { + SNStatusTransfer_IEs__value_PR_NOTHING, /* No components present */ + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID, + SNStatusTransfer_IEs__value_PR_E_RABs_SubjectToStatusTransfer_List, + SNStatusTransfer_IEs__value_PR_UE_X2AP_ID_Extension, + SNStatusTransfer_IEs__value_PR_SgNB_UE_X2AP_ID +} SNStatusTransfer_IEs__value_PR; +typedef enum UEContextRelease_IEs__value_PR { + UEContextRelease_IEs__value_PR_NOTHING, /* No components present */ + UEContextRelease_IEs__value_PR_UE_X2AP_ID, + UEContextRelease_IEs__value_PR_UE_X2AP_ID_Extension, + UEContextRelease_IEs__value_PR_SIPTOBearerDeactivationIndication, + UEContextRelease_IEs__value_PR_SgNB_UE_X2AP_ID +} UEContextRelease_IEs__value_PR; +typedef enum HandoverCancel_IEs__value_PR { + HandoverCancel_IEs__value_PR_NOTHING, /* No components present */ + HandoverCancel_IEs__value_PR_UE_X2AP_ID, + HandoverCancel_IEs__value_PR_Cause, + HandoverCancel_IEs__value_PR_UE_X2AP_ID_Extension +} HandoverCancel_IEs__value_PR; +typedef enum ErrorIndication_IEs__value_PR { + ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ + ErrorIndication_IEs__value_PR_UE_X2AP_ID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics, + ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension, + ErrorIndication_IEs__value_PR_SgNB_UE_X2AP_ID +} ErrorIndication_IEs__value_PR; +typedef enum ResetRequest_IEs__value_PR { + ResetRequest_IEs__value_PR_NOTHING, /* No components present */ + ResetRequest_IEs__value_PR_Cause +} ResetRequest_IEs__value_PR; +typedef enum ResetResponse_IEs__value_PR { + ResetResponse_IEs__value_PR_NOTHING, /* No components present */ + ResetResponse_IEs__value_PR_CriticalityDiagnostics +} ResetResponse_IEs__value_PR; +typedef enum X2SetupRequest_IEs__value_PR { + X2SetupRequest_IEs__value_PR_NOTHING, /* No components present */ + X2SetupRequest_IEs__value_PR_GlobalENB_ID, + X2SetupRequest_IEs__value_PR_ServedCells, + X2SetupRequest_IEs__value_PR_GUGroupIDList, + X2SetupRequest_IEs__value_PR_LHN_ID +} X2SetupRequest_IEs__value_PR; +typedef enum X2SetupResponse_IEs__value_PR { + X2SetupResponse_IEs__value_PR_NOTHING, /* No components present */ + X2SetupResponse_IEs__value_PR_GlobalENB_ID, + X2SetupResponse_IEs__value_PR_ServedCells, + X2SetupResponse_IEs__value_PR_GUGroupIDList, + X2SetupResponse_IEs__value_PR_CriticalityDiagnostics, + X2SetupResponse_IEs__value_PR_LHN_ID +} X2SetupResponse_IEs__value_PR; +typedef enum X2SetupFailure_IEs__value_PR { + X2SetupFailure_IEs__value_PR_NOTHING, /* No components present */ + X2SetupFailure_IEs__value_PR_Cause, + X2SetupFailure_IEs__value_PR_TimeToWait, + X2SetupFailure_IEs__value_PR_CriticalityDiagnostics +} X2SetupFailure_IEs__value_PR; +typedef enum LoadInformation_IEs__value_PR { + LoadInformation_IEs__value_PR_NOTHING, /* No components present */ + LoadInformation_IEs__value_PR_CellInformation_List +} LoadInformation_IEs__value_PR; +typedef enum ENBConfigurationUpdate_IEs__value_PR { + ENBConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdate_IEs__value_PR_ServedCells, + ENBConfigurationUpdate_IEs__value_PR_ServedCellsToModify, + ENBConfigurationUpdate_IEs__value_PR_Old_ECGIs, + ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList, + ENBConfigurationUpdate_IEs__value_PR_CoverageModificationList +} ENBConfigurationUpdate_IEs__value_PR; +typedef enum ENBConfigurationUpdateAcknowledge_IEs__value_PR { + ENBConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateAcknowledge_IEs__value_PR_CriticalityDiagnostics +} ENBConfigurationUpdateAcknowledge_IEs__value_PR; +typedef enum ENBConfigurationUpdateFailure_IEs__value_PR { + ENBConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + ENBConfigurationUpdateFailure_IEs__value_PR_Cause, + ENBConfigurationUpdateFailure_IEs__value_PR_TimeToWait, + ENBConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} ENBConfigurationUpdateFailure_IEs__value_PR; +typedef enum ResourceStatusRequest_IEs__value_PR { + ResourceStatusRequest_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusRequest_IEs__value_PR_Measurement_ID, + ResourceStatusRequest_IEs__value_PR_Registration_Request, + ResourceStatusRequest_IEs__value_PR_ReportCharacteristics, + ResourceStatusRequest_IEs__value_PR_CellToReport_List, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicity, + ResourceStatusRequest_IEs__value_PR_PartialSuccessIndicator, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityRSRPMR, + ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityCSIR +} ResourceStatusRequest_IEs__value_PR; +typedef enum ResourceStatusResponse_IEs__value_PR { + ResourceStatusResponse_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusResponse_IEs__value_PR_Measurement_ID, + ResourceStatusResponse_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusResponse_IEs__value_PR_MeasurementInitiationResult_List +} ResourceStatusResponse_IEs__value_PR; +typedef enum ResourceStatusFailure_IEs__value_PR { + ResourceStatusFailure_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusFailure_IEs__value_PR_Measurement_ID, + ResourceStatusFailure_IEs__value_PR_Cause, + ResourceStatusFailure_IEs__value_PR_CriticalityDiagnostics, + ResourceStatusFailure_IEs__value_PR_CompleteFailureCauseInformation_List +} ResourceStatusFailure_IEs__value_PR; +typedef enum ResourceStatusUpdate_IEs__value_PR { + ResourceStatusUpdate_IEs__value_PR_NOTHING, /* No components present */ + ResourceStatusUpdate_IEs__value_PR_Measurement_ID, + ResourceStatusUpdate_IEs__value_PR_CellMeasurementResult_List +} ResourceStatusUpdate_IEs__value_PR; +typedef enum MobilityChangeRequest_IEs__value_PR { + MobilityChangeRequest_IEs__value_PR_NOTHING, /* No components present */ + MobilityChangeRequest_IEs__value_PR_ECGI, + MobilityChangeRequest_IEs__value_PR_MobilityParametersInformation, + MobilityChangeRequest_IEs__value_PR_Cause +} MobilityChangeRequest_IEs__value_PR; +typedef enum MobilityChangeAcknowledge_IEs__value_PR { + MobilityChangeAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + MobilityChangeAcknowledge_IEs__value_PR_ECGI, + MobilityChangeAcknowledge_IEs__value_PR_CriticalityDiagnostics +} MobilityChangeAcknowledge_IEs__value_PR; +typedef enum MobilityChangeFailure_IEs__value_PR { + MobilityChangeFailure_IEs__value_PR_NOTHING, /* No components present */ + MobilityChangeFailure_IEs__value_PR_ECGI, + MobilityChangeFailure_IEs__value_PR_Cause, + MobilityChangeFailure_IEs__value_PR_MobilityParametersModificationRange, + MobilityChangeFailure_IEs__value_PR_CriticalityDiagnostics +} MobilityChangeFailure_IEs__value_PR; +typedef enum RLFIndication_IEs__value_PR { + RLFIndication_IEs__value_PR_NOTHING, /* No components present */ + RLFIndication_IEs__value_PR_PCI, + RLFIndication_IEs__value_PR_ECGI, + RLFIndication_IEs__value_PR_CRNTI, + RLFIndication_IEs__value_PR_ShortMAC_I, + RLFIndication_IEs__value_PR_UE_RLF_Report_Container, + RLFIndication_IEs__value_PR_RRCConnSetupIndicator, + RLFIndication_IEs__value_PR_RRCConnReestabIndicator, + RLFIndication_IEs__value_PR_UE_RLF_Report_Container_for_extended_bands +} RLFIndication_IEs__value_PR; +typedef enum CellActivationRequest_IEs__value_PR { + CellActivationRequest_IEs__value_PR_NOTHING, /* No components present */ + CellActivationRequest_IEs__value_PR_ServedCellsToActivate +} CellActivationRequest_IEs__value_PR; +typedef enum CellActivationResponse_IEs__value_PR { + CellActivationResponse_IEs__value_PR_NOTHING, /* No components present */ + CellActivationResponse_IEs__value_PR_ActivatedCellList, + CellActivationResponse_IEs__value_PR_CriticalityDiagnostics +} CellActivationResponse_IEs__value_PR; +typedef enum CellActivationFailure_IEs__value_PR { + CellActivationFailure_IEs__value_PR_NOTHING, /* No components present */ + CellActivationFailure_IEs__value_PR_Cause, + CellActivationFailure_IEs__value_PR_CriticalityDiagnostics +} CellActivationFailure_IEs__value_PR; +typedef enum X2Release_IEs__value_PR { + X2Release_IEs__value_PR_NOTHING, /* No components present */ + X2Release_IEs__value_PR_GlobalENB_ID +} X2Release_IEs__value_PR; +typedef enum X2APMessageTransfer_IEs__value_PR { + X2APMessageTransfer_IEs__value_PR_NOTHING, /* No components present */ + X2APMessageTransfer_IEs__value_PR_RNL_Header, + X2APMessageTransfer_IEs__value_PR_X2AP_Message +} X2APMessageTransfer_IEs__value_PR; +typedef enum SeNBAdditionRequest_IEs__value_PR { + SeNBAdditionRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequest_IEs__value_PR_UESecurityCapabilities, + SeNBAdditionRequest_IEs__value_PR_SeNBSecurityKey, + SeNBAdditionRequest_IEs__value_PR_UEAggregateMaximumBitRate, + SeNBAdditionRequest_IEs__value_PR_PLMN_Identity, + SeNBAdditionRequest_IEs__value_PR_E_RABs_ToBeAdded_List, + SeNBAdditionRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBAdditionRequest_IEs__value_PR_CSGMembershipStatus, + SeNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequest_IEs__value_PR_ExpectedUEBehaviour +} SeNBAdditionRequest_IEs__value_PR; +typedef enum SeNBAdditionRequestAcknowledge_IEs__value_PR { + SeNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBAdditionRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBAdditionRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TransportLayerAddress, + SeNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBAdditionRequestAcknowledge_IEs__value_PR_TunnelInformation +} SeNBAdditionRequestAcknowledge_IEs__value_PR; +typedef enum SeNBAdditionRequestReject_IEs__value_PR { + SeNBAdditionRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBAdditionRequestReject_IEs__value_PR_Cause, + SeNBAdditionRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBAdditionRequestReject_IEs__value_PR; +typedef enum SeNBReconfigurationComplete_IEs__value_PR { + SeNBReconfigurationComplete_IEs__value_PR_NOTHING, /* No components present */ + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SeNBReconfigurationComplete_IEs__value_PR_ResponseInformationSeNBReconfComp, + SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBReconfigurationComplete_IEs__value_PR; +typedef enum SeNBModificationRequest_IEs__value_PR { + SeNBModificationRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequest_IEs__value_PR_Cause, + SeNBModificationRequest_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequest_IEs__value_PR_PLMN_Identity, + SeNBModificationRequest_IEs__value_PR_UE_ContextInformationSeNBModReq, + SeNBModificationRequest_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRequest_IEs__value_PR_CSGMembershipStatus, + SeNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequest_IEs__value_PR; +typedef enum SeNBModificationRequestAcknowledge_IEs__value_PR { + SeNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_ModAckList, + SeNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SeNBModificationRequestAcknowledge_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequestAcknowledge_IEs__value_PR; +typedef enum SeNBModificationRequestReject_IEs__value_PR { + SeNBModificationRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequestReject_IEs__value_PR_Cause, + SeNBModificationRequestReject_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequestReject_IEs__value_PR; +typedef enum SeNBModificationRequired_IEs__value_PR { + SeNBModificationRequired_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRequired_IEs__value_PR_Cause, + SeNBModificationRequired_IEs__value_PR_SCGChangeIndication, + SeNBModificationRequired_IEs__value_PR_E_RABs_ToBeReleased_ModReqd, + SeNBModificationRequired_IEs__value_PR_SeNBtoMeNBContainer, + SeNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRequired_IEs__value_PR; +typedef enum SeNBModificationConfirm_IEs__value_PR { + SeNBModificationConfirm_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBModificationConfirm_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationConfirm_IEs__value_PR; +typedef enum SeNBModificationRefuse_IEs__value_PR { + SeNBModificationRefuse_IEs__value_PR_NOTHING, /* No components present */ + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SeNBModificationRefuse_IEs__value_PR_Cause, + SeNBModificationRefuse_IEs__value_PR_MeNBtoSeNBContainer, + SeNBModificationRefuse_IEs__value_PR_CriticalityDiagnostics, + SeNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBModificationRefuse_IEs__value_PR; +typedef enum SeNBReleaseRequest_IEs__value_PR { + SeNBReleaseRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequest_IEs__value_PR_Cause, + SeNBReleaseRequest_IEs__value_PR_E_RABs_ToBeReleased_List_RelReq, + SeNBReleaseRequest_IEs__value_PR_UE_ContextKeptIndicator, + SeNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SeNBReleaseRequest_IEs__value_PR_MakeBeforeBreakIndicator +} SeNBReleaseRequest_IEs__value_PR; +typedef enum SeNBReleaseRequired_IEs__value_PR { + SeNBReleaseRequired_IEs__value_PR_NOTHING, /* No components present */ + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseRequired_IEs__value_PR_Cause, + SeNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBReleaseRequired_IEs__value_PR; +typedef enum SeNBReleaseConfirm_IEs__value_PR { + SeNBReleaseConfirm_IEs__value_PR_NOTHING, /* No components present */ + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SeNBReleaseConfirm_IEs__value_PR_E_RABs_ToBeReleased_List_RelConf, + SeNBReleaseConfirm_IEs__value_PR_CriticalityDiagnostics, + SeNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBReleaseConfirm_IEs__value_PR; +typedef enum SeNBCounterCheckRequest_IEs__value_PR { + SeNBCounterCheckRequest_IEs__value_PR_NOTHING, /* No components present */ + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SeNBCounterCheckRequest_IEs__value_PR_E_RABs_SubjectToCounterCheck_List, + SeNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension +} SeNBCounterCheckRequest_IEs__value_PR; +typedef enum X2RemovalRequest_IEs__value_PR { + X2RemovalRequest_IEs__value_PR_NOTHING, /* No components present */ + X2RemovalRequest_IEs__value_PR_GlobalENB_ID, + X2RemovalRequest_IEs__value_PR_X2BenefitValue +} X2RemovalRequest_IEs__value_PR; +typedef enum X2RemovalResponse_IEs__value_PR { + X2RemovalResponse_IEs__value_PR_NOTHING, /* No components present */ + X2RemovalResponse_IEs__value_PR_GlobalENB_ID, + X2RemovalResponse_IEs__value_PR_CriticalityDiagnostics +} X2RemovalResponse_IEs__value_PR; +typedef enum X2RemovalFailure_IEs__value_PR { + X2RemovalFailure_IEs__value_PR_NOTHING, /* No components present */ + X2RemovalFailure_IEs__value_PR_Cause, + X2RemovalFailure_IEs__value_PR_CriticalityDiagnostics +} X2RemovalFailure_IEs__value_PR; +typedef enum RetrieveUEContextRequest_IEs__value_PR { + RetrieveUEContextRequest_IEs__value_PR_NOTHING, /* No components present */ + RetrieveUEContextRequest_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextRequest_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextRequest_IEs__value_PR_ResumeID, + RetrieveUEContextRequest_IEs__value_PR_ShortMAC_I, + RetrieveUEContextRequest_IEs__value_PR_EUTRANCellIdentifier, + RetrieveUEContextRequest_IEs__value_PR_CRNTI, + RetrieveUEContextRequest_IEs__value_PR_PCI +} RetrieveUEContextRequest_IEs__value_PR; +typedef enum RetrieveUEContextResponse_IEs__value_PR { + RetrieveUEContextResponse_IEs__value_PR_NOTHING, /* No components present */ + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextResponse_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextResponse_IEs__value_PR_GUMMEI, + RetrieveUEContextResponse_IEs__value_PR_UE_ContextInformationRetrieve, + RetrieveUEContextResponse_IEs__value_PR_TraceActivation, + RetrieveUEContextResponse_IEs__value_PR_SRVCCOperationPossible, + RetrieveUEContextResponse_IEs__value_PR_Masked_IMEISV, + RetrieveUEContextResponse_IEs__value_PR_ExpectedUEBehaviour, + RetrieveUEContextResponse_IEs__value_PR_ProSeAuthorized, + RetrieveUEContextResponse_IEs__value_PR_CriticalityDiagnostics, + RetrieveUEContextResponse_IEs__value_PR_V2XServicesAuthorized, + RetrieveUEContextResponse_IEs__value_PR_AerialUEsubscriptionInformation, + RetrieveUEContextResponse_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo +} RetrieveUEContextResponse_IEs__value_PR; +typedef enum RetrieveUEContextFailure_IEs__value_PR { + RetrieveUEContextFailure_IEs__value_PR_NOTHING, /* No components present */ + RetrieveUEContextFailure_IEs__value_PR_UE_X2AP_ID, + RetrieveUEContextFailure_IEs__value_PR_UE_X2AP_ID_Extension, + RetrieveUEContextFailure_IEs__value_PR_Cause, + RetrieveUEContextFailure_IEs__value_PR_CriticalityDiagnostics +} RetrieveUEContextFailure_IEs__value_PR; +typedef enum SgNBAdditionRequest_IEs__value_PR { + SgNBAdditionRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBAdditionRequest_IEs__value_PR_UE_X2AP_ID, + SgNBAdditionRequest_IEs__value_PR_NRUESecurityCapabilities, + SgNBAdditionRequest_IEs__value_PR_SgNBSecurityKey, + SgNBAdditionRequest_IEs__value_PR_UEAggregateMaximumBitRate, + SgNBAdditionRequest_IEs__value_PR_PLMN_Identity, + SgNBAdditionRequest_IEs__value_PR_HandoverRestrictionList, + SgNBAdditionRequest_IEs__value_PR_E_RABs_ToBeAdded_SgNBAddReqList, + SgNBAdditionRequest_IEs__value_PR_MeNBtoSgNBContainer, + SgNBAdditionRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBAdditionRequest_IEs__value_PR_ExpectedUEBehaviour, + SgNBAdditionRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBAdditionRequest_IEs__value_PR_SplitSRBs, + SgNBAdditionRequest_IEs__value_PR_MeNBResourceCoordinationInformation, + SgNBAdditionRequest_IEs__value_PR_SGNB_Addition_Trigger_Ind, + SgNBAdditionRequest_IEs__value_PR_SubscriberProfileIDforRFP, + SgNBAdditionRequest_IEs__value_PR_ECGI +} SgNBAdditionRequest_IEs__value_PR; +typedef enum SgNBAdditionRequestAcknowledge_IEs__value_PR { + SgNBAdditionRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SgNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBAdditionRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList, + SgNBAdditionRequestAcknowledge_IEs__value_PR_E_RAB_List, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer, + SgNBAdditionRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBAdditionRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBAdditionRequestAcknowledge_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBAdditionRequestAcknowledge_IEs__value_PR_RRC_Config_Ind +} SgNBAdditionRequestAcknowledge_IEs__value_PR; +typedef enum SgNBAdditionRequestReject_IEs__value_PR { + SgNBAdditionRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SgNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID, + SgNBAdditionRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBAdditionRequestReject_IEs__value_PR_Cause, + SgNBAdditionRequestReject_IEs__value_PR_CriticalityDiagnostics, + SgNBAdditionRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBAdditionRequestReject_IEs__value_PR; +typedef enum SgNBReconfigurationComplete_IEs__value_PR { + SgNBReconfigurationComplete_IEs__value_PR_NOTHING, /* No components present */ + SgNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID, + SgNBReconfigurationComplete_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReconfigurationComplete_IEs__value_PR_ResponseInformationSgNBReconfComp, + SgNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBReconfigurationComplete_IEs__value_PR; +typedef enum SgNBModificationRequest_IEs__value_PR { + SgNBModificationRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequest_IEs__value_PR_Cause, + SgNBModificationRequest_IEs__value_PR_PLMN_Identity, + SgNBModificationRequest_IEs__value_PR_HandoverRestrictionList, + SgNBModificationRequest_IEs__value_PR_SCGConfigurationQuery, + SgNBModificationRequest_IEs__value_PR_UE_ContextInformation_SgNBModReq, + SgNBModificationRequest_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequest_IEs__value_PR_MeNBResourceCoordinationInformation, + SgNBModificationRequest_IEs__value_PR_SplitSRBs +} SgNBModificationRequest_IEs__value_PR; +typedef enum SgNBModificationRequestAcknowledge_IEs__value_PR { + SgNBModificationRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeAdded_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeModified_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBModAckList, + SgNBModificationRequestAcknowledge_IEs__value_PR_E_RAB_List, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBtoMeNBContainer, + SgNBModificationRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequestAcknowledge_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBModificationRequestAcknowledge_IEs__value_PR_SplitSRBs, + SgNBModificationRequestAcknowledge_IEs__value_PR_RRC_Config_Ind +} SgNBModificationRequestAcknowledge_IEs__value_PR; +typedef enum SgNBModificationRequestReject_IEs__value_PR { + SgNBModificationRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequestReject_IEs__value_PR_Cause, + SgNBModificationRequestReject_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBModificationRequestReject_IEs__value_PR; +typedef enum SgNBModificationRequired_IEs__value_PR { + SgNBModificationRequired_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRequired_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRequired_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRequired_IEs__value_PR_Cause, + SgNBModificationRequired_IEs__value_PR_PDCPChangeIndication, + SgNBModificationRequired_IEs__value_PR_E_RABs_ToBeReleased_SgNBModReqdList, + SgNBModificationRequired_IEs__value_PR_SgNBtoMeNBContainer, + SgNBModificationRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationRequired_IEs__value_PR_E_RABs_ToBeModified_SgNBModReqdList, + SgNBModificationRequired_IEs__value_PR_SgNBResourceCoordinationInformation, + SgNBModificationRequired_IEs__value_PR_RRC_Config_Ind +} SgNBModificationRequired_IEs__value_PR; +typedef enum SgNBModificationConfirm_IEs__value_PR { + SgNBModificationConfirm_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationConfirm_IEs__value_PR_UE_X2AP_ID, + SgNBModificationConfirm_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationConfirm_IEs__value_PR_E_RABs_AdmittedToBeModified_SgNBModConfList, + SgNBModificationConfirm_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationConfirm_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationConfirm_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBModificationConfirm_IEs__value_PR_MeNBResourceCoordinationInformation +} SgNBModificationConfirm_IEs__value_PR; +typedef enum SgNBModificationRefuse_IEs__value_PR { + SgNBModificationRefuse_IEs__value_PR_NOTHING, /* No components present */ + SgNBModificationRefuse_IEs__value_PR_UE_X2AP_ID, + SgNBModificationRefuse_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBModificationRefuse_IEs__value_PR_Cause, + SgNBModificationRefuse_IEs__value_PR_MeNBtoSgNBContainer, + SgNBModificationRefuse_IEs__value_PR_CriticalityDiagnostics, + SgNBModificationRefuse_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBModificationRefuse_IEs__value_PR; +typedef enum SgNBReleaseRequest_IEs__value_PR { + SgNBReleaseRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequest_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequest_IEs__value_PR_Cause, + SgNBReleaseRequest_IEs__value_PR_E_RABs_ToBeReleased_SgNBRelReqList, + SgNBReleaseRequest_IEs__value_PR_UE_ContextKeptIndicator, + SgNBReleaseRequest_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBReleaseRequest_IEs__value_PR_MeNBtoSgNBContainer +} SgNBReleaseRequest_IEs__value_PR; +typedef enum SgNBReleaseRequestAcknowledge_IEs__value_PR { + SgNBReleaseRequestAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequestAcknowledge_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequestAcknowledge_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequestAcknowledge_IEs__value_PR_CriticalityDiagnostics, + SgNBReleaseRequestAcknowledge_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBReleaseRequestAcknowledge_IEs__value_PR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList +} SgNBReleaseRequestAcknowledge_IEs__value_PR; +typedef enum SgNBReleaseRequestReject_IEs__value_PR { + SgNBReleaseRequestReject_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequestReject_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequestReject_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequestReject_IEs__value_PR_Cause, + SgNBReleaseRequestReject_IEs__value_PR_CriticalityDiagnostics, + SgNBReleaseRequestReject_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBReleaseRequestReject_IEs__value_PR; +typedef enum SgNBReleaseRequired_IEs__value_PR { + SgNBReleaseRequired_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseRequired_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseRequired_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseRequired_IEs__value_PR_Cause, + SgNBReleaseRequired_IEs__value_PR_UE_X2AP_ID_Extension, + SgNBReleaseRequired_IEs__value_PR_E_RABs_ToBeReleased_SgNBRelReqdList +} SgNBReleaseRequired_IEs__value_PR; +typedef enum SgNBReleaseConfirm_IEs__value_PR { + SgNBReleaseConfirm_IEs__value_PR_NOTHING, /* No components present */ + SgNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID, + SgNBReleaseConfirm_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBReleaseConfirm_IEs__value_PR_E_RABs_ToBeReleased_SgNBRelConfList, + SgNBReleaseConfirm_IEs__value_PR_CriticalityDiagnostics, + SgNBReleaseConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBReleaseConfirm_IEs__value_PR; +typedef enum SgNBCounterCheckRequest_IEs__value_PR { + SgNBCounterCheckRequest_IEs__value_PR_NOTHING, /* No components present */ + SgNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID, + SgNBCounterCheckRequest_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBCounterCheckRequest_IEs__value_PR_E_RABs_SubjectToSgNBCounterCheck_List, + SgNBCounterCheckRequest_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBCounterCheckRequest_IEs__value_PR; +typedef enum SgNBChangeRequired_IEs__value_PR { + SgNBChangeRequired_IEs__value_PR_NOTHING, /* No components present */ + SgNBChangeRequired_IEs__value_PR_UE_X2AP_ID, + SgNBChangeRequired_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBChangeRequired_IEs__value_PR_GlobalGNB_ID, + SgNBChangeRequired_IEs__value_PR_Cause, + SgNBChangeRequired_IEs__value_PR_SgNBtoMeNBContainer, + SgNBChangeRequired_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBChangeRequired_IEs__value_PR; +typedef enum SgNBChangeConfirm_IEs__value_PR { + SgNBChangeConfirm_IEs__value_PR_NOTHING, /* No components present */ + SgNBChangeConfirm_IEs__value_PR_UE_X2AP_ID, + SgNBChangeConfirm_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBChangeConfirm_IEs__value_PR_E_RABs_ToBeReleased_SgNBChaConfList, + SgNBChangeConfirm_IEs__value_PR_CriticalityDiagnostics, + SgNBChangeConfirm_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBChangeConfirm_IEs__value_PR; +typedef enum RRCTransfer_IEs__value_PR { + RRCTransfer_IEs__value_PR_NOTHING, /* No components present */ + RRCTransfer_IEs__value_PR_UE_X2AP_ID, + RRCTransfer_IEs__value_PR_SgNB_UE_X2AP_ID, + RRCTransfer_IEs__value_PR_SplitSRB, + RRCTransfer_IEs__value_PR_UENRMeasurement, + RRCTransfer_IEs__value_PR_UE_X2AP_ID_Extension +} RRCTransfer_IEs__value_PR; +typedef enum SgNBChangeRefuse_IEs__value_PR { + SgNBChangeRefuse_IEs__value_PR_NOTHING, /* No components present */ + SgNBChangeRefuse_IEs__value_PR_UE_X2AP_ID, + SgNBChangeRefuse_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBChangeRefuse_IEs__value_PR_Cause, + SgNBChangeRefuse_IEs__value_PR_CriticalityDiagnostics, + SgNBChangeRefuse_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBChangeRefuse_IEs__value_PR; +typedef enum ENDCX2SetupRequest_IEs__value_PR { + ENDCX2SetupRequest_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2SetupRequest_IEs__value_PR_InitiatingNodeType_EndcX2Setup +} ENDCX2SetupRequest_IEs__value_PR; +typedef enum ENB_ENDCX2SetupReqIEs__value_PR { + ENB_ENDCX2SetupReqIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2SetupReqIEs__value_PR_GlobalENB_ID, + ENB_ENDCX2SetupReqIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList +} ENB_ENDCX2SetupReqIEs__value_PR; +typedef enum En_gNB_ENDCX2SetupReqIEs__value_PR { + En_gNB_ENDCX2SetupReqIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2SetupReqIEs__value_PR_GlobalGNB_ID, + En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList +} En_gNB_ENDCX2SetupReqIEs__value_PR; +typedef enum ENDCX2SetupResponse_IEs__value_PR { + ENDCX2SetupResponse_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2SetupResponse_IEs__value_PR_RespondingNodeType_EndcX2Setup +} ENDCX2SetupResponse_IEs__value_PR; +typedef enum ENB_ENDCX2SetupReqAckIEs__value_PR { + ENB_ENDCX2SetupReqAckIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2SetupReqAckIEs__value_PR_GlobalENB_ID, + ENB_ENDCX2SetupReqAckIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList +} ENB_ENDCX2SetupReqAckIEs__value_PR; +typedef enum En_gNB_ENDCX2SetupReqAckIEs__value_PR { + En_gNB_ENDCX2SetupReqAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2SetupReqAckIEs__value_PR_GlobalGNB_ID, + En_gNB_ENDCX2SetupReqAckIEs__value_PR_ServedNRcellsENDCX2ManagementList +} En_gNB_ENDCX2SetupReqAckIEs__value_PR; +typedef enum ENDCX2SetupFailure_IEs__value_PR { + ENDCX2SetupFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2SetupFailure_IEs__value_PR_Cause, + ENDCX2SetupFailure_IEs__value_PR_CriticalityDiagnostics, + ENDCX2SetupFailure_IEs__value_PR_TimeToWait +} ENDCX2SetupFailure_IEs__value_PR; +typedef enum ENDCConfigurationUpdate_IEs__value_PR { + ENDCConfigurationUpdate_IEs__value_PR_NOTHING, /* No components present */ + ENDCConfigurationUpdate_IEs__value_PR_InitiatingNodeType_EndcConfigUpdate +} ENDCConfigurationUpdate_IEs__value_PR; +typedef enum ENB_ENDCConfigUpdateIEs__value_PR { + ENB_ENDCConfigUpdateIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCConfigUpdateIEs__value_PR_CellAssistanceInformation, + ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList, + ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsToModifyListENDCConfUpd, + ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsToDeleteListENDCConfUpd +} ENB_ENDCConfigUpdateIEs__value_PR; +typedef enum En_gNB_ENDCConfigUpdateIEs__value_PR { + En_gNB_ENDCConfigUpdateIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsENDCX2ManagementList, + En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsToModifyENDCConfUpdList, + En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsToDeleteENDCConfUpdList +} En_gNB_ENDCConfigUpdateIEs__value_PR; +typedef enum ENDCConfigurationUpdateAcknowledge_IEs__value_PR { + ENDCConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + ENDCConfigurationUpdateAcknowledge_IEs__value_PR_RespondingNodeType_EndcConfigUpdate +} ENDCConfigurationUpdateAcknowledge_IEs__value_PR; +typedef enum ENB_ENDCConfigUpdateAckIEs__value_PR { + ENB_ENDCConfigUpdateAckIEs__value_PR_NOTHING /* No components present */ + +} ENB_ENDCConfigUpdateAckIEs__value_PR; +typedef enum En_gNB_ENDCConfigUpdateAckIEs__value_PR { + En_gNB_ENDCConfigUpdateAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCConfigUpdateAckIEs__value_PR_ServedNRcellsENDCX2ManagementList +} En_gNB_ENDCConfigUpdateAckIEs__value_PR; +typedef enum ENDCConfigurationUpdateFailure_IEs__value_PR { + ENDCConfigurationUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCConfigurationUpdateFailure_IEs__value_PR_Cause, + ENDCConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics, + ENDCConfigurationUpdateFailure_IEs__value_PR_TimeToWait +} ENDCConfigurationUpdateFailure_IEs__value_PR; +typedef enum ENDCCellActivationRequest_IEs__value_PR { + ENDCCellActivationRequest_IEs__value_PR_NOTHING, /* No components present */ + ENDCCellActivationRequest_IEs__value_PR_ServedNRCellsToActivate, + ENDCCellActivationRequest_IEs__value_PR_ActivationID +} ENDCCellActivationRequest_IEs__value_PR; +typedef enum ENDCCellActivationResponse_IEs__value_PR { + ENDCCellActivationResponse_IEs__value_PR_NOTHING, /* No components present */ + ENDCCellActivationResponse_IEs__value_PR_ActivatedNRCellList, + ENDCCellActivationResponse_IEs__value_PR_ActivationID, + ENDCCellActivationResponse_IEs__value_PR_CriticalityDiagnostics +} ENDCCellActivationResponse_IEs__value_PR; +typedef enum ENDCCellActivationFailure_IEs__value_PR { + ENDCCellActivationFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCCellActivationFailure_IEs__value_PR_ActivationID, + ENDCCellActivationFailure_IEs__value_PR_Cause, + ENDCCellActivationFailure_IEs__value_PR_CriticalityDiagnostics +} ENDCCellActivationFailure_IEs__value_PR; +typedef enum SecondaryRATDataUsageReport_IEs__value_PR { + SecondaryRATDataUsageReport_IEs__value_PR_NOTHING, /* No components present */ + SecondaryRATDataUsageReport_IEs__value_PR_UE_X2AP_ID, + SecondaryRATDataUsageReport_IEs__value_PR_SgNB_UE_X2AP_ID, + SecondaryRATDataUsageReport_IEs__value_PR_SecondaryRATUsageReportList, + SecondaryRATDataUsageReport_IEs__value_PR_UE_X2AP_ID_Extension +} SecondaryRATDataUsageReport_IEs__value_PR; +typedef enum SgNBActivityNotification_IEs__value_PR { + SgNBActivityNotification_IEs__value_PR_NOTHING, /* No components present */ + SgNBActivityNotification_IEs__value_PR_UE_X2AP_ID, + SgNBActivityNotification_IEs__value_PR_SgNB_UE_X2AP_ID, + SgNBActivityNotification_IEs__value_PR_UserPlaneTrafficActivityReport, + SgNBActivityNotification_IEs__value_PR_ERABActivityNotifyItemList, + SgNBActivityNotification_IEs__value_PR_UE_X2AP_ID_Extension +} SgNBActivityNotification_IEs__value_PR; +typedef enum ENDCPartialResetRequired_IEs__value_PR { + ENDCPartialResetRequired_IEs__value_PR_NOTHING, /* No components present */ + ENDCPartialResetRequired_IEs__value_PR_UEsToBeResetList, + ENDCPartialResetRequired_IEs__value_PR_Cause +} ENDCPartialResetRequired_IEs__value_PR; +typedef enum ENDCPartialResetConfirm_IEs__value_PR { + ENDCPartialResetConfirm_IEs__value_PR_NOTHING, /* No components present */ + ENDCPartialResetConfirm_IEs__value_PR_UEsToBeResetList +} ENDCPartialResetConfirm_IEs__value_PR; +typedef enum EUTRANRCellResourceCoordinationRequest_IEs__value_PR { + EUTRANRCellResourceCoordinationRequest_IEs__value_PR_NOTHING, /* No components present */ + EUTRANRCellResourceCoordinationRequest_IEs__value_PR_InitiatingNodeType_EutranrCellResourceCoordination +} EUTRANRCellResourceCoordinationRequest_IEs__value_PR; +typedef enum ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR { + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_NOTHING, /* No components present */ + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_DataTrafficResourceIndication, + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_SpectrumSharingGroupID, + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_ListofEUTRACellsinEUTRACoordinationReq +} ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR; +typedef enum En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR { + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_NOTHING, /* No components present */ + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_DataTrafficResourceIndication, + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_ListofEUTRACellsinNRCoordinationReq, + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_SpectrumSharingGroupID, + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR_ListofNRCellsinNRCoordinationReq +} En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR; +typedef enum EUTRANRCellResourceCoordinationResponse_IEs__value_PR { + EUTRANRCellResourceCoordinationResponse_IEs__value_PR_NOTHING, /* No components present */ + EUTRANRCellResourceCoordinationResponse_IEs__value_PR_RespondingNodeType_EutranrCellResourceCoordination +} EUTRANRCellResourceCoordinationResponse_IEs__value_PR; +typedef enum ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR { + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_NOTHING, /* No components present */ + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_DataTrafficResourceIndication, + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_SpectrumSharingGroupID, + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_ListofEUTRACellsinEUTRACoordinationResp +} ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR; +typedef enum En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR { + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_DataTrafficResourceIndication, + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_SpectrumSharingGroupID, + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR_ListofNRCellsinNRCoordinationResp +} En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR; +typedef enum ENDCX2RemovalRequest_IEs__value_PR { + ENDCX2RemovalRequest_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2RemovalRequest_IEs__value_PR_InitiatingNodeType_EndcX2Removal +} ENDCX2RemovalRequest_IEs__value_PR; +typedef enum ENB_ENDCX2RemovalReqIEs__value_PR { + ENB_ENDCX2RemovalReqIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2RemovalReqIEs__value_PR_GlobalENB_ID +} ENB_ENDCX2RemovalReqIEs__value_PR; +typedef enum En_gNB_ENDCX2RemovalReqIEs__value_PR { + En_gNB_ENDCX2RemovalReqIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2RemovalReqIEs__value_PR_GlobalGNB_ID +} En_gNB_ENDCX2RemovalReqIEs__value_PR; +typedef enum ENDCX2RemovalResponse_IEs__value_PR { + ENDCX2RemovalResponse_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2RemovalResponse_IEs__value_PR_RespondingNodeType_EndcX2Removal +} ENDCX2RemovalResponse_IEs__value_PR; +typedef enum ENB_ENDCX2RemovalReqAckIEs__value_PR { + ENB_ENDCX2RemovalReqAckIEs__value_PR_NOTHING, /* No components present */ + ENB_ENDCX2RemovalReqAckIEs__value_PR_GlobalENB_ID +} ENB_ENDCX2RemovalReqAckIEs__value_PR; +typedef enum En_gNB_ENDCX2RemovalReqAckIEs__value_PR { + En_gNB_ENDCX2RemovalReqAckIEs__value_PR_NOTHING, /* No components present */ + En_gNB_ENDCX2RemovalReqAckIEs__value_PR_GlobalGNB_ID +} En_gNB_ENDCX2RemovalReqAckIEs__value_PR; +typedef enum ENDCX2RemovalFailure_IEs__value_PR { + ENDCX2RemovalFailure_IEs__value_PR_NOTHING, /* No components present */ + ENDCX2RemovalFailure_IEs__value_PR_Cause, + ENDCX2RemovalFailure_IEs__value_PR_CriticalityDiagnostics +} ENDCX2RemovalFailure_IEs__value_PR; +typedef enum DataForwardingAddressIndication_IEs__value_PR { + DataForwardingAddressIndication_IEs__value_PR_NOTHING, /* No components present */ + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID_Extension, + DataForwardingAddressIndication_IEs__value_PR_UE_X2AP_ID, + DataForwardingAddressIndication_IEs__value_PR_E_RABs_DataForwardingAddress_List +} DataForwardingAddressIndication_IEs__value_PR; +typedef enum GNBStatusIndicationIEs__value_PR { + GNBStatusIndicationIEs__value_PR_NOTHING, /* No components present */ + GNBStatusIndicationIEs__value_PR_GNBOverloadInformation +} GNBStatusIndicationIEs__value_PR; +typedef enum E_RAB_ItemIEs__value_PR { + E_RAB_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RAB_ItemIEs__value_PR_E_RAB_Item +} E_RAB_ItemIEs__value_PR; +typedef enum E_RABUsageReport_ItemIEs__value_PR { + E_RABUsageReport_ItemIEs__value_PR_NOTHING, /* No components present */ + E_RABUsageReport_ItemIEs__value_PR_E_RABUsageReport_Item +} E_RABUsageReport_ItemIEs__value_PR; +typedef enum SecondaryRATUsageReport_ItemIEs__value_PR { + SecondaryRATUsageReport_ItemIEs__value_PR_NOTHING, /* No components present */ + SecondaryRATUsageReport_ItemIEs__value_PR_SecondaryRATUsageReport_Item +} SecondaryRATUsageReport_ItemIEs__value_PR; + +/* ProtocolIE-Field */ +typedef struct RICaction_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeSetup_ItemIEs__value { + RICaction_ToBeSetup_ItemIEs__value_PR present; + union RICaction_ToBeSetup_ItemIEs__value_u { + RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_ItemIEs_t; +typedef struct RICaction_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_Admitted_ItemIEs__value { + RICaction_Admitted_ItemIEs__value_PR present; + union RICaction_Admitted_ItemIEs__value_u { + RICaction_Admitted_Item_t RICaction_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_ItemIEs_t; +typedef struct RICaction_NotAdmitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_NotAdmitted_ItemIEs__value { + RICaction_NotAdmitted_ItemIEs__value_PR present; + union RICaction_NotAdmitted_ItemIEs__value_u { + RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_ItemIEs_t; +typedef struct RANfunction_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunction_ItemIEs__value { + RANfunction_ItemIEs__value_PR present; + union RANfunction_ItemIEs__value_u { + RANfunction_Item_t RANfunction_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_ItemIEs_t; +typedef struct RANfunctionID_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionID_ItemIEs__value { + RANfunctionID_ItemIEs__value_PR present; + union RANfunctionID_ItemIEs__value_u { + RANfunctionID_Item_t RANfunctionID_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_ItemIEs_t; +typedef struct RANfunctionIDcause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionIDcause_ItemIEs__value { + RANfunctionIDcause_ItemIEs__value_PR present; + union RANfunctionIDcause_ItemIEs__value_u { + RANfunctionIDcause_Item_t RANfunctionIDcause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_ItemIEs_t; +typedef struct E_RABs_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetup_ItemIEs__value { + E_RABs_ToBeSetup_ItemIEs__value_PR present; + union E_RABs_ToBeSetup_ItemIEs__value_u { + E_RABs_ToBeSetup_Item_t E_RABs_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetup_ItemIEs_t; +typedef struct E_RABs_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ItemIEs__value { + E_RABs_Admitted_ItemIEs__value_PR present; + union E_RABs_Admitted_ItemIEs__value_u { + E_RABs_Admitted_Item_t E_RABs_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ItemIEs_t; +typedef struct E_RABs_SubjectToStatusTransfer_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToStatusTransfer_ItemIEs__value { + E_RABs_SubjectToStatusTransfer_ItemIEs__value_PR present; + union E_RABs_SubjectToStatusTransfer_ItemIEs__value_u { + E_RABs_SubjectToStatusTransfer_Item_t E_RABs_SubjectToStatusTransfer_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToStatusTransfer_ItemIEs_t; +typedef struct CellInformation_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellInformation_ItemIEs__value { + CellInformation_ItemIEs__value_PR present; + union CellInformation_ItemIEs__value_u { + CellInformation_Item_t CellInformation_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellInformation_ItemIEs_t; +typedef struct CellToReport_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellToReport_ItemIEs__value { + CellToReport_ItemIEs__value_PR present; + union CellToReport_ItemIEs__value_u { + CellToReport_Item_t CellToReport_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellToReport_ItemIEs_t; +typedef struct MeasurementInitiationResult_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementInitiationResult_ItemIEs__value { + MeasurementInitiationResult_ItemIEs__value_PR present; + union MeasurementInitiationResult_ItemIEs__value_u { + MeasurementInitiationResult_Item_t MeasurementInitiationResult_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementInitiationResult_ItemIEs_t; +typedef struct MeasurementFailureCause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MeasurementFailureCause_ItemIEs__value { + MeasurementFailureCause_ItemIEs__value_PR present; + union MeasurementFailureCause_ItemIEs__value_u { + MeasurementFailureCause_Item_t MeasurementFailureCause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MeasurementFailureCause_ItemIEs_t; +typedef struct CompleteFailureCauseInformation_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CompleteFailureCauseInformation_ItemIEs__value { + CompleteFailureCauseInformation_ItemIEs__value_PR present; + union CompleteFailureCauseInformation_ItemIEs__value_u { + CompleteFailureCauseInformation_Item_t CompleteFailureCauseInformation_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CompleteFailureCauseInformation_ItemIEs_t; +typedef struct CellMeasurementResult_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellMeasurementResult_ItemIEs__value { + CellMeasurementResult_ItemIEs__value_PR present; + union CellMeasurementResult_ItemIEs__value_u { + CellMeasurementResult_Item_t CellMeasurementResult_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellMeasurementResult_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ItemIEs__value { + E_RABs_ToBeAdded_ItemIEs__value_PR present; + union E_RABs_ToBeAdded_ItemIEs__value_u { + E_RABs_ToBeAdded_Item_t E_RABs_ToBeAdded_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ItemIEs__value { + E_RABs_Admitted_ToBeAdded_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_ItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_Item_t E_RABs_Admitted_ToBeAdded_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_ModReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_ModReqItemIEs__value { + E_RABs_ToBeAdded_ModReqItemIEs__value_PR present; + union E_RABs_ToBeAdded_ModReqItemIEs__value_u { + E_RABs_ToBeAdded_ModReqItem_t E_RABs_ToBeAdded_ModReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_ModReqItemIEs_t; +typedef struct E_RABs_ToBeModified_ModReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_ModReqItemIEs__value { + E_RABs_ToBeModified_ModReqItemIEs__value_PR present; + union E_RABs_ToBeModified_ModReqItemIEs__value_u { + E_RABs_ToBeModified_ModReqItem_t E_RABs_ToBeModified_ModReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_ModReqItemIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqItemIEs__value { + E_RABs_ToBeReleased_ModReqItemIEs__value_PR present; + union E_RABs_ToBeReleased_ModReqItemIEs__value_u { + E_RABs_ToBeReleased_ModReqItem_t E_RABs_ToBeReleased_ModReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value { + E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_ModAckItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_ModAckItem_t E_RABs_Admitted_ToBeAdded_ModAckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_ModAckItemIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_ModAckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_ModAckItemIEs__value { + E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_PR present; + union E_RABs_Admitted_ToBeModified_ModAckItemIEs__value_u { + E_RABs_Admitted_ToBeModified_ModAckItem_t E_RABs_Admitted_ToBeModified_ModAckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_ModAckItemIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value { + E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_PR present; + union E_RABs_Admitted_ToBeReleased_ModAckItemIEs__value_u { + E_RABs_Admitted_ToReleased_ModAckItem_t E_RABs_Admitted_ToReleased_ModAckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_ModAckItemIEs_t; +typedef struct E_RABs_ToBeReleased_ModReqdItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_ModReqdItemIEs__value { + E_RABs_ToBeReleased_ModReqdItemIEs__value_PR present; + union E_RABs_ToBeReleased_ModReqdItemIEs__value_u { + E_RABs_ToBeReleased_ModReqdItem_t E_RABs_ToBeReleased_ModReqdItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_ModReqdItemIEs_t; +typedef struct E_RABs_ToBeReleased_RelReqItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelReqItemIEs__value { + E_RABs_ToBeReleased_RelReqItemIEs__value_PR present; + union E_RABs_ToBeReleased_RelReqItemIEs__value_u { + E_RABs_ToBeReleased_RelReqItem_t E_RABs_ToBeReleased_RelReqItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelReqItemIEs_t; +typedef struct E_RABs_ToBeReleased_RelConfItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_RelConfItemIEs__value { + E_RABs_ToBeReleased_RelConfItemIEs__value_PR present; + union E_RABs_ToBeReleased_RelConfItemIEs__value_u { + E_RABs_ToBeReleased_RelConfItem_t E_RABs_ToBeReleased_RelConfItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_RelConfItemIEs_t; +typedef struct E_RABs_SubjectToCounterCheckItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToCounterCheckItemIEs__value { + E_RABs_SubjectToCounterCheckItemIEs__value_PR present; + union E_RABs_SubjectToCounterCheckItemIEs__value_u { + E_RABs_SubjectToCounterCheckItem_t E_RABs_SubjectToCounterCheckItem; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToCounterCheckItemIEs_t; +typedef struct E_RABs_ToBeSetupRetrieve_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeSetupRetrieve_ItemIEs__value { + E_RABs_ToBeSetupRetrieve_ItemIEs__value_PR present; + union E_RABs_ToBeSetupRetrieve_ItemIEs__value_u { + E_RABs_ToBeSetupRetrieve_Item_t E_RABs_ToBeSetupRetrieve_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeSetupRetrieve_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value { + E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_PR present; + union E_RABs_ToBeAdded_SgNBAddReq_ItemIEs__value_u { + E_RABs_ToBeAdded_SgNBAddReq_Item_t E_RABs_ToBeAdded_SgNBAddReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_t E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t; +typedef struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value { + E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_PR present; + union E_RABs_ToBeAdded_SgNBModReq_ItemIEs__value_u { + E_RABs_ToBeAdded_SgNBModReq_Item_t E_RABs_ToBeAdded_SgNBModReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeAdded_SgNBModReq_ItemIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReq_ItemIEs__value { + E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_PR present; + union E_RABs_ToBeModified_SgNBModReq_ItemIEs__value_u { + E_RABs_ToBeModified_SgNBModReq_Item_t E_RABs_ToBeModified_SgNBModReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReq_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value { + E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBModReq_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBModReq_Item_t E_RABs_ToBeReleased_SgNBModReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReq_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value { + E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_t E_RABs_Admitted_ToBeAdded_SgNBModAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value { + E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeModified_SgNBModAck_Item_t E_RABs_Admitted_ToBeModified_SgNBModAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value { + E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs__value_u { + E_RABs_Admitted_ToReleased_SgNBModAck_Item_t E_RABs_Admitted_ToReleased_SgNBModAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value { + E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBModReqd_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBModReqd_Item_t E_RABs_ToBeReleased_SgNBModReqd_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_t; +typedef struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value { + E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_PR present; + union E_RABs_ToBeModified_SgNBModReqd_ItemIEs__value_u { + E_RABs_ToBeModified_SgNBModReqd_Item_t E_RABs_ToBeModified_SgNBModReqd_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeModified_SgNBModReqd_ItemIEs_t; +typedef struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value { + E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_PR present; + union E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs__value_u { + E_RABs_AdmittedToBeModified_SgNBModConf_Item_t E_RABs_AdmittedToBeModified_SgNBModConf_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value { + E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBRelReq_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBRelReq_Item_t E_RABs_ToBeReleased_SgNBRelReq_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_t; +typedef struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_PR present; + union E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs__value_u { + E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item_t E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value { + E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBRelReqd_Item_t E_RABs_ToBeReleased_SgNBRelReqd_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value { + E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBRelConf_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBRelConf_Item_t E_RABs_ToBeReleased_SgNBRelConf_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_t; +typedef struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value { + E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_PR present; + union E_RABs_SubjectToSgNBCounterCheck_ItemIEs__value_u { + E_RABs_SubjectToSgNBCounterCheck_Item_t E_RABs_SubjectToSgNBCounterCheck_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_SubjectToSgNBCounterCheck_ItemIEs_t; +typedef struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value { + E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_PR present; + union E_RABs_ToBeReleased_SgNBChaConf_ItemIEs__value_u { + E_RABs_ToBeReleased_SgNBChaConf_Item_t E_RABs_ToBeReleased_SgNBChaConf_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_t; +typedef struct E_RABs_DataForwardingAddress_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABs_DataForwardingAddress_ItemIEs__value { + E_RABs_DataForwardingAddress_ItemIEs__value_PR present; + union E_RABs_DataForwardingAddress_ItemIEs__value_u { + E_RABs_DataForwardingAddress_Item_t E_RABs_DataForwardingAddress_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABs_DataForwardingAddress_ItemIEs_t; +typedef struct RICsubscriptionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionRequest_IEs__value { + RICsubscriptionRequest_IEs__value_PR present; + union RICsubscriptionRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICsubscription_t RICsubscription; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_IEs_t; +typedef struct RICsubscriptionResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionResponse_IEs__value { + RICsubscriptionResponse_IEs__value_PR present; + union RICsubscriptionResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_Admitted_List_t RICaction_Admitted_List; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_IEs_t; +typedef struct RICsubscriptionFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionFailure_IEs__value { + RICsubscriptionFailure_IEs__value_PR present; + union RICsubscriptionFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_IEs_t; +typedef struct RICsubscriptionDeleteRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteRequest_IEs__value { + RICsubscriptionDeleteRequest_IEs__value_PR present; + union RICsubscriptionDeleteRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_IEs_t; +typedef struct RICsubscriptionDeleteResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteResponse_IEs__value { + RICsubscriptionDeleteResponse_IEs__value_PR present; + union RICsubscriptionDeleteResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_IEs_t; +typedef struct RICsubscriptionDeleteFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteFailure_IEs__value { + RICsubscriptionDeleteFailure_IEs__value_PR present; + union RICsubscriptionDeleteFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcause_t RICcause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_IEs_t; +typedef struct RICindication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICindication_IEs__value { + RICindication_IEs__value_PR present; + union RICindication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactionID_t RICactionID; + RICindicationSN_t RICindicationSN; + RICindicationType_t RICindicationType; + RICindicationHeader_t RICindicationHeader; + RICindicationMessage_t RICindicationMessage; + RICcallProcessID_t RICcallProcessID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_IEs_t; +typedef struct RICcontrolRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolRequest_IEs__value { + RICcontrolRequest_IEs__value_PR present; + union RICcontrolRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolHeader_t RICcontrolHeader; + RICcontrolMessage_t RICcontrolMessage; + RICcontrolAckRequest_t RICcontrolAckRequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_IEs_t; +typedef struct RICcontrolAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolAcknowledge_IEs__value { + RICcontrolAcknowledge_IEs__value_PR present; + union RICcontrolAcknowledge_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolStatus_t RICcontrolStatus; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_IEs_t; +typedef struct RICcontrolFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolFailure_IEs__value { + RICcontrolFailure_IEs__value_PR present; + union RICcontrolFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcause_t RICcause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_IEs_t; +typedef struct RICserviceUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdate_IEs__value { + RICserviceUpdate_IEs__value_PR present; + union RICserviceUpdate_IEs__value_u { + RANfunctions_List_t RANfunctions_List; + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_IEs_t; +typedef struct RICserviceUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateAcknowledge_IEs__value { + RICserviceUpdateAcknowledge_IEs__value_PR present; + union RICserviceUpdateAcknowledge_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_IEs_t; +typedef struct RICserviceUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateFailure_IEs__value { + RICserviceUpdateFailure_IEs__value_PR present; + union RICserviceUpdateFailure_IEs__value_u { + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_IEs_t; +typedef struct RICserviceQuery_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceQuery_IEs__value { + RICserviceQuery_IEs__value_PR present; + union RICserviceQuery_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_IEs_t; +typedef struct HandoverRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverRequest_IEs__value { + HandoverRequest_IEs__value_PR present; + union HandoverRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + ECGI_t ECGI; + GUMMEI_t GUMMEI; + UE_ContextInformation_t UE_ContextInformation; + UE_HistoryInformation_t UE_HistoryInformation; + TraceActivation_t TraceActivation; + SRVCCOperationPossible_t SRVCCOperationPossible; + CSGMembershipStatus_t CSGMembershipStatus; + MobilityInformation_t MobilityInformation; + Masked_IMEISV_t Masked_IMEISV; + UE_HistoryInformationFromTheUE_t UE_HistoryInformationFromTheUE; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + ProSeAuthorized_t ProSeAuthorized; + UE_ContextReferenceAtSeNB_t UE_ContextReferenceAtSeNB; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + V2XServicesAuthorized_t V2XServicesAuthorized; + UE_ContextReferenceAtWT_t UE_ContextReferenceAtWT; + NRUESecurityCapabilities_t NRUESecurityCapabilities; + UE_ContextReferenceAtSgNB_t UE_ContextReferenceAtSgNB; + AerialUEsubscriptionInformation_t AerialUEsubscriptionInformation; + Subscription_Based_UE_DifferentiationInfo_t Subscription_Based_UE_DifferentiationInfo; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequest_IEs_t; +typedef struct HandoverRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverRequestAcknowledge_IEs__value { + HandoverRequestAcknowledge_IEs__value_PR present; + union HandoverRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_Admitted_List_t E_RABs_Admitted_List; + E_RAB_List_t E_RAB_List; + TargeteNBtoSource_eNBTransparentContainer_t TargeteNBtoSource_eNBTransparentContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_ContextKeptIndicator_t UE_ContextKeptIndicator; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverRequestAcknowledge_IEs_t; +typedef struct HandoverPreparationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverPreparationFailure_IEs__value { + HandoverPreparationFailure_IEs__value_PR present; + union HandoverPreparationFailure_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverPreparationFailure_IEs_t; +typedef struct HandoverReport_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverReport_IEs__value { + HandoverReport_IEs__value_PR present; + union HandoverReport_IEs__value_u { + HandoverReportType_t HandoverReportType; + Cause_t Cause; + ECGI_t ECGI; + TargetCellInUTRAN_t TargetCellInUTRAN; + CRNTI_t CRNTI; + MobilityInformation_t MobilityInformation; + UE_RLF_Report_Container_t UE_RLF_Report_Container; + UE_RLF_Report_Container_for_extended_bands_t UE_RLF_Report_Container_for_extended_bands; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverReport_IEs_t; +typedef struct SNStatusTransfer_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SNStatusTransfer_IEs__value { + SNStatusTransfer_IEs__value_PR present; + union SNStatusTransfer_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_SubjectToStatusTransfer_List_t E_RABs_SubjectToStatusTransfer_List; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SNStatusTransfer_IEs_t; +typedef struct UEContextRelease_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct UEContextRelease_IEs__value { + UEContextRelease_IEs__value_PR present; + union UEContextRelease_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SIPTOBearerDeactivationIndication_t SIPTOBearerDeactivationIndication; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEContextRelease_IEs_t; +typedef struct HandoverCancel_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct HandoverCancel_IEs__value { + HandoverCancel_IEs__value_PR present; + union HandoverCancel_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} HandoverCancel_IEs_t; +typedef struct ErrorIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ErrorIndication_IEs__value { + ErrorIndication_IEs__value_PR present; + union ErrorIndication_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_IEs_t; +typedef struct ResetRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetRequest_IEs__value { + ResetRequest_IEs__value_PR present; + union ResetRequest_IEs__value_u { + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_IEs_t; +typedef struct ResetResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetResponse_IEs__value { + ResetResponse_IEs__value_PR present; + union ResetResponse_IEs__value_u { + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_IEs_t; +typedef struct X2SetupRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2SetupRequest_IEs__value { + X2SetupRequest_IEs__value_PR present; + union X2SetupRequest_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedCells_t ServedCells; + GUGroupIDList_t GUGroupIDList; + LHN_ID_t LHN_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupRequest_IEs_t; +typedef struct X2SetupResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2SetupResponse_IEs__value { + X2SetupResponse_IEs__value_PR present; + union X2SetupResponse_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedCells_t ServedCells; + GUGroupIDList_t GUGroupIDList; + CriticalityDiagnostics_t CriticalityDiagnostics; + LHN_ID_t LHN_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupResponse_IEs_t; +typedef struct X2SetupFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2SetupFailure_IEs__value { + X2SetupFailure_IEs__value_PR present; + union X2SetupFailure_IEs__value_u { + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupFailure_IEs_t; +typedef struct LoadInformation_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct LoadInformation_IEs__value { + LoadInformation_IEs__value_PR present; + union LoadInformation_IEs__value_u { + CellInformation_List_t CellInformation_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} LoadInformation_IEs_t; +typedef struct ENBConfigurationUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENBConfigurationUpdate_IEs__value { + ENBConfigurationUpdate_IEs__value_PR present; + union ENBConfigurationUpdate_IEs__value_u { + ServedCells_t ServedCells; + ServedCellsToModify_t ServedCellsToModify; + Old_ECGIs_t Old_ECGIs; + GUGroupIDList_t GUGroupIDList; + CoverageModificationList_t CoverageModificationList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdate_IEs_t; +typedef struct ENBConfigurationUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENBConfigurationUpdateAcknowledge_IEs__value { + ENBConfigurationUpdateAcknowledge_IEs__value_PR present; + union ENBConfigurationUpdateAcknowledge_IEs__value_u { + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateAcknowledge_IEs_t; +typedef struct ENBConfigurationUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENBConfigurationUpdateFailure_IEs__value { + ENBConfigurationUpdateFailure_IEs__value_PR present; + union ENBConfigurationUpdateFailure_IEs__value_u { + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENBConfigurationUpdateFailure_IEs_t; +typedef struct ResourceStatusRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusRequest_IEs__value { + ResourceStatusRequest_IEs__value_PR present; + union ResourceStatusRequest_IEs__value_u { + Measurement_ID_t Measurement_ID; + Registration_Request_t Registration_Request; + ReportCharacteristics_t ReportCharacteristics; + CellToReport_List_t CellToReport_List; + ReportingPeriodicity_t ReportingPeriodicity; + PartialSuccessIndicator_t PartialSuccessIndicator; + ReportingPeriodicityRSRPMR_t ReportingPeriodicityRSRPMR; + ReportingPeriodicityCSIR_t ReportingPeriodicityCSIR; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusRequest_IEs_t; +typedef struct ResourceStatusResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusResponse_IEs__value { + ResourceStatusResponse_IEs__value_PR present; + union ResourceStatusResponse_IEs__value_u { + Measurement_ID_t Measurement_ID; + CriticalityDiagnostics_t CriticalityDiagnostics; + MeasurementInitiationResult_List_t MeasurementInitiationResult_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusResponse_IEs_t; +typedef struct ResourceStatusFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusFailure_IEs__value { + ResourceStatusFailure_IEs__value_PR present; + union ResourceStatusFailure_IEs__value_u { + Measurement_ID_t Measurement_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + CompleteFailureCauseInformation_List_t CompleteFailureCauseInformation_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusFailure_IEs_t; +typedef struct ResourceStatusUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResourceStatusUpdate_IEs__value { + ResourceStatusUpdate_IEs__value_PR present; + union ResourceStatusUpdate_IEs__value_u { + Measurement_ID_t Measurement_ID; + CellMeasurementResult_List_t CellMeasurementResult_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusUpdate_IEs_t; +typedef struct MobilityChangeRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MobilityChangeRequest_IEs__value { + MobilityChangeRequest_IEs__value_PR present; + union MobilityChangeRequest_IEs__value_u { + ECGI_t ECGI; + MobilityParametersInformation_t MobilityParametersInformation; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeRequest_IEs_t; +typedef struct MobilityChangeAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MobilityChangeAcknowledge_IEs__value { + MobilityChangeAcknowledge_IEs__value_PR present; + union MobilityChangeAcknowledge_IEs__value_u { + ECGI_t ECGI; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeAcknowledge_IEs_t; +typedef struct MobilityChangeFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct MobilityChangeFailure_IEs__value { + MobilityChangeFailure_IEs__value_PR present; + union MobilityChangeFailure_IEs__value_u { + ECGI_t ECGI; + Cause_t Cause; + MobilityParametersModificationRange_t MobilityParametersModificationRange; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} MobilityChangeFailure_IEs_t; +typedef struct RLFIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RLFIndication_IEs__value { + RLFIndication_IEs__value_PR present; + union RLFIndication_IEs__value_u { + PCI_t PCI; + ECGI_t ECGI; + CRNTI_t CRNTI; + ShortMAC_I_t ShortMAC_I; + UE_RLF_Report_Container_t UE_RLF_Report_Container; + RRCConnSetupIndicator_t RRCConnSetupIndicator; + RRCConnReestabIndicator_t RRCConnReestabIndicator; + UE_RLF_Report_Container_for_extended_bands_t UE_RLF_Report_Container_for_extended_bands; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLFIndication_IEs_t; +typedef struct CellActivationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellActivationRequest_IEs__value { + CellActivationRequest_IEs__value_PR present; + union CellActivationRequest_IEs__value_u { + ServedCellsToActivate_t ServedCellsToActivate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationRequest_IEs_t; +typedef struct CellActivationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellActivationResponse_IEs__value { + CellActivationResponse_IEs__value_PR present; + union CellActivationResponse_IEs__value_u { + ActivatedCellList_t ActivatedCellList; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationResponse_IEs_t; +typedef struct CellActivationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct CellActivationFailure_IEs__value { + CellActivationFailure_IEs__value_PR present; + union CellActivationFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CellActivationFailure_IEs_t; +typedef struct X2Release_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2Release_IEs__value { + X2Release_IEs__value_PR present; + union X2Release_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2Release_IEs_t; +typedef struct X2APMessageTransfer_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2APMessageTransfer_IEs__value { + X2APMessageTransfer_IEs__value_PR present; + union X2APMessageTransfer_IEs__value_u { + RNL_Header_t RNL_Header; + X2AP_Message_t X2AP_Message; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2APMessageTransfer_IEs_t; +typedef struct SeNBAdditionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBAdditionRequest_IEs__value { + SeNBAdditionRequest_IEs__value_PR present; + union SeNBAdditionRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UESecurityCapabilities_t UESecurityCapabilities; + SeNBSecurityKey_t SeNBSecurityKey; + UEAggregateMaximumBitRate_t UEAggregateMaximumBitRate; + PLMN_Identity_t PLMN_Identity; + E_RABs_ToBeAdded_List_t E_RABs_ToBeAdded_List; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CSGMembershipStatus_t CSGMembershipStatus; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequest_IEs_t; +typedef struct SeNBAdditionRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBAdditionRequestAcknowledge_IEs__value { + SeNBAdditionRequestAcknowledge_IEs__value_PR present; + union SeNBAdditionRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_List_t E_RABs_Admitted_ToBeAdded_List; + E_RAB_List_t E_RAB_List; + SeNBtoMeNBContainer_t SeNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + TransportLayerAddress_t TransportLayerAddress; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + TunnelInformation_t TunnelInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestAcknowledge_IEs_t; +typedef struct SeNBAdditionRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBAdditionRequestReject_IEs__value { + SeNBAdditionRequestReject_IEs__value_PR present; + union SeNBAdditionRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestReject_IEs_t; +typedef struct SeNBReconfigurationComplete_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReconfigurationComplete_IEs__value { + SeNBReconfigurationComplete_IEs__value_PR present; + union SeNBReconfigurationComplete_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + ResponseInformationSeNBReconfComp_t ResponseInformationSeNBReconfComp; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReconfigurationComplete_IEs_t; +typedef struct SeNBModificationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequest_IEs__value { + SeNBModificationRequest_IEs__value_PR present; + union SeNBModificationRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + SCGChangeIndication_t SCGChangeIndication; + PLMN_Identity_t PLMN_Identity; + UE_ContextInformationSeNBModReq_t UE_ContextInformationSeNBModReq; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CSGMembershipStatus_t CSGMembershipStatus; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequest_IEs_t; +typedef struct SeNBModificationRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequestAcknowledge_IEs__value { + SeNBModificationRequestAcknowledge_IEs__value_PR present; + union SeNBModificationRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_ModAckList_t E_RABs_Admitted_ToBeAdded_ModAckList; + E_RABs_Admitted_ToBeModified_ModAckList_t E_RABs_Admitted_ToBeModified_ModAckList; + E_RABs_Admitted_ToBeReleased_ModAckList_t E_RABs_Admitted_ToBeReleased_ModAckList; + E_RAB_List_t E_RAB_List; + SeNBtoMeNBContainer_t SeNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestAcknowledge_IEs_t; +typedef struct SeNBModificationRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequestReject_IEs__value { + SeNBModificationRequestReject_IEs__value_PR present; + union SeNBModificationRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestReject_IEs_t; +typedef struct SeNBModificationRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRequired_IEs__value { + SeNBModificationRequired_IEs__value_PR present; + union SeNBModificationRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + SCGChangeIndication_t SCGChangeIndication; + E_RABs_ToBeReleased_ModReqd_t E_RABs_ToBeReleased_ModReqd; + SeNBtoMeNBContainer_t SeNBtoMeNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequired_IEs_t; +typedef struct SeNBModificationConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationConfirm_IEs__value { + SeNBModificationConfirm_IEs__value_PR present; + union SeNBModificationConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationConfirm_IEs_t; +typedef struct SeNBModificationRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBModificationRefuse_IEs__value { + SeNBModificationRefuse_IEs__value_PR present; + union SeNBModificationRefuse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + MeNBtoSeNBContainer_t MeNBtoSeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRefuse_IEs_t; +typedef struct SeNBReleaseRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReleaseRequest_IEs__value { + SeNBReleaseRequest_IEs__value_PR present; + union SeNBReleaseRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + E_RABs_ToBeReleased_List_RelReq_t E_RABs_ToBeReleased_List_RelReq; + UE_ContextKeptIndicator_t UE_ContextKeptIndicator; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MakeBeforeBreakIndicator_t MakeBeforeBreakIndicator; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequest_IEs_t; +typedef struct SeNBReleaseRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReleaseRequired_IEs__value { + SeNBReleaseRequired_IEs__value_PR present; + union SeNBReleaseRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + Cause_t Cause; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequired_IEs_t; +typedef struct SeNBReleaseConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBReleaseConfirm_IEs__value { + SeNBReleaseConfirm_IEs__value_PR present; + union SeNBReleaseConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_ToBeReleased_List_RelConf_t E_RABs_ToBeReleased_List_RelConf; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseConfirm_IEs_t; +typedef struct SeNBCounterCheckRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SeNBCounterCheckRequest_IEs__value { + SeNBCounterCheckRequest_IEs__value_PR present; + union SeNBCounterCheckRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_SubjectToCounterCheck_List_t E_RABs_SubjectToCounterCheck_List; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBCounterCheckRequest_IEs_t; +typedef struct X2RemovalRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2RemovalRequest_IEs__value { + X2RemovalRequest_IEs__value_PR present; + union X2RemovalRequest_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + X2BenefitValue_t X2BenefitValue; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalRequest_IEs_t; +typedef struct X2RemovalResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2RemovalResponse_IEs__value { + X2RemovalResponse_IEs__value_PR present; + union X2RemovalResponse_IEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalResponse_IEs_t; +typedef struct X2RemovalFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct X2RemovalFailure_IEs__value { + X2RemovalFailure_IEs__value_PR present; + union X2RemovalFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalFailure_IEs_t; +typedef struct RetrieveUEContextRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RetrieveUEContextRequest_IEs__value { + RetrieveUEContextRequest_IEs__value_PR present; + union RetrieveUEContextRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + ResumeID_t ResumeID; + ShortMAC_I_t ShortMAC_I; + EUTRANCellIdentifier_t EUTRANCellIdentifier; + CRNTI_t CRNTI; + PCI_t PCI; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextRequest_IEs_t; +typedef struct RetrieveUEContextResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RetrieveUEContextResponse_IEs__value { + RetrieveUEContextResponse_IEs__value_PR present; + union RetrieveUEContextResponse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + GUMMEI_t GUMMEI; + UE_ContextInformationRetrieve_t UE_ContextInformationRetrieve; + TraceActivation_t TraceActivation; + SRVCCOperationPossible_t SRVCCOperationPossible; + Masked_IMEISV_t Masked_IMEISV; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + ProSeAuthorized_t ProSeAuthorized; + CriticalityDiagnostics_t CriticalityDiagnostics; + V2XServicesAuthorized_t V2XServicesAuthorized; + AerialUEsubscriptionInformation_t AerialUEsubscriptionInformation; + Subscription_Based_UE_DifferentiationInfo_t Subscription_Based_UE_DifferentiationInfo; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextResponse_IEs_t; +typedef struct RetrieveUEContextFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RetrieveUEContextFailure_IEs__value { + RetrieveUEContextFailure_IEs__value_PR present; + union RetrieveUEContextFailure_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextFailure_IEs_t; +typedef struct SgNBAdditionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBAdditionRequest_IEs__value { + SgNBAdditionRequest_IEs__value_PR present; + union SgNBAdditionRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + NRUESecurityCapabilities_t NRUESecurityCapabilities; + SgNBSecurityKey_t SgNBSecurityKey; + UEAggregateMaximumBitRate_t UEAggregateMaximumBitRate; + PLMN_Identity_t PLMN_Identity; + HandoverRestrictionList_t HandoverRestrictionList; + E_RABs_ToBeAdded_SgNBAddReqList_t E_RABs_ToBeAdded_SgNBAddReqList; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + ExpectedUEBehaviour_t ExpectedUEBehaviour; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SplitSRBs_t SplitSRBs; + MeNBResourceCoordinationInformation_t MeNBResourceCoordinationInformation; + SGNB_Addition_Trigger_Ind_t SGNB_Addition_Trigger_Ind; + SubscriberProfileIDforRFP_t SubscriberProfileIDforRFP; + ECGI_t ECGI; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequest_IEs_t; +typedef struct SgNBAdditionRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBAdditionRequestAcknowledge_IEs__value { + SgNBAdditionRequestAcknowledge_IEs__value_PR present; + union SgNBAdditionRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_t E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList; + E_RAB_List_t E_RAB_List; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SplitSRBs_t SplitSRBs; + SgNBResourceCoordinationInformation_t SgNBResourceCoordinationInformation; + RRC_Config_Ind_t RRC_Config_Ind; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestAcknowledge_IEs_t; +typedef struct SgNBAdditionRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBAdditionRequestReject_IEs__value { + SgNBAdditionRequestReject_IEs__value_PR present; + union SgNBAdditionRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestReject_IEs_t; +typedef struct SgNBReconfigurationComplete_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReconfigurationComplete_IEs__value { + SgNBReconfigurationComplete_IEs__value_PR present; + union SgNBReconfigurationComplete_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + ResponseInformationSgNBReconfComp_t ResponseInformationSgNBReconfComp; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReconfigurationComplete_IEs_t; +typedef struct SgNBModificationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequest_IEs__value { + SgNBModificationRequest_IEs__value_PR present; + union SgNBModificationRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + PLMN_Identity_t PLMN_Identity; + HandoverRestrictionList_t HandoverRestrictionList; + SCGConfigurationQuery_t SCGConfigurationQuery; + UE_ContextInformation_SgNBModReq_t UE_ContextInformation_SgNBModReq; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MeNBResourceCoordinationInformation_t MeNBResourceCoordinationInformation; + SplitSRBs_t SplitSRBs; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequest_IEs_t; +typedef struct SgNBModificationRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequestAcknowledge_IEs__value { + SgNBModificationRequestAcknowledge_IEs__value_PR present; + union SgNBModificationRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_Admitted_ToBeAdded_SgNBModAckList_t E_RABs_Admitted_ToBeAdded_SgNBModAckList; + E_RABs_Admitted_ToBeModified_SgNBModAckList_t E_RABs_Admitted_ToBeModified_SgNBModAckList; + E_RABs_Admitted_ToBeReleased_SgNBModAckList_t E_RABs_Admitted_ToBeReleased_SgNBModAckList; + E_RAB_List_t E_RAB_List; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + SgNBResourceCoordinationInformation_t SgNBResourceCoordinationInformation; + SplitSRBs_t SplitSRBs; + RRC_Config_Ind_t RRC_Config_Ind; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestAcknowledge_IEs_t; +typedef struct SgNBModificationRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequestReject_IEs__value { + SgNBModificationRequestReject_IEs__value_PR present; + union SgNBModificationRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestReject_IEs_t; +typedef struct SgNBModificationRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRequired_IEs__value { + SgNBModificationRequired_IEs__value_PR present; + union SgNBModificationRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + PDCPChangeIndication_t PDCPChangeIndication; + E_RABs_ToBeReleased_SgNBModReqdList_t E_RABs_ToBeReleased_SgNBModReqdList; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + E_RABs_ToBeModified_SgNBModReqdList_t E_RABs_ToBeModified_SgNBModReqdList; + SgNBResourceCoordinationInformation_t SgNBResourceCoordinationInformation; + RRC_Config_Ind_t RRC_Config_Ind; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequired_IEs_t; +typedef struct SgNBModificationConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationConfirm_IEs__value { + SgNBModificationConfirm_IEs__value_PR present; + union SgNBModificationConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_AdmittedToBeModified_SgNBModConfList_t E_RABs_AdmittedToBeModified_SgNBModConfList; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MeNBResourceCoordinationInformation_t MeNBResourceCoordinationInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationConfirm_IEs_t; +typedef struct SgNBModificationRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBModificationRefuse_IEs__value { + SgNBModificationRefuse_IEs__value_PR present; + union SgNBModificationRefuse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRefuse_IEs_t; +typedef struct SgNBReleaseRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequest_IEs__value { + SgNBReleaseRequest_IEs__value_PR present; + union SgNBReleaseRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + E_RABs_ToBeReleased_SgNBRelReqList_t E_RABs_ToBeReleased_SgNBRelReqList; + UE_ContextKeptIndicator_t UE_ContextKeptIndicator; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + MeNBtoSgNBContainer_t MeNBtoSgNBContainer; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequest_IEs_t; +typedef struct SgNBReleaseRequestAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequestAcknowledge_IEs__value { + SgNBReleaseRequestAcknowledge_IEs__value_PR present; + union SgNBReleaseRequestAcknowledge_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_t E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestAcknowledge_IEs_t; +typedef struct SgNBReleaseRequestReject_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequestReject_IEs__value { + SgNBReleaseRequestReject_IEs__value_PR present; + union SgNBReleaseRequestReject_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestReject_IEs_t; +typedef struct SgNBReleaseRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseRequired_IEs__value { + SgNBReleaseRequired_IEs__value_PR present; + union SgNBReleaseRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + E_RABs_ToBeReleased_SgNBRelReqdList_t E_RABs_ToBeReleased_SgNBRelReqdList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequired_IEs_t; +typedef struct SgNBReleaseConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBReleaseConfirm_IEs__value { + SgNBReleaseConfirm_IEs__value_PR present; + union SgNBReleaseConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_ToBeReleased_SgNBRelConfList_t E_RABs_ToBeReleased_SgNBRelConfList; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseConfirm_IEs_t; +typedef struct SgNBCounterCheckRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBCounterCheckRequest_IEs__value { + SgNBCounterCheckRequest_IEs__value_PR present; + union SgNBCounterCheckRequest_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_SubjectToSgNBCounterCheck_List_t E_RABs_SubjectToSgNBCounterCheck_List; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBCounterCheckRequest_IEs_t; +typedef struct SgNBChangeRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBChangeRequired_IEs__value { + SgNBChangeRequired_IEs__value_PR present; + union SgNBChangeRequired_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + GlobalGNB_ID_t GlobalGNB_ID; + Cause_t Cause; + SgNBtoMeNBContainer_t SgNBtoMeNBContainer; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRequired_IEs_t; +typedef struct SgNBChangeConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBChangeConfirm_IEs__value { + SgNBChangeConfirm_IEs__value_PR present; + union SgNBChangeConfirm_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + E_RABs_ToBeReleased_SgNBChaConfList_t E_RABs_ToBeReleased_SgNBChaConfList; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeConfirm_IEs_t; +typedef struct RRCTransfer_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RRCTransfer_IEs__value { + RRCTransfer_IEs__value_PR present; + union RRCTransfer_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + SplitSRB_t SplitSRB; + UENRMeasurement_t UENRMeasurement; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RRCTransfer_IEs_t; +typedef struct SgNBChangeRefuse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBChangeRefuse_IEs__value { + SgNBChangeRefuse_IEs__value_PR present; + union SgNBChangeRefuse_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRefuse_IEs_t; +typedef struct ENDCX2SetupRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2SetupRequest_IEs__value { + ENDCX2SetupRequest_IEs__value_PR present; + union ENDCX2SetupRequest_IEs__value_u { + InitiatingNodeType_EndcX2Setup_t InitiatingNodeType_EndcX2Setup; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupRequest_IEs_t; +typedef struct ENB_ENDCX2SetupReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2SetupReqIEs__value { + ENB_ENDCX2SetupReqIEs__value_PR present; + union ENB_ENDCX2SetupReqIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedEUTRAcellsENDCX2ManagementList_t ServedEUTRAcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2SetupReqIEs_t; +typedef struct En_gNB_ENDCX2SetupReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2SetupReqIEs__value { + En_gNB_ENDCX2SetupReqIEs__value_PR present; + union En_gNB_ENDCX2SetupReqIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2SetupReqIEs_t; +typedef struct ENDCX2SetupResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2SetupResponse_IEs__value { + ENDCX2SetupResponse_IEs__value_PR present; + union ENDCX2SetupResponse_IEs__value_u { + RespondingNodeType_EndcX2Setup_t RespondingNodeType_EndcX2Setup; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupResponse_IEs_t; +typedef struct ENB_ENDCX2SetupReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2SetupReqAckIEs__value { + ENB_ENDCX2SetupReqAckIEs__value_PR present; + union ENB_ENDCX2SetupReqAckIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + ServedEUTRAcellsENDCX2ManagementList_t ServedEUTRAcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2SetupReqAckIEs_t; +typedef struct En_gNB_ENDCX2SetupReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2SetupReqAckIEs__value { + En_gNB_ENDCX2SetupReqAckIEs__value_PR present; + union En_gNB_ENDCX2SetupReqAckIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2SetupReqAckIEs_t; +typedef struct ENDCX2SetupFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2SetupFailure_IEs__value { + ENDCX2SetupFailure_IEs__value_PR present; + union ENDCX2SetupFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + TimeToWait_t TimeToWait; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2SetupFailure_IEs_t; +typedef struct ENDCConfigurationUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCConfigurationUpdate_IEs__value { + ENDCConfigurationUpdate_IEs__value_PR present; + union ENDCConfigurationUpdate_IEs__value_u { + InitiatingNodeType_EndcConfigUpdate_t InitiatingNodeType_EndcConfigUpdate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdate_IEs_t; +typedef struct ENB_ENDCConfigUpdateIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCConfigUpdateIEs__value { + ENB_ENDCConfigUpdateIEs__value_PR present; + union ENB_ENDCConfigUpdateIEs__value_u { + CellAssistanceInformation_t CellAssistanceInformation; + ServedEUTRAcellsENDCX2ManagementList_t ServedEUTRAcellsENDCX2ManagementList; + ServedEUTRAcellsToModifyListENDCConfUpd_t ServedEUTRAcellsToModifyListENDCConfUpd; + ServedEUTRAcellsToDeleteListENDCConfUpd_t ServedEUTRAcellsToDeleteListENDCConfUpd; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCConfigUpdateIEs_t; +typedef struct En_gNB_ENDCConfigUpdateIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCConfigUpdateIEs__value { + En_gNB_ENDCConfigUpdateIEs__value_PR present; + union En_gNB_ENDCConfigUpdateIEs__value_u { + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + ServedNRcellsToModifyENDCConfUpdList_t ServedNRcellsToModifyENDCConfUpdList; + ServedNRcellsToDeleteENDCConfUpdList_t ServedNRcellsToDeleteENDCConfUpdList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCConfigUpdateIEs_t; +typedef struct ENDCConfigurationUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCConfigurationUpdateAcknowledge_IEs__value { + ENDCConfigurationUpdateAcknowledge_IEs__value_PR present; + union ENDCConfigurationUpdateAcknowledge_IEs__value_u { + RespondingNodeType_EndcConfigUpdate_t RespondingNodeType_EndcConfigUpdate; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateAcknowledge_IEs_t; +typedef struct ENB_ENDCConfigUpdateAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCConfigUpdateAckIEs__value { + ENB_ENDCConfigUpdateAckIEs__value_PR present; + union ENB_ENDCConfigUpdateAckIEs__value_u { + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCConfigUpdateAckIEs_t; +typedef struct En_gNB_ENDCConfigUpdateAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCConfigUpdateAckIEs__value { + En_gNB_ENDCConfigUpdateAckIEs__value_PR present; + union En_gNB_ENDCConfigUpdateAckIEs__value_u { + ServedNRcellsENDCX2ManagementList_t ServedNRcellsENDCX2ManagementList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCConfigUpdateAckIEs_t; +typedef struct ENDCConfigurationUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCConfigurationUpdateFailure_IEs__value { + ENDCConfigurationUpdateFailure_IEs__value_PR present; + union ENDCConfigurationUpdateFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + TimeToWait_t TimeToWait; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCConfigurationUpdateFailure_IEs_t; +typedef struct ENDCCellActivationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCCellActivationRequest_IEs__value { + ENDCCellActivationRequest_IEs__value_PR present; + union ENDCCellActivationRequest_IEs__value_u { + ServedNRCellsToActivate_t ServedNRCellsToActivate; + ActivationID_t ActivationID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationRequest_IEs_t; +typedef struct ENDCCellActivationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCCellActivationResponse_IEs__value { + ENDCCellActivationResponse_IEs__value_PR present; + union ENDCCellActivationResponse_IEs__value_u { + ActivatedNRCellList_t ActivatedNRCellList; + ActivationID_t ActivationID; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationResponse_IEs_t; +typedef struct ENDCCellActivationFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCCellActivationFailure_IEs__value { + ENDCCellActivationFailure_IEs__value_PR present; + union ENDCCellActivationFailure_IEs__value_u { + ActivationID_t ActivationID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCCellActivationFailure_IEs_t; +typedef struct SecondaryRATDataUsageReport_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SecondaryRATDataUsageReport_IEs__value { + SecondaryRATDataUsageReport_IEs__value_PR present; + union SecondaryRATDataUsageReport_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + SecondaryRATUsageReportList_t SecondaryRATUsageReportList; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATDataUsageReport_IEs_t; +typedef struct SgNBActivityNotification_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SgNBActivityNotification_IEs__value { + SgNBActivityNotification_IEs__value_PR present; + union SgNBActivityNotification_IEs__value_u { + UE_X2AP_ID_t UE_X2AP_ID; + SgNB_UE_X2AP_ID_t SgNB_UE_X2AP_ID; + UserPlaneTrafficActivityReport_t UserPlaneTrafficActivityReport; + ERABActivityNotifyItemList_t ERABActivityNotifyItemList; + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBActivityNotification_IEs_t; +typedef struct ENDCPartialResetRequired_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCPartialResetRequired_IEs__value { + ENDCPartialResetRequired_IEs__value_PR present; + union ENDCPartialResetRequired_IEs__value_u { + UEsToBeResetList_t UEsToBeResetList; + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetRequired_IEs_t; +typedef struct ENDCPartialResetConfirm_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCPartialResetConfirm_IEs__value { + ENDCPartialResetConfirm_IEs__value_PR present; + union ENDCPartialResetConfirm_IEs__value_u { + UEsToBeResetList_t UEsToBeResetList; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCPartialResetConfirm_IEs_t; +typedef struct EUTRANRCellResourceCoordinationRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EUTRANRCellResourceCoordinationRequest_IEs__value { + EUTRANRCellResourceCoordinationRequest_IEs__value_PR present; + union EUTRANRCellResourceCoordinationRequest_IEs__value_u { + InitiatingNodeType_EutranrCellResourceCoordination_t InitiatingNodeType_EutranrCellResourceCoordination; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationRequest_IEs_t; +typedef struct ENB_EUTRA_NRCellResourceCoordinationReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_EUTRA_NRCellResourceCoordinationReqIEs__value { + ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR present; + union ENB_EUTRA_NRCellResourceCoordinationReqIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofEUTRACellsinEUTRACoordinationReq_t ListofEUTRACellsinEUTRACoordinationReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_EUTRA_NRCellResourceCoordinationReqIEs_t; +typedef struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value { + En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_PR present; + union En_gNB_EUTRA_NRCellResourceCoordinationReqIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + ListofEUTRACellsinNRCoordinationReq_t ListofEUTRACellsinNRCoordinationReq; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofNRCellsinNRCoordinationReq_t ListofNRCellsinNRCoordinationReq; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_t; +typedef struct EUTRANRCellResourceCoordinationResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct EUTRANRCellResourceCoordinationResponse_IEs__value { + EUTRANRCellResourceCoordinationResponse_IEs__value_PR present; + union EUTRANRCellResourceCoordinationResponse_IEs__value_u { + RespondingNodeType_EutranrCellResourceCoordination_t RespondingNodeType_EutranrCellResourceCoordination; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} EUTRANRCellResourceCoordinationResponse_IEs_t; +typedef struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value { + ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR present; + union ENB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofEUTRACellsinEUTRACoordinationResp_t ListofEUTRACellsinEUTRACoordinationResp; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_t; +typedef struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value { + En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_PR present; + union En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs__value_u { + DataTrafficResourceIndication_t DataTrafficResourceIndication; + SpectrumSharingGroupID_t SpectrumSharingGroupID; + ListofNRCellsinNRCoordinationResp_t ListofNRCellsinNRCoordinationResp; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_t; +typedef struct ENDCX2RemovalRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2RemovalRequest_IEs__value { + ENDCX2RemovalRequest_IEs__value_PR present; + union ENDCX2RemovalRequest_IEs__value_u { + InitiatingNodeType_EndcX2Removal_t InitiatingNodeType_EndcX2Removal; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalRequest_IEs_t; +typedef struct ENB_ENDCX2RemovalReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2RemovalReqIEs__value { + ENB_ENDCX2RemovalReqIEs__value_PR present; + union ENB_ENDCX2RemovalReqIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2RemovalReqIEs_t; +typedef struct En_gNB_ENDCX2RemovalReqIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2RemovalReqIEs__value { + En_gNB_ENDCX2RemovalReqIEs__value_PR present; + union En_gNB_ENDCX2RemovalReqIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2RemovalReqIEs_t; +typedef struct ENDCX2RemovalResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2RemovalResponse_IEs__value { + ENDCX2RemovalResponse_IEs__value_PR present; + union ENDCX2RemovalResponse_IEs__value_u { + RespondingNodeType_EndcX2Removal_t RespondingNodeType_EndcX2Removal; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalResponse_IEs_t; +typedef struct ENB_ENDCX2RemovalReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENB_ENDCX2RemovalReqAckIEs__value { + ENB_ENDCX2RemovalReqAckIEs__value_PR present; + union ENB_ENDCX2RemovalReqAckIEs__value_u { + GlobalENB_ID_t GlobalENB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ENDCX2RemovalReqAckIEs_t; +typedef struct En_gNB_ENDCX2RemovalReqAckIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct En_gNB_ENDCX2RemovalReqAckIEs__value { + En_gNB_ENDCX2RemovalReqAckIEs__value_PR present; + union En_gNB_ENDCX2RemovalReqAckIEs__value_u { + GlobalGNB_ID_t GlobalGNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} En_gNB_ENDCX2RemovalReqAckIEs_t; +typedef struct ENDCX2RemovalFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ENDCX2RemovalFailure_IEs__value { + ENDCX2RemovalFailure_IEs__value_PR present; + union ENDCX2RemovalFailure_IEs__value_u { + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENDCX2RemovalFailure_IEs_t; +typedef struct DataForwardingAddressIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct DataForwardingAddressIndication_IEs__value { + DataForwardingAddressIndication_IEs__value_PR present; + union DataForwardingAddressIndication_IEs__value_u { + UE_X2AP_ID_Extension_t UE_X2AP_ID_Extension; + UE_X2AP_ID_t UE_X2AP_ID; + E_RABs_DataForwardingAddress_List_t E_RABs_DataForwardingAddress_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} DataForwardingAddressIndication_IEs_t; +typedef struct GNBStatusIndicationIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct GNBStatusIndicationIEs__value { + GNBStatusIndicationIEs__value_PR present; + union GNBStatusIndicationIEs__value_u { + GNBOverloadInformation_t GNBOverloadInformation; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNBStatusIndicationIEs_t; +typedef struct E_RAB_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RAB_ItemIEs__value { + E_RAB_ItemIEs__value_PR present; + union E_RAB_ItemIEs__value_u { + E_RAB_Item_t E_RAB_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RAB_ItemIEs_t; +typedef struct E_RABUsageReport_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E_RABUsageReport_ItemIEs__value { + E_RABUsageReport_ItemIEs__value_PR present; + union E_RABUsageReport_ItemIEs__value_u { + E_RABUsageReport_Item_t E_RABUsageReport_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E_RABUsageReport_ItemIEs_t; +typedef struct SecondaryRATUsageReport_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct SecondaryRATUsageReport_ItemIEs__value { + SecondaryRATUsageReport_ItemIEs__value_PR present; + union SecondaryRATUsageReport_ItemIEs__value_u { + SecondaryRATUsageReport_Item_t SecondaryRATUsageReport_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReport_ItemIEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetup_ItemIEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ItemIEs_specs_29; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ItemIEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToStatusTransfer_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellInformation_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellInformation_ItemIEs_specs_37; +extern asn_TYPE_member_t asn_MBR_CellInformation_ItemIEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellToReport_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellToReport_ItemIEs_specs_41; +extern asn_TYPE_member_t asn_MBR_CellToReport_ItemIEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45; +extern asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_ItemIEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_ItemIEs_specs_49; +extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_ItemIEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53; +extern asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_ItemIEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_ItemIEs_specs_57; +extern asn_TYPE_member_t asn_MBR_CellMeasurementResult_ItemIEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ItemIEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_ModReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_ModReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_ModAckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_ModAckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_ModAckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_ModReqdItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelReqItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_RelConfItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToCounterCheckItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeSetupRetrieve_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeAdded_SgNBModReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeModified_SgNBModReqd_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153; +extern asn_TYPE_member_t asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161; +extern asn_TYPE_member_t asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_SubjectToSgNBCounterCheck_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173; +extern asn_TYPE_member_t asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177; +extern asn_TYPE_member_t asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABs_DataForwardingAddress_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181; +extern asn_TYPE_member_t asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_185; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_185[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_189; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_189[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_193; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_193[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_197; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_197[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_201; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_201[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_205; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_205[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_209; +extern asn_TYPE_member_t asn_MBR_RICindication_IEs_209[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_213; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_213[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_217; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_217[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_221; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_221[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_225; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_225[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_229; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_229[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_233; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_233[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_237; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_237[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequest_IEs_specs_241; +extern asn_TYPE_member_t asn_MBR_HandoverRequest_IEs_241[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledge_IEs_specs_245; +extern asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledge_IEs_245[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailure_IEs_specs_249; +extern asn_TYPE_member_t asn_MBR_HandoverPreparationFailure_IEs_249[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverReport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverReport_IEs_specs_253; +extern asn_TYPE_member_t asn_MBR_HandoverReport_IEs_253[3]; +extern asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SNStatusTransfer_IEs_specs_257; +extern asn_TYPE_member_t asn_MBR_SNStatusTransfer_IEs_257[3]; +extern asn_TYPE_descriptor_t asn_DEF_UEContextRelease_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_UEContextRelease_IEs_specs_261; +extern asn_TYPE_member_t asn_MBR_UEContextRelease_IEs_261[3]; +extern asn_TYPE_descriptor_t asn_DEF_HandoverCancel_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCancel_IEs_specs_265; +extern asn_TYPE_member_t asn_MBR_HandoverCancel_IEs_265[3]; +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_269; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_269[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_IEs_specs_273; +extern asn_TYPE_member_t asn_MBR_ResetRequest_IEs_273[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_IEs_specs_277; +extern asn_TYPE_member_t asn_MBR_ResetResponse_IEs_277[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2SetupRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_IEs_specs_281; +extern asn_TYPE_member_t asn_MBR_X2SetupRequest_IEs_281[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2SetupResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_IEs_specs_285; +extern asn_TYPE_member_t asn_MBR_X2SetupResponse_IEs_285[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2SetupFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_IEs_specs_289; +extern asn_TYPE_member_t asn_MBR_X2SetupFailure_IEs_289[3]; +extern asn_TYPE_descriptor_t asn_DEF_LoadInformation_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_IEs_specs_293; +extern asn_TYPE_member_t asn_MBR_LoadInformation_IEs_293[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_IEs_specs_297; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_IEs_297[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_301; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_301[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_305; +extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_IEs_305[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_IEs_specs_309; +extern asn_TYPE_member_t asn_MBR_ResourceStatusRequest_IEs_309[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_IEs_specs_313; +extern asn_TYPE_member_t asn_MBR_ResourceStatusResponse_IEs_313[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_IEs_specs_317; +extern asn_TYPE_member_t asn_MBR_ResourceStatusFailure_IEs_317[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_IEs_specs_321; +extern asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_IEs_321[3]; +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeRequest_IEs_specs_325; +extern asn_TYPE_member_t asn_MBR_MobilityChangeRequest_IEs_325[3]; +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeAcknowledge_IEs_specs_329; +extern asn_TYPE_member_t asn_MBR_MobilityChangeAcknowledge_IEs_329[3]; +extern asn_TYPE_descriptor_t asn_DEF_MobilityChangeFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_MobilityChangeFailure_IEs_specs_333; +extern asn_TYPE_member_t asn_MBR_MobilityChangeFailure_IEs_333[3]; +extern asn_TYPE_descriptor_t asn_DEF_RLFIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RLFIndication_IEs_specs_337; +extern asn_TYPE_member_t asn_MBR_RLFIndication_IEs_337[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellActivationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellActivationRequest_IEs_specs_341; +extern asn_TYPE_member_t asn_MBR_CellActivationRequest_IEs_341[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellActivationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellActivationResponse_IEs_specs_345; +extern asn_TYPE_member_t asn_MBR_CellActivationResponse_IEs_345[3]; +extern asn_TYPE_descriptor_t asn_DEF_CellActivationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_CellActivationFailure_IEs_specs_349; +extern asn_TYPE_member_t asn_MBR_CellActivationFailure_IEs_349[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2Release_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2Release_IEs_specs_353; +extern asn_TYPE_member_t asn_MBR_X2Release_IEs_353[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2APMessageTransfer_IEs_specs_357; +extern asn_TYPE_member_t asn_MBR_X2APMessageTransfer_IEs_357[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequest_IEs_specs_361; +extern asn_TYPE_member_t asn_MBR_SeNBAdditionRequest_IEs_361[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestAcknowledge_IEs_specs_365; +extern asn_TYPE_member_t asn_MBR_SeNBAdditionRequestAcknowledge_IEs_365[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestReject_IEs_specs_369; +extern asn_TYPE_member_t asn_MBR_SeNBAdditionRequestReject_IEs_369[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_IEs_specs_373; +extern asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_IEs_373[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequest_IEs_specs_377; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequest_IEs_377[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestAcknowledge_IEs_specs_381; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequestAcknowledge_IEs_381[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestReject_IEs_specs_385; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequestReject_IEs_385[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequired_IEs_specs_389; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRequired_IEs_389[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationConfirm_IEs_specs_393; +extern asn_TYPE_member_t asn_MBR_SeNBModificationConfirm_IEs_393[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRefuse_IEs_specs_397; +extern asn_TYPE_member_t asn_MBR_SeNBModificationRefuse_IEs_397[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequest_IEs_specs_401; +extern asn_TYPE_member_t asn_MBR_SeNBReleaseRequest_IEs_401[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequired_IEs_specs_405; +extern asn_TYPE_member_t asn_MBR_SeNBReleaseRequired_IEs_405[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseConfirm_IEs_specs_409; +extern asn_TYPE_member_t asn_MBR_SeNBReleaseConfirm_IEs_409[3]; +extern asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SeNBCounterCheckRequest_IEs_specs_413; +extern asn_TYPE_member_t asn_MBR_SeNBCounterCheckRequest_IEs_413[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2RemovalRequest_IEs_specs_417; +extern asn_TYPE_member_t asn_MBR_X2RemovalRequest_IEs_417[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2RemovalResponse_IEs_specs_421; +extern asn_TYPE_member_t asn_MBR_X2RemovalResponse_IEs_421[3]; +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_X2RemovalFailure_IEs_specs_425; +extern asn_TYPE_member_t asn_MBR_X2RemovalFailure_IEs_425[3]; +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextRequest_IEs_specs_429; +extern asn_TYPE_member_t asn_MBR_RetrieveUEContextRequest_IEs_429[3]; +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextResponse_IEs_specs_433; +extern asn_TYPE_member_t asn_MBR_RetrieveUEContextResponse_IEs_433[3]; +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextFailure_IEs_specs_437; +extern asn_TYPE_member_t asn_MBR_RetrieveUEContextFailure_IEs_437[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequest_IEs_specs_441; +extern asn_TYPE_member_t asn_MBR_SgNBAdditionRequest_IEs_441[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestAcknowledge_IEs_specs_445; +extern asn_TYPE_member_t asn_MBR_SgNBAdditionRequestAcknowledge_IEs_445[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestReject_IEs_specs_449; +extern asn_TYPE_member_t asn_MBR_SgNBAdditionRequestReject_IEs_449[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReconfigurationComplete_IEs_specs_453; +extern asn_TYPE_member_t asn_MBR_SgNBReconfigurationComplete_IEs_453[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequest_IEs_specs_457; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequest_IEs_457[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestAcknowledge_IEs_specs_461; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequestAcknowledge_IEs_461[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestReject_IEs_specs_465; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequestReject_IEs_465[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequired_IEs_specs_469; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRequired_IEs_469[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationConfirm_IEs_specs_473; +extern asn_TYPE_member_t asn_MBR_SgNBModificationConfirm_IEs_473[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRefuse_IEs_specs_477; +extern asn_TYPE_member_t asn_MBR_SgNBModificationRefuse_IEs_477[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequest_IEs_specs_481; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequest_IEs_481[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestAcknowledge_IEs_specs_485; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequestAcknowledge_IEs_485[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestReject_IEs_specs_489; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequestReject_IEs_489[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequired_IEs_specs_493; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseRequired_IEs_493[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseConfirm_IEs_specs_497; +extern asn_TYPE_member_t asn_MBR_SgNBReleaseConfirm_IEs_497[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBCounterCheckRequest_IEs_specs_501; +extern asn_TYPE_member_t asn_MBR_SgNBCounterCheckRequest_IEs_501[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRequired_IEs_specs_505; +extern asn_TYPE_member_t asn_MBR_SgNBChangeRequired_IEs_505[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeConfirm_IEs_specs_509; +extern asn_TYPE_member_t asn_MBR_SgNBChangeConfirm_IEs_509[3]; +extern asn_TYPE_descriptor_t asn_DEF_RRCTransfer_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RRCTransfer_IEs_specs_513; +extern asn_TYPE_member_t asn_MBR_RRCTransfer_IEs_513[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRefuse_IEs_specs_517; +extern asn_TYPE_member_t asn_MBR_SgNBChangeRefuse_IEs_517[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_IEs_specs_521; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_IEs_521[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqIEs_specs_525; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqIEs_525[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_529; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqIEs_529[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_IEs_specs_533; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_IEs_533[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_537; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqAckIEs_537[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_541; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_541[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_IEs_specs_545; +extern asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_IEs_545[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_IEs_specs_549; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_IEs_549[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateIEs_specs_553; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateIEs_553[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_557; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateIEs_557[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_561; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_561[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_565; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateAckIEs_565[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_569; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_569[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_573; +extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_IEs_573[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationRequest_IEs_specs_577; +extern asn_TYPE_member_t asn_MBR_ENDCCellActivationRequest_IEs_577[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationResponse_IEs_specs_581; +extern asn_TYPE_member_t asn_MBR_ENDCCellActivationResponse_IEs_581[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCCellActivationFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCCellActivationFailure_IEs_specs_585; +extern asn_TYPE_member_t asn_MBR_ENDCCellActivationFailure_IEs_585[3]; +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReport_IEs_specs_589; +extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReport_IEs_589[3]; +extern asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBActivityNotification_IEs_specs_593; +extern asn_TYPE_member_t asn_MBR_SgNBActivityNotification_IEs_593[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetRequired_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetRequired_IEs_specs_597; +extern asn_TYPE_member_t asn_MBR_ENDCPartialResetRequired_IEs_597[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCPartialResetConfirm_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCPartialResetConfirm_IEs_specs_601; +extern asn_TYPE_member_t asn_MBR_ENDCPartialResetConfirm_IEs_601[3]; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationRequest_IEs_specs_605; +extern asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationRequest_IEs_605[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqIEs_specs_609; +extern asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqIEs_609[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_specs_613; +extern asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs_613[3]; +extern asn_TYPE_descriptor_t asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_EUTRANRCellResourceCoordinationResponse_IEs_specs_617; +extern asn_TYPE_member_t asn_MBR_EUTRANRCellResourceCoordinationResponse_IEs_617[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_621; +extern asn_TYPE_member_t asn_MBR_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs_621[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_specs_625; +extern asn_TYPE_member_t asn_MBR_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs_625[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalRequest_IEs_specs_629; +extern asn_TYPE_member_t asn_MBR_ENDCX2RemovalRequest_IEs_629[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqIEs_specs_633; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqIEs_633[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqIEs_specs_637; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqIEs_637[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalResponse_IEs_specs_641; +extern asn_TYPE_member_t asn_MBR_ENDCX2RemovalResponse_IEs_641[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2RemovalReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2RemovalReqAckIEs_specs_645; +extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2RemovalReqAckIEs_645[3]; +extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2RemovalReqAckIEs_specs_649; +extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2RemovalReqAckIEs_649[3]; +extern asn_TYPE_descriptor_t asn_DEF_ENDCX2RemovalFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2RemovalFailure_IEs_specs_653; +extern asn_TYPE_member_t asn_MBR_ENDCX2RemovalFailure_IEs_653[3]; +extern asn_TYPE_descriptor_t asn_DEF_DataForwardingAddressIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_DataForwardingAddressIndication_IEs_specs_657; +extern asn_TYPE_member_t asn_MBR_DataForwardingAddressIndication_IEs_657[3]; +extern asn_TYPE_descriptor_t asn_DEF_GNBStatusIndicationIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndicationIEs_specs_661; +extern asn_TYPE_member_t asn_MBR_GNBStatusIndicationIEs_661[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RAB_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RAB_ItemIEs_specs_665; +extern asn_TYPE_member_t asn_MBR_E_RAB_ItemIEs_665[3]; +extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReport_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReport_ItemIEs_specs_669; +extern asn_TYPE_member_t asn_MBR_E_RABUsageReport_ItemIEs_669[3]; +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_ItemIEs_673[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Field_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c new file mode 100644 index 0000000..9e4c4d1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-FieldPair.c @@ -0,0 +1,32 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-FieldPair.h" + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h new file mode 100644 index 0000000..533b3d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-FieldPair.h @@ -0,0 +1,46 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_FieldPair_H_ +#define _ProtocolIE_FieldPair_H_ + + +#include "asn_application.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_FieldPair_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ID.c new file mode 100644 index 0000000..8f6e43e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-ID.h" + +int +ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ID.h new file mode 100644 index 0000000..7dc8948 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-ID.h @@ -0,0 +1,419 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_ID_H_ +#define _ProtocolIE_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-ID */ +typedef long ProtocolIE_ID_t; + +/* Implementation */ +#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)60001) +#define ProtocolIE_ID_id_RANfunctionDefinition ((ProtocolIE_ID_t)60002) +#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)60003) +#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)60004) +#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)60005) +#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)60006) +#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)60007) +#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)60008) +#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)60009) +#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)60010) +#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)60011) +#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)60012) +#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)60013) +#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)60014) +#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)60015) +#define ProtocolIE_ID_id_RICactionDefinition ((ProtocolIE_ID_t)60016) +#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)60017) +#define ProtocolIE_ID_id_RICactionType ((ProtocolIE_ID_t)60018) +#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)60019) +#define ProtocolIE_ID_id_RICcause ((ProtocolIE_ID_t)60020) +#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)60021) +#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)60022) +#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)60023) +#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)60024) +#define ProtocolIE_ID_id_RICeventTriggerDefinition ((ProtocolIE_ID_t)60025) +#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)60026) +#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)60027) +#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)60028) +#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)60029) +#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)60030) +#define ProtocolIE_ID_id_RICrequestorID ((ProtocolIE_ID_t)60031) +#define ProtocolIE_ID_id_RICrequestSequenceNumber ((ProtocolIE_ID_t)60032) +#define ProtocolIE_ID_id_RICsubscription ((ProtocolIE_ID_t)60033) +#define ProtocolIE_ID_id_RICsubsequentAction ((ProtocolIE_ID_t)60034) +#define ProtocolIE_ID_id_RICsubsequentActionType ((ProtocolIE_ID_t)60035) +#define ProtocolIE_ID_id_RICtimeToWait ((ProtocolIE_ID_t)60036) +#define ProtocolIE_ID_id_E_RABs_Admitted_Item ((ProtocolIE_ID_t)0) +#define ProtocolIE_ID_id_E_RABs_Admitted_List ((ProtocolIE_ID_t)1) +#define ProtocolIE_ID_id_E_RAB_Item ((ProtocolIE_ID_t)2) +#define ProtocolIE_ID_id_E_RABs_NotAdmitted_List ((ProtocolIE_ID_t)3) +#define ProtocolIE_ID_id_E_RABs_ToBeSetup_Item ((ProtocolIE_ID_t)4) +#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)5) +#define ProtocolIE_ID_id_CellInformation ((ProtocolIE_ID_t)6) +#define ProtocolIE_ID_id_CellInformation_Item ((ProtocolIE_ID_t)7) +#define ProtocolIE_ID_id_New_eNB_UE_X2AP_ID ((ProtocolIE_ID_t)9) +#define ProtocolIE_ID_id_Old_eNB_UE_X2AP_ID ((ProtocolIE_ID_t)10) +#define ProtocolIE_ID_id_TargetCell_ID ((ProtocolIE_ID_t)11) +#define ProtocolIE_ID_id_TargeteNBtoSource_eNBTransparentContainer ((ProtocolIE_ID_t)12) +#define ProtocolIE_ID_id_TraceActivation ((ProtocolIE_ID_t)13) +#define ProtocolIE_ID_id_UE_ContextInformation ((ProtocolIE_ID_t)14) +#define ProtocolIE_ID_id_UE_HistoryInformation ((ProtocolIE_ID_t)15) +#define ProtocolIE_ID_id_UE_X2AP_ID ((ProtocolIE_ID_t)16) +#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)17) +#define ProtocolIE_ID_id_E_RABs_SubjectToStatusTransfer_List ((ProtocolIE_ID_t)18) +#define ProtocolIE_ID_id_E_RABs_SubjectToStatusTransfer_Item ((ProtocolIE_ID_t)19) +#define ProtocolIE_ID_id_ServedCells ((ProtocolIE_ID_t)20) +#define ProtocolIE_ID_id_GlobalENB_ID ((ProtocolIE_ID_t)21) +#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)22) +#define ProtocolIE_ID_id_GUMMEI_ID ((ProtocolIE_ID_t)23) +#define ProtocolIE_ID_id_GUGroupIDList ((ProtocolIE_ID_t)24) +#define ProtocolIE_ID_id_ServedCellsToAdd ((ProtocolIE_ID_t)25) +#define ProtocolIE_ID_id_ServedCellsToModify ((ProtocolIE_ID_t)26) +#define ProtocolIE_ID_id_ServedCellsToDelete ((ProtocolIE_ID_t)27) +#define ProtocolIE_ID_id_Registration_Request ((ProtocolIE_ID_t)28) +#define ProtocolIE_ID_id_CellToReport ((ProtocolIE_ID_t)29) +#define ProtocolIE_ID_id_ReportingPeriodicity ((ProtocolIE_ID_t)30) +#define ProtocolIE_ID_id_CellToReport_Item ((ProtocolIE_ID_t)31) +#define ProtocolIE_ID_id_CellMeasurementResult ((ProtocolIE_ID_t)32) +#define ProtocolIE_ID_id_CellMeasurementResult_Item ((ProtocolIE_ID_t)33) +#define ProtocolIE_ID_id_GUGroupIDToAddList ((ProtocolIE_ID_t)34) +#define ProtocolIE_ID_id_GUGroupIDToDeleteList ((ProtocolIE_ID_t)35) +#define ProtocolIE_ID_id_SRVCCOperationPossible ((ProtocolIE_ID_t)36) +#define ProtocolIE_ID_id_Measurement_ID ((ProtocolIE_ID_t)37) +#define ProtocolIE_ID_id_ReportCharacteristics ((ProtocolIE_ID_t)38) +#define ProtocolIE_ID_id_ENB1_Measurement_ID ((ProtocolIE_ID_t)39) +#define ProtocolIE_ID_id_ENB2_Measurement_ID ((ProtocolIE_ID_t)40) +#define ProtocolIE_ID_id_Number_of_Antennaports ((ProtocolIE_ID_t)41) +#define ProtocolIE_ID_id_CompositeAvailableCapacityGroup ((ProtocolIE_ID_t)42) +#define ProtocolIE_ID_id_ENB1_Cell_ID ((ProtocolIE_ID_t)43) +#define ProtocolIE_ID_id_ENB2_Cell_ID ((ProtocolIE_ID_t)44) +#define ProtocolIE_ID_id_ENB2_Proposed_Mobility_Parameters ((ProtocolIE_ID_t)45) +#define ProtocolIE_ID_id_ENB1_Mobility_Parameters ((ProtocolIE_ID_t)46) +#define ProtocolIE_ID_id_ENB2_Mobility_Parameters_Modification_Range ((ProtocolIE_ID_t)47) +#define ProtocolIE_ID_id_FailureCellPCI ((ProtocolIE_ID_t)48) +#define ProtocolIE_ID_id_Re_establishmentCellECGI ((ProtocolIE_ID_t)49) +#define ProtocolIE_ID_id_FailureCellCRNTI ((ProtocolIE_ID_t)50) +#define ProtocolIE_ID_id_ShortMAC_I ((ProtocolIE_ID_t)51) +#define ProtocolIE_ID_id_SourceCellECGI ((ProtocolIE_ID_t)52) +#define ProtocolIE_ID_id_FailureCellECGI ((ProtocolIE_ID_t)53) +#define ProtocolIE_ID_id_HandoverReportType ((ProtocolIE_ID_t)54) +#define ProtocolIE_ID_id_PRACH_Configuration ((ProtocolIE_ID_t)55) +#define ProtocolIE_ID_id_MBSFN_Subframe_Info ((ProtocolIE_ID_t)56) +#define ProtocolIE_ID_id_ServedCellsToActivate ((ProtocolIE_ID_t)57) +#define ProtocolIE_ID_id_ActivatedCellList ((ProtocolIE_ID_t)58) +#define ProtocolIE_ID_id_DeactivationIndication ((ProtocolIE_ID_t)59) +#define ProtocolIE_ID_id_UE_RLF_Report_Container ((ProtocolIE_ID_t)60) +#define ProtocolIE_ID_id_ABSInformation ((ProtocolIE_ID_t)61) +#define ProtocolIE_ID_id_InvokeIndication ((ProtocolIE_ID_t)62) +#define ProtocolIE_ID_id_ABS_Status ((ProtocolIE_ID_t)63) +#define ProtocolIE_ID_id_PartialSuccessIndicator ((ProtocolIE_ID_t)64) +#define ProtocolIE_ID_id_MeasurementInitiationResult_List ((ProtocolIE_ID_t)65) +#define ProtocolIE_ID_id_MeasurementInitiationResult_Item ((ProtocolIE_ID_t)66) +#define ProtocolIE_ID_id_MeasurementFailureCause_Item ((ProtocolIE_ID_t)67) +#define ProtocolIE_ID_id_CompleteFailureCauseInformation_List ((ProtocolIE_ID_t)68) +#define ProtocolIE_ID_id_CompleteFailureCauseInformation_Item ((ProtocolIE_ID_t)69) +#define ProtocolIE_ID_id_CSG_Id ((ProtocolIE_ID_t)70) +#define ProtocolIE_ID_id_CSGMembershipStatus ((ProtocolIE_ID_t)71) +#define ProtocolIE_ID_id_MDTConfiguration ((ProtocolIE_ID_t)72) +#define ProtocolIE_ID_id_ManagementBasedMDTallowed ((ProtocolIE_ID_t)74) +#define ProtocolIE_ID_id_RRCConnSetupIndicator ((ProtocolIE_ID_t)75) +#define ProtocolIE_ID_id_NeighbourTAC ((ProtocolIE_ID_t)76) +#define ProtocolIE_ID_id_Time_UE_StayedInCell_EnhancedGranularity ((ProtocolIE_ID_t)77) +#define ProtocolIE_ID_id_RRCConnReestabIndicator ((ProtocolIE_ID_t)78) +#define ProtocolIE_ID_id_MBMS_Service_Area_List ((ProtocolIE_ID_t)79) +#define ProtocolIE_ID_id_HO_cause ((ProtocolIE_ID_t)80) +#define ProtocolIE_ID_id_TargetCellInUTRAN ((ProtocolIE_ID_t)81) +#define ProtocolIE_ID_id_MobilityInformation ((ProtocolIE_ID_t)82) +#define ProtocolIE_ID_id_SourceCellCRNTI ((ProtocolIE_ID_t)83) +#define ProtocolIE_ID_id_MultibandInfoList ((ProtocolIE_ID_t)84) +#define ProtocolIE_ID_id_M3Configuration ((ProtocolIE_ID_t)85) +#define ProtocolIE_ID_id_M4Configuration ((ProtocolIE_ID_t)86) +#define ProtocolIE_ID_id_M5Configuration ((ProtocolIE_ID_t)87) +#define ProtocolIE_ID_id_MDT_Location_Info ((ProtocolIE_ID_t)88) +#define ProtocolIE_ID_id_ManagementBasedMDTPLMNList ((ProtocolIE_ID_t)89) +#define ProtocolIE_ID_id_SignallingBasedMDTPLMNList ((ProtocolIE_ID_t)90) +#define ProtocolIE_ID_id_ReceiveStatusOfULPDCPSDUsExtended ((ProtocolIE_ID_t)91) +#define ProtocolIE_ID_id_ULCOUNTValueExtended ((ProtocolIE_ID_t)92) +#define ProtocolIE_ID_id_DLCOUNTValueExtended ((ProtocolIE_ID_t)93) +#define ProtocolIE_ID_id_eARFCNExtension ((ProtocolIE_ID_t)94) +#define ProtocolIE_ID_id_UL_EARFCNExtension ((ProtocolIE_ID_t)95) +#define ProtocolIE_ID_id_DL_EARFCNExtension ((ProtocolIE_ID_t)96) +#define ProtocolIE_ID_id_AdditionalSpecialSubframe_Info ((ProtocolIE_ID_t)97) +#define ProtocolIE_ID_id_Masked_IMEISV ((ProtocolIE_ID_t)98) +#define ProtocolIE_ID_id_IntendedULDLConfiguration ((ProtocolIE_ID_t)99) +#define ProtocolIE_ID_id_ExtendedULInterferenceOverloadInfo ((ProtocolIE_ID_t)100) +#define ProtocolIE_ID_id_RNL_Header ((ProtocolIE_ID_t)101) +#define ProtocolIE_ID_id_x2APMessage ((ProtocolIE_ID_t)102) +#define ProtocolIE_ID_id_ProSeAuthorized ((ProtocolIE_ID_t)103) +#define ProtocolIE_ID_id_ExpectedUEBehaviour ((ProtocolIE_ID_t)104) +#define ProtocolIE_ID_id_UE_HistoryInformationFromTheUE ((ProtocolIE_ID_t)105) +#define ProtocolIE_ID_id_DynamicDLTransmissionInformation ((ProtocolIE_ID_t)106) +#define ProtocolIE_ID_id_UE_RLF_Report_Container_for_extended_bands ((ProtocolIE_ID_t)107) +#define ProtocolIE_ID_id_CoMPInformation ((ProtocolIE_ID_t)108) +#define ProtocolIE_ID_id_ReportingPeriodicityRSRPMR ((ProtocolIE_ID_t)109) +#define ProtocolIE_ID_id_RSRPMRList ((ProtocolIE_ID_t)110) +#define ProtocolIE_ID_id_MeNB_UE_X2AP_ID ((ProtocolIE_ID_t)111) +#define ProtocolIE_ID_id_SeNB_UE_X2AP_ID ((ProtocolIE_ID_t)112) +#define ProtocolIE_ID_id_UE_SecurityCapabilities ((ProtocolIE_ID_t)113) +#define ProtocolIE_ID_id_SeNBSecurityKey ((ProtocolIE_ID_t)114) +#define ProtocolIE_ID_id_SeNBUEAggregateMaximumBitRate ((ProtocolIE_ID_t)115) +#define ProtocolIE_ID_id_ServingPLMN ((ProtocolIE_ID_t)116) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_List ((ProtocolIE_ID_t)117) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_Item ((ProtocolIE_ID_t)118) +#define ProtocolIE_ID_id_MeNBtoSeNBContainer ((ProtocolIE_ID_t)119) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_List ((ProtocolIE_ID_t)120) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_Item ((ProtocolIE_ID_t)121) +#define ProtocolIE_ID_id_SeNBtoMeNBContainer ((ProtocolIE_ID_t)122) +#define ProtocolIE_ID_id_ResponseInformationSeNBReconfComp ((ProtocolIE_ID_t)123) +#define ProtocolIE_ID_id_UE_ContextInformationSeNBModReq ((ProtocolIE_ID_t)124) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_ModReqItem ((ProtocolIE_ID_t)125) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_ModReqItem ((ProtocolIE_ID_t)126) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_ModReqItem ((ProtocolIE_ID_t)127) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_ModAckList ((ProtocolIE_ID_t)128) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_ModAckList ((ProtocolIE_ID_t)129) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_ModAckList ((ProtocolIE_ID_t)130) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_ModAckItem ((ProtocolIE_ID_t)131) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_ModAckItem ((ProtocolIE_ID_t)132) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_ModAckItem ((ProtocolIE_ID_t)133) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_ModReqd ((ProtocolIE_ID_t)134) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_ModReqdItem ((ProtocolIE_ID_t)135) +#define ProtocolIE_ID_id_SCGChangeIndication ((ProtocolIE_ID_t)136) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_List_RelReq ((ProtocolIE_ID_t)137) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_RelReqItem ((ProtocolIE_ID_t)138) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_List_RelConf ((ProtocolIE_ID_t)139) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_RelConfItem ((ProtocolIE_ID_t)140) +#define ProtocolIE_ID_id_E_RABs_SubjectToCounterCheck_List ((ProtocolIE_ID_t)141) +#define ProtocolIE_ID_id_E_RABs_SubjectToCounterCheckItem ((ProtocolIE_ID_t)142) +#define ProtocolIE_ID_id_CoverageModificationList ((ProtocolIE_ID_t)143) +#define ProtocolIE_ID_id_ReportingPeriodicityCSIR ((ProtocolIE_ID_t)145) +#define ProtocolIE_ID_id_CSIReportList ((ProtocolIE_ID_t)146) +#define ProtocolIE_ID_id_UEID ((ProtocolIE_ID_t)147) +#define ProtocolIE_ID_id_enhancedRNTP ((ProtocolIE_ID_t)148) +#define ProtocolIE_ID_id_ProSeUEtoNetworkRelaying ((ProtocolIE_ID_t)149) +#define ProtocolIE_ID_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 ((ProtocolIE_ID_t)150) +#define ProtocolIE_ID_id_ULCOUNTValuePDCP_SNlength18 ((ProtocolIE_ID_t)151) +#define ProtocolIE_ID_id_DLCOUNTValuePDCP_SNlength18 ((ProtocolIE_ID_t)152) +#define ProtocolIE_ID_id_UE_ContextReferenceAtSeNB ((ProtocolIE_ID_t)153) +#define ProtocolIE_ID_id_UE_ContextKeptIndicator ((ProtocolIE_ID_t)154) +#define ProtocolIE_ID_id_New_eNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)155) +#define ProtocolIE_ID_id_Old_eNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)156) +#define ProtocolIE_ID_id_MeNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)157) +#define ProtocolIE_ID_id_SeNB_UE_X2AP_ID_Extension ((ProtocolIE_ID_t)158) +#define ProtocolIE_ID_id_LHN_ID ((ProtocolIE_ID_t)159) +#define ProtocolIE_ID_id_FreqBandIndicatorPriority ((ProtocolIE_ID_t)160) +#define ProtocolIE_ID_id_M6Configuration ((ProtocolIE_ID_t)161) +#define ProtocolIE_ID_id_M7Configuration ((ProtocolIE_ID_t)162) +#define ProtocolIE_ID_id_Tunnel_Information_for_BBF ((ProtocolIE_ID_t)163) +#define ProtocolIE_ID_id_SIPTO_BearerDeactivationIndication ((ProtocolIE_ID_t)164) +#define ProtocolIE_ID_id_GW_TransportLayerAddress ((ProtocolIE_ID_t)165) +#define ProtocolIE_ID_id_Correlation_ID ((ProtocolIE_ID_t)166) +#define ProtocolIE_ID_id_SIPTO_Correlation_ID ((ProtocolIE_ID_t)167) +#define ProtocolIE_ID_id_SIPTO_L_GW_TransportLayerAddress ((ProtocolIE_ID_t)168) +#define ProtocolIE_ID_id_X2RemovalThreshold ((ProtocolIE_ID_t)169) +#define ProtocolIE_ID_id_CellReportingIndicator ((ProtocolIE_ID_t)170) +#define ProtocolIE_ID_id_BearerType ((ProtocolIE_ID_t)171) +#define ProtocolIE_ID_id_resumeID ((ProtocolIE_ID_t)172) +#define ProtocolIE_ID_id_UE_ContextInformationRetrieve ((ProtocolIE_ID_t)173) +#define ProtocolIE_ID_id_E_RABs_ToBeSetupRetrieve_Item ((ProtocolIE_ID_t)174) +#define ProtocolIE_ID_id_NewEUTRANCellIdentifier ((ProtocolIE_ID_t)175) +#define ProtocolIE_ID_id_V2XServicesAuthorized ((ProtocolIE_ID_t)176) +#define ProtocolIE_ID_id_OffsetOfNbiotChannelNumberToDL_EARFCN ((ProtocolIE_ID_t)177) +#define ProtocolIE_ID_id_OffsetOfNbiotChannelNumberToUL_EARFCN ((ProtocolIE_ID_t)178) +#define ProtocolIE_ID_id_AdditionalSpecialSubframeExtension_Info ((ProtocolIE_ID_t)179) +#define ProtocolIE_ID_id_BandwidthReducedSI ((ProtocolIE_ID_t)180) +#define ProtocolIE_ID_id_MakeBeforeBreakIndicator ((ProtocolIE_ID_t)181) +#define ProtocolIE_ID_id_UE_ContextReferenceAtWT ((ProtocolIE_ID_t)182) +#define ProtocolIE_ID_id_WT_UE_ContextKeptIndicator ((ProtocolIE_ID_t)183) +#define ProtocolIE_ID_id_UESidelinkAggregateMaximumBitRate ((ProtocolIE_ID_t)184) +#define ProtocolIE_ID_id_uL_GTPtunnelEndpoint ((ProtocolIE_ID_t)185) +#define ProtocolIE_ID_id_DL_scheduling_PDCCH_CCE_usage ((ProtocolIE_ID_t)193) +#define ProtocolIE_ID_id_UL_scheduling_PDCCH_CCE_usage ((ProtocolIE_ID_t)194) +#define ProtocolIE_ID_id_UEAppLayerMeasConfig ((ProtocolIE_ID_t)195) +#define ProtocolIE_ID_id_extended_e_RAB_MaximumBitrateDL ((ProtocolIE_ID_t)196) +#define ProtocolIE_ID_id_extended_e_RAB_MaximumBitrateUL ((ProtocolIE_ID_t)197) +#define ProtocolIE_ID_id_extended_e_RAB_GuaranteedBitrateDL ((ProtocolIE_ID_t)198) +#define ProtocolIE_ID_id_extended_e_RAB_GuaranteedBitrateUL ((ProtocolIE_ID_t)199) +#define ProtocolIE_ID_id_extended_uEaggregateMaximumBitRateDownlink ((ProtocolIE_ID_t)200) +#define ProtocolIE_ID_id_extended_uEaggregateMaximumBitRateUplink ((ProtocolIE_ID_t)201) +#define ProtocolIE_ID_id_NRrestrictioninEPSasSecondaryRAT ((ProtocolIE_ID_t)202) +#define ProtocolIE_ID_id_SgNBSecurityKey ((ProtocolIE_ID_t)203) +#define ProtocolIE_ID_id_SgNBUEAggregateMaximumBitRate ((ProtocolIE_ID_t)204) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBAddReqList ((ProtocolIE_ID_t)205) +#define ProtocolIE_ID_id_MeNBtoSgNBContainer ((ProtocolIE_ID_t)206) +#define ProtocolIE_ID_id_SgNB_UE_X2AP_ID ((ProtocolIE_ID_t)207) +#define ProtocolIE_ID_id_RequestedSplitSRBs ((ProtocolIE_ID_t)208) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBAddReq_Item ((ProtocolIE_ID_t)209) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList ((ProtocolIE_ID_t)210) +#define ProtocolIE_ID_id_SgNBtoMeNBContainer ((ProtocolIE_ID_t)211) +#define ProtocolIE_ID_id_AdmittedSplitSRBs ((ProtocolIE_ID_t)212) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item ((ProtocolIE_ID_t)213) +#define ProtocolIE_ID_id_ResponseInformationSgNBReconfComp ((ProtocolIE_ID_t)214) +#define ProtocolIE_ID_id_UE_ContextInformation_SgNBModReq ((ProtocolIE_ID_t)215) +#define ProtocolIE_ID_id_E_RABs_ToBeAdded_SgNBModReq_Item ((ProtocolIE_ID_t)216) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_SgNBModReq_Item ((ProtocolIE_ID_t)217) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBModReq_Item ((ProtocolIE_ID_t)218) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList ((ProtocolIE_ID_t)219) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_SgNBModAckList ((ProtocolIE_ID_t)220) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList ((ProtocolIE_ID_t)221) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item ((ProtocolIE_ID_t)222) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item ((ProtocolIE_ID_t)223) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item ((ProtocolIE_ID_t)224) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBModReqdList ((ProtocolIE_ID_t)225) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_SgNBModReqdList ((ProtocolIE_ID_t)226) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBModReqd_Item ((ProtocolIE_ID_t)227) +#define ProtocolIE_ID_id_E_RABs_ToBeModified_SgNBModReqd_Item ((ProtocolIE_ID_t)228) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBChaConfList ((ProtocolIE_ID_t)229) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBChaConf_Item ((ProtocolIE_ID_t)230) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReqList ((ProtocolIE_ID_t)231) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReq_Item ((ProtocolIE_ID_t)232) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelConfList ((ProtocolIE_ID_t)233) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelConf_Item ((ProtocolIE_ID_t)234) +#define ProtocolIE_ID_id_E_RABs_SubjectToSgNBCounterCheck_List ((ProtocolIE_ID_t)235) +#define ProtocolIE_ID_id_E_RABs_SubjectToSgNBCounterCheck_Item ((ProtocolIE_ID_t)236) +#define ProtocolIE_ID_id_RRCContainer ((ProtocolIE_ID_t)237) +#define ProtocolIE_ID_id_SRBType ((ProtocolIE_ID_t)238) +#define ProtocolIE_ID_id_Target_SgNB_ID ((ProtocolIE_ID_t)239) +#define ProtocolIE_ID_id_HandoverRestrictionList ((ProtocolIE_ID_t)240) +#define ProtocolIE_ID_id_SCGConfigurationQuery ((ProtocolIE_ID_t)241) +#define ProtocolIE_ID_id_SplitSRB ((ProtocolIE_ID_t)242) +#define ProtocolIE_ID_id_UENRMeasurement ((ProtocolIE_ID_t)243) +#define ProtocolIE_ID_id_InitiatingNodeType_EndcX2Setup ((ProtocolIE_ID_t)244) +#define ProtocolIE_ID_id_InitiatingNodeType_EndcConfigUpdate ((ProtocolIE_ID_t)245) +#define ProtocolIE_ID_id_RespondingNodeType_EndcX2Setup ((ProtocolIE_ID_t)246) +#define ProtocolIE_ID_id_RespondingNodeType_EndcConfigUpdate ((ProtocolIE_ID_t)247) +#define ProtocolIE_ID_id_NRUESecurityCapabilities ((ProtocolIE_ID_t)248) +#define ProtocolIE_ID_id_PDCPChangeIndication ((ProtocolIE_ID_t)249) +#define ProtocolIE_ID_id_ServedEUTRAcellsENDCX2ManagementList ((ProtocolIE_ID_t)250) +#define ProtocolIE_ID_id_CellAssistanceInformation ((ProtocolIE_ID_t)251) +#define ProtocolIE_ID_id_Globalen_gNB_ID ((ProtocolIE_ID_t)252) +#define ProtocolIE_ID_id_ServedNRcellsENDCX2ManagementList ((ProtocolIE_ID_t)253) +#define ProtocolIE_ID_id_UE_ContextReferenceAtSgNB ((ProtocolIE_ID_t)254) +#define ProtocolIE_ID_id_SecondaryRATUsageReport ((ProtocolIE_ID_t)255) +#define ProtocolIE_ID_id_ActivationID ((ProtocolIE_ID_t)256) +#define ProtocolIE_ID_id_MeNBResourceCoordinationInformation ((ProtocolIE_ID_t)257) +#define ProtocolIE_ID_id_SgNBResourceCoordinationInformation ((ProtocolIE_ID_t)258) +#define ProtocolIE_ID_id_ServedEUTRAcellsToModifyListENDCConfUpd ((ProtocolIE_ID_t)259) +#define ProtocolIE_ID_id_ServedEUTRAcellsToDeleteListENDCConfUpd ((ProtocolIE_ID_t)260) +#define ProtocolIE_ID_id_ServedNRcellsToModifyListENDCConfUpd ((ProtocolIE_ID_t)261) +#define ProtocolIE_ID_id_ServedNRcellsToDeleteListENDCConfUpd ((ProtocolIE_ID_t)262) +#define ProtocolIE_ID_id_E_RABUsageReport_Item ((ProtocolIE_ID_t)263) +#define ProtocolIE_ID_id_Old_SgNB_UE_X2AP_ID ((ProtocolIE_ID_t)264) +#define ProtocolIE_ID_id_SecondaryRATUsageReportList ((ProtocolIE_ID_t)265) +#define ProtocolIE_ID_id_SecondaryRATUsageReport_Item ((ProtocolIE_ID_t)266) +#define ProtocolIE_ID_id_ServedNRCellsToActivate ((ProtocolIE_ID_t)267) +#define ProtocolIE_ID_id_ActivatedNRCellList ((ProtocolIE_ID_t)268) +#define ProtocolIE_ID_id_SelectedPLMN ((ProtocolIE_ID_t)269) +#define ProtocolIE_ID_id_UEs_ToBeReset ((ProtocolIE_ID_t)270) +#define ProtocolIE_ID_id_UEs_Admitted_ToBeReset ((ProtocolIE_ID_t)271) +#define ProtocolIE_ID_id_RRCConfigIndication ((ProtocolIE_ID_t)272) +#define ProtocolIE_ID_id_DownlinkPacketLossRate ((ProtocolIE_ID_t)273) +#define ProtocolIE_ID_id_UplinkPacketLossRate ((ProtocolIE_ID_t)274) +#define ProtocolIE_ID_id_SubscriberProfileIDforRFP ((ProtocolIE_ID_t)275) +#define ProtocolIE_ID_id_serviceType ((ProtocolIE_ID_t)276) +#define ProtocolIE_ID_id_AerialUEsubscriptionInformation ((ProtocolIE_ID_t)277) +#define ProtocolIE_ID_id_SGNB_Addition_Trigger_Ind ((ProtocolIE_ID_t)278) +#define ProtocolIE_ID_id_MeNBCell_ID ((ProtocolIE_ID_t)279) +#define ProtocolIE_ID_id_RequestedSplitSRBsrelease ((ProtocolIE_ID_t)280) +#define ProtocolIE_ID_id_AdmittedSplitSRBsrelease ((ProtocolIE_ID_t)281) +#define ProtocolIE_ID_id_NRS_NSSS_PowerOffset ((ProtocolIE_ID_t)282) +#define ProtocolIE_ID_id_NSSS_NumOccasionDifferentPrecoder ((ProtocolIE_ID_t)283) +#define ProtocolIE_ID_id_ProtectedEUTRAResourceIndication ((ProtocolIE_ID_t)284) +#define ProtocolIE_ID_id_InitiatingNodeType_EutranrCellResourceCoordination ((ProtocolIE_ID_t)285) +#define ProtocolIE_ID_id_RespondingNodeType_EutranrCellResourceCoordination ((ProtocolIE_ID_t)286) +#define ProtocolIE_ID_id_DataTrafficResourceIndication ((ProtocolIE_ID_t)287) +#define ProtocolIE_ID_id_SpectrumSharingGroupID ((ProtocolIE_ID_t)288) +#define ProtocolIE_ID_id_ListofEUTRACellsinEUTRACoordinationReq ((ProtocolIE_ID_t)289) +#define ProtocolIE_ID_id_ListofEUTRACellsinEUTRACoordinationResp ((ProtocolIE_ID_t)290) +#define ProtocolIE_ID_id_ListofEUTRACellsinNRCoordinationReq ((ProtocolIE_ID_t)291) +#define ProtocolIE_ID_id_ListofNRCellsinNRCoordinationReq ((ProtocolIE_ID_t)292) +#define ProtocolIE_ID_id_ListofNRCellsinNRCoordinationResp ((ProtocolIE_ID_t)293) +#define ProtocolIE_ID_id_E_RABs_AdmittedToBeModified_SgNBModConfList ((ProtocolIE_ID_t)294) +#define ProtocolIE_ID_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item ((ProtocolIE_ID_t)295) +#define ProtocolIE_ID_id_UEContextLevelUserPlaneActivity ((ProtocolIE_ID_t)296) +#define ProtocolIE_ID_id_ERABActivityNotifyItemList ((ProtocolIE_ID_t)297) +#define ProtocolIE_ID_id_InitiatingNodeType_EndcX2Removal ((ProtocolIE_ID_t)298) +#define ProtocolIE_ID_id_RespondingNodeType_EndcX2Removal ((ProtocolIE_ID_t)299) +#define ProtocolIE_ID_id_RLC_Status ((ProtocolIE_ID_t)300) +#define ProtocolIE_ID_id_CNTypeRestrictions ((ProtocolIE_ID_t)301) +#define ProtocolIE_ID_id_uLpDCPSnLength ((ProtocolIE_ID_t)302) +#define ProtocolIE_ID_id_BluetoothMeasurementConfiguration ((ProtocolIE_ID_t)303) +#define ProtocolIE_ID_id_WLANMeasurementConfiguration ((ProtocolIE_ID_t)304) +#define ProtocolIE_ID_id_NRrestrictionin5GS ((ProtocolIE_ID_t)305) +#define ProtocolIE_ID_id_dL_Forwarding ((ProtocolIE_ID_t)306) +#define ProtocolIE_ID_id_E_RABs_DataForwardingAddress_List ((ProtocolIE_ID_t)307) +#define ProtocolIE_ID_id_E_RABs_DataForwardingAddress_Item ((ProtocolIE_ID_t)308) +#define ProtocolIE_ID_id_Subscription_Based_UE_DifferentiationInfo ((ProtocolIE_ID_t)309) +#define ProtocolIE_ID_id_GNBOverloadInformation ((ProtocolIE_ID_t)310) +#define ProtocolIE_ID_id_dLPDCPSnLength ((ProtocolIE_ID_t)311) +#define ProtocolIE_ID_id_secondarysgNBDLGTPTEIDatPDCP ((ProtocolIE_ID_t)312) +#define ProtocolIE_ID_id_secondarymeNBULGTPTEIDatPDCP ((ProtocolIE_ID_t)313) +#define ProtocolIE_ID_id_lCID ((ProtocolIE_ID_t)314) +#define ProtocolIE_ID_id_duplicationActivation ((ProtocolIE_ID_t)315) +#define ProtocolIE_ID_id_ECGI ((ProtocolIE_ID_t)316) +#define ProtocolIE_ID_id_RLCMode_transferred ((ProtocolIE_ID_t)317) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList ((ProtocolIE_ID_t)318) +#define ProtocolIE_ID_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item ((ProtocolIE_ID_t)319) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReqdList ((ProtocolIE_ID_t)320) +#define ProtocolIE_ID_id_E_RABs_ToBeReleased_SgNBRelReqd_Item ((ProtocolIE_ID_t)321) +#define ProtocolIE_ID_id_NRCGI ((ProtocolIE_ID_t)322) +#define ProtocolIE_ID_id_MeNBCoordinationAssistanceInformation ((ProtocolIE_ID_t)323) +#define ProtocolIE_ID_id_SgNBCoordinationAssistanceInformation ((ProtocolIE_ID_t)324) +#define ProtocolIE_ID_id_new_drb_ID_req ((ProtocolIE_ID_t)325) +extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; +asn_struct_free_f ProtocolIE_ID_free; +asn_struct_print_f ProtocolIE_ID_print; +asn_constr_check_f ProtocolIE_ID_constraint; +ber_type_decoder_f ProtocolIE_ID_decode_ber; +der_type_encoder_f ProtocolIE_ID_encode_der; +xer_type_decoder_f ProtocolIE_ID_decode_xer; +xer_type_encoder_f ProtocolIE_ID_encode_xer; +per_type_decoder_f ProtocolIE_ID_decode_uper; +per_type_encoder_f ProtocolIE_ID_encode_uper; +per_type_decoder_f ProtocolIE_ID_decode_aper; +per_type_encoder_f ProtocolIE_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c new file mode 100644 index 0000000..8a98f49 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Single-Container.c @@ -0,0 +1,1159 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ProtocolIE-Single-Container.h" + +/* + * This type is implemented using RICaction_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_NotAdmitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunction_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionID_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionIDcause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_SubjectToStatusTransfer_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CellInformation_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CellToReport_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using MeasurementInitiationResult_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using MeasurementFailureCause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CompleteFailureCauseInformation_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using CellMeasurementResult_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_ModReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeModified_ModReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_ModReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_ModAckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeModified_ModAckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeReleased_ModAckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_ModReqdItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_RelReqItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_RelConfItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_SubjectToCounterCheckItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeSetupRetrieve_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_SgNBAddReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeAdded_SgNBModReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeModified_SgNBModReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBModReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBModReqd_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeModified_SgNBModReqd_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBRelReq_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBRelConf_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_SubjectToSgNBCounterCheck_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_ToBeReleased_SgNBChaConf_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABs_DataForwardingAddress_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RAB_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using E_RABUsageReport_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using SecondaryRATUsageReport_ItemIEs, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P0 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P0_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P1 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P1_tags_2, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P1_tags_2, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P1_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P2 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P2_tags_3, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P2_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P2_tags_3[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P3 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P3_tags_4, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P3_tags_4, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P3_tags_4[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P4 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P4_tags_5, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P4_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P4_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P5 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P5_tags_6, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P5_tags_6, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P5_tags_6[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P6_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P6 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P6_tags_7, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P6_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P6_tags_7[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetup_ItemIEs_25, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetup_ItemIEs_specs_25 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P7_tags_8[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P7 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P7_tags_8, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P7_tags_8, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P7_tags_8[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ItemIEs_29, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ItemIEs_specs_29 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P8_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P8 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P8_tags_9, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P8_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P8_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToStatusTransfer_ItemIEs_33, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToStatusTransfer_ItemIEs_specs_33 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P9_tags_10[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P9 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P9_tags_10, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P9_tags_10, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P9_tags_10[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellInformation_ItemIEs_37, + 3, /* Elements count */ + &asn_SPC_CellInformation_ItemIEs_specs_37 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P10_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P10 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P10_tags_11, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P10_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P10_tags_11[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellToReport_ItemIEs_41, + 3, /* Elements count */ + &asn_SPC_CellToReport_ItemIEs_specs_41 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P11_tags_12[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P11 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P11_tags_12, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P11_tags_12, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P11_tags_12[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementInitiationResult_ItemIEs_45, + 3, /* Elements count */ + &asn_SPC_MeasurementInitiationResult_ItemIEs_specs_45 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P12_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P12 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P12_tags_13, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P12_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P12_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_MeasurementFailureCause_ItemIEs_49, + 3, /* Elements count */ + &asn_SPC_MeasurementFailureCause_ItemIEs_specs_49 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P13_tags_14[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P13 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P13_tags_14, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P13_tags_14, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P13_tags_14[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CompleteFailureCauseInformation_ItemIEs_53, + 3, /* Elements count */ + &asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_53 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P14_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P14 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P14_tags_15, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P14_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P14_tags_15[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CellMeasurementResult_ItemIEs_57, + 3, /* Elements count */ + &asn_SPC_CellMeasurementResult_ItemIEs_specs_57 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P15_tags_16[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P15 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P15_tags_16, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P15_tags_16, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P15_tags_16[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ItemIEs_61, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ItemIEs_specs_61 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P16_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P16 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P16_tags_17, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P16_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P16_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ItemIEs_65, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ItemIEs_specs_65 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P17_tags_18[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P17 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P17_tags_18, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P17_tags_18, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P17_tags_18[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_ModReqItemIEs_69, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_ModReqItemIEs_specs_69 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P18_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P18 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P18_tags_19, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P18_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P18_tags_19[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_ModReqItemIEs_73, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_ModReqItemIEs_specs_73 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P19_tags_20[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P19 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P19_tags_20, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P19_tags_20, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P19_tags_20[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqItemIEs_77, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqItemIEs_specs_77 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P20_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P20 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P20_tags_21, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P20_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P20_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_81, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_ModAckItemIEs_specs_81 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P21_tags_22[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P21 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P21_tags_22, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P21_tags_22, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P21_tags_22[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_ModAckItemIEs_85, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_ModAckItemIEs_specs_85 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P22_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P22 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P22_tags_23, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P22_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P22_tags_23[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_89, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_ModAckItemIEs_specs_89 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P23_tags_24[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P23 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P23_tags_24, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P23_tags_24, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P23_tags_24[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_ModReqdItemIEs_93, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_ModReqdItemIEs_specs_93 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P24_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P24 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P24_tags_25, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P24_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P24_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelReqItemIEs_97, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelReqItemIEs_specs_97 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P25_tags_26[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P25 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P25_tags_26, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P25_tags_26, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P25_tags_26[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_RelConfItemIEs_101, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_RelConfItemIEs_specs_101 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P26_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P26 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P26_tags_27, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P26_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P26_tags_27[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToCounterCheckItemIEs_105, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToCounterCheckItemIEs_specs_105 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P27_tags_28[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P27 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P27_tags_28, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P27_tags_28, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P27_tags_28[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeSetupRetrieve_ItemIEs_109, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeSetupRetrieve_ItemIEs_specs_109 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P28_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P28 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P28_tags_29, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P28_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P28_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_113, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_specs_113 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P29_tags_30[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P29 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P29_tags_30, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P29_tags_30, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P29_tags_30[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_117, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_specs_117 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P30_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P30 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P30_tags_31, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P30_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P30_tags_31[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_121, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeAdded_SgNBModReq_ItemIEs_specs_121 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P31_tags_32[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P31 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P31_tags_32, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P31_tags_32, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P31_tags_32[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReq_ItemIEs_125, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReq_ItemIEs_specs_125 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P32_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P32 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P32_tags_33, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P32_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P32_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_129, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReq_ItemIEs_specs_129 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P33_tags_34[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P33 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P33_tags_34, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P33_tags_34, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P33_tags_34[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_133, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_specs_133 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P34_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P34 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P34_tags_35, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P34_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P34_tags_35[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_137, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_specs_137 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P35_tags_36[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P35 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P35_tags_36, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P35_tags_36, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P35_tags_36[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_141, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_specs_141 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P36_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P36 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P36_tags_37, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P36_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P36_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_145, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_specs_145 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P37_tags_38[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P37 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P37_tags_38, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P37_tags_38, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P37_tags_38[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_149, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeModified_SgNBModReqd_ItemIEs_specs_149 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P38_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P38 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P38_tags_39, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P38_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P38_tags_39[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_153, + 3, /* Elements count */ + &asn_SPC_E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_specs_153 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P39_tags_40[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P39 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P39_tags_40, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P39_tags_40, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P39_tags_40[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_157, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_specs_157 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P40_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P40 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P40_tags_41, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P40_tags_41, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P40_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_161, + 3, /* Elements count */ + &asn_SPC_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_specs_161 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P41_tags_42[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P41 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P41_tags_42, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P41_tags_42, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P41_tags_42[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_165, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_specs_165 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P42_tags_43[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P42 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P42_tags_43, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P42_tags_43, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P42_tags_43[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_169, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_specs_169 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P43_tags_44[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P43 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P43_tags_44, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P43_tags_44, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P43_tags_44[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_173, + 3, /* Elements count */ + &asn_SPC_E_RABs_SubjectToSgNBCounterCheck_ItemIEs_specs_173 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P44_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P44 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P44_tags_45, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P44_tags_45, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P44_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_177, + 3, /* Elements count */ + &asn_SPC_E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_specs_177 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P45_tags_46[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P45 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P45_tags_46, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P45_tags_46, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P45_tags_46[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABs_DataForwardingAddress_ItemIEs_181, + 3, /* Elements count */ + &asn_SPC_E_RABs_DataForwardingAddress_ItemIEs_specs_181 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P46_tags_47[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P46 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P46_tags_47, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P46_tags_47, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P46_tags_47[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RAB_ItemIEs_665, + 3, /* Elements count */ + &asn_SPC_E_RAB_ItemIEs_specs_665 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P47_tags_48[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P47 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P47_tags_48, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P47_tags_48, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P47_tags_48[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E_RABUsageReport_ItemIEs_669, + 3, /* Elements count */ + &asn_SPC_E_RABUsageReport_ItemIEs_specs_669 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Single_Container_122P48_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P48 = { + "ProtocolIE-Single-Container", + "ProtocolIE-Single-Container", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_Single_Container_122P48_tags_49, + sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49[0]), /* 1 */ + asn_DEF_ProtocolIE_Single_Container_122P48_tags_49, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49) + /sizeof(asn_DEF_ProtocolIE_Single_Container_122P48_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_ItemIEs_673, + 3, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_ItemIEs_specs_673 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h new file mode 100644 index 0000000..7218154 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ProtocolIE-Single-Container.h @@ -0,0 +1,690 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-Containers" + * found in "../../asnFiles/X2AP-Containers.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ProtocolIE_Single_Container_H_ +#define _ProtocolIE_Single_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-Single-Container */ +typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_Single_Container_122P0_t; +typedef RICaction_Admitted_ItemIEs_t ProtocolIE_Single_Container_122P1_t; +typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_Single_Container_122P2_t; +typedef RANfunction_ItemIEs_t ProtocolIE_Single_Container_122P3_t; +typedef RANfunctionID_ItemIEs_t ProtocolIE_Single_Container_122P4_t; +typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_Single_Container_122P5_t; +typedef E_RABs_ToBeSetup_ItemIEs_t ProtocolIE_Single_Container_122P6_t; +typedef E_RABs_Admitted_ItemIEs_t ProtocolIE_Single_Container_122P7_t; +typedef E_RABs_SubjectToStatusTransfer_ItemIEs_t ProtocolIE_Single_Container_122P8_t; +typedef CellInformation_ItemIEs_t ProtocolIE_Single_Container_122P9_t; +typedef CellToReport_ItemIEs_t ProtocolIE_Single_Container_122P10_t; +typedef MeasurementInitiationResult_ItemIEs_t ProtocolIE_Single_Container_122P11_t; +typedef MeasurementFailureCause_ItemIEs_t ProtocolIE_Single_Container_122P12_t; +typedef CompleteFailureCauseInformation_ItemIEs_t ProtocolIE_Single_Container_122P13_t; +typedef CellMeasurementResult_ItemIEs_t ProtocolIE_Single_Container_122P14_t; +typedef E_RABs_ToBeAdded_ItemIEs_t ProtocolIE_Single_Container_122P15_t; +typedef E_RABs_Admitted_ToBeAdded_ItemIEs_t ProtocolIE_Single_Container_122P16_t; +typedef E_RABs_ToBeAdded_ModReqItemIEs_t ProtocolIE_Single_Container_122P17_t; +typedef E_RABs_ToBeModified_ModReqItemIEs_t ProtocolIE_Single_Container_122P18_t; +typedef E_RABs_ToBeReleased_ModReqItemIEs_t ProtocolIE_Single_Container_122P19_t; +typedef E_RABs_Admitted_ToBeAdded_ModAckItemIEs_t ProtocolIE_Single_Container_122P20_t; +typedef E_RABs_Admitted_ToBeModified_ModAckItemIEs_t ProtocolIE_Single_Container_122P21_t; +typedef E_RABs_Admitted_ToBeReleased_ModAckItemIEs_t ProtocolIE_Single_Container_122P22_t; +typedef E_RABs_ToBeReleased_ModReqdItemIEs_t ProtocolIE_Single_Container_122P23_t; +typedef E_RABs_ToBeReleased_RelReqItemIEs_t ProtocolIE_Single_Container_122P24_t; +typedef E_RABs_ToBeReleased_RelConfItemIEs_t ProtocolIE_Single_Container_122P25_t; +typedef E_RABs_SubjectToCounterCheckItemIEs_t ProtocolIE_Single_Container_122P26_t; +typedef E_RABs_ToBeSetupRetrieve_ItemIEs_t ProtocolIE_Single_Container_122P27_t; +typedef E_RABs_ToBeAdded_SgNBAddReq_ItemIEs_t ProtocolIE_Single_Container_122P28_t; +typedef E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs_t ProtocolIE_Single_Container_122P29_t; +typedef E_RABs_ToBeAdded_SgNBModReq_ItemIEs_t ProtocolIE_Single_Container_122P30_t; +typedef E_RABs_ToBeModified_SgNBModReq_ItemIEs_t ProtocolIE_Single_Container_122P31_t; +typedef E_RABs_ToBeReleased_SgNBModReq_ItemIEs_t ProtocolIE_Single_Container_122P32_t; +typedef E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs_t ProtocolIE_Single_Container_122P33_t; +typedef E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs_t ProtocolIE_Single_Container_122P34_t; +typedef E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs_t ProtocolIE_Single_Container_122P35_t; +typedef E_RABs_ToBeReleased_SgNBModReqd_ItemIEs_t ProtocolIE_Single_Container_122P36_t; +typedef E_RABs_ToBeModified_SgNBModReqd_ItemIEs_t ProtocolIE_Single_Container_122P37_t; +typedef E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs_t ProtocolIE_Single_Container_122P38_t; +typedef E_RABs_ToBeReleased_SgNBRelReq_ItemIEs_t ProtocolIE_Single_Container_122P39_t; +typedef E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs_t ProtocolIE_Single_Container_122P40_t; +typedef E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs_t ProtocolIE_Single_Container_122P41_t; +typedef E_RABs_ToBeReleased_SgNBRelConf_ItemIEs_t ProtocolIE_Single_Container_122P42_t; +typedef E_RABs_SubjectToSgNBCounterCheck_ItemIEs_t ProtocolIE_Single_Container_122P43_t; +typedef E_RABs_ToBeReleased_SgNBChaConf_ItemIEs_t ProtocolIE_Single_Container_122P44_t; +typedef E_RABs_DataForwardingAddress_ItemIEs_t ProtocolIE_Single_Container_122P45_t; +typedef E_RAB_ItemIEs_t ProtocolIE_Single_Container_122P46_t; +typedef E_RABUsageReport_ItemIEs_t ProtocolIE_Single_Container_122P47_t; +typedef SecondaryRATUsageReport_ItemIEs_t ProtocolIE_Single_Container_122P48_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P0; +asn_struct_free_f ProtocolIE_Single_Container_122P0_free; +asn_struct_print_f ProtocolIE_Single_Container_122P0_print; +asn_constr_check_f ProtocolIE_Single_Container_122P0_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P0_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P0_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P0_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P0_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P0_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P0_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P0_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P1; +asn_struct_free_f ProtocolIE_Single_Container_122P1_free; +asn_struct_print_f ProtocolIE_Single_Container_122P1_print; +asn_constr_check_f ProtocolIE_Single_Container_122P1_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P1_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P1_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P1_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P1_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P1_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P1_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P1_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P2; +asn_struct_free_f ProtocolIE_Single_Container_122P2_free; +asn_struct_print_f ProtocolIE_Single_Container_122P2_print; +asn_constr_check_f ProtocolIE_Single_Container_122P2_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P2_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P2_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P2_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P2_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P2_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P2_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P2_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P3; +asn_struct_free_f ProtocolIE_Single_Container_122P3_free; +asn_struct_print_f ProtocolIE_Single_Container_122P3_print; +asn_constr_check_f ProtocolIE_Single_Container_122P3_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P3_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P3_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P3_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P3_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P3_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P3_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P3_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P4; +asn_struct_free_f ProtocolIE_Single_Container_122P4_free; +asn_struct_print_f ProtocolIE_Single_Container_122P4_print; +asn_constr_check_f ProtocolIE_Single_Container_122P4_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P4_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P4_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P4_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P4_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P4_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P4_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P4_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P5; +asn_struct_free_f ProtocolIE_Single_Container_122P5_free; +asn_struct_print_f ProtocolIE_Single_Container_122P5_print; +asn_constr_check_f ProtocolIE_Single_Container_122P5_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P5_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P5_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P5_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P5_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P5_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P5_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P5_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P5_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P6; +asn_struct_free_f ProtocolIE_Single_Container_122P6_free; +asn_struct_print_f ProtocolIE_Single_Container_122P6_print; +asn_constr_check_f ProtocolIE_Single_Container_122P6_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P6_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P6_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P6_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P6_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P6_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P6_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P6_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P6_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P7; +asn_struct_free_f ProtocolIE_Single_Container_122P7_free; +asn_struct_print_f ProtocolIE_Single_Container_122P7_print; +asn_constr_check_f ProtocolIE_Single_Container_122P7_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P7_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P7_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P7_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P7_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P7_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P7_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P7_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P7_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P8; +asn_struct_free_f ProtocolIE_Single_Container_122P8_free; +asn_struct_print_f ProtocolIE_Single_Container_122P8_print; +asn_constr_check_f ProtocolIE_Single_Container_122P8_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P8_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P8_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P8_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P8_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P8_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P8_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P8_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P8_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P9; +asn_struct_free_f ProtocolIE_Single_Container_122P9_free; +asn_struct_print_f ProtocolIE_Single_Container_122P9_print; +asn_constr_check_f ProtocolIE_Single_Container_122P9_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P9_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P9_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P9_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P9_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P9_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P9_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P9_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P9_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P10; +asn_struct_free_f ProtocolIE_Single_Container_122P10_free; +asn_struct_print_f ProtocolIE_Single_Container_122P10_print; +asn_constr_check_f ProtocolIE_Single_Container_122P10_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P10_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P10_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P10_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P10_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P10_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P10_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P10_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P10_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P11; +asn_struct_free_f ProtocolIE_Single_Container_122P11_free; +asn_struct_print_f ProtocolIE_Single_Container_122P11_print; +asn_constr_check_f ProtocolIE_Single_Container_122P11_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P11_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P11_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P11_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P11_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P11_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P11_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P11_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P11_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P12; +asn_struct_free_f ProtocolIE_Single_Container_122P12_free; +asn_struct_print_f ProtocolIE_Single_Container_122P12_print; +asn_constr_check_f ProtocolIE_Single_Container_122P12_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P12_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P12_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P12_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P12_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P12_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P12_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P12_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P12_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P13; +asn_struct_free_f ProtocolIE_Single_Container_122P13_free; +asn_struct_print_f ProtocolIE_Single_Container_122P13_print; +asn_constr_check_f ProtocolIE_Single_Container_122P13_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P13_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P13_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P13_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P13_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P13_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P13_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P13_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P13_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P14; +asn_struct_free_f ProtocolIE_Single_Container_122P14_free; +asn_struct_print_f ProtocolIE_Single_Container_122P14_print; +asn_constr_check_f ProtocolIE_Single_Container_122P14_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P14_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P14_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P14_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P14_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P14_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P14_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P14_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P14_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P15; +asn_struct_free_f ProtocolIE_Single_Container_122P15_free; +asn_struct_print_f ProtocolIE_Single_Container_122P15_print; +asn_constr_check_f ProtocolIE_Single_Container_122P15_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P15_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P15_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P15_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P15_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P15_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P15_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P15_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P15_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P16; +asn_struct_free_f ProtocolIE_Single_Container_122P16_free; +asn_struct_print_f ProtocolIE_Single_Container_122P16_print; +asn_constr_check_f ProtocolIE_Single_Container_122P16_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P16_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P16_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P16_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P16_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P16_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P16_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P16_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P16_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P17; +asn_struct_free_f ProtocolIE_Single_Container_122P17_free; +asn_struct_print_f ProtocolIE_Single_Container_122P17_print; +asn_constr_check_f ProtocolIE_Single_Container_122P17_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P17_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P17_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P17_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P17_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P17_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P17_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P17_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P17_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P18; +asn_struct_free_f ProtocolIE_Single_Container_122P18_free; +asn_struct_print_f ProtocolIE_Single_Container_122P18_print; +asn_constr_check_f ProtocolIE_Single_Container_122P18_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P18_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P18_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P18_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P18_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P18_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P18_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P18_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P18_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P19; +asn_struct_free_f ProtocolIE_Single_Container_122P19_free; +asn_struct_print_f ProtocolIE_Single_Container_122P19_print; +asn_constr_check_f ProtocolIE_Single_Container_122P19_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P19_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P19_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P19_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P19_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P19_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P19_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P19_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P19_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P20; +asn_struct_free_f ProtocolIE_Single_Container_122P20_free; +asn_struct_print_f ProtocolIE_Single_Container_122P20_print; +asn_constr_check_f ProtocolIE_Single_Container_122P20_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P20_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P20_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P20_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P20_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P20_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P20_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P20_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P20_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P21; +asn_struct_free_f ProtocolIE_Single_Container_122P21_free; +asn_struct_print_f ProtocolIE_Single_Container_122P21_print; +asn_constr_check_f ProtocolIE_Single_Container_122P21_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P21_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P21_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P21_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P21_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P21_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P21_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P21_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P21_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P22; +asn_struct_free_f ProtocolIE_Single_Container_122P22_free; +asn_struct_print_f ProtocolIE_Single_Container_122P22_print; +asn_constr_check_f ProtocolIE_Single_Container_122P22_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P22_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P22_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P22_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P22_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P22_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P22_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P22_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P22_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P23; +asn_struct_free_f ProtocolIE_Single_Container_122P23_free; +asn_struct_print_f ProtocolIE_Single_Container_122P23_print; +asn_constr_check_f ProtocolIE_Single_Container_122P23_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P23_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P23_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P23_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P23_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P23_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P23_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P23_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P23_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P24; +asn_struct_free_f ProtocolIE_Single_Container_122P24_free; +asn_struct_print_f ProtocolIE_Single_Container_122P24_print; +asn_constr_check_f ProtocolIE_Single_Container_122P24_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P24_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P24_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P24_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P24_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P24_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P24_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P24_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P24_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P25; +asn_struct_free_f ProtocolIE_Single_Container_122P25_free; +asn_struct_print_f ProtocolIE_Single_Container_122P25_print; +asn_constr_check_f ProtocolIE_Single_Container_122P25_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P25_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P25_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P25_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P25_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P25_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P25_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P25_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P25_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P26; +asn_struct_free_f ProtocolIE_Single_Container_122P26_free; +asn_struct_print_f ProtocolIE_Single_Container_122P26_print; +asn_constr_check_f ProtocolIE_Single_Container_122P26_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P26_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P26_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P26_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P26_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P26_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P26_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P26_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P26_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P27; +asn_struct_free_f ProtocolIE_Single_Container_122P27_free; +asn_struct_print_f ProtocolIE_Single_Container_122P27_print; +asn_constr_check_f ProtocolIE_Single_Container_122P27_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P27_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P27_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P27_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P27_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P27_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P27_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P27_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P27_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P28; +asn_struct_free_f ProtocolIE_Single_Container_122P28_free; +asn_struct_print_f ProtocolIE_Single_Container_122P28_print; +asn_constr_check_f ProtocolIE_Single_Container_122P28_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P28_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P28_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P28_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P28_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P28_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P28_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P28_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P28_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P29; +asn_struct_free_f ProtocolIE_Single_Container_122P29_free; +asn_struct_print_f ProtocolIE_Single_Container_122P29_print; +asn_constr_check_f ProtocolIE_Single_Container_122P29_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P29_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P29_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P29_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P29_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P29_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P29_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P29_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P29_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P30; +asn_struct_free_f ProtocolIE_Single_Container_122P30_free; +asn_struct_print_f ProtocolIE_Single_Container_122P30_print; +asn_constr_check_f ProtocolIE_Single_Container_122P30_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P30_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P30_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P30_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P30_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P30_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P30_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P30_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P30_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P31; +asn_struct_free_f ProtocolIE_Single_Container_122P31_free; +asn_struct_print_f ProtocolIE_Single_Container_122P31_print; +asn_constr_check_f ProtocolIE_Single_Container_122P31_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P31_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P31_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P31_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P31_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P31_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P31_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P31_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P31_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P32; +asn_struct_free_f ProtocolIE_Single_Container_122P32_free; +asn_struct_print_f ProtocolIE_Single_Container_122P32_print; +asn_constr_check_f ProtocolIE_Single_Container_122P32_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P32_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P32_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P32_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P32_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P32_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P32_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P32_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P32_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P33; +asn_struct_free_f ProtocolIE_Single_Container_122P33_free; +asn_struct_print_f ProtocolIE_Single_Container_122P33_print; +asn_constr_check_f ProtocolIE_Single_Container_122P33_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P33_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P33_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P33_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P33_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P33_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P33_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P33_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P33_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P34; +asn_struct_free_f ProtocolIE_Single_Container_122P34_free; +asn_struct_print_f ProtocolIE_Single_Container_122P34_print; +asn_constr_check_f ProtocolIE_Single_Container_122P34_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P34_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P34_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P34_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P34_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P34_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P34_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P34_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P34_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P35; +asn_struct_free_f ProtocolIE_Single_Container_122P35_free; +asn_struct_print_f ProtocolIE_Single_Container_122P35_print; +asn_constr_check_f ProtocolIE_Single_Container_122P35_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P35_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P35_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P35_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P35_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P35_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P35_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P35_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P35_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P36; +asn_struct_free_f ProtocolIE_Single_Container_122P36_free; +asn_struct_print_f ProtocolIE_Single_Container_122P36_print; +asn_constr_check_f ProtocolIE_Single_Container_122P36_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P36_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P36_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P36_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P36_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P36_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P36_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P36_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P36_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P37; +asn_struct_free_f ProtocolIE_Single_Container_122P37_free; +asn_struct_print_f ProtocolIE_Single_Container_122P37_print; +asn_constr_check_f ProtocolIE_Single_Container_122P37_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P37_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P37_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P37_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P37_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P37_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P37_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P37_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P37_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P38; +asn_struct_free_f ProtocolIE_Single_Container_122P38_free; +asn_struct_print_f ProtocolIE_Single_Container_122P38_print; +asn_constr_check_f ProtocolIE_Single_Container_122P38_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P38_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P38_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P38_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P38_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P38_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P38_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P38_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P38_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P39; +asn_struct_free_f ProtocolIE_Single_Container_122P39_free; +asn_struct_print_f ProtocolIE_Single_Container_122P39_print; +asn_constr_check_f ProtocolIE_Single_Container_122P39_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P39_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P39_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P39_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P39_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P39_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P39_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P39_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P39_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P40; +asn_struct_free_f ProtocolIE_Single_Container_122P40_free; +asn_struct_print_f ProtocolIE_Single_Container_122P40_print; +asn_constr_check_f ProtocolIE_Single_Container_122P40_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P40_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P40_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P40_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P40_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P40_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P40_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P40_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P40_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P41; +asn_struct_free_f ProtocolIE_Single_Container_122P41_free; +asn_struct_print_f ProtocolIE_Single_Container_122P41_print; +asn_constr_check_f ProtocolIE_Single_Container_122P41_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P41_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P41_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P41_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P41_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P41_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P41_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P41_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P41_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P42; +asn_struct_free_f ProtocolIE_Single_Container_122P42_free; +asn_struct_print_f ProtocolIE_Single_Container_122P42_print; +asn_constr_check_f ProtocolIE_Single_Container_122P42_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P42_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P42_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P42_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P42_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P42_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P42_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P42_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P42_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P43; +asn_struct_free_f ProtocolIE_Single_Container_122P43_free; +asn_struct_print_f ProtocolIE_Single_Container_122P43_print; +asn_constr_check_f ProtocolIE_Single_Container_122P43_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P43_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P43_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P43_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P43_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P43_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P43_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P43_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P43_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P44; +asn_struct_free_f ProtocolIE_Single_Container_122P44_free; +asn_struct_print_f ProtocolIE_Single_Container_122P44_print; +asn_constr_check_f ProtocolIE_Single_Container_122P44_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P44_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P44_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P44_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P44_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P44_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P44_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P44_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P44_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P45; +asn_struct_free_f ProtocolIE_Single_Container_122P45_free; +asn_struct_print_f ProtocolIE_Single_Container_122P45_print; +asn_constr_check_f ProtocolIE_Single_Container_122P45_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P45_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P45_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P45_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P45_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P45_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P45_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P45_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P45_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P46; +asn_struct_free_f ProtocolIE_Single_Container_122P46_free; +asn_struct_print_f ProtocolIE_Single_Container_122P46_print; +asn_constr_check_f ProtocolIE_Single_Container_122P46_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P46_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P46_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P46_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P46_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P46_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P46_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P46_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P46_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P47; +asn_struct_free_f ProtocolIE_Single_Container_122P47_free; +asn_struct_print_f ProtocolIE_Single_Container_122P47_print; +asn_constr_check_f ProtocolIE_Single_Container_122P47_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P47_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P47_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P47_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P47_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P47_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P47_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P47_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P47_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Single_Container_122P48; +asn_struct_free_f ProtocolIE_Single_Container_122P48_free; +asn_struct_print_f ProtocolIE_Single_Container_122P48_print; +asn_constr_check_f ProtocolIE_Single_Container_122P48_constraint; +ber_type_decoder_f ProtocolIE_Single_Container_122P48_decode_ber; +der_type_encoder_f ProtocolIE_Single_Container_122P48_encode_der; +xer_type_decoder_f ProtocolIE_Single_Container_122P48_decode_xer; +xer_type_encoder_f ProtocolIE_Single_Container_122P48_encode_xer; +per_type_decoder_f ProtocolIE_Single_Container_122P48_decode_uper; +per_type_encoder_f ProtocolIE_Single_Container_122P48_encode_uper; +per_type_decoder_f ProtocolIE_Single_Container_122P48_decode_aper; +per_type_encoder_f ProtocolIE_Single_Container_122P48_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Single_Container_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/QCI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/QCI.c new file mode 100644 index 0000000..95588b0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/QCI.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "QCI.h" + +int +QCI_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_QCI_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_QCI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_QCI = { + "QCI", + "QCI", + &asn_OP_NativeInteger, + asn_DEF_QCI_tags_1, + sizeof(asn_DEF_QCI_tags_1) + /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */ + asn_DEF_QCI_tags_1, /* Same as above */ + sizeof(asn_DEF_QCI_tags_1) + /sizeof(asn_DEF_QCI_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_QCI_constr_1, QCI_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/QCI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/QCI.h new file mode 100644 index 0000000..bd54b44 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/QCI.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _QCI_H_ +#define _QCI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* QCI */ +typedef long QCI_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_QCI_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_QCI; +asn_struct_free_f QCI_free; +asn_struct_print_f QCI_print; +asn_constr_check_f QCI_constraint; +ber_type_decoder_f QCI_decode_ber; +der_type_encoder_f QCI_encode_der; +xer_type_decoder_f QCI_decode_xer; +xer_type_encoder_f QCI_encode_xer; +per_type_decoder_f QCI_decode_uper; +per_type_encoder_f QCI_encode_uper; +per_type_decoder_f QCI_decode_aper; +per_type_encoder_f QCI_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _QCI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunction-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunction-Item.c new file mode 100644 index 0000000..7e9b810 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunction-Item.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunction-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionDefinition" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionDefinition */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { + sizeof(struct RANfunction_Item), + offsetof(struct RANfunction_Item, _asn_ctx), + asn_MAP_RANfunction_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { + "RANfunction-Item", + "RANfunction-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Item_tags_1, + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunction-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunction-Item.h new file mode 100644 index 0000000..6b894a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunction-Item.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunction_Item_H_ +#define _RANfunction_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionDefinition.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Item */ +typedef struct RANfunction_Item { + RANfunctionID_t ranFunctionID; + RANfunctionDefinition_t ranFunctionDefinition; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionDefinition.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionDefinition.c new file mode 100644 index 0000000..6c0f61a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionDefinition.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { + "RANfunctionDefinition", + "RANfunctionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RANfunctionDefinition_tags_1, + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionDefinition.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionDefinition.h new file mode 100644 index 0000000..d9f10fa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionDefinition.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionDefinition_H_ +#define _RANfunctionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionDefinition */ +typedef OCTET_STRING_t RANfunctionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; +asn_struct_free_f RANfunctionDefinition_free; +asn_struct_print_f RANfunctionDefinition_print; +asn_constr_check_f RANfunctionDefinition_constraint; +ber_type_decoder_f RANfunctionDefinition_decode_ber; +der_type_encoder_f RANfunctionDefinition_encode_der; +xer_type_decoder_f RANfunctionDefinition_decode_xer; +xer_type_encoder_f RANfunctionDefinition_encode_xer; +per_type_decoder_f RANfunctionDefinition_decode_uper; +per_type_encoder_f RANfunctionDefinition_encode_uper; +per_type_decoder_f RANfunctionDefinition_decode_aper; +per_type_encoder_f RANfunctionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID-Item.c new file mode 100644 index 0000000..a9cd447 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID-Item.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionID-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranFunctionID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { + sizeof(struct RANfunctionID_Item), + offsetof(struct RANfunctionID_Item, _asn_ctx), + asn_MAP_RANfunctionID_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { + "RANfunctionID-Item", + "RANfunctionID-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_Item_tags_1, + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_Item_1, + 1, /* Elements count */ + &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID-Item.h new file mode 100644 index 0000000..286bcd6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID-Item.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionID_Item_H_ +#define _RANfunctionID_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID-Item */ +typedef struct RANfunctionID_Item { + RANfunctionID_t ranFunctionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID.c new file mode 100644 index 0000000..f0eda31 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionID.h" + +int +RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { + "RANfunctionID", + "RANfunctionID", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionID_tags_1, + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID.h new file mode 100644 index 0000000..c783ba3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionID_H_ +#define _RANfunctionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID */ +typedef long RANfunctionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; +asn_struct_free_f RANfunctionID_free; +asn_struct_print_f RANfunctionID_print; +asn_constr_check_f RANfunctionID_constraint; +ber_type_decoder_f RANfunctionID_decode_ber; +der_type_encoder_f RANfunctionID_encode_der; +xer_type_decoder_f RANfunctionID_decode_xer; +xer_type_encoder_f RANfunctionID_encode_xer; +per_type_decoder_f RANfunctionID_decode_uper; +per_type_encoder_f RANfunctionID_encode_uper; +per_type_decoder_f RANfunctionID_decode_aper; +per_type_encoder_f RANfunctionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c new file mode 100644 index 0000000..31d5f40 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionIDcause-Item.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionIDcause-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ricCause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricCause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricCause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { + sizeof(struct RANfunctionIDcause_Item), + offsetof(struct RANfunctionIDcause_Item, _asn_ctx), + asn_MAP_RANfunctionIDcause_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { + "RANfunctionIDcause-Item", + "RANfunctionIDcause-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_Item_tags_1, + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h new file mode 100644 index 0000000..47c88d7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionIDcause-Item.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionIDcause_Item_H_ +#define _RANfunctionIDcause_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RICcause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionIDcause-Item */ +typedef struct RANfunctionIDcause_Item { + RANfunctionID_t ranFunctionID; + RICcause_t ricCause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionIDcause_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctions-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctions-List.c new file mode 100644 index 0000000..3a2d304 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctions-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctions-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { + sizeof(struct RANfunctions_List), + offsetof(struct RANfunctions_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { + "RANfunctions-List", + "RANfunctions-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctions_List_tags_1, + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctions_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctions_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctions-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctions-List.h new file mode 100644 index 0000000..62a2f22 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctions-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctions_List_H_ +#define _RANfunctions_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RANfunctions-List */ +typedef struct RANfunctions_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctions_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctions_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsID-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsID-List.c new file mode 100644 index 0000000..ab72bad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsID-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionsID-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { + sizeof(struct RANfunctionsID_List), + offsetof(struct RANfunctionsID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { + "RANfunctionsID-List", + "RANfunctionsID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsID_List_tags_1, + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsID_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsID-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsID-List.h new file mode 100644 index 0000000..89ffb0c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsID-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionsID_List_H_ +#define _RANfunctionsID_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RANfunctionsID-List */ +typedef struct RANfunctionsID_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsID_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c new file mode 100644 index 0000000..1904c0f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsIDcause-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RANfunctionsIDcause-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { + sizeof(struct RANfunctionsIDcause_List), + offsetof(struct RANfunctionsIDcause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { + "RANfunctionsIDcause-List", + "RANfunctionsIDcause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsIDcause_List_tags_1, + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsIDcause_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h new file mode 100644 index 0000000..df1d911 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RANfunctionsIDcause-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RANfunctionsIDcause_List_H_ +#define _RANfunctionsIDcause_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RANfunctionsIDcause-List */ +typedef struct RANfunctionsIDcause_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsIDcause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsIDcause_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-Item.c new file mode 100644 index 0000000..c383e61 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-Item.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-Admitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { + sizeof(struct RICaction_Admitted_Item), + offsetof(struct RICaction_Admitted_Item, _asn_ctx), + asn_MAP_RICaction_Admitted_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { + "RICaction-Admitted-Item", + "RICaction-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_Item_tags_1, + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-Item.h new file mode 100644 index 0000000..2e2c048 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-Item.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_Admitted_Item_H_ +#define _RICaction_Admitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-Admitted-Item */ +typedef struct RICaction_Admitted_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-List.c new file mode 100644 index 0000000..ca390d7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-Admitted-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { + sizeof(struct RICaction_Admitted_List), + offsetof(struct RICaction_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { + "RICaction-Admitted-List", + "RICaction-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_Admitted_List_tags_1, + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-List.h new file mode 100644 index 0000000..442b76d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-Admitted-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_Admitted_List_H_ +#define _RICaction_Admitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RICaction-Admitted-List */ +typedef struct RICaction_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c new file mode 100644 index 0000000..38a7b18 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-NotAdmitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricCause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_RICcause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricCause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricCause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { + sizeof(struct RICaction_NotAdmitted_Item), + offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { + "RICaction-NotAdmitted-Item", + "RICaction-NotAdmitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_Item_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h new file mode 100644 index 0000000..e25d1d2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-Item.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_NotAdmitted_Item_H_ +#define _RICaction_NotAdmitted_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICcause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-NotAdmitted-Item */ +typedef struct RICaction_NotAdmitted_Item { + RICactionID_t ricActionID; + RICcause_t ricCause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c new file mode 100644 index 0000000..d6f67a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-NotAdmitted-List.h" + +#include "ProtocolIE-Single-Container.h" +static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { + sizeof(struct RICaction_NotAdmitted_List), + offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { + "RICaction-NotAdmitted-List", + "RICaction-NotAdmitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_NotAdmitted_List_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_NotAdmitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h new file mode 100644 index 0000000..1be4da5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-NotAdmitted-List.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_NotAdmitted_List_H_ +#define _RICaction_NotAdmitted_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RICaction-NotAdmitted-List */ +typedef struct RICaction_NotAdmitted_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c new file mode 100644 index 0000000..f23271d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICaction-ToBeSetup-Item.h" + +#include "RICsubsequentAction.h" +static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionType" + }, + { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, +}; +static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { + sizeof(struct RICaction_ToBeSetup_Item), + offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { + "RICaction-ToBeSetup-Item", + "RICaction-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_Item_1, + 4, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h new file mode 100644 index 0000000..ea36a77 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICaction-ToBeSetup-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICaction_ToBeSetup_Item_H_ +#define _RICaction_ToBeSetup_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionType.h" +#include "RICactionDefinition.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeSetup-Item */ +typedef struct RICaction_ToBeSetup_Item { + RICactionID_t ricActionID; + RICactionType_t ricActionType; + RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeSetup_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionDefinition.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionDefinition.c new file mode 100644 index 0000000..4e83544 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionDefinition.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { + "RICactionDefinition", + "RICactionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICactionDefinition_tags_1, + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICactionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionDefinition.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionDefinition.h new file mode 100644 index 0000000..d6db00d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionDefinition.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionDefinition_H_ +#define _RICactionDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionDefinition */ +typedef OCTET_STRING_t RICactionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; +asn_struct_free_f RICactionDefinition_free; +asn_struct_print_f RICactionDefinition_print; +asn_constr_check_f RICactionDefinition_constraint; +ber_type_decoder_f RICactionDefinition_decode_ber; +der_type_encoder_f RICactionDefinition_encode_der; +xer_type_decoder_f RICactionDefinition_decode_xer; +xer_type_encoder_f RICactionDefinition_encode_xer; +per_type_decoder_f RICactionDefinition_decode_uper; +per_type_encoder_f RICactionDefinition_encode_uper; +per_type_decoder_f RICactionDefinition_decode_aper; +per_type_encoder_f RICactionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionID.c new file mode 100644 index 0000000..4fd0f10 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionID.h" + +int +RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionID = { + "RICactionID", + "RICactionID", + &asn_OP_NativeInteger, + asn_DEF_RICactionID_tags_1, + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + asn_DEF_RICactionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionID.h new file mode 100644 index 0000000..d697889 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionID_H_ +#define _RICactionID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionID */ +typedef long RICactionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionID; +asn_struct_free_f RICactionID_free; +asn_struct_print_f RICactionID_print; +asn_constr_check_f RICactionID_constraint; +ber_type_decoder_f RICactionID_decode_ber; +der_type_encoder_f RICactionID_encode_der; +xer_type_decoder_f RICactionID_decode_xer; +xer_type_encoder_f RICactionID_encode_xer; +per_type_decoder_f RICactionID_decode_uper; +per_type_encoder_f RICactionID_encode_uper; +per_type_decoder_f RICactionID_decode_aper; +per_type_encoder_f RICactionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionType.c new file mode 100644 index 0000000..78278fa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionType.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" }, + { 2, 6, "policy" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { + 1, /* insert(1) */ + 2, /* policy(2) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { + asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionType = { + "RICactionType", + "RICactionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICactionType_tags_1, + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + asn_DEF_RICactionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICactionType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionType.h new file mode 100644 index 0000000..1072b28 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactionType.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactionType_H_ +#define _RICactionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICactionType { + RICactionType_report = 0, + RICactionType_insert = 1, + RICactionType_policy = 2 + /* + * Enumeration is extensible + */ +} e_RICactionType; + +/* RICactionType */ +typedef long RICactionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; +asn_struct_free_f RICactionType_free; +asn_struct_print_f RICactionType_print; +asn_constr_check_f RICactionType_constraint; +ber_type_decoder_f RICactionType_decode_ber; +der_type_encoder_f RICactionType_encode_der; +xer_type_decoder_f RICactionType_decode_xer; +xer_type_encoder_f RICactionType_encode_xer; +per_type_decoder_f RICactionType_decode_uper; +per_type_encoder_f RICactionType_encode_uper; +per_type_decoder_f RICactionType_decode_aper; +per_type_encoder_f RICactionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c new file mode 100644 index 0000000..98b5757 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICactions-ToBeSetup-List.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { + sizeof(struct RICactions_ToBeSetup_List), + offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { + "RICactions-ToBeSetup-List", + "RICactions-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeSetup_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICactions_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h new file mode 100644 index 0000000..4a37c1d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICactions-ToBeSetup-List.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICactions_ToBeSetup_List_H_ +#define _RICactions_ToBeSetup_List_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* RICactions-ToBeSetup-List */ +typedef struct RICactions_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeSetup_List_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcallProcessID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcallProcessID.c new file mode 100644 index 0000000..bf1ecfc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcallProcessID.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcallProcessID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { + "RICcallProcessID", + "RICcallProcessID", + &asn_OP_OCTET_STRING, + asn_DEF_RICcallProcessID_tags_1, + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + asn_DEF_RICcallProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcallProcessID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcallProcessID.h new file mode 100644 index 0000000..1f8e765 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcallProcessID.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcallProcessID_H_ +#define _RICcallProcessID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcallProcessID */ +typedef OCTET_STRING_t RICcallProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; +asn_struct_free_f RICcallProcessID_free; +asn_struct_print_f RICcallProcessID_print; +asn_constr_check_f RICcallProcessID_constraint; +ber_type_decoder_f RICcallProcessID_decode_ber; +der_type_encoder_f RICcallProcessID_encode_der; +xer_type_decoder_f RICcallProcessID_decode_xer; +xer_type_encoder_f RICcallProcessID_encode_xer; +per_type_decoder_f RICcallProcessID_decode_uper; +per_type_encoder_f RICcallProcessID_encode_uper; +per_type_decoder_f RICcallProcessID_decode_aper; +per_type_encoder_f RICcallProcessID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcallProcessID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcause.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcause.c new file mode 100644 index 0000000..ca836d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcause.c @@ -0,0 +1,115 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcause.h" + +asn_per_constraints_t asn_PER_type_RICcause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICcause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.radioNetwork), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRadioNetwork, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "radioNetwork" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcause, choice.ric), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRIC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ric" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioNetwork */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* misc */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ric */ +}; +asn_CHOICE_specifics_t asn_SPC_RICcause_specs_1 = { + sizeof(struct RICcause), + offsetof(struct RICcause, _asn_ctx), + offsetof(struct RICcause, present), + sizeof(((struct RICcause *)0)->present), + asn_MAP_RICcause_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcause = { + "RICcause", + "RICcause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RICcause_constr_1, CHOICE_constraint }, + asn_MBR_RICcause_1, + 5, /* Elements count */ + &asn_SPC_RICcause_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcause.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcause.h new file mode 100644 index 0000000..444b643 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcause.h @@ -0,0 +1,91 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcause_H_ +#define _RICcause_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "CauseRadioNetwork.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include "CauseRIC.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcause_PR { + RICcause_PR_NOTHING, /* No components present */ + RICcause_PR_radioNetwork, + RICcause_PR_transport, + RICcause_PR_protocol, + RICcause_PR_misc, + RICcause_PR_ric + /* Extensions may appear below */ + +} RICcause_PR; + +/* RICcause */ +typedef struct RICcause { + RICcause_PR present; + union RICcause_u { + CauseRadioNetwork_t radioNetwork; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + CauseRIC_t ric; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcause; +extern asn_CHOICE_specifics_t asn_SPC_RICcause_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcause_1[5]; +extern asn_per_constraints_t asn_PER_type_RICcause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcause_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAckRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAckRequest.c new file mode 100644 index 0000000..d6f6c47 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAckRequest.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolAckRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { + { 0, 5, "noAck" }, + { 1, 3, "ack" }, + { 2, 4, "nAck" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { + 1, /* ack(1) */ + 2, /* nAck(2) */ + 0 /* noAck(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { + asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { + "RICcontrolAckRequest", + "RICcontrolAckRequest", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolAckRequest_tags_1, + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAckRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAckRequest.h new file mode 100644 index 0000000..129af9f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAckRequest.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolAckRequest_H_ +#define _RICcontrolAckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolAckRequest { + RICcontrolAckRequest_noAck = 0, + RICcontrolAckRequest_ack = 1, + RICcontrolAckRequest_nAck = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolAckRequest; + +/* RICcontrolAckRequest */ +typedef long RICcontrolAckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; +asn_struct_free_f RICcontrolAckRequest_free; +asn_struct_print_f RICcontrolAckRequest_print; +asn_constr_check_f RICcontrolAckRequest_constraint; +ber_type_decoder_f RICcontrolAckRequest_decode_ber; +der_type_encoder_f RICcontrolAckRequest_encode_der; +xer_type_decoder_f RICcontrolAckRequest_decode_xer; +xer_type_encoder_f RICcontrolAckRequest_encode_xer; +per_type_decoder_f RICcontrolAckRequest_decode_uper; +per_type_encoder_f RICcontrolAckRequest_encode_uper; +per_type_decoder_f RICcontrolAckRequest_decode_aper; +per_type_encoder_f RICcontrolAckRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAckRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAcknowledge.c new file mode 100644 index 0000000..6bdcc0e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { + sizeof(struct RICcontrolAcknowledge), + offsetof(struct RICcontrolAcknowledge, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { + "RICcontrolAcknowledge", + "RICcontrolAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_tags_1, + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAcknowledge.h new file mode 100644 index 0000000..6493ef1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolAcknowledge.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolAcknowledge_H_ +#define _RICcontrolAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolAcknowledge */ +typedef struct RICcontrolAcknowledge { + ProtocolIE_Container_119P8_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolFailure.c new file mode 100644 index 0000000..4c12c5f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolFailure.h" + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { + sizeof(struct RICcontrolFailure), + offsetof(struct RICcontrolFailure, _asn_ctx), + asn_MAP_RICcontrolFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { + "RICcontrolFailure", + "RICcontrolFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_tags_1, + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolFailure.h new file mode 100644 index 0000000..8e354d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolFailure_H_ +#define _RICcontrolFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolFailure */ +typedef struct RICcontrolFailure { + ProtocolIE_Container_119P9_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolHeader.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolHeader.c new file mode 100644 index 0000000..39e9b6e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolHeader.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { + "RICcontrolHeader", + "RICcontrolHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolHeader_tags_1, + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolHeader.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolHeader.h new file mode 100644 index 0000000..5cd2801 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolHeader.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolHeader_H_ +#define _RICcontrolHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolHeader */ +typedef OCTET_STRING_t RICcontrolHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; +asn_struct_free_f RICcontrolHeader_free; +asn_struct_print_f RICcontrolHeader_print; +asn_constr_check_f RICcontrolHeader_constraint; +ber_type_decoder_f RICcontrolHeader_decode_ber; +der_type_encoder_f RICcontrolHeader_encode_der; +xer_type_decoder_f RICcontrolHeader_decode_xer; +xer_type_encoder_f RICcontrolHeader_encode_xer; +per_type_decoder_f RICcontrolHeader_decode_uper; +per_type_encoder_f RICcontrolHeader_encode_uper; +per_type_decoder_f RICcontrolHeader_decode_aper; +per_type_encoder_f RICcontrolHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolMessage.c new file mode 100644 index 0000000..303f8aa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolMessage.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { + "RICcontrolMessage", + "RICcontrolMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolMessage_tags_1, + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolMessage.h new file mode 100644 index 0000000..f97eb6c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolMessage.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolMessage_H_ +#define _RICcontrolMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolMessage */ +typedef OCTET_STRING_t RICcontrolMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; +asn_struct_free_f RICcontrolMessage_free; +asn_struct_print_f RICcontrolMessage_print; +asn_constr_check_f RICcontrolMessage_constraint; +ber_type_decoder_f RICcontrolMessage_decode_ber; +der_type_encoder_f RICcontrolMessage_encode_der; +xer_type_decoder_f RICcontrolMessage_decode_xer; +xer_type_encoder_f RICcontrolMessage_encode_xer; +per_type_decoder_f RICcontrolMessage_decode_uper; +per_type_encoder_f RICcontrolMessage_encode_uper; +per_type_decoder_f RICcontrolMessage_decode_aper; +per_type_encoder_f RICcontrolMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolRequest.c new file mode 100644 index 0000000..cdd622d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolRequest.h" + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { + sizeof(struct RICcontrolRequest), + offsetof(struct RICcontrolRequest, _asn_ctx), + asn_MAP_RICcontrolRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { + "RICcontrolRequest", + "RICcontrolRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_tags_1, + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolRequest.h new file mode 100644 index 0000000..d206545 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolRequest_H_ +#define _RICcontrolRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolRequest */ +typedef struct RICcontrolRequest { + ProtocolIE_Container_119P7_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolStatus.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolStatus.c new file mode 100644 index 0000000..001a8f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolStatus.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICcontrolStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolStatus_value2enum_1[] = { + { 0, 7, "success" }, + { 1, 8, "rejected" }, + { 2, 6, "failed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolStatus_enum2value_1[] = { + 2, /* failed(2) */ + 1, /* rejected(1) */ + 0 /* success(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolStatus_specs_1 = { + asn_MAP_RICcontrolStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolStatus_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus = { + "RICcontrolStatus", + "RICcontrolStatus", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolStatus_tags_1, + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolStatus_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolStatus.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolStatus.h new file mode 100644 index 0000000..7e77edf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICcontrolStatus.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICcontrolStatus_H_ +#define _RICcontrolStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolStatus { + RICcontrolStatus_success = 0, + RICcontrolStatus_rejected = 1, + RICcontrolStatus_failed = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolStatus; + +/* RICcontrolStatus */ +typedef long RICcontrolStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus; +asn_struct_free_f RICcontrolStatus_free; +asn_struct_print_f RICcontrolStatus_print; +asn_constr_check_f RICcontrolStatus_constraint; +ber_type_decoder_f RICcontrolStatus_decode_ber; +der_type_encoder_f RICcontrolStatus_encode_der; +xer_type_decoder_f RICcontrolStatus_decode_xer; +xer_type_encoder_f RICcontrolStatus_encode_xer; +per_type_decoder_f RICcontrolStatus_decode_uper; +per_type_encoder_f RICcontrolStatus_encode_uper; +per_type_decoder_f RICcontrolStatus_decode_aper; +per_type_encoder_f RICcontrolStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolStatus_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICeventTriggerDefinition.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICeventTriggerDefinition.c new file mode 100644 index 0000000..35fe031 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICeventTriggerDefinition.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICeventTriggerDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { + "RICeventTriggerDefinition", + "RICeventTriggerDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICeventTriggerDefinition_tags_1, + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICeventTriggerDefinition.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICeventTriggerDefinition.h new file mode 100644 index 0000000..32aefa3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICeventTriggerDefinition.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICeventTriggerDefinition_H_ +#define _RICeventTriggerDefinition_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICeventTriggerDefinition */ +typedef OCTET_STRING_t RICeventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; +asn_struct_free_f RICeventTriggerDefinition_free; +asn_struct_print_f RICeventTriggerDefinition_print; +asn_constr_check_f RICeventTriggerDefinition_constraint; +ber_type_decoder_f RICeventTriggerDefinition_decode_ber; +der_type_encoder_f RICeventTriggerDefinition_encode_der; +xer_type_decoder_f RICeventTriggerDefinition_decode_xer; +xer_type_encoder_f RICeventTriggerDefinition_encode_xer; +per_type_decoder_f RICeventTriggerDefinition_decode_uper; +per_type_encoder_f RICeventTriggerDefinition_encode_uper; +per_type_decoder_f RICeventTriggerDefinition_decode_aper; +per_type_encoder_f RICeventTriggerDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICeventTriggerDefinition_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindication.c new file mode 100644 index 0000000..7360ae0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindication.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindication.h" + +asn_TYPE_member_t asn_MBR_RICindication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { + sizeof(struct RICindication), + offsetof(struct RICindication, _asn_ctx), + asn_MAP_RICindication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication = { + "RICindication", + "RICindication", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_tags_1, + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + asn_DEF_RICindication_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_1, + 1, /* Elements count */ + &asn_SPC_RICindication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindication.h new file mode 100644 index 0000000..3918c25 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindication.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindication_H_ +#define _RICindication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindication */ +typedef struct RICindication { + ProtocolIE_Container_119P6_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindication; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; +extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationHeader.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationHeader.c new file mode 100644 index 0000000..403a13f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationHeader.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { + "RICindicationHeader", + "RICindicationHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationHeader_tags_1, + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + asn_DEF_RICindicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationHeader.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationHeader.h new file mode 100644 index 0000000..0fc14c3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationHeader.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationHeader_H_ +#define _RICindicationHeader_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationHeader */ +typedef OCTET_STRING_t RICindicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; +asn_struct_free_f RICindicationHeader_free; +asn_struct_print_f RICindicationHeader_print; +asn_constr_check_f RICindicationHeader_constraint; +ber_type_decoder_f RICindicationHeader_decode_ber; +der_type_encoder_f RICindicationHeader_encode_der; +xer_type_decoder_f RICindicationHeader_decode_xer; +xer_type_encoder_f RICindicationHeader_encode_xer; +per_type_decoder_f RICindicationHeader_decode_uper; +per_type_encoder_f RICindicationHeader_encode_uper; +per_type_decoder_f RICindicationHeader_decode_aper; +per_type_encoder_f RICindicationHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationHeader_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationMessage.c new file mode 100644 index 0000000..9fb35da --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationMessage.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { + "RICindicationMessage", + "RICindicationMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationMessage_tags_1, + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + asn_DEF_RICindicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationMessage.h new file mode 100644 index 0000000..24c19ef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationMessage.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationMessage_H_ +#define _RICindicationMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationMessage */ +typedef OCTET_STRING_t RICindicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; +asn_struct_free_f RICindicationMessage_free; +asn_struct_print_f RICindicationMessage_print; +asn_constr_check_f RICindicationMessage_constraint; +ber_type_decoder_f RICindicationMessage_decode_ber; +der_type_encoder_f RICindicationMessage_encode_der; +xer_type_decoder_f RICindicationMessage_decode_xer; +xer_type_encoder_f RICindicationMessage_encode_xer; +per_type_decoder_f RICindicationMessage_decode_uper; +per_type_encoder_f RICindicationMessage_encode_uper; +per_type_decoder_f RICindicationMessage_decode_aper; +per_type_encoder_f RICindicationMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationSN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationSN.c new file mode 100644 index 0000000..c67e8ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationSN.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationSN.h" + +int +RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { + "RICindicationSN", + "RICindicationSN", + &asn_OP_NativeInteger, + asn_DEF_RICindicationSN_tags_1, + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + asn_DEF_RICindicationSN_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationSN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationSN.h new file mode 100644 index 0000000..0e24fc2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationSN.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationSN_H_ +#define _RICindicationSN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationSN */ +typedef long RICindicationSN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; +asn_struct_free_f RICindicationSN_free; +asn_struct_print_f RICindicationSN_print; +asn_constr_check_f RICindicationSN_constraint; +ber_type_decoder_f RICindicationSN_decode_ber; +der_type_encoder_f RICindicationSN_encode_der; +xer_type_decoder_f RICindicationSN_decode_xer; +xer_type_encoder_f RICindicationSN_encode_xer; +per_type_decoder_f RICindicationSN_decode_uper; +per_type_encoder_f RICindicationSN_encode_uper; +per_type_decoder_f RICindicationSN_decode_aper; +per_type_encoder_f RICindicationSN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationSN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationType.c new file mode 100644 index 0000000..19a7557 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationType.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICindicationType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { + 1, /* insert(1) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { + asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationType = { + "RICindicationType", + "RICindicationType", + &asn_OP_NativeEnumerated, + asn_DEF_RICindicationType_tags_1, + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + asn_DEF_RICindicationType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICindicationType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationType.h new file mode 100644 index 0000000..72e4fcc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICindicationType.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICindicationType_H_ +#define _RICindicationType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICindicationType { + RICindicationType_report = 0, + RICindicationType_insert = 1 + /* + * Enumeration is extensible + */ +} e_RICindicationType; + +/* RICindicationType */ +typedef long RICindicationType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; +asn_struct_free_f RICindicationType_free; +asn_struct_print_f RICindicationType_print; +asn_constr_check_f RICindicationType_constraint; +ber_type_decoder_f RICindicationType_decode_ber; +der_type_encoder_f RICindicationType_encode_der; +xer_type_decoder_f RICindicationType_decode_xer; +xer_type_encoder_f RICindicationType_encode_xer; +per_type_decoder_f RICindicationType_decode_uper; +per_type_encoder_f RICindicationType_encode_uper; +per_type_decoder_f RICindicationType_decode_aper; +per_type_encoder_f RICindicationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICrequestID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICrequestID.c new file mode 100644 index 0000000..05014d0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICrequestID.c @@ -0,0 +1,143 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICrequestID.h" + +static int +memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ricRequestSequenceNumber_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ricRequestSequenceNumber_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestSequenceNumber), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricRequestSequenceNumber_constr_3, memb_ricRequestSequenceNumber_constraint_1 }, + 0, 0, /* No default value */ + "ricRequestSequenceNumber" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricRequestSequenceNumber */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { + sizeof(struct RICrequestID), + offsetof(struct RICrequestID, _asn_ctx), + asn_MAP_RICrequestID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICrequestID = { + "RICrequestID", + "RICrequestID", + &asn_OP_SEQUENCE, + asn_DEF_RICrequestID_tags_1, + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + asn_DEF_RICrequestID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICrequestID_1, + 2, /* Elements count */ + &asn_SPC_RICrequestID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICrequestID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICrequestID.h new file mode 100644 index 0000000..fcfe011 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICrequestID.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICrequestID_H_ +#define _RICrequestID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICrequestID */ +typedef struct RICrequestID { + long ricRequestorID; + long ricRequestSequenceNumber; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICrequestID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICrequestID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceQuery.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceQuery.c new file mode 100644 index 0000000..abe1541 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceQuery.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceQuery.h" + +asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { + sizeof(struct RICserviceQuery), + offsetof(struct RICserviceQuery, _asn_ctx), + asn_MAP_RICserviceQuery_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { + "RICserviceQuery", + "RICserviceQuery", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_tags_1, + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + asn_DEF_RICserviceQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_1, + 1, /* Elements count */ + &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceQuery.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceQuery.h new file mode 100644 index 0000000..1e7305d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceQuery.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceQuery_H_ +#define _RICserviceQuery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceQuery */ +typedef struct RICserviceQuery { + ProtocolIE_Container_119P13_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceQuery_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdate.c new file mode 100644 index 0000000..3f6dc4a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdate.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdate.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { + sizeof(struct RICserviceUpdate), + offsetof(struct RICserviceUpdate, _asn_ctx), + asn_MAP_RICserviceUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { + "RICserviceUpdate", + "RICserviceUpdate", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_tags_1, + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdate.h new file mode 100644 index 0000000..75d6144 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdate_H_ +#define _RICserviceUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdate */ +typedef struct RICserviceUpdate { + ProtocolIE_Container_119P10_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c new file mode 100644 index 0000000..de7d77b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { + sizeof(struct RICserviceUpdateAcknowledge), + offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { + "RICserviceUpdateAcknowledge", + "RICserviceUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_tags_1, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h new file mode 100644 index 0000000..74acd62 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateAcknowledge.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdateAcknowledge_H_ +#define _RICserviceUpdateAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateAcknowledge */ +typedef struct RICserviceUpdateAcknowledge { + ProtocolIE_Container_119P11_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateFailure.c new file mode 100644 index 0000000..9b5f55b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICserviceUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { + sizeof(struct RICserviceUpdateFailure), + offsetof(struct RICserviceUpdateFailure, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { + "RICserviceUpdateFailure", + "RICserviceUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_tags_1, + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateFailure.h new file mode 100644 index 0000000..2867082 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICserviceUpdateFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICserviceUpdateFailure_H_ +#define _RICserviceUpdateFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateFailure */ +typedef struct RICserviceUpdateFailure { + ProtocolIE_Container_119P12_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscription.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscription.c new file mode 100644 index 0000000..a828313 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscription.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscription.h" + +static asn_TYPE_member_t asn_MBR_RICsubscription_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription, ricEventTriggerDefinition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICeventTriggerDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricEventTriggerDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscription, ricAction_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactions_ToBeSetup_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricAction-ToBeSetup-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscription_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscription_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICsubscription_specs_1 = { + sizeof(struct RICsubscription), + offsetof(struct RICsubscription, _asn_ctx), + asn_MAP_RICsubscription_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscription = { + "RICsubscription", + "RICsubscription", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscription_tags_1, + sizeof(asn_DEF_RICsubscription_tags_1) + /sizeof(asn_DEF_RICsubscription_tags_1[0]), /* 1 */ + asn_DEF_RICsubscription_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscription_tags_1) + /sizeof(asn_DEF_RICsubscription_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscription_1, + 2, /* Elements count */ + &asn_SPC_RICsubscription_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscription.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscription.h new file mode 100644 index 0000000..d59ac09 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscription.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscription_H_ +#define _RICsubscription_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICeventTriggerDefinition.h" +#include "RICactions-ToBeSetup-List.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscription */ +typedef struct RICsubscription { + RICeventTriggerDefinition_t ricEventTriggerDefinition; + RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscription_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscription; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscription_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c new file mode 100644 index 0000000..148106a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { + sizeof(struct RICsubscriptionDeleteFailure), + offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { + "RICsubscriptionDeleteFailure", + "RICsubscriptionDeleteFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h new file mode 100644 index 0000000..1376369 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteFailure_H_ +#define _RICsubscriptionDeleteFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteFailure */ +typedef struct RICsubscriptionDeleteFailure { + ProtocolIE_Container_119P5_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c new file mode 100644 index 0000000..548d780 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { + sizeof(struct RICsubscriptionDeleteRequest), + offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { + "RICsubscriptionDeleteRequest", + "RICsubscriptionDeleteRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h new file mode 100644 index 0000000..040aa50 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteRequest_H_ +#define _RICsubscriptionDeleteRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteRequest */ +typedef struct RICsubscriptionDeleteRequest { + ProtocolIE_Container_119P3_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c new file mode 100644 index 0000000..d5f5925 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionDeleteResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { + sizeof(struct RICsubscriptionDeleteResponse), + offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { + "RICsubscriptionDeleteResponse", + "RICsubscriptionDeleteResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h new file mode 100644 index 0000000..eb78eb4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionDeleteResponse.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionDeleteResponse_H_ +#define _RICsubscriptionDeleteResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteResponse */ +typedef struct RICsubscriptionDeleteResponse { + ProtocolIE_Container_119P4_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionFailure.c new file mode 100644 index 0000000..aaccc2d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { + sizeof(struct RICsubscriptionFailure), + offsetof(struct RICsubscriptionFailure, _asn_ctx), + asn_MAP_RICsubscriptionFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { + "RICsubscriptionFailure", + "RICsubscriptionFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionFailure.h new file mode 100644 index 0000000..330930a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionFailure_H_ +#define _RICsubscriptionFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionFailure */ +typedef struct RICsubscriptionFailure { + ProtocolIE_Container_119P2_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionRequest.c new file mode 100644 index 0000000..57b8864 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { + sizeof(struct RICsubscriptionRequest), + offsetof(struct RICsubscriptionRequest, _asn_ctx), + asn_MAP_RICsubscriptionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { + "RICsubscriptionRequest", + "RICsubscriptionRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionRequest.h new file mode 100644 index 0000000..ae8c613 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionRequest_H_ +#define _RICsubscriptionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionRequest */ +typedef struct RICsubscriptionRequest { + ProtocolIE_Container_119P0_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionResponse.c new file mode 100644 index 0000000..d3eb131 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubscriptionResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { + sizeof(struct RICsubscriptionResponse), + offsetof(struct RICsubscriptionResponse, _asn_ctx), + asn_MAP_RICsubscriptionResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { + "RICsubscriptionResponse", + "RICsubscriptionResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionResponse.h new file mode 100644 index 0000000..607954f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubscriptionResponse.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubscriptionResponse_H_ +#define _RICsubscriptionResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionResponse */ +typedef struct RICsubscriptionResponse { + ProtocolIE_Container_119P1_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentAction.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentAction.c new file mode 100644 index 0000000..99873a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentAction.c @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubsequentAction.h" + +asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentActionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentActionType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICtimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricTimeToWait" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { + sizeof(struct RICsubsequentAction), + offsetof(struct RICsubsequentAction, _asn_ctx), + asn_MAP_RICsubsequentAction_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { + "RICsubsequentAction", + "RICsubsequentAction", + &asn_OP_SEQUENCE, + asn_DEF_RICsubsequentAction_tags_1, + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubsequentAction_1, + 2, /* Elements count */ + &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentAction.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentAction.h new file mode 100644 index 0000000..0be7082 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentAction.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubsequentAction_H_ +#define _RICsubsequentAction_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RICsubsequentActionType.h" +#include "RICtimeToWait.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubsequentAction */ +typedef struct RICsubsequentAction { + RICsubsequentActionType_t ricSubsequentActionType; + RICtimeToWait_t ricTimeToWait; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubsequentAction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentAction_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentActionType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentActionType.c new file mode 100644 index 0000000..6292ae6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentActionType.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICsubsequentActionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { + { 0, 8, "continue" }, + { 1, 4, "wait" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { + 0, /* continue(0) */ + 1 /* wait(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { + asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { + "RICsubsequentActionType", + "RICsubsequentActionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICsubsequentActionType_tags_1, + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentActionType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentActionType.h new file mode 100644 index 0000000..f0733d5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICsubsequentActionType.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICsubsequentActionType_H_ +#define _RICsubsequentActionType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICsubsequentActionType { + RICsubsequentActionType_continue = 0, + RICsubsequentActionType_wait = 1 + /* + * Enumeration is extensible + */ +} e_RICsubsequentActionType; + +/* RICsubsequentActionType */ +typedef long RICsubsequentActionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; +asn_struct_free_f RICsubsequentActionType_free; +asn_struct_print_f RICsubsequentActionType_print; +asn_constr_check_f RICsubsequentActionType_constraint; +ber_type_decoder_f RICsubsequentActionType_decode_ber; +der_type_encoder_f RICsubsequentActionType_encode_der; +xer_type_decoder_f RICsubsequentActionType_decode_xer; +xer_type_encoder_f RICsubsequentActionType_encode_xer; +per_type_decoder_f RICsubsequentActionType_decode_uper; +per_type_encoder_f RICsubsequentActionType_encode_uper; +per_type_decoder_f RICsubsequentActionType_decode_aper; +per_type_encoder_f RICsubsequentActionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentActionType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICtimeToWait.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICtimeToWait.c new file mode 100644 index 0000000..b4bd9f9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICtimeToWait.c @@ -0,0 +1,110 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RICtimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 17 } /* (0..17,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { + { 0, 4, "zero" }, + { 1, 4, "w1ms" }, + { 2, 4, "w2ms" }, + { 3, 4, "w5ms" }, + { 4, 5, "w10ms" }, + { 5, 5, "w20ms" }, + { 6, 5, "w30ms" }, + { 7, 5, "w40ms" }, + { 8, 5, "w50ms" }, + { 9, 6, "w100ms" }, + { 10, 6, "w200ms" }, + { 11, 6, "w500ms" }, + { 12, 3, "w1s" }, + { 13, 3, "w2s" }, + { 14, 3, "w5s" }, + { 15, 4, "w10s" }, + { 16, 4, "w20s" }, + { 17, 4, "w60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { + 9, /* w100ms(9) */ + 4, /* w10ms(4) */ + 15, /* w10s(15) */ + 1, /* w1ms(1) */ + 12, /* w1s(12) */ + 10, /* w200ms(10) */ + 5, /* w20ms(5) */ + 16, /* w20s(16) */ + 2, /* w2ms(2) */ + 13, /* w2s(13) */ + 6, /* w30ms(6) */ + 7, /* w40ms(7) */ + 11, /* w500ms(11) */ + 8, /* w50ms(8) */ + 3, /* w5ms(3) */ + 14, /* w5s(14) */ + 17, /* w60s(17) */ + 0 /* zero(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { + asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 18, /* Number of elements in the maps */ + 19, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { + "RICtimeToWait", + "RICtimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_RICtimeToWait_tags_1, + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + asn_DEF_RICtimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICtimeToWait.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICtimeToWait.h new file mode 100644 index 0000000..b84b541 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RICtimeToWait.h @@ -0,0 +1,93 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RICtimeToWait_H_ +#define _RICtimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICtimeToWait { + RICtimeToWait_zero = 0, + RICtimeToWait_w1ms = 1, + RICtimeToWait_w2ms = 2, + RICtimeToWait_w5ms = 3, + RICtimeToWait_w10ms = 4, + RICtimeToWait_w20ms = 5, + RICtimeToWait_w30ms = 6, + RICtimeToWait_w40ms = 7, + RICtimeToWait_w50ms = 8, + RICtimeToWait_w100ms = 9, + RICtimeToWait_w200ms = 10, + RICtimeToWait_w500ms = 11, + RICtimeToWait_w1s = 12, + RICtimeToWait_w2s = 13, + RICtimeToWait_w5s = 14, + RICtimeToWait_w10s = 15, + RICtimeToWait_w20s = 16, + RICtimeToWait_w60s = 17 + /* + * Enumeration is extensible + */ +} e_RICtimeToWait; + +/* RICtimeToWait */ +typedef long RICtimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; +asn_struct_free_f RICtimeToWait_free; +asn_struct_print_f RICtimeToWait_print; +asn_constr_check_f RICtimeToWait_constraint; +ber_type_decoder_f RICtimeToWait_decode_ber; +der_type_encoder_f RICtimeToWait_encode_der; +xer_type_decoder_f RICtimeToWait_decode_xer; +xer_type_encoder_f RICtimeToWait_encode_xer; +per_type_decoder_f RICtimeToWait_decode_uper; +per_type_encoder_f RICtimeToWait_encode_uper; +per_type_decoder_f RICtimeToWait_decode_aper; +per_type_encoder_f RICtimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICtimeToWait_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLC-Status.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLC-Status.c new file mode 100644 index 0000000..3e146c6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLC-Status.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RLC-Status.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_RLC_Status_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLC_Status, reestablishment_Indication), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Reestablishment_Indication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reestablishment-Indication" + }, + { ATF_POINTER, 1, offsetof(struct RLC_Status, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P186, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RLC_Status_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_RLC_Status_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLC_Status_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reestablishment-Indication */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_specs_1 = { + sizeof(struct RLC_Status), + offsetof(struct RLC_Status, _asn_ctx), + asn_MAP_RLC_Status_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_RLC_Status_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLC_Status = { + "RLC-Status", + "RLC-Status", + &asn_OP_SEQUENCE, + asn_DEF_RLC_Status_tags_1, + sizeof(asn_DEF_RLC_Status_tags_1) + /sizeof(asn_DEF_RLC_Status_tags_1[0]), /* 1 */ + asn_DEF_RLC_Status_tags_1, /* Same as above */ + sizeof(asn_DEF_RLC_Status_tags_1) + /sizeof(asn_DEF_RLC_Status_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLC_Status_1, + 2, /* Elements count */ + &asn_SPC_RLC_Status_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLC-Status.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLC-Status.h new file mode 100644 index 0000000..574f1e9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLC-Status.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RLC_Status_H_ +#define _RLC_Status_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Reestablishment-Indication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* RLC-Status */ +typedef struct RLC_Status { + Reestablishment_Indication_t reestablishment_Indication; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLC_Status_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RLC_Status; +extern asn_SEQUENCE_specifics_t asn_SPC_RLC_Status_specs_1; +extern asn_TYPE_member_t asn_MBR_RLC_Status_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RLC_Status_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLCMode.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLCMode.c new file mode 100644 index 0000000..e71a135 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLCMode.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RLCMode.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RLCMode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RLCMode_value2enum_1[] = { + { 0, 6, "rlc-am" }, + { 1, 20, "rlc-um-bidirectional" }, + { 2, 24, "rlc-um-unidirectional-ul" }, + { 3, 24, "rlc-um-unidirectional-dl" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RLCMode_enum2value_1[] = { + 0, /* rlc-am(0) */ + 1, /* rlc-um-bidirectional(1) */ + 3, /* rlc-um-unidirectional-dl(3) */ + 2 /* rlc-um-unidirectional-ul(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RLCMode_specs_1 = { + asn_MAP_RLCMode_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RLCMode_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RLCMode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RLCMode = { + "RLCMode", + "RLCMode", + &asn_OP_NativeEnumerated, + asn_DEF_RLCMode_tags_1, + sizeof(asn_DEF_RLCMode_tags_1) + /sizeof(asn_DEF_RLCMode_tags_1[0]), /* 1 */ + asn_DEF_RLCMode_tags_1, /* Same as above */ + sizeof(asn_DEF_RLCMode_tags_1) + /sizeof(asn_DEF_RLCMode_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RLCMode_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RLCMode_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLCMode.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLCMode.h new file mode 100644 index 0000000..4b5ca19 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLCMode.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RLCMode_H_ +#define _RLCMode_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RLCMode { + RLCMode_rlc_am = 0, + RLCMode_rlc_um_bidirectional = 1, + RLCMode_rlc_um_unidirectional_ul = 2, + RLCMode_rlc_um_unidirectional_dl = 3 + /* + * Enumeration is extensible + */ +} e_RLCMode; + +/* RLCMode */ +typedef long RLCMode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RLCMode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RLCMode; +extern const asn_INTEGER_specifics_t asn_SPC_RLCMode_specs_1; +asn_struct_free_f RLCMode_free; +asn_struct_print_f RLCMode_print; +asn_constr_check_f RLCMode_constraint; +ber_type_decoder_f RLCMode_decode_ber; +der_type_encoder_f RLCMode_encode_der; +xer_type_decoder_f RLCMode_decode_xer; +xer_type_encoder_f RLCMode_encode_xer; +per_type_decoder_f RLCMode_decode_uper; +per_type_encoder_f RLCMode_encode_uper; +per_type_decoder_f RLCMode_decode_aper; +per_type_encoder_f RLCMode_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RLCMode_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLFIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLFIndication.c new file mode 100644 index 0000000..6fdb8e0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLFIndication.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RLFIndication.h" + +static asn_TYPE_member_t asn_MBR_RLFIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RLFIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P38, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RLFIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RLFIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RLFIndication_specs_1 = { + sizeof(struct RLFIndication), + offsetof(struct RLFIndication, _asn_ctx), + asn_MAP_RLFIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RLFIndication = { + "RLFIndication", + "RLFIndication", + &asn_OP_SEQUENCE, + asn_DEF_RLFIndication_tags_1, + sizeof(asn_DEF_RLFIndication_tags_1) + /sizeof(asn_DEF_RLFIndication_tags_1[0]), /* 1 */ + asn_DEF_RLFIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_RLFIndication_tags_1) + /sizeof(asn_DEF_RLFIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RLFIndication_1, + 1, /* Elements count */ + &asn_SPC_RLFIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLFIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLFIndication.h new file mode 100644 index 0000000..9fd1100 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RLFIndication.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RLFIndication_H_ +#define _RLFIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RLFIndication */ +typedef struct RLFIndication { + ProtocolIE_Container_119P38_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RLFIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RLFIndication; + +#ifdef __cplusplus +} +#endif + +#endif /* _RLFIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNL-Header.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNL-Header.c new file mode 100644 index 0000000..ea80094 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNL-Header.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RNL-Header.h" + +#include "GlobalENB-ID.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_RNL_Header_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RNL_Header, source_GlobalENB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "source-GlobalENB-ID" + }, + { ATF_POINTER, 2, offsetof(struct RNL_Header, target_GlobalENB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "target-GlobalENB-ID" + }, + { ATF_POINTER, 1, offsetof(struct RNL_Header, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RNL_Header_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_RNL_Header_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RNL_Header_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* source-GlobalENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* target-GlobalENB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RNL_Header_specs_1 = { + sizeof(struct RNL_Header), + offsetof(struct RNL_Header, _asn_ctx), + asn_MAP_RNL_Header_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_RNL_Header_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RNL_Header = { + "RNL-Header", + "RNL-Header", + &asn_OP_SEQUENCE, + asn_DEF_RNL_Header_tags_1, + sizeof(asn_DEF_RNL_Header_tags_1) + /sizeof(asn_DEF_RNL_Header_tags_1[0]), /* 1 */ + asn_DEF_RNL_Header_tags_1, /* Same as above */ + sizeof(asn_DEF_RNL_Header_tags_1) + /sizeof(asn_DEF_RNL_Header_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RNL_Header_1, + 3, /* Elements count */ + &asn_SPC_RNL_Header_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNL-Header.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNL-Header.h new file mode 100644 index 0000000..fecf30c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNL-Header.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RNL_Header_H_ +#define _RNL_Header_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalENB-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct GlobalENB_ID; +struct ProtocolExtensionContainer; + +/* RNL-Header */ +typedef struct RNL_Header { + GlobalENB_ID_t source_GlobalENB_ID; + struct GlobalENB_ID *target_GlobalENB_ID; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RNL_Header_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RNL_Header; + +#ifdef __cplusplus +} +#endif + +#endif /* _RNL_Header_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNTP-Threshold.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNTP-Threshold.c new file mode 100644 index 0000000..536a0bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNTP-Threshold.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RNTP-Threshold.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RNTP_Threshold_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RNTP_Threshold_value2enum_1[] = { + { 0, 13, "minusInfinity" }, + { 1, 11, "minusEleven" }, + { 2, 8, "minusTen" }, + { 3, 9, "minusNine" }, + { 4, 10, "minusEight" }, + { 5, 10, "minusSeven" }, + { 6, 8, "minusSix" }, + { 7, 9, "minusFive" }, + { 8, 9, "minusFour" }, + { 9, 10, "minusThree" }, + { 10, 8, "minusTwo" }, + { 11, 8, "minusOne" }, + { 12, 4, "zero" }, + { 13, 3, "one" }, + { 14, 3, "two" }, + { 15, 5, "three" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RNTP_Threshold_enum2value_1[] = { + 4, /* minusEight(4) */ + 1, /* minusEleven(1) */ + 7, /* minusFive(7) */ + 8, /* minusFour(8) */ + 0, /* minusInfinity(0) */ + 3, /* minusNine(3) */ + 11, /* minusOne(11) */ + 5, /* minusSeven(5) */ + 6, /* minusSix(6) */ + 2, /* minusTen(2) */ + 9, /* minusThree(9) */ + 10, /* minusTwo(10) */ + 13, /* one(13) */ + 15, /* three(15) */ + 14, /* two(14) */ + 12 /* zero(12) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RNTP_Threshold_specs_1 = { + asn_MAP_RNTP_Threshold_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RNTP_Threshold_enum2value_1, /* N => "tag"; sorted by N */ + 16, /* Number of elements in the maps */ + 17, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RNTP_Threshold_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RNTP_Threshold = { + "RNTP-Threshold", + "RNTP-Threshold", + &asn_OP_NativeEnumerated, + asn_DEF_RNTP_Threshold_tags_1, + sizeof(asn_DEF_RNTP_Threshold_tags_1) + /sizeof(asn_DEF_RNTP_Threshold_tags_1[0]), /* 1 */ + asn_DEF_RNTP_Threshold_tags_1, /* Same as above */ + sizeof(asn_DEF_RNTP_Threshold_tags_1) + /sizeof(asn_DEF_RNTP_Threshold_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RNTP_Threshold_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RNTP_Threshold_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNTP-Threshold.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNTP-Threshold.h new file mode 100644 index 0000000..ffdd881 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RNTP-Threshold.h @@ -0,0 +1,91 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RNTP_Threshold_H_ +#define _RNTP_Threshold_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RNTP_Threshold { + RNTP_Threshold_minusInfinity = 0, + RNTP_Threshold_minusEleven = 1, + RNTP_Threshold_minusTen = 2, + RNTP_Threshold_minusNine = 3, + RNTP_Threshold_minusEight = 4, + RNTP_Threshold_minusSeven = 5, + RNTP_Threshold_minusSix = 6, + RNTP_Threshold_minusFive = 7, + RNTP_Threshold_minusFour = 8, + RNTP_Threshold_minusThree = 9, + RNTP_Threshold_minusTwo = 10, + RNTP_Threshold_minusOne = 11, + RNTP_Threshold_zero = 12, + RNTP_Threshold_one = 13, + RNTP_Threshold_two = 14, + RNTP_Threshold_three = 15 + /* + * Enumeration is extensible + */ +} e_RNTP_Threshold; + +/* RNTP-Threshold */ +typedef long RNTP_Threshold_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RNTP_Threshold_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RNTP_Threshold; +extern const asn_INTEGER_specifics_t asn_SPC_RNTP_Threshold_specs_1; +asn_struct_free_f RNTP_Threshold_free; +asn_struct_print_f RNTP_Threshold_print; +asn_constr_check_f RNTP_Threshold_constraint; +ber_type_decoder_f RNTP_Threshold_decode_ber; +der_type_encoder_f RNTP_Threshold_encode_der; +xer_type_decoder_f RNTP_Threshold_decode_xer; +xer_type_encoder_f RNTP_Threshold_encode_xer; +per_type_decoder_f RNTP_Threshold_decode_uper; +per_type_encoder_f RNTP_Threshold_encode_uper; +per_type_decoder_f RNTP_Threshold_decode_aper; +per_type_encoder_f RNTP_Threshold_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RNTP_Threshold_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Config-Ind.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Config-Ind.c new file mode 100644 index 0000000..d7d00ec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Config-Ind.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRC-Config-Ind.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RRC_Config_Ind_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RRC_Config_Ind_value2enum_1[] = { + { 0, 11, "full-config" }, + { 1, 12, "delta-config" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRC_Config_Ind_enum2value_1[] = { + 1, /* delta-config(1) */ + 0 /* full-config(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRC_Config_Ind_specs_1 = { + asn_MAP_RRC_Config_Ind_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRC_Config_Ind_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RRC_Config_Ind_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRC_Config_Ind = { + "RRC-Config-Ind", + "RRC-Config-Ind", + &asn_OP_NativeEnumerated, + asn_DEF_RRC_Config_Ind_tags_1, + sizeof(asn_DEF_RRC_Config_Ind_tags_1) + /sizeof(asn_DEF_RRC_Config_Ind_tags_1[0]), /* 1 */ + asn_DEF_RRC_Config_Ind_tags_1, /* Same as above */ + sizeof(asn_DEF_RRC_Config_Ind_tags_1) + /sizeof(asn_DEF_RRC_Config_Ind_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RRC_Config_Ind_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRC_Config_Ind_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Config-Ind.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Config-Ind.h new file mode 100644 index 0000000..07fb199 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Config-Ind.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRC_Config_Ind_H_ +#define _RRC_Config_Ind_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRC_Config_Ind { + RRC_Config_Ind_full_config = 0, + RRC_Config_Ind_delta_config = 1 + /* + * Enumeration is extensible + */ +} e_RRC_Config_Ind; + +/* RRC-Config-Ind */ +typedef long RRC_Config_Ind_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRC_Config_Ind_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRC_Config_Ind; +extern const asn_INTEGER_specifics_t asn_SPC_RRC_Config_Ind_specs_1; +asn_struct_free_f RRC_Config_Ind_free; +asn_struct_print_f RRC_Config_Ind_print; +asn_constr_check_f RRC_Config_Ind_constraint; +ber_type_decoder_f RRC_Config_Ind_decode_ber; +der_type_encoder_f RRC_Config_Ind_encode_der; +xer_type_decoder_f RRC_Config_Ind_decode_xer; +xer_type_encoder_f RRC_Config_Ind_encode_xer; +per_type_decoder_f RRC_Config_Ind_decode_uper; +per_type_encoder_f RRC_Config_Ind_encode_uper; +per_type_decoder_f RRC_Config_Ind_decode_aper; +per_type_encoder_f RRC_Config_Ind_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRC_Config_Ind_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Context.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Context.c new file mode 100644 index 0000000..c566b85 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Context.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRC-Context.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RRC_Context_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRC_Context = { + "RRC-Context", + "RRC-Context", + &asn_OP_OCTET_STRING, + asn_DEF_RRC_Context_tags_1, + sizeof(asn_DEF_RRC_Context_tags_1) + /sizeof(asn_DEF_RRC_Context_tags_1[0]), /* 1 */ + asn_DEF_RRC_Context_tags_1, /* Same as above */ + sizeof(asn_DEF_RRC_Context_tags_1) + /sizeof(asn_DEF_RRC_Context_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Context.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Context.h new file mode 100644 index 0000000..e3427a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRC-Context.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRC_Context_H_ +#define _RRC_Context_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RRC-Context */ +typedef OCTET_STRING_t RRC_Context_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRC_Context; +asn_struct_free_f RRC_Context_free; +asn_struct_print_f RRC_Context_print; +asn_constr_check_f RRC_Context_constraint; +ber_type_decoder_f RRC_Context_decode_ber; +der_type_encoder_f RRC_Context_encode_der; +xer_type_decoder_f RRC_Context_decode_xer; +xer_type_encoder_f RRC_Context_encode_xer; +per_type_decoder_f RRC_Context_decode_uper; +per_type_encoder_f RRC_Context_encode_uper; +per_type_decoder_f RRC_Context_decode_aper; +per_type_encoder_f RRC_Context_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRC_Context_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnReestabIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnReestabIndicator.c new file mode 100644 index 0000000..04991ca --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnReestabIndicator.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCConnReestabIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RRCConnReestabIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RRCConnReestabIndicator_value2enum_1[] = { + { 0, 22, "reconfigurationFailure" }, + { 1, 15, "handoverFailure" }, + { 2, 12, "otherFailure" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRCConnReestabIndicator_enum2value_1[] = { + 1, /* handoverFailure(1) */ + 2, /* otherFailure(2) */ + 0 /* reconfigurationFailure(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRCConnReestabIndicator_specs_1 = { + asn_MAP_RRCConnReestabIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRCConnReestabIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RRCConnReestabIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCConnReestabIndicator = { + "RRCConnReestabIndicator", + "RRCConnReestabIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_RRCConnReestabIndicator_tags_1, + sizeof(asn_DEF_RRCConnReestabIndicator_tags_1) + /sizeof(asn_DEF_RRCConnReestabIndicator_tags_1[0]), /* 1 */ + asn_DEF_RRCConnReestabIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCConnReestabIndicator_tags_1) + /sizeof(asn_DEF_RRCConnReestabIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RRCConnReestabIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRCConnReestabIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnReestabIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnReestabIndicator.h new file mode 100644 index 0000000..3312c98 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnReestabIndicator.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCConnReestabIndicator_H_ +#define _RRCConnReestabIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRCConnReestabIndicator { + RRCConnReestabIndicator_reconfigurationFailure = 0, + RRCConnReestabIndicator_handoverFailure = 1, + RRCConnReestabIndicator_otherFailure = 2 + /* + * Enumeration is extensible + */ +} e_RRCConnReestabIndicator; + +/* RRCConnReestabIndicator */ +typedef long RRCConnReestabIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRCConnReestabIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRCConnReestabIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_RRCConnReestabIndicator_specs_1; +asn_struct_free_f RRCConnReestabIndicator_free; +asn_struct_print_f RRCConnReestabIndicator_print; +asn_constr_check_f RRCConnReestabIndicator_constraint; +ber_type_decoder_f RRCConnReestabIndicator_decode_ber; +der_type_encoder_f RRCConnReestabIndicator_encode_der; +xer_type_decoder_f RRCConnReestabIndicator_decode_xer; +xer_type_encoder_f RRCConnReestabIndicator_encode_xer; +per_type_decoder_f RRCConnReestabIndicator_decode_uper; +per_type_encoder_f RRCConnReestabIndicator_encode_uper; +per_type_decoder_f RRCConnReestabIndicator_decode_aper; +per_type_encoder_f RRCConnReestabIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCConnReestabIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnSetupIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnSetupIndicator.c new file mode 100644 index 0000000..72ddec7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnSetupIndicator.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCConnSetupIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RRCConnSetupIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RRCConnSetupIndicator_value2enum_1[] = { + { 0, 12, "rrcConnSetup" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RRCConnSetupIndicator_enum2value_1[] = { + 0 /* rrcConnSetup(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RRCConnSetupIndicator_specs_1 = { + asn_MAP_RRCConnSetupIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RRCConnSetupIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RRCConnSetupIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCConnSetupIndicator = { + "RRCConnSetupIndicator", + "RRCConnSetupIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_RRCConnSetupIndicator_tags_1, + sizeof(asn_DEF_RRCConnSetupIndicator_tags_1) + /sizeof(asn_DEF_RRCConnSetupIndicator_tags_1[0]), /* 1 */ + asn_DEF_RRCConnSetupIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCConnSetupIndicator_tags_1) + /sizeof(asn_DEF_RRCConnSetupIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RRCConnSetupIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RRCConnSetupIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnSetupIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnSetupIndicator.h new file mode 100644 index 0000000..b2e39ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCConnSetupIndicator.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCConnSetupIndicator_H_ +#define _RRCConnSetupIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RRCConnSetupIndicator { + RRCConnSetupIndicator_rrcConnSetup = 0 + /* + * Enumeration is extensible + */ +} e_RRCConnSetupIndicator; + +/* RRCConnSetupIndicator */ +typedef long RRCConnSetupIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RRCConnSetupIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RRCConnSetupIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_RRCConnSetupIndicator_specs_1; +asn_struct_free_f RRCConnSetupIndicator_free; +asn_struct_print_f RRCConnSetupIndicator_print; +asn_constr_check_f RRCConnSetupIndicator_constraint; +ber_type_decoder_f RRCConnSetupIndicator_decode_ber; +der_type_encoder_f RRCConnSetupIndicator_encode_der; +xer_type_decoder_f RRCConnSetupIndicator_decode_xer; +xer_type_encoder_f RRCConnSetupIndicator_encode_xer; +per_type_decoder_f RRCConnSetupIndicator_decode_uper; +per_type_encoder_f RRCConnSetupIndicator_encode_uper; +per_type_decoder_f RRCConnSetupIndicator_decode_aper; +per_type_encoder_f RRCConnSetupIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCConnSetupIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCContainer.c new file mode 100644 index 0000000..baa2edf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCContainer.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RRCContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RRCContainer = { + "RRCContainer", + "RRCContainer", + &asn_OP_OCTET_STRING, + asn_DEF_RRCContainer_tags_1, + sizeof(asn_DEF_RRCContainer_tags_1) + /sizeof(asn_DEF_RRCContainer_tags_1[0]), /* 1 */ + asn_DEF_RRCContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCContainer_tags_1) + /sizeof(asn_DEF_RRCContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCContainer.h new file mode 100644 index 0000000..3ef4b43 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCContainer.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCContainer_H_ +#define _RRCContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RRCContainer */ +typedef OCTET_STRING_t RRCContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRCContainer; +asn_struct_free_f RRCContainer_free; +asn_struct_print_f RRCContainer_print; +asn_constr_check_f RRCContainer_constraint; +ber_type_decoder_f RRCContainer_decode_ber; +der_type_encoder_f RRCContainer_encode_der; +xer_type_decoder_f RRCContainer_decode_xer; +xer_type_encoder_f RRCContainer_encode_xer; +per_type_decoder_f RRCContainer_decode_uper; +per_type_encoder_f RRCContainer_encode_uper; +per_type_decoder_f RRCContainer_decode_aper; +per_type_encoder_f RRCContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCTransfer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCTransfer.c new file mode 100644 index 0000000..9eb6b03 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCTransfer.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RRCTransfer.h" + +static asn_TYPE_member_t asn_MBR_RRCTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RRCTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P82, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RRCTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RRCTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RRCTransfer_specs_1 = { + sizeof(struct RRCTransfer), + offsetof(struct RRCTransfer, _asn_ctx), + asn_MAP_RRCTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RRCTransfer = { + "RRCTransfer", + "RRCTransfer", + &asn_OP_SEQUENCE, + asn_DEF_RRCTransfer_tags_1, + sizeof(asn_DEF_RRCTransfer_tags_1) + /sizeof(asn_DEF_RRCTransfer_tags_1[0]), /* 1 */ + asn_DEF_RRCTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_RRCTransfer_tags_1) + /sizeof(asn_DEF_RRCTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RRCTransfer_1, + 1, /* Elements count */ + &asn_SPC_RRCTransfer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCTransfer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCTransfer.h new file mode 100644 index 0000000..700bb26 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RRCTransfer.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RRCTransfer_H_ +#define _RRCTransfer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RRCTransfer */ +typedef struct RRCTransfer { + ProtocolIE_Container_119P82_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RRCTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RRCTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _RRCTransfer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMRList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMRList.c new file mode 100644 index 0000000..63ed600 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMRList.c @@ -0,0 +1,127 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RSRPMRList.h" + +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_RSRPMRList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 128 } /* (SIZE(1..128)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMRList__Member, rSRPMeasurementResult), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RSRPMeasurementResult, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rSRPMeasurementResult" + }, + { ATF_POINTER, 1, offsetof(struct RSRPMRList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P188, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rSRPMeasurementResult */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct RSRPMRList__Member), + offsetof(struct RSRPMRList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 2, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 2, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMRList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMRList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RSRPMRList_specs_1 = { + sizeof(struct RSRPMRList), + offsetof(struct RSRPMRList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMRList = { + "RSRPMRList", + "RSRPMRList", + &asn_OP_SEQUENCE_OF, + asn_DEF_RSRPMRList_tags_1, + sizeof(asn_DEF_RSRPMRList_tags_1) + /sizeof(asn_DEF_RSRPMRList_tags_1[0]), /* 1 */ + asn_DEF_RSRPMRList_tags_1, /* Same as above */ + sizeof(asn_DEF_RSRPMRList_tags_1) + /sizeof(asn_DEF_RSRPMRList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RSRPMRList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RSRPMRList_1, + 1, /* Single element */ + &asn_SPC_RSRPMRList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMRList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMRList.h new file mode 100644 index 0000000..d263cfd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMRList.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RSRPMRList_H_ +#define _RSRPMRList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "RSRPMeasurementResult.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct RSRPMRList__Member { + RSRPMeasurementResult_t rSRPMeasurementResult; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMRList__Member; + +/* RSRPMRList */ +typedef struct RSRPMRList { + A_SEQUENCE_OF(RSRPMRList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMRList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RSRPMRList; +extern asn_SET_OF_specifics_t asn_SPC_RSRPMRList_specs_1; +extern asn_TYPE_member_t asn_MBR_RSRPMRList_1[1]; +extern asn_per_constraints_t asn_PER_type_RSRPMRList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RSRPMRList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMeasurementResult.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMeasurementResult.c new file mode 100644 index 0000000..e668168 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMeasurementResult.c @@ -0,0 +1,167 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RSRPMeasurementResult.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_rSRPMeasured_constraint_2(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 97)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_rSRPMeasured_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 0, 97 } /* (0..97,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_RSRPMeasurementResult_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 9 } /* (SIZE(1..9)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult__Member, rSRPCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rSRPCellID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RSRPMeasurementResult__Member, rSRPMeasured), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_rSRPMeasured_constr_4, memb_rSRPMeasured_constraint_2 }, + 0, 0, /* No default value */ + "rSRPMeasured" + }, + { ATF_POINTER, 1, offsetof(struct RSRPMeasurementResult__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P187, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rSRPCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rSRPMeasured */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct RSRPMeasurementResult__Member), + offsetof(struct RSRPMeasurementResult__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RSRPMeasurementResult_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RSRPMeasurementResult_specs_1 = { + sizeof(struct RSRPMeasurementResult), + offsetof(struct RSRPMeasurementResult, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult = { + "RSRPMeasurementResult", + "RSRPMeasurementResult", + &asn_OP_SEQUENCE_OF, + asn_DEF_RSRPMeasurementResult_tags_1, + sizeof(asn_DEF_RSRPMeasurementResult_tags_1) + /sizeof(asn_DEF_RSRPMeasurementResult_tags_1[0]), /* 1 */ + asn_DEF_RSRPMeasurementResult_tags_1, /* Same as above */ + sizeof(asn_DEF_RSRPMeasurementResult_tags_1) + /sizeof(asn_DEF_RSRPMeasurementResult_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RSRPMeasurementResult_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RSRPMeasurementResult_1, + 1, /* Single element */ + &asn_SPC_RSRPMeasurementResult_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMeasurementResult.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMeasurementResult.h new file mode 100644 index 0000000..1167df0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RSRPMeasurementResult.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RSRPMeasurementResult_H_ +#define _RSRPMeasurementResult_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ECGI.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct RSRPMeasurementResult__Member { + ECGI_t rSRPCellID; + long rSRPMeasured; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMeasurementResult__Member; + +/* RSRPMeasurementResult */ +typedef struct RSRPMeasurementResult { + A_SEQUENCE_OF(RSRPMeasurementResult__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RSRPMeasurementResult_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RSRPMeasurementResult; +extern asn_SET_OF_specifics_t asn_SPC_RSRPMeasurementResult_specs_1; +extern asn_TYPE_member_t asn_MBR_RSRPMeasurementResult_1[1]; +extern asn_per_constraints_t asn_PER_type_RSRPMeasurementResult_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RSRPMeasurementResult_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioResourceStatus.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioResourceStatus.c new file mode 100644 index 0000000..e50daaa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioResourceStatus.c @@ -0,0 +1,136 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RadioResourceStatus.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_RadioResourceStatus_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, dL_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, uL_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, dL_non_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_non_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-non-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, uL_non_GBR_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_non_GBR_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-non-GBR-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, dL_Total_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DL_Total_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dL-Total-PRB-usage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RadioResourceStatus, uL_Total_PRB_usage), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_Total_PRB_usage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-Total-PRB-usage" + }, + { ATF_POINTER, 1, offsetof(struct RadioResourceStatus, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P183, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RadioResourceStatus_oms_1[] = { 6 }; +static const ber_tlv_tag_t asn_DEF_RadioResourceStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RadioResourceStatus_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dL-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uL-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dL-non-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uL-non-GBR-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dL-Total-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* uL-Total-PRB-usage */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_specs_1 = { + sizeof(struct RadioResourceStatus), + offsetof(struct RadioResourceStatus, _asn_ctx), + asn_MAP_RadioResourceStatus_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_RadioResourceStatus_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus = { + "RadioResourceStatus", + "RadioResourceStatus", + &asn_OP_SEQUENCE, + asn_DEF_RadioResourceStatus_tags_1, + sizeof(asn_DEF_RadioResourceStatus_tags_1) + /sizeof(asn_DEF_RadioResourceStatus_tags_1[0]), /* 1 */ + asn_DEF_RadioResourceStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_RadioResourceStatus_tags_1) + /sizeof(asn_DEF_RadioResourceStatus_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RadioResourceStatus_1, + 7, /* Elements count */ + &asn_SPC_RadioResourceStatus_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioResourceStatus.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioResourceStatus.h new file mode 100644 index 0000000..371f0a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioResourceStatus.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RadioResourceStatus_H_ +#define _RadioResourceStatus_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DL-GBR-PRB-usage.h" +#include "UL-GBR-PRB-usage.h" +#include "DL-non-GBR-PRB-usage.h" +#include "UL-non-GBR-PRB-usage.h" +#include "DL-Total-PRB-usage.h" +#include "UL-Total-PRB-usage.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* RadioResourceStatus */ +typedef struct RadioResourceStatus { + DL_GBR_PRB_usage_t dL_GBR_PRB_usage; + UL_GBR_PRB_usage_t uL_GBR_PRB_usage; + DL_non_GBR_PRB_usage_t dL_non_GBR_PRB_usage; + UL_non_GBR_PRB_usage_t uL_non_GBR_PRB_usage; + DL_Total_PRB_usage_t dL_Total_PRB_usage; + UL_Total_PRB_usage_t uL_Total_PRB_usage; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RadioResourceStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RadioResourceStatus; +extern asn_SEQUENCE_specifics_t asn_SPC_RadioResourceStatus_specs_1; +extern asn_TYPE_member_t asn_MBR_RadioResourceStatus_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadioResourceStatus_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationOffset.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationOffset.c new file mode 100644 index 0000000..33f3256 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationOffset.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RadioframeAllocationOffset.h" + +int +RadioframeAllocationOffset_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RadioframeAllocationOffset_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RadioframeAllocationOffset_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationOffset = { + "RadioframeAllocationOffset", + "RadioframeAllocationOffset", + &asn_OP_NativeInteger, + asn_DEF_RadioframeAllocationOffset_tags_1, + sizeof(asn_DEF_RadioframeAllocationOffset_tags_1) + /sizeof(asn_DEF_RadioframeAllocationOffset_tags_1[0]), /* 1 */ + asn_DEF_RadioframeAllocationOffset_tags_1, /* Same as above */ + sizeof(asn_DEF_RadioframeAllocationOffset_tags_1) + /sizeof(asn_DEF_RadioframeAllocationOffset_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RadioframeAllocationOffset_constr_1, RadioframeAllocationOffset_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationOffset.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationOffset.h new file mode 100644 index 0000000..7f00042 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationOffset.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RadioframeAllocationOffset_H_ +#define _RadioframeAllocationOffset_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RadioframeAllocationOffset */ +typedef long RadioframeAllocationOffset_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RadioframeAllocationOffset_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationOffset; +asn_struct_free_f RadioframeAllocationOffset_free; +asn_struct_print_f RadioframeAllocationOffset_print; +asn_constr_check_f RadioframeAllocationOffset_constraint; +ber_type_decoder_f RadioframeAllocationOffset_decode_ber; +der_type_encoder_f RadioframeAllocationOffset_encode_der; +xer_type_decoder_f RadioframeAllocationOffset_decode_xer; +xer_type_encoder_f RadioframeAllocationOffset_encode_xer; +per_type_decoder_f RadioframeAllocationOffset_decode_uper; +per_type_encoder_f RadioframeAllocationOffset_encode_uper; +per_type_decoder_f RadioframeAllocationOffset_decode_aper; +per_type_encoder_f RadioframeAllocationOffset_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadioframeAllocationOffset_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c new file mode 100644 index 0000000..2f0eb78 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationPeriod.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RadioframeAllocationPeriod.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RadioframeAllocationPeriod_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RadioframeAllocationPeriod_value2enum_1[] = { + { 0, 2, "n1" }, + { 1, 2, "n2" }, + { 2, 2, "n4" }, + { 3, 2, "n8" }, + { 4, 3, "n16" }, + { 5, 3, "n32" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RadioframeAllocationPeriod_enum2value_1[] = { + 0, /* n1(0) */ + 4, /* n16(4) */ + 1, /* n2(1) */ + 5, /* n32(5) */ + 2, /* n4(2) */ + 3 /* n8(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RadioframeAllocationPeriod_specs_1 = { + asn_MAP_RadioframeAllocationPeriod_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RadioframeAllocationPeriod_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RadioframeAllocationPeriod_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationPeriod = { + "RadioframeAllocationPeriod", + "RadioframeAllocationPeriod", + &asn_OP_NativeEnumerated, + asn_DEF_RadioframeAllocationPeriod_tags_1, + sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1) + /sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1[0]), /* 1 */ + asn_DEF_RadioframeAllocationPeriod_tags_1, /* Same as above */ + sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1) + /sizeof(asn_DEF_RadioframeAllocationPeriod_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RadioframeAllocationPeriod_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RadioframeAllocationPeriod_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h new file mode 100644 index 0000000..396a94c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RadioframeAllocationPeriod.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RadioframeAllocationPeriod_H_ +#define _RadioframeAllocationPeriod_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RadioframeAllocationPeriod { + RadioframeAllocationPeriod_n1 = 0, + RadioframeAllocationPeriod_n2 = 1, + RadioframeAllocationPeriod_n4 = 2, + RadioframeAllocationPeriod_n8 = 3, + RadioframeAllocationPeriod_n16 = 4, + RadioframeAllocationPeriod_n32 = 5 + /* + * Enumeration is extensible + */ +} e_RadioframeAllocationPeriod; + +/* RadioframeAllocationPeriod */ +typedef long RadioframeAllocationPeriod_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RadioframeAllocationPeriod_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RadioframeAllocationPeriod; +extern const asn_INTEGER_specifics_t asn_SPC_RadioframeAllocationPeriod_specs_1; +asn_struct_free_f RadioframeAllocationPeriod_free; +asn_struct_print_f RadioframeAllocationPeriod_print; +asn_constr_check_f RadioframeAllocationPeriod_constraint; +ber_type_decoder_f RadioframeAllocationPeriod_decode_ber; +der_type_encoder_f RadioframeAllocationPeriod_encode_der; +xer_type_decoder_f RadioframeAllocationPeriod_decode_xer; +xer_type_encoder_f RadioframeAllocationPeriod_encode_xer; +per_type_decoder_f RadioframeAllocationPeriod_decode_uper; +per_type_encoder_f RadioframeAllocationPeriod_encode_uper; +per_type_decoder_f RadioframeAllocationPeriod_decode_aper; +per_type_encoder_f RadioframeAllocationPeriod_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RadioframeAllocationPeriod_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c new file mode 100644 index 0000000..6f3c5c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReceiveStatusOfULPDCPSDUsExtended.h" + +int +ReceiveStatusOfULPDCPSDUsExtended_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 16384)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsExtended_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsExtended = { + "ReceiveStatusOfULPDCPSDUsExtended", + "ReceiveStatusOfULPDCPSDUsExtended", + &asn_OP_BIT_STRING, + asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1, + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1[0]), /* 1 */ + asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1, /* Same as above */ + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsExtended_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReceiveStatusOfULPDCPSDUsExtended_constr_1, ReceiveStatusOfULPDCPSDUsExtended_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h new file mode 100644 index 0000000..3352501 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsExtended.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReceiveStatusOfULPDCPSDUsExtended_H_ +#define _ReceiveStatusOfULPDCPSDUsExtended_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReceiveStatusOfULPDCPSDUsExtended */ +typedef BIT_STRING_t ReceiveStatusOfULPDCPSDUsExtended_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsExtended_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsExtended; +asn_struct_free_f ReceiveStatusOfULPDCPSDUsExtended_free; +asn_struct_print_f ReceiveStatusOfULPDCPSDUsExtended_print; +asn_constr_check_f ReceiveStatusOfULPDCPSDUsExtended_constraint; +ber_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_ber; +der_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_der; +xer_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_xer; +xer_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_xer; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_uper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_uper; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsExtended_decode_aper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsExtended_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReceiveStatusOfULPDCPSDUsExtended_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c new file mode 100644 index 0000000..6f88fe1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h" + +int +ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 131072)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 17, -1, 1, 131072 } /* (SIZE(1..131072)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 = { + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18", + "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18", + &asn_OP_BIT_STRING, + asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1, + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[0]), /* 1 */ + asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1, /* Same as above */ + sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1) + /sizeof(asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1, ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h new file mode 100644 index 0000000..d46456e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ +#define _ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReceiveStatusOfULPDCPSDUsPDCP-SNlength18 */ +typedef BIT_STRING_t ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18; +asn_struct_free_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_free; +asn_struct_print_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_print; +asn_constr_check_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_constraint; +ber_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_ber; +der_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_der; +xer_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_xer; +xer_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_xer; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_uper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_uper; +per_type_decoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_decode_aper; +per_type_encoder_f ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c new file mode 100644 index 0000000..de11af4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReceiveStatusofULPDCPSDUs.h" + +int +ReceiveStatusofULPDCPSDUs_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 4096)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReceiveStatusofULPDCPSDUs_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 4096, 4096 } /* (SIZE(4096..4096)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReceiveStatusofULPDCPSDUs = { + "ReceiveStatusofULPDCPSDUs", + "ReceiveStatusofULPDCPSDUs", + &asn_OP_BIT_STRING, + asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1, + sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1) + /sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1[0]), /* 1 */ + asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1, /* Same as above */ + sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1) + /sizeof(asn_DEF_ReceiveStatusofULPDCPSDUs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReceiveStatusofULPDCPSDUs_constr_1, ReceiveStatusofULPDCPSDUs_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h new file mode 100644 index 0000000..96fc0c1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReceiveStatusofULPDCPSDUs.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReceiveStatusofULPDCPSDUs_H_ +#define _ReceiveStatusofULPDCPSDUs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReceiveStatusofULPDCPSDUs */ +typedef BIT_STRING_t ReceiveStatusofULPDCPSDUs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReceiveStatusofULPDCPSDUs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReceiveStatusofULPDCPSDUs; +asn_struct_free_f ReceiveStatusofULPDCPSDUs_free; +asn_struct_print_f ReceiveStatusofULPDCPSDUs_print; +asn_constr_check_f ReceiveStatusofULPDCPSDUs_constraint; +ber_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_ber; +der_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_der; +xer_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_xer; +xer_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_xer; +per_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_uper; +per_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_uper; +per_type_decoder_f ReceiveStatusofULPDCPSDUs_decode_aper; +per_type_encoder_f ReceiveStatusofULPDCPSDUs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReceiveStatusofULPDCPSDUs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Reestablishment-Indication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Reestablishment-Indication.c new file mode 100644 index 0000000..ad46829 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Reestablishment-Indication.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Reestablishment-Indication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Reestablishment_Indication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Reestablishment_Indication_value2enum_1[] = { + { 0, 13, "reestablished" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Reestablishment_Indication_enum2value_1[] = { + 0 /* reestablished(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Reestablishment_Indication_specs_1 = { + asn_MAP_Reestablishment_Indication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Reestablishment_Indication_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Reestablishment_Indication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Reestablishment_Indication = { + "Reestablishment-Indication", + "Reestablishment-Indication", + &asn_OP_NativeEnumerated, + asn_DEF_Reestablishment_Indication_tags_1, + sizeof(asn_DEF_Reestablishment_Indication_tags_1) + /sizeof(asn_DEF_Reestablishment_Indication_tags_1[0]), /* 1 */ + asn_DEF_Reestablishment_Indication_tags_1, /* Same as above */ + sizeof(asn_DEF_Reestablishment_Indication_tags_1) + /sizeof(asn_DEF_Reestablishment_Indication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Reestablishment_Indication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Reestablishment_Indication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Reestablishment-Indication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Reestablishment-Indication.h new file mode 100644 index 0000000..5f64cf2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Reestablishment-Indication.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Reestablishment_Indication_H_ +#define _Reestablishment_Indication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Reestablishment_Indication { + Reestablishment_Indication_reestablished = 0 + /* + * Enumeration is extensible + */ +} e_Reestablishment_Indication; + +/* Reestablishment-Indication */ +typedef long Reestablishment_Indication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Reestablishment_Indication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Reestablishment_Indication; +extern const asn_INTEGER_specifics_t asn_SPC_Reestablishment_Indication_specs_1; +asn_struct_free_f Reestablishment_Indication_free; +asn_struct_print_f Reestablishment_Indication_print; +asn_constr_check_f Reestablishment_Indication_constraint; +ber_type_decoder_f Reestablishment_Indication_decode_ber; +der_type_encoder_f Reestablishment_Indication_encode_der; +xer_type_decoder_f Reestablishment_Indication_decode_xer; +xer_type_encoder_f Reestablishment_Indication_encode_xer; +per_type_decoder_f Reestablishment_Indication_decode_uper; +per_type_encoder_f Reestablishment_Indication_encode_uper; +per_type_decoder_f Reestablishment_Indication_decode_aper; +per_type_encoder_f Reestablishment_Indication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Reestablishment_Indication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Registration-Request.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Registration-Request.c new file mode 100644 index 0000000..6ed6796 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Registration-Request.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Registration-Request.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Registration_Request_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Registration_Request_value2enum_1[] = { + { 0, 5, "start" }, + { 1, 4, "stop" }, + { 2, 12, "partial-stop" }, + { 3, 3, "add" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Registration_Request_enum2value_1[] = { + 3, /* add(3) */ + 2, /* partial-stop(2) */ + 0, /* start(0) */ + 1 /* stop(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Registration_Request_specs_1 = { + asn_MAP_Registration_Request_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Registration_Request_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Registration_Request_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Registration_Request = { + "Registration-Request", + "Registration-Request", + &asn_OP_NativeEnumerated, + asn_DEF_Registration_Request_tags_1, + sizeof(asn_DEF_Registration_Request_tags_1) + /sizeof(asn_DEF_Registration_Request_tags_1[0]), /* 1 */ + asn_DEF_Registration_Request_tags_1, /* Same as above */ + sizeof(asn_DEF_Registration_Request_tags_1) + /sizeof(asn_DEF_Registration_Request_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Registration_Request_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Registration_Request_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Registration-Request.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Registration-Request.h new file mode 100644 index 0000000..3c14c95 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Registration-Request.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Registration_Request_H_ +#define _Registration_Request_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Registration_Request { + Registration_Request_start = 0, + Registration_Request_stop = 1, + /* + * Enumeration is extensible + */ + Registration_Request_partial_stop = 2, + Registration_Request_add = 3 +} e_Registration_Request; + +/* Registration-Request */ +typedef long Registration_Request_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Registration_Request_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Registration_Request; +extern const asn_INTEGER_specifics_t asn_SPC_Registration_Request_specs_1; +asn_struct_free_f Registration_Request_free; +asn_struct_print_f Registration_Request_print; +asn_constr_check_f Registration_Request_constraint; +ber_type_decoder_f Registration_Request_decode_ber; +der_type_encoder_f Registration_Request_encode_der; +xer_type_decoder_f Registration_Request_decode_xer; +xer_type_encoder_f Registration_Request_encode_xer; +per_type_decoder_f Registration_Request_decode_uper; +per_type_encoder_f Registration_Request_encode_uper; +per_type_decoder_f Registration_Request_decode_aper; +per_type_encoder_f Registration_Request_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Registration_Request_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c new file mode 100644 index 0000000..1061daa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.c @@ -0,0 +1,272 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RelativeNarrowbandTxPower.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_rNTP_PerPRB_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 110)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_p_B_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_pDCCH_InterferenceImpact_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_numberOfCellSpecificAntennaPorts_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_rNTP_PerPRB_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 6, 110 } /* (SIZE(6..110,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_p_B_constr_9 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_pDCCH_InterferenceImpact_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_4[] = { + { 0, 3, "one" }, + { 1, 3, "two" }, + { 2, 4, "four" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_4[] = { + 2, /* four(2) */ + 0, /* one(0) */ + 1 /* two(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_numberOfCellSpecificAntennaPorts_specs_4 = { + asn_MAP_numberOfCellSpecificAntennaPorts_value2enum_4, /* "tag" => N; sorted by tag */ + asn_MAP_numberOfCellSpecificAntennaPorts_enum2value_4, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_numberOfCellSpecificAntennaPorts_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_4 = { + "numberOfCellSpecificAntennaPorts", + "numberOfCellSpecificAntennaPorts", + &asn_OP_NativeEnumerated, + asn_DEF_numberOfCellSpecificAntennaPorts_tags_4, + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4[0]) - 1, /* 1 */ + asn_DEF_numberOfCellSpecificAntennaPorts_tags_4, /* Same as above */ + sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4) + /sizeof(asn_DEF_numberOfCellSpecificAntennaPorts_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_numberOfCellSpecificAntennaPorts_constr_4, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_numberOfCellSpecificAntennaPorts_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, rNTP_PerPRB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_rNTP_PerPRB_constr_2, memb_rNTP_PerPRB_constraint_1 }, + 0, 0, /* No default value */ + "rNTP-PerPRB" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, rNTP_Threshold), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RNTP_Threshold, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rNTP-Threshold" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, numberOfCellSpecificAntennaPorts), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_numberOfCellSpecificAntennaPorts_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "numberOfCellSpecificAntennaPorts" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, p_B), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_p_B_constr_9, memb_p_B_constraint_1 }, + 0, 0, /* No default value */ + "p-B" + }, + { ATF_NOFLAGS, 0, offsetof(struct RelativeNarrowbandTxPower, pDCCH_InterferenceImpact), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_pDCCH_InterferenceImpact_constr_10, memb_pDCCH_InterferenceImpact_constraint_1 }, + 0, 0, /* No default value */ + "pDCCH-InterferenceImpact" + }, + { ATF_POINTER, 1, offsetof(struct RelativeNarrowbandTxPower, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P184, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_RelativeNarrowbandTxPower_oms_1[] = { 5 }; +static const ber_tlv_tag_t asn_DEF_RelativeNarrowbandTxPower_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RelativeNarrowbandTxPower_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rNTP-PerPRB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rNTP-Threshold */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* numberOfCellSpecificAntennaPorts */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* p-B */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pDCCH-InterferenceImpact */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_specs_1 = { + sizeof(struct RelativeNarrowbandTxPower), + offsetof(struct RelativeNarrowbandTxPower, _asn_ctx), + asn_MAP_RelativeNarrowbandTxPower_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_RelativeNarrowbandTxPower_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower = { + "RelativeNarrowbandTxPower", + "RelativeNarrowbandTxPower", + &asn_OP_SEQUENCE, + asn_DEF_RelativeNarrowbandTxPower_tags_1, + sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1[0]), /* 1 */ + asn_DEF_RelativeNarrowbandTxPower_tags_1, /* Same as above */ + sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1) + /sizeof(asn_DEF_RelativeNarrowbandTxPower_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RelativeNarrowbandTxPower_1, + 6, /* Elements count */ + &asn_SPC_RelativeNarrowbandTxPower_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h new file mode 100644 index 0000000..7a2fa6d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RelativeNarrowbandTxPower.h @@ -0,0 +1,89 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RelativeNarrowbandTxPower_H_ +#define _RelativeNarrowbandTxPower_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "RNTP-Threshold.h" +#include "NativeEnumerated.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts { + RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts_one = 0, + RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts_two = 1, + RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts_four = 2 + /* + * Enumeration is extensible + */ +} e_RelativeNarrowbandTxPower__numberOfCellSpecificAntennaPorts; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* RelativeNarrowbandTxPower */ +typedef struct RelativeNarrowbandTxPower { + BIT_STRING_t rNTP_PerPRB; + RNTP_Threshold_t rNTP_Threshold; + long numberOfCellSpecificAntennaPorts; + long p_B; + long pDCCH_InterferenceImpact; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RelativeNarrowbandTxPower_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_numberOfCellSpecificAntennaPorts_4; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_RelativeNarrowbandTxPower; +extern asn_SEQUENCE_specifics_t asn_SPC_RelativeNarrowbandTxPower_specs_1; +extern asn_TYPE_member_t asn_MBR_RelativeNarrowbandTxPower_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RelativeNarrowbandTxPower_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList-Item.c new file mode 100644 index 0000000..de2c6f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList-Item.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReplacingCellsList-Item.h" + +asn_TYPE_member_t asn_MBR_ReplacingCellsList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReplacingCellsList_Item, eCGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eCGI" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReplacingCellsList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReplacingCellsList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eCGI */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReplacingCellsList_Item_specs_1 = { + sizeof(struct ReplacingCellsList_Item), + offsetof(struct ReplacingCellsList_Item, _asn_ctx), + asn_MAP_ReplacingCellsList_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList_Item = { + "ReplacingCellsList-Item", + "ReplacingCellsList-Item", + &asn_OP_SEQUENCE, + asn_DEF_ReplacingCellsList_Item_tags_1, + sizeof(asn_DEF_ReplacingCellsList_Item_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_Item_tags_1[0]), /* 1 */ + asn_DEF_ReplacingCellsList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ReplacingCellsList_Item_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ReplacingCellsList_Item_1, + 1, /* Elements count */ + &asn_SPC_ReplacingCellsList_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList-Item.h new file mode 100644 index 0000000..d1af8c2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList-Item.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReplacingCellsList_Item_H_ +#define _ReplacingCellsList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReplacingCellsList-Item */ +typedef struct ReplacingCellsList_Item { + ECGI_t eCGI; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReplacingCellsList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ReplacingCellsList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ReplacingCellsList_Item_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReplacingCellsList_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList.c new file mode 100644 index 0000000..95eaa7c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReplacingCellsList.h" + +#include "ReplacingCellsList-Item.h" +asn_per_constraints_t asn_PER_type_ReplacingCellsList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ReplacingCellsList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ReplacingCellsList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ReplacingCellsList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ReplacingCellsList_specs_1 = { + sizeof(struct ReplacingCellsList), + offsetof(struct ReplacingCellsList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList = { + "ReplacingCellsList", + "ReplacingCellsList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ReplacingCellsList_tags_1, + sizeof(asn_DEF_ReplacingCellsList_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_tags_1[0]), /* 1 */ + asn_DEF_ReplacingCellsList_tags_1, /* Same as above */ + sizeof(asn_DEF_ReplacingCellsList_tags_1) + /sizeof(asn_DEF_ReplacingCellsList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReplacingCellsList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ReplacingCellsList_1, + 1, /* Single element */ + &asn_SPC_ReplacingCellsList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList.h new file mode 100644 index 0000000..9e9a64a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReplacingCellsList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReplacingCellsList_H_ +#define _ReplacingCellsList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ReplacingCellsList_Item; + +/* ReplacingCellsList */ +typedef struct ReplacingCellsList { + A_SEQUENCE_OF(struct ReplacingCellsList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReplacingCellsList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReplacingCellsList; +extern asn_SET_OF_specifics_t asn_SPC_ReplacingCellsList_specs_1; +extern asn_TYPE_member_t asn_MBR_ReplacingCellsList_1[1]; +extern asn_per_constraints_t asn_PER_type_ReplacingCellsList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReplacingCellsList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportAmountMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportAmountMDT.c new file mode 100644 index 0000000..bbbadd0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportAmountMDT.c @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportAmountMDT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportAmountMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 3, 3, 0, 7 } /* (0..7) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportAmountMDT_value2enum_1[] = { + { 0, 2, "r1" }, + { 1, 2, "r2" }, + { 2, 2, "r4" }, + { 3, 2, "r8" }, + { 4, 3, "r16" }, + { 5, 3, "r32" }, + { 6, 3, "r64" }, + { 7, 9, "rinfinity" } +}; +static const unsigned int asn_MAP_ReportAmountMDT_enum2value_1[] = { + 0, /* r1(0) */ + 4, /* r16(4) */ + 1, /* r2(1) */ + 5, /* r32(5) */ + 2, /* r4(2) */ + 6, /* r64(6) */ + 3, /* r8(3) */ + 7 /* rinfinity(7) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportAmountMDT_specs_1 = { + asn_MAP_ReportAmountMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportAmountMDT_enum2value_1, /* N => "tag"; sorted by N */ + 8, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ReportAmountMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportAmountMDT = { + "ReportAmountMDT", + "ReportAmountMDT", + &asn_OP_NativeEnumerated, + asn_DEF_ReportAmountMDT_tags_1, + sizeof(asn_DEF_ReportAmountMDT_tags_1) + /sizeof(asn_DEF_ReportAmountMDT_tags_1[0]), /* 1 */ + asn_DEF_ReportAmountMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportAmountMDT_tags_1) + /sizeof(asn_DEF_ReportAmountMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportAmountMDT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportAmountMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportAmountMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportAmountMDT.h new file mode 100644 index 0000000..c1d28bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportAmountMDT.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportAmountMDT_H_ +#define _ReportAmountMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportAmountMDT { + ReportAmountMDT_r1 = 0, + ReportAmountMDT_r2 = 1, + ReportAmountMDT_r4 = 2, + ReportAmountMDT_r8 = 3, + ReportAmountMDT_r16 = 4, + ReportAmountMDT_r32 = 5, + ReportAmountMDT_r64 = 6, + ReportAmountMDT_rinfinity = 7 +} e_ReportAmountMDT; + +/* ReportAmountMDT */ +typedef long ReportAmountMDT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportAmountMDT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportAmountMDT; +extern const asn_INTEGER_specifics_t asn_SPC_ReportAmountMDT_specs_1; +asn_struct_free_f ReportAmountMDT_free; +asn_struct_print_f ReportAmountMDT_print; +asn_constr_check_f ReportAmountMDT_constraint; +ber_type_decoder_f ReportAmountMDT_decode_ber; +der_type_encoder_f ReportAmountMDT_encode_der; +xer_type_decoder_f ReportAmountMDT_decode_xer; +xer_type_encoder_f ReportAmountMDT_encode_xer; +per_type_decoder_f ReportAmountMDT_decode_uper; +per_type_encoder_f ReportAmountMDT_encode_uper; +per_type_decoder_f ReportAmountMDT_decode_aper; +per_type_encoder_f ReportAmountMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportAmountMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportArea.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportArea.c new file mode 100644 index 0000000..aecac82 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportArea.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportArea.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportArea_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportArea_value2enum_1[] = { + { 0, 4, "ecgi" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportArea_enum2value_1[] = { + 0 /* ecgi(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportArea_specs_1 = { + asn_MAP_ReportArea_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportArea_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ReportArea_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportArea = { + "ReportArea", + "ReportArea", + &asn_OP_NativeEnumerated, + asn_DEF_ReportArea_tags_1, + sizeof(asn_DEF_ReportArea_tags_1) + /sizeof(asn_DEF_ReportArea_tags_1[0]), /* 1 */ + asn_DEF_ReportArea_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportArea_tags_1) + /sizeof(asn_DEF_ReportArea_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportArea_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportArea_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportArea.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportArea.h new file mode 100644 index 0000000..e28f8c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportArea.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportArea_H_ +#define _ReportArea_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportArea { + ReportArea_ecgi = 0 + /* + * Enumeration is extensible + */ +} e_ReportArea; + +/* ReportArea */ +typedef long ReportArea_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportArea_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportArea; +extern const asn_INTEGER_specifics_t asn_SPC_ReportArea_specs_1; +asn_struct_free_f ReportArea_free; +asn_struct_print_f ReportArea_print; +asn_constr_check_f ReportArea_constraint; +ber_type_decoder_f ReportArea_decode_ber; +der_type_encoder_f ReportArea_encode_der; +xer_type_decoder_f ReportArea_decode_xer; +xer_type_encoder_f ReportArea_encode_xer; +per_type_decoder_f ReportArea_decode_uper; +per_type_encoder_f ReportArea_encode_uper; +per_type_decoder_f ReportArea_decode_aper; +per_type_encoder_f ReportArea_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportArea_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportCharacteristics.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportCharacteristics.c new file mode 100644 index 0000000..3780c6c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportCharacteristics.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportCharacteristics.h" + +int +ReportCharacteristics_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportCharacteristics_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 32, 32 } /* (SIZE(32..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ReportCharacteristics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportCharacteristics = { + "ReportCharacteristics", + "ReportCharacteristics", + &asn_OP_BIT_STRING, + asn_DEF_ReportCharacteristics_tags_1, + sizeof(asn_DEF_ReportCharacteristics_tags_1) + /sizeof(asn_DEF_ReportCharacteristics_tags_1[0]), /* 1 */ + asn_DEF_ReportCharacteristics_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportCharacteristics_tags_1) + /sizeof(asn_DEF_ReportCharacteristics_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportCharacteristics_constr_1, ReportCharacteristics_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportCharacteristics.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportCharacteristics.h new file mode 100644 index 0000000..f08f64e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportCharacteristics.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportCharacteristics_H_ +#define _ReportCharacteristics_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ReportCharacteristics */ +typedef BIT_STRING_t ReportCharacteristics_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportCharacteristics_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportCharacteristics; +asn_struct_free_f ReportCharacteristics_free; +asn_struct_print_f ReportCharacteristics_print; +asn_constr_check_f ReportCharacteristics_constraint; +ber_type_decoder_f ReportCharacteristics_decode_ber; +der_type_encoder_f ReportCharacteristics_encode_der; +xer_type_decoder_f ReportCharacteristics_decode_xer; +xer_type_encoder_f ReportCharacteristics_encode_xer; +per_type_decoder_f ReportCharacteristics_decode_uper; +per_type_encoder_f ReportCharacteristics_encode_uper; +per_type_decoder_f ReportCharacteristics_decode_aper; +per_type_encoder_f ReportCharacteristics_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportCharacteristics_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportIntervalMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportIntervalMDT.c new file mode 100644 index 0000000..a1e6152 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportIntervalMDT.c @@ -0,0 +1,98 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportIntervalMDT.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportIntervalMDT_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 4, 4, 0, 12 } /* (0..12) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportIntervalMDT_value2enum_1[] = { + { 0, 5, "ms120" }, + { 1, 5, "ms240" }, + { 2, 5, "ms480" }, + { 3, 5, "ms640" }, + { 4, 6, "ms1024" }, + { 5, 6, "ms2048" }, + { 6, 6, "ms5120" }, + { 7, 7, "ms10240" }, + { 8, 4, "min1" }, + { 9, 4, "min6" }, + { 10, 5, "min12" }, + { 11, 5, "min30" }, + { 12, 5, "min60" } +}; +static const unsigned int asn_MAP_ReportIntervalMDT_enum2value_1[] = { + 8, /* min1(8) */ + 10, /* min12(10) */ + 11, /* min30(11) */ + 9, /* min6(9) */ + 12, /* min60(12) */ + 4, /* ms1024(4) */ + 7, /* ms10240(7) */ + 0, /* ms120(0) */ + 5, /* ms2048(5) */ + 1, /* ms240(1) */ + 2, /* ms480(2) */ + 6, /* ms5120(6) */ + 3 /* ms640(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportIntervalMDT_specs_1 = { + asn_MAP_ReportIntervalMDT_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportIntervalMDT_enum2value_1, /* N => "tag"; sorted by N */ + 13, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ReportIntervalMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportIntervalMDT = { + "ReportIntervalMDT", + "ReportIntervalMDT", + &asn_OP_NativeEnumerated, + asn_DEF_ReportIntervalMDT_tags_1, + sizeof(asn_DEF_ReportIntervalMDT_tags_1) + /sizeof(asn_DEF_ReportIntervalMDT_tags_1[0]), /* 1 */ + asn_DEF_ReportIntervalMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportIntervalMDT_tags_1) + /sizeof(asn_DEF_ReportIntervalMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportIntervalMDT_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportIntervalMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportIntervalMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportIntervalMDT.h new file mode 100644 index 0000000..775f7f5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportIntervalMDT.h @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportIntervalMDT_H_ +#define _ReportIntervalMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportIntervalMDT { + ReportIntervalMDT_ms120 = 0, + ReportIntervalMDT_ms240 = 1, + ReportIntervalMDT_ms480 = 2, + ReportIntervalMDT_ms640 = 3, + ReportIntervalMDT_ms1024 = 4, + ReportIntervalMDT_ms2048 = 5, + ReportIntervalMDT_ms5120 = 6, + ReportIntervalMDT_ms10240 = 7, + ReportIntervalMDT_min1 = 8, + ReportIntervalMDT_min6 = 9, + ReportIntervalMDT_min12 = 10, + ReportIntervalMDT_min30 = 11, + ReportIntervalMDT_min60 = 12 +} e_ReportIntervalMDT; + +/* ReportIntervalMDT */ +typedef long ReportIntervalMDT_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportIntervalMDT_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportIntervalMDT; +extern const asn_INTEGER_specifics_t asn_SPC_ReportIntervalMDT_specs_1; +asn_struct_free_f ReportIntervalMDT_free; +asn_struct_print_f ReportIntervalMDT_print; +asn_constr_check_f ReportIntervalMDT_constraint; +ber_type_decoder_f ReportIntervalMDT_decode_ber; +der_type_encoder_f ReportIntervalMDT_encode_der; +xer_type_decoder_f ReportIntervalMDT_decode_xer; +xer_type_encoder_f ReportIntervalMDT_encode_xer; +per_type_decoder_f ReportIntervalMDT_decode_uper; +per_type_encoder_f ReportIntervalMDT_encode_uper; +per_type_decoder_f ReportIntervalMDT_decode_aper; +per_type_encoder_f ReportIntervalMDT_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportIntervalMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicity.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicity.c new file mode 100644 index 0000000..681c84f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicity.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportingPeriodicity.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_ReportingPeriodicity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportingPeriodicity_value2enum_1[] = { + { 0, 15, "one-thousand-ms" }, + { 1, 15, "two-thousand-ms" }, + { 2, 16, "five-thousand-ms" }, + { 3, 15, "ten-thousand-ms" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportingPeriodicity_enum2value_1[] = { + 2, /* five-thousand-ms(2) */ + 0, /* one-thousand-ms(0) */ + 3, /* ten-thousand-ms(3) */ + 1 /* two-thousand-ms(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicity_specs_1 = { + asn_MAP_ReportingPeriodicity_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportingPeriodicity_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ReportingPeriodicity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicity = { + "ReportingPeriodicity", + "ReportingPeriodicity", + &asn_OP_NativeEnumerated, + asn_DEF_ReportingPeriodicity_tags_1, + sizeof(asn_DEF_ReportingPeriodicity_tags_1) + /sizeof(asn_DEF_ReportingPeriodicity_tags_1[0]), /* 1 */ + asn_DEF_ReportingPeriodicity_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportingPeriodicity_tags_1) + /sizeof(asn_DEF_ReportingPeriodicity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportingPeriodicity_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportingPeriodicity_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicity.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicity.h new file mode 100644 index 0000000..1f1305b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicity.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportingPeriodicity_H_ +#define _ReportingPeriodicity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportingPeriodicity { + ReportingPeriodicity_one_thousand_ms = 0, + ReportingPeriodicity_two_thousand_ms = 1, + ReportingPeriodicity_five_thousand_ms = 2, + ReportingPeriodicity_ten_thousand_ms = 3 + /* + * Enumeration is extensible + */ +} e_ReportingPeriodicity; + +/* ReportingPeriodicity */ +typedef long ReportingPeriodicity_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicity; +asn_struct_free_f ReportingPeriodicity_free; +asn_struct_print_f ReportingPeriodicity_print; +asn_constr_check_f ReportingPeriodicity_constraint; +ber_type_decoder_f ReportingPeriodicity_decode_ber; +der_type_encoder_f ReportingPeriodicity_encode_der; +xer_type_decoder_f ReportingPeriodicity_decode_xer; +xer_type_encoder_f ReportingPeriodicity_encode_xer; +per_type_decoder_f ReportingPeriodicity_decode_uper; +per_type_encoder_f ReportingPeriodicity_encode_uper; +per_type_decoder_f ReportingPeriodicity_decode_aper; +per_type_encoder_f ReportingPeriodicity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportingPeriodicity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c new file mode 100644 index 0000000..cc3d710 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportingPeriodicityCSIR.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportingPeriodicityCSIR_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportingPeriodicityCSIR_value2enum_1[] = { + { 0, 3, "ms5" }, + { 1, 4, "ms10" }, + { 2, 4, "ms20" }, + { 3, 4, "ms40" }, + { 4, 4, "ms80" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportingPeriodicityCSIR_enum2value_1[] = { + 1, /* ms10(1) */ + 2, /* ms20(2) */ + 3, /* ms40(3) */ + 0, /* ms5(0) */ + 4 /* ms80(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityCSIR_specs_1 = { + asn_MAP_ReportingPeriodicityCSIR_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportingPeriodicityCSIR_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ReportingPeriodicityCSIR_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityCSIR = { + "ReportingPeriodicityCSIR", + "ReportingPeriodicityCSIR", + &asn_OP_NativeEnumerated, + asn_DEF_ReportingPeriodicityCSIR_tags_1, + sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1[0]), /* 1 */ + asn_DEF_ReportingPeriodicityCSIR_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityCSIR_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportingPeriodicityCSIR_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportingPeriodicityCSIR_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h new file mode 100644 index 0000000..e3986cd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityCSIR.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportingPeriodicityCSIR_H_ +#define _ReportingPeriodicityCSIR_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportingPeriodicityCSIR { + ReportingPeriodicityCSIR_ms5 = 0, + ReportingPeriodicityCSIR_ms10 = 1, + ReportingPeriodicityCSIR_ms20 = 2, + ReportingPeriodicityCSIR_ms40 = 3, + ReportingPeriodicityCSIR_ms80 = 4 + /* + * Enumeration is extensible + */ +} e_ReportingPeriodicityCSIR; + +/* ReportingPeriodicityCSIR */ +typedef long ReportingPeriodicityCSIR_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportingPeriodicityCSIR_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityCSIR; +extern const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityCSIR_specs_1; +asn_struct_free_f ReportingPeriodicityCSIR_free; +asn_struct_print_f ReportingPeriodicityCSIR_print; +asn_constr_check_f ReportingPeriodicityCSIR_constraint; +ber_type_decoder_f ReportingPeriodicityCSIR_decode_ber; +der_type_encoder_f ReportingPeriodicityCSIR_encode_der; +xer_type_decoder_f ReportingPeriodicityCSIR_decode_xer; +xer_type_encoder_f ReportingPeriodicityCSIR_encode_xer; +per_type_decoder_f ReportingPeriodicityCSIR_decode_uper; +per_type_encoder_f ReportingPeriodicityCSIR_encode_uper; +per_type_decoder_f ReportingPeriodicityCSIR_decode_aper; +per_type_encoder_f ReportingPeriodicityCSIR_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportingPeriodicityCSIR_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c new file mode 100644 index 0000000..701d65a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.c @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReportingPeriodicityRSRPMR.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ReportingPeriodicityRSRPMR_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ReportingPeriodicityRSRPMR_value2enum_1[] = { + { 0, 17, "one-hundred-20-ms" }, + { 1, 17, "two-hundred-40-ms" }, + { 2, 18, "four-hundred-80-ms" }, + { 3, 17, "six-hundred-40-ms" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ReportingPeriodicityRSRPMR_enum2value_1[] = { + 2, /* four-hundred-80-ms(2) */ + 0, /* one-hundred-20-ms(0) */ + 3, /* six-hundred-40-ms(3) */ + 1 /* two-hundred-40-ms(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityRSRPMR_specs_1 = { + asn_MAP_ReportingPeriodicityRSRPMR_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ReportingPeriodicityRSRPMR_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ReportingPeriodicityRSRPMR_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityRSRPMR = { + "ReportingPeriodicityRSRPMR", + "ReportingPeriodicityRSRPMR", + &asn_OP_NativeEnumerated, + asn_DEF_ReportingPeriodicityRSRPMR_tags_1, + sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1[0]), /* 1 */ + asn_DEF_ReportingPeriodicityRSRPMR_tags_1, /* Same as above */ + sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1) + /sizeof(asn_DEF_ReportingPeriodicityRSRPMR_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ReportingPeriodicityRSRPMR_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ReportingPeriodicityRSRPMR_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h new file mode 100644 index 0000000..1917428 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReportingPeriodicityRSRPMR.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReportingPeriodicityRSRPMR_H_ +#define _ReportingPeriodicityRSRPMR_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ReportingPeriodicityRSRPMR { + ReportingPeriodicityRSRPMR_one_hundred_20_ms = 0, + ReportingPeriodicityRSRPMR_two_hundred_40_ms = 1, + ReportingPeriodicityRSRPMR_four_hundred_80_ms = 2, + ReportingPeriodicityRSRPMR_six_hundred_40_ms = 3 + /* + * Enumeration is extensible + */ +} e_ReportingPeriodicityRSRPMR; + +/* ReportingPeriodicityRSRPMR */ +typedef long ReportingPeriodicityRSRPMR_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ReportingPeriodicityRSRPMR_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ReportingPeriodicityRSRPMR; +extern const asn_INTEGER_specifics_t asn_SPC_ReportingPeriodicityRSRPMR_specs_1; +asn_struct_free_f ReportingPeriodicityRSRPMR_free; +asn_struct_print_f ReportingPeriodicityRSRPMR_print; +asn_constr_check_f ReportingPeriodicityRSRPMR_constraint; +ber_type_decoder_f ReportingPeriodicityRSRPMR_decode_ber; +der_type_encoder_f ReportingPeriodicityRSRPMR_encode_der; +xer_type_decoder_f ReportingPeriodicityRSRPMR_decode_xer; +xer_type_encoder_f ReportingPeriodicityRSRPMR_encode_xer; +per_type_decoder_f ReportingPeriodicityRSRPMR_decode_uper; +per_type_encoder_f ReportingPeriodicityRSRPMR_encode_uper; +per_type_decoder_f ReportingPeriodicityRSRPMR_decode_aper; +per_type_encoder_f ReportingPeriodicityRSRPMR_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReportingPeriodicityRSRPMR_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReservedSubframePattern.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReservedSubframePattern.c new file mode 100644 index 0000000..e39d57f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReservedSubframePattern.c @@ -0,0 +1,172 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ReservedSubframePattern.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_reservedSubframePattern_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 10 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_mBSFNControlRegionLength_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_reservedSubframePattern_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 10, 160 } /* (SIZE(10..160)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_mBSFNControlRegionLength_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ReservedSubframePattern_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern, subframeType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubframeType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subframeType" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern, reservedSubframePattern), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_reservedSubframePattern_constr_3, memb_reservedSubframePattern_constraint_1 }, + 0, 0, /* No default value */ + "reservedSubframePattern" + }, + { ATF_NOFLAGS, 0, offsetof(struct ReservedSubframePattern, mBSFNControlRegionLength), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_mBSFNControlRegionLength_constr_4, memb_mBSFNControlRegionLength_constraint_1 }, + 0, 0, /* No default value */ + "mBSFNControlRegionLength" + }, + { ATF_POINTER, 1, offsetof(struct ReservedSubframePattern, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P185, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ReservedSubframePattern_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_ReservedSubframePattern_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ReservedSubframePattern_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subframeType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reservedSubframePattern */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mBSFNControlRegionLength */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_specs_1 = { + sizeof(struct ReservedSubframePattern), + offsetof(struct ReservedSubframePattern, _asn_ctx), + asn_MAP_ReservedSubframePattern_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ReservedSubframePattern_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern = { + "ReservedSubframePattern", + "ReservedSubframePattern", + &asn_OP_SEQUENCE, + asn_DEF_ReservedSubframePattern_tags_1, + sizeof(asn_DEF_ReservedSubframePattern_tags_1) + /sizeof(asn_DEF_ReservedSubframePattern_tags_1[0]), /* 1 */ + asn_DEF_ReservedSubframePattern_tags_1, /* Same as above */ + sizeof(asn_DEF_ReservedSubframePattern_tags_1) + /sizeof(asn_DEF_ReservedSubframePattern_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ReservedSubframePattern_1, + 4, /* Elements count */ + &asn_SPC_ReservedSubframePattern_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReservedSubframePattern.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReservedSubframePattern.h new file mode 100644 index 0000000..8195fac --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ReservedSubframePattern.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ReservedSubframePattern_H_ +#define _ReservedSubframePattern_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SubframeType.h" +#include "BIT_STRING.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ReservedSubframePattern */ +typedef struct ReservedSubframePattern { + SubframeType_t subframeType; + BIT_STRING_t reservedSubframePattern; + long mBSFNControlRegionLength; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ReservedSubframePattern_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ReservedSubframePattern; +extern asn_SEQUENCE_specifics_t asn_SPC_ReservedSubframePattern_specs_1; +extern asn_TYPE_member_t asn_MBR_ReservedSubframePattern_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ReservedSubframePattern_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetRequest.c new file mode 100644 index 0000000..3770e87 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResetRequest.h" + +asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { + sizeof(struct ResetRequest), + offsetof(struct ResetRequest, _asn_ctx), + asn_MAP_ResetRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest = { + "ResetRequest", + "ResetRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_tags_1, + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + asn_DEF_ResetRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequest_1, + 1, /* Elements count */ + &asn_SPC_ResetRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetRequest.h new file mode 100644 index 0000000..4693fe1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResetRequest_H_ +#define _ResetRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetRequest */ +typedef struct ResetRequest { + ProtocolIE_Container_119P22_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetResponse.c new file mode 100644 index 0000000..0a4fd5f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResetResponse.h" + +asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { + sizeof(struct ResetResponse), + offsetof(struct ResetResponse, _asn_ctx), + asn_MAP_ResetResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse = { + "ResetResponse", + "ResetResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_tags_1, + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + asn_DEF_ResetResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponse_1, + 1, /* Elements count */ + &asn_SPC_ResetResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetResponse.h new file mode 100644 index 0000000..b4670bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResetResponse.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResetResponse_H_ +#define _ResetResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetResponse */ +typedef struct ResetResponse { + ProtocolIE_Container_119P23_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusFailure.c new file mode 100644 index 0000000..4cf93e8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusFailure.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P33, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_specs_1 = { + sizeof(struct ResourceStatusFailure), + offsetof(struct ResourceStatusFailure, _asn_ctx), + asn_MAP_ResourceStatusFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure = { + "ResourceStatusFailure", + "ResourceStatusFailure", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusFailure_tags_1, + sizeof(asn_DEF_ResourceStatusFailure_tags_1) + /sizeof(asn_DEF_ResourceStatusFailure_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusFailure_tags_1) + /sizeof(asn_DEF_ResourceStatusFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusFailure_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusFailure.h new file mode 100644 index 0000000..e8b93be --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusFailure_H_ +#define _ResourceStatusFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusFailure */ +typedef struct ResourceStatusFailure { + ProtocolIE_Container_119P33_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusRequest.c new file mode 100644 index 0000000..217a9f2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusRequest.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P31, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_specs_1 = { + sizeof(struct ResourceStatusRequest), + offsetof(struct ResourceStatusRequest, _asn_ctx), + asn_MAP_ResourceStatusRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest = { + "ResourceStatusRequest", + "ResourceStatusRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusRequest_tags_1, + sizeof(asn_DEF_ResourceStatusRequest_tags_1) + /sizeof(asn_DEF_ResourceStatusRequest_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusRequest_tags_1) + /sizeof(asn_DEF_ResourceStatusRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusRequest_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusRequest.h new file mode 100644 index 0000000..72d803c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusRequest_H_ +#define _ResourceStatusRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusRequest */ +typedef struct ResourceStatusRequest { + ProtocolIE_Container_119P31_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusResponse.c new file mode 100644 index 0000000..1c04af1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusResponse.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P32, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_specs_1 = { + sizeof(struct ResourceStatusResponse), + offsetof(struct ResourceStatusResponse, _asn_ctx), + asn_MAP_ResourceStatusResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse = { + "ResourceStatusResponse", + "ResourceStatusResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusResponse_tags_1, + sizeof(asn_DEF_ResourceStatusResponse_tags_1) + /sizeof(asn_DEF_ResourceStatusResponse_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusResponse_tags_1) + /sizeof(asn_DEF_ResourceStatusResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusResponse_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusResponse.h new file mode 100644 index 0000000..64ea1d6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusResponse.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusResponse_H_ +#define _ResourceStatusResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusResponse */ +typedef struct ResourceStatusResponse { + ProtocolIE_Container_119P32_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusUpdate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusUpdate.c new file mode 100644 index 0000000..b8f7c6a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusUpdate.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceStatusUpdate.h" + +asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResourceStatusUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P34, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResourceStatusUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResourceStatusUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_specs_1 = { + sizeof(struct ResourceStatusUpdate), + offsetof(struct ResourceStatusUpdate, _asn_ctx), + asn_MAP_ResourceStatusUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate = { + "ResourceStatusUpdate", + "ResourceStatusUpdate", + &asn_OP_SEQUENCE, + asn_DEF_ResourceStatusUpdate_tags_1, + sizeof(asn_DEF_ResourceStatusUpdate_tags_1) + /sizeof(asn_DEF_ResourceStatusUpdate_tags_1[0]), /* 1 */ + asn_DEF_ResourceStatusUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceStatusUpdate_tags_1) + /sizeof(asn_DEF_ResourceStatusUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResourceStatusUpdate_1, + 1, /* Elements count */ + &asn_SPC_ResourceStatusUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusUpdate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusUpdate.h new file mode 100644 index 0000000..8b66b81 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceStatusUpdate.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceStatusUpdate_H_ +#define _ResourceStatusUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResourceStatusUpdate */ +typedef struct ResourceStatusUpdate { + ProtocolIE_Container_119P34_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResourceStatusUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceStatusUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceType.c new file mode 100644 index 0000000..c2b2110 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceType.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResourceType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ResourceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ResourceType_value2enum_1[] = { + { 0, 14, "downlinknonCRS" }, + { 1, 3, "cRS" }, + { 2, 6, "uplink" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ResourceType_enum2value_1[] = { + 1, /* cRS(1) */ + 0, /* downlinknonCRS(0) */ + 2 /* uplink(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ResourceType_specs_1 = { + asn_MAP_ResourceType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ResourceType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ResourceType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ResourceType = { + "ResourceType", + "ResourceType", + &asn_OP_NativeEnumerated, + asn_DEF_ResourceType_tags_1, + sizeof(asn_DEF_ResourceType_tags_1) + /sizeof(asn_DEF_ResourceType_tags_1[0]), /* 1 */ + asn_DEF_ResourceType_tags_1, /* Same as above */ + sizeof(asn_DEF_ResourceType_tags_1) + /sizeof(asn_DEF_ResourceType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ResourceType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ResourceType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceType.h new file mode 100644 index 0000000..0dabaa8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResourceType.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResourceType_H_ +#define _ResourceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResourceType { + ResourceType_downlinknonCRS = 0, + ResourceType_cRS = 1, + ResourceType_uplink = 2 + /* + * Enumeration is extensible + */ +} e_ResourceType; + +/* ResourceType */ +typedef long ResourceType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ResourceType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ResourceType; +extern const asn_INTEGER_specifics_t asn_SPC_ResourceType_specs_1; +asn_struct_free_f ResourceType_free; +asn_struct_print_f ResourceType_print; +asn_constr_check_f ResourceType_constraint; +ber_type_decoder_f ResourceType_decode_ber; +der_type_encoder_f ResourceType_encode_der; +xer_type_decoder_f ResourceType_decode_xer; +xer_type_encoder_f ResourceType_encode_xer; +per_type_decoder_f ResourceType_decode_uper; +per_type_encoder_f ResourceType_encode_uper; +per_type_decoder_f ResourceType_decode_aper; +per_type_encoder_f ResourceType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResourceType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c new file mode 100644 index 0000000..b470a90 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EndcConfigUpdate.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EndcConfigUpdate_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EndcConfigUpdate_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcConfigUpdate, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P95, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcConfigUpdate, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P96, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EndcConfigUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EndcConfigUpdate_specs_1 = { + sizeof(struct RespondingNodeType_EndcConfigUpdate), + offsetof(struct RespondingNodeType_EndcConfigUpdate, _asn_ctx), + offsetof(struct RespondingNodeType_EndcConfigUpdate, present), + sizeof(((struct RespondingNodeType_EndcConfigUpdate *)0)->present), + asn_MAP_RespondingNodeType_EndcConfigUpdate_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcConfigUpdate = { + "RespondingNodeType-EndcConfigUpdate", + "RespondingNodeType-EndcConfigUpdate", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EndcConfigUpdate_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EndcConfigUpdate_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EndcConfigUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h new file mode 100644 index 0000000..8387dbc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcConfigUpdate.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EndcConfigUpdate_H_ +#define _RespondingNodeType_EndcConfigUpdate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EndcConfigUpdate_PR { + RespondingNodeType_EndcConfigUpdate_PR_NOTHING, /* No components present */ + RespondingNodeType_EndcConfigUpdate_PR_respond_eNB, + RespondingNodeType_EndcConfigUpdate_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EndcConfigUpdate_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EndcConfigUpdate */ +typedef struct RespondingNodeType_EndcConfigUpdate { + RespondingNodeType_EndcConfigUpdate_PR present; + union RespondingNodeType_EndcConfigUpdate_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EndcConfigUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcConfigUpdate; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EndcConfigUpdate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c new file mode 100644 index 0000000..6524f58 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EndcX2Removal.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EndcX2Removal_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EndcX2Removal_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Removal, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P115, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Removal, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P116, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EndcX2Removal_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EndcX2Removal_specs_1 = { + sizeof(struct RespondingNodeType_EndcX2Removal), + offsetof(struct RespondingNodeType_EndcX2Removal, _asn_ctx), + offsetof(struct RespondingNodeType_EndcX2Removal, present), + sizeof(((struct RespondingNodeType_EndcX2Removal *)0)->present), + asn_MAP_RespondingNodeType_EndcX2Removal_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Removal = { + "RespondingNodeType-EndcX2Removal", + "RespondingNodeType-EndcX2Removal", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EndcX2Removal_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EndcX2Removal_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EndcX2Removal_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h new file mode 100644 index 0000000..9ab6f35 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Removal.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EndcX2Removal_H_ +#define _RespondingNodeType_EndcX2Removal_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EndcX2Removal_PR { + RespondingNodeType_EndcX2Removal_PR_NOTHING, /* No components present */ + RespondingNodeType_EndcX2Removal_PR_respond_eNB, + RespondingNodeType_EndcX2Removal_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EndcX2Removal_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EndcX2Removal */ +typedef struct RespondingNodeType_EndcX2Removal { + RespondingNodeType_EndcX2Removal_PR present; + union RespondingNodeType_EndcX2Removal_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EndcX2Removal_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Removal; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EndcX2Removal_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c new file mode 100644 index 0000000..588098a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EndcX2Setup.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EndcX2Setup_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EndcX2Setup_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Setup, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P88, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EndcX2Setup, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P89, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EndcX2Setup_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EndcX2Setup_specs_1 = { + sizeof(struct RespondingNodeType_EndcX2Setup), + offsetof(struct RespondingNodeType_EndcX2Setup, _asn_ctx), + offsetof(struct RespondingNodeType_EndcX2Setup, present), + sizeof(((struct RespondingNodeType_EndcX2Setup *)0)->present), + asn_MAP_RespondingNodeType_EndcX2Setup_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Setup = { + "RespondingNodeType-EndcX2Setup", + "RespondingNodeType-EndcX2Setup", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EndcX2Setup_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EndcX2Setup_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EndcX2Setup_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h new file mode 100644 index 0000000..3c4fd6c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EndcX2Setup.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EndcX2Setup_H_ +#define _RespondingNodeType_EndcX2Setup_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EndcX2Setup_PR { + RespondingNodeType_EndcX2Setup_PR_NOTHING, /* No components present */ + RespondingNodeType_EndcX2Setup_PR_respond_eNB, + RespondingNodeType_EndcX2Setup_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EndcX2Setup_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EndcX2Setup */ +typedef struct RespondingNodeType_EndcX2Setup { + RespondingNodeType_EndcX2Setup_PR present; + union RespondingNodeType_EndcX2Setup_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EndcX2Setup_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EndcX2Setup; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EndcX2Setup_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c new file mode 100644 index 0000000..d8d7f1d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RespondingNodeType-EutranrCellResourceCoordination.h" + +#include "ProtocolIE-Container.h" +static asn_per_constraints_t asn_PER_type_RespondingNodeType_EutranrCellResourceCoordination_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RespondingNodeType_EutranrCellResourceCoordination_1[] = { + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, choice.respond_eNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P109, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-eNB" + }, + { ATF_POINTER, 0, offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, choice.respond_en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P110, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "respond-en-gNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_RespondingNodeType_EutranrCellResourceCoordination_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* respond-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* respond-en-gNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_RespondingNodeType_EutranrCellResourceCoordination_specs_1 = { + sizeof(struct RespondingNodeType_EutranrCellResourceCoordination), + offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, _asn_ctx), + offsetof(struct RespondingNodeType_EutranrCellResourceCoordination, present), + sizeof(((struct RespondingNodeType_EutranrCellResourceCoordination *)0)->present), + asn_MAP_RespondingNodeType_EutranrCellResourceCoordination_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EutranrCellResourceCoordination = { + "RespondingNodeType-EutranrCellResourceCoordination", + "RespondingNodeType-EutranrCellResourceCoordination", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_RespondingNodeType_EutranrCellResourceCoordination_constr_1, CHOICE_constraint }, + asn_MBR_RespondingNodeType_EutranrCellResourceCoordination_1, + 2, /* Elements count */ + &asn_SPC_RespondingNodeType_EutranrCellResourceCoordination_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h new file mode 100644 index 0000000..7655a37 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RespondingNodeType-EutranrCellResourceCoordination.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RespondingNodeType_EutranrCellResourceCoordination_H_ +#define _RespondingNodeType_EutranrCellResourceCoordination_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RespondingNodeType_EutranrCellResourceCoordination_PR { + RespondingNodeType_EutranrCellResourceCoordination_PR_NOTHING, /* No components present */ + RespondingNodeType_EutranrCellResourceCoordination_PR_respond_eNB, + RespondingNodeType_EutranrCellResourceCoordination_PR_respond_en_gNB + /* Extensions may appear below */ + +} RespondingNodeType_EutranrCellResourceCoordination_PR; + +/* Forward declarations */ +struct ProtocolIE_Container; + +/* RespondingNodeType-EutranrCellResourceCoordination */ +typedef struct RespondingNodeType_EutranrCellResourceCoordination { + RespondingNodeType_EutranrCellResourceCoordination_PR present; + union RespondingNodeType_EutranrCellResourceCoordination_u { + struct ProtocolIE_Container *respond_eNB; + struct ProtocolIE_Container *respond_en_gNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RespondingNodeType_EutranrCellResourceCoordination_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RespondingNodeType_EutranrCellResourceCoordination; + +#ifdef __cplusplus +} +#endif + +#endif /* _RespondingNodeType_EutranrCellResourceCoordination_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c new file mode 100644 index 0000000..82b3d80 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSeNBReconfComp-RejectByMeNBItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, cause), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 2, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, meNBtoSeNBContainer), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNBtoSeNBContainer" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P22, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNBtoSeNBContainer */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItem_specs_1 = { + sizeof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem), + offsetof(struct ResponseInformationSeNBReconfComp_RejectByMeNBItem, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ResponseInformationSeNBReconfComp_RejectByMeNBItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem = { + "ResponseInformationSeNBReconfComp-RejectByMeNBItem", + "ResponseInformationSeNBReconfComp-RejectByMeNBItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItem_1, + 3, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h new file mode 100644 index 0000000..1d8fdbc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-RejectByMeNBItem.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSeNBReconfComp_RejectByMeNBItem_H_ +#define _ResponseInformationSeNBReconfComp_RejectByMeNBItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Cause.h" +#include "MeNBtoSeNBContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSeNBReconfComp-RejectByMeNBItem */ +typedef struct ResponseInformationSeNBReconfComp_RejectByMeNBItem { + Cause_t cause; + MeNBtoSeNBContainer_t *meNBtoSeNBContainer; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_RejectByMeNBItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_RejectByMeNBItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_RejectByMeNBItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSeNBReconfComp_RejectByMeNBItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c new file mode 100644 index 0000000..9c27ca1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSeNBReconfComp-SuccessItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItem_1[] = { + { ATF_POINTER, 2, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItem, meNBtoSeNBContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeNBtoSeNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNBtoSeNBContainer" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSeNBReconfComp_SuccessItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P21, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* meNBtoSeNBContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItem_specs_1 = { + sizeof(struct ResponseInformationSeNBReconfComp_SuccessItem), + offsetof(struct ResponseInformationSeNBReconfComp_SuccessItem, _asn_ctx), + asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ResponseInformationSeNBReconfComp_SuccessItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem = { + "ResponseInformationSeNBReconfComp-SuccessItem", + "ResponseInformationSeNBReconfComp-SuccessItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1, + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_SuccessItem_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_SuccessItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h new file mode 100644 index 0000000..f9d38e8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp-SuccessItem.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSeNBReconfComp_SuccessItem_H_ +#define _ResponseInformationSeNBReconfComp_SuccessItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeNBtoSeNBContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSeNBReconfComp-SuccessItem */ +typedef struct ResponseInformationSeNBReconfComp_SuccessItem { + MeNBtoSeNBContainer_t *meNBtoSeNBContainer; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_SuccessItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_SuccessItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_SuccessItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSeNBReconfComp_SuccessItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c new file mode 100644 index 0000000..9d4ac6e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSeNBReconfComp.h" + +#include "ResponseInformationSeNBReconfComp-SuccessItem.h" +#include "ResponseInformationSeNBReconfComp-RejectByMeNBItem.h" +static asn_per_constraints_t asn_PER_type_ResponseInformationSeNBReconfComp_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ResponseInformationSeNBReconfComp_1[] = { + { ATF_POINTER, 0, offsetof(struct ResponseInformationSeNBReconfComp, choice.success), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSeNBReconfComp_SuccessItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "success" + }, + { ATF_POINTER, 0, offsetof(struct ResponseInformationSeNBReconfComp, choice.reject_by_MeNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reject-by-MeNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSeNBReconfComp_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* success */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reject-by-MeNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_ResponseInformationSeNBReconfComp_specs_1 = { + sizeof(struct ResponseInformationSeNBReconfComp), + offsetof(struct ResponseInformationSeNBReconfComp, _asn_ctx), + offsetof(struct ResponseInformationSeNBReconfComp, present), + sizeof(((struct ResponseInformationSeNBReconfComp *)0)->present), + asn_MAP_ResponseInformationSeNBReconfComp_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp = { + "ResponseInformationSeNBReconfComp", + "ResponseInformationSeNBReconfComp", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ResponseInformationSeNBReconfComp_constr_1, CHOICE_constraint }, + asn_MBR_ResponseInformationSeNBReconfComp_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSeNBReconfComp_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h new file mode 100644 index 0000000..448d50d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSeNBReconfComp.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSeNBReconfComp_H_ +#define _ResponseInformationSeNBReconfComp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResponseInformationSeNBReconfComp_PR { + ResponseInformationSeNBReconfComp_PR_NOTHING, /* No components present */ + ResponseInformationSeNBReconfComp_PR_success, + ResponseInformationSeNBReconfComp_PR_reject_by_MeNB + /* Extensions may appear below */ + +} ResponseInformationSeNBReconfComp_PR; + +/* Forward declarations */ +struct ResponseInformationSeNBReconfComp_SuccessItem; +struct ResponseInformationSeNBReconfComp_RejectByMeNBItem; + +/* ResponseInformationSeNBReconfComp */ +typedef struct ResponseInformationSeNBReconfComp { + ResponseInformationSeNBReconfComp_PR present; + union ResponseInformationSeNBReconfComp_u { + struct ResponseInformationSeNBReconfComp_SuccessItem *success; + struct ResponseInformationSeNBReconfComp_RejectByMeNBItem *reject_by_MeNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSeNBReconfComp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSeNBReconfComp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSeNBReconfComp_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c new file mode 100644 index 0000000..55901d8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSgNBReconfComp-RejectByMeNBItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem, cause), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P51, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cause */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItem_specs_1 = { + sizeof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem), + offsetof(struct ResponseInformationSgNBReconfComp_RejectByMeNBItem, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ResponseInformationSgNBReconfComp_RejectByMeNBItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem = { + "ResponseInformationSgNBReconfComp-RejectByMeNBItem", + "ResponseInformationSgNBReconfComp-RejectByMeNBItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItem_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h new file mode 100644 index 0000000..f1246cd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-RejectByMeNBItem.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSgNBReconfComp_RejectByMeNBItem_H_ +#define _ResponseInformationSgNBReconfComp_RejectByMeNBItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Cause.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSgNBReconfComp-RejectByMeNBItem */ +typedef struct ResponseInformationSgNBReconfComp_RejectByMeNBItem { + Cause_t cause; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_RejectByMeNBItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_RejectByMeNBItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_RejectByMeNBItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSgNBReconfComp_RejectByMeNBItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c new file mode 100644 index 0000000..5f372c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSgNBReconfComp-SuccessItem.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItem_1[] = { + { ATF_POINTER, 2, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItem, meNBtoSgNBContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MeNBtoSgNBContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNBtoSgNBContainer" + }, + { ATF_POINTER, 1, offsetof(struct ResponseInformationSgNBReconfComp_SuccessItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P50, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_oms_1[] = { 0, 1 }; +static const ber_tlv_tag_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* meNBtoSgNBContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItem_specs_1 = { + sizeof(struct ResponseInformationSgNBReconfComp_SuccessItem), + offsetof(struct ResponseInformationSgNBReconfComp_SuccessItem, _asn_ctx), + asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ResponseInformationSgNBReconfComp_SuccessItem_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem = { + "ResponseInformationSgNBReconfComp-SuccessItem", + "ResponseInformationSgNBReconfComp-SuccessItem", + &asn_OP_SEQUENCE, + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1, + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1, /* Same as above */ + sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1) + /sizeof(asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_SuccessItem_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_SuccessItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h new file mode 100644 index 0000000..21166e8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp-SuccessItem.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSgNBReconfComp_SuccessItem_H_ +#define _ResponseInformationSgNBReconfComp_SuccessItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "MeNBtoSgNBContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ResponseInformationSgNBReconfComp-SuccessItem */ +typedef struct ResponseInformationSgNBReconfComp_SuccessItem { + MeNBtoSgNBContainer_t *meNBtoSgNBContainer; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_SuccessItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem; +extern asn_SEQUENCE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_SuccessItem_specs_1; +extern asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_SuccessItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSgNBReconfComp_SuccessItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c new file mode 100644 index 0000000..f7274f7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResponseInformationSgNBReconfComp.h" + +#include "ResponseInformationSgNBReconfComp-SuccessItem.h" +#include "ResponseInformationSgNBReconfComp-RejectByMeNBItem.h" +static asn_per_constraints_t asn_PER_type_ResponseInformationSgNBReconfComp_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ResponseInformationSgNBReconfComp_1[] = { + { ATF_POINTER, 0, offsetof(struct ResponseInformationSgNBReconfComp, choice.success_SgNBReconfComp), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSgNBReconfComp_SuccessItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "success-SgNBReconfComp" + }, + { ATF_POINTER, 0, offsetof(struct ResponseInformationSgNBReconfComp, choice.reject_by_MeNB_SgNBReconfComp), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ResponseInformationSgNBReconfComp_RejectByMeNBItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "reject-by-MeNB-SgNBReconfComp" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ResponseInformationSgNBReconfComp_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* success-SgNBReconfComp */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reject-by-MeNB-SgNBReconfComp */ +}; +static asn_CHOICE_specifics_t asn_SPC_ResponseInformationSgNBReconfComp_specs_1 = { + sizeof(struct ResponseInformationSgNBReconfComp), + offsetof(struct ResponseInformationSgNBReconfComp, _asn_ctx), + offsetof(struct ResponseInformationSgNBReconfComp, present), + sizeof(((struct ResponseInformationSgNBReconfComp *)0)->present), + asn_MAP_ResponseInformationSgNBReconfComp_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp = { + "ResponseInformationSgNBReconfComp", + "ResponseInformationSgNBReconfComp", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ResponseInformationSgNBReconfComp_constr_1, CHOICE_constraint }, + asn_MBR_ResponseInformationSgNBReconfComp_1, + 2, /* Elements count */ + &asn_SPC_ResponseInformationSgNBReconfComp_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h new file mode 100644 index 0000000..5d1de6a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResponseInformationSgNBReconfComp.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResponseInformationSgNBReconfComp_H_ +#define _ResponseInformationSgNBReconfComp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResponseInformationSgNBReconfComp_PR { + ResponseInformationSgNBReconfComp_PR_NOTHING, /* No components present */ + ResponseInformationSgNBReconfComp_PR_success_SgNBReconfComp, + ResponseInformationSgNBReconfComp_PR_reject_by_MeNB_SgNBReconfComp + /* Extensions may appear below */ + +} ResponseInformationSgNBReconfComp_PR; + +/* Forward declarations */ +struct ResponseInformationSgNBReconfComp_SuccessItem; +struct ResponseInformationSgNBReconfComp_RejectByMeNBItem; + +/* ResponseInformationSgNBReconfComp */ +typedef struct ResponseInformationSgNBReconfComp { + ResponseInformationSgNBReconfComp_PR present; + union ResponseInformationSgNBReconfComp_u { + struct ResponseInformationSgNBReconfComp_SuccessItem *success_SgNBReconfComp; + struct ResponseInformationSgNBReconfComp_RejectByMeNBItem *reject_by_MeNB_SgNBReconfComp; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResponseInformationSgNBReconfComp_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResponseInformationSgNBReconfComp; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResponseInformationSgNBReconfComp_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResumeID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResumeID.c new file mode 100644 index 0000000..7c43cfd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResumeID.c @@ -0,0 +1,157 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ResumeID.h" + +static int +memb_non_truncated_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_truncated_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_non_truncated_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_truncated_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24, 24 } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ResumeID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ResumeID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResumeID, choice.non_truncated), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_non_truncated_constr_2, memb_non_truncated_constraint_1 }, + 0, 0, /* No default value */ + "non-truncated" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResumeID, choice.truncated), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_truncated_constr_3, memb_truncated_constraint_1 }, + 0, 0, /* No default value */ + "truncated" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ResumeID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* non-truncated */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* truncated */ +}; +asn_CHOICE_specifics_t asn_SPC_ResumeID_specs_1 = { + sizeof(struct ResumeID), + offsetof(struct ResumeID, _asn_ctx), + offsetof(struct ResumeID, present), + sizeof(((struct ResumeID *)0)->present), + asn_MAP_ResumeID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ResumeID = { + "ResumeID", + "ResumeID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ResumeID_constr_1, CHOICE_constraint }, + asn_MBR_ResumeID_1, + 2, /* Elements count */ + &asn_SPC_ResumeID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResumeID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResumeID.h new file mode 100644 index 0000000..246e315 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ResumeID.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ResumeID_H_ +#define _ResumeID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ResumeID_PR { + ResumeID_PR_NOTHING, /* No components present */ + ResumeID_PR_non_truncated, + ResumeID_PR_truncated + /* Extensions may appear below */ + +} ResumeID_PR; + +/* ResumeID */ +typedef struct ResumeID { + ResumeID_PR present; + union ResumeID_u { + BIT_STRING_t non_truncated; + BIT_STRING_t truncated; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResumeID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResumeID; +extern asn_CHOICE_specifics_t asn_SPC_ResumeID_specs_1; +extern asn_TYPE_member_t asn_MBR_ResumeID_1[2]; +extern asn_per_constraints_t asn_PER_type_ResumeID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResumeID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextFailure.c new file mode 100644 index 0000000..73719b3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RetrieveUEContextFailure.h" + +static asn_TYPE_member_t asn_MBR_RetrieveUEContextFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P63, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextFailure_specs_1 = { + sizeof(struct RetrieveUEContextFailure), + offsetof(struct RetrieveUEContextFailure, _asn_ctx), + asn_MAP_RetrieveUEContextFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure = { + "RetrieveUEContextFailure", + "RetrieveUEContextFailure", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextFailure_tags_1, + sizeof(asn_DEF_RetrieveUEContextFailure_tags_1) + /sizeof(asn_DEF_RetrieveUEContextFailure_tags_1[0]), /* 1 */ + asn_DEF_RetrieveUEContextFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextFailure_tags_1) + /sizeof(asn_DEF_RetrieveUEContextFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextFailure_1, + 1, /* Elements count */ + &asn_SPC_RetrieveUEContextFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextFailure.h new file mode 100644 index 0000000..35360be --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RetrieveUEContextFailure_H_ +#define _RetrieveUEContextFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RetrieveUEContextFailure */ +typedef struct RetrieveUEContextFailure { + ProtocolIE_Container_119P63_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _RetrieveUEContextFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextRequest.c new file mode 100644 index 0000000..43bcaf3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RetrieveUEContextRequest.h" + +static asn_TYPE_member_t asn_MBR_RetrieveUEContextRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P61, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextRequest_specs_1 = { + sizeof(struct RetrieveUEContextRequest), + offsetof(struct RetrieveUEContextRequest, _asn_ctx), + asn_MAP_RetrieveUEContextRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest = { + "RetrieveUEContextRequest", + "RetrieveUEContextRequest", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextRequest_tags_1, + sizeof(asn_DEF_RetrieveUEContextRequest_tags_1) + /sizeof(asn_DEF_RetrieveUEContextRequest_tags_1[0]), /* 1 */ + asn_DEF_RetrieveUEContextRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextRequest_tags_1) + /sizeof(asn_DEF_RetrieveUEContextRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextRequest_1, + 1, /* Elements count */ + &asn_SPC_RetrieveUEContextRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextRequest.h new file mode 100644 index 0000000..ebaef24 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RetrieveUEContextRequest_H_ +#define _RetrieveUEContextRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RetrieveUEContextRequest */ +typedef struct RetrieveUEContextRequest { + ProtocolIE_Container_119P61_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _RetrieveUEContextRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextResponse.c new file mode 100644 index 0000000..6c421c6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "RetrieveUEContextResponse.h" + +static asn_TYPE_member_t asn_MBR_RetrieveUEContextResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RetrieveUEContextResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P62, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RetrieveUEContextResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RetrieveUEContextResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEContextResponse_specs_1 = { + sizeof(struct RetrieveUEContextResponse), + offsetof(struct RetrieveUEContextResponse, _asn_ctx), + asn_MAP_RetrieveUEContextResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse = { + "RetrieveUEContextResponse", + "RetrieveUEContextResponse", + &asn_OP_SEQUENCE, + asn_DEF_RetrieveUEContextResponse_tags_1, + sizeof(asn_DEF_RetrieveUEContextResponse_tags_1) + /sizeof(asn_DEF_RetrieveUEContextResponse_tags_1[0]), /* 1 */ + asn_DEF_RetrieveUEContextResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RetrieveUEContextResponse_tags_1) + /sizeof(asn_DEF_RetrieveUEContextResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RetrieveUEContextResponse_1, + 1, /* Elements count */ + &asn_SPC_RetrieveUEContextResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextResponse.h new file mode 100644 index 0000000..17b784d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/RetrieveUEContextResponse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _RetrieveUEContextResponse_H_ +#define _RetrieveUEContextResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* RetrieveUEContextResponse */ +typedef struct RetrieveUEContextResponse { + ProtocolIE_Container_119P62_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RetrieveUEContextResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEContextResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _RetrieveUEContextResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/S1TNLLoadIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/S1TNLLoadIndicator.c new file mode 100644 index 0000000..2c51234 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/S1TNLLoadIndicator.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "S1TNLLoadIndicator.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator, dLS1TNLLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dLS1TNLLoadIndicator" + }, + { ATF_NOFLAGS, 0, offsetof(struct S1TNLLoadIndicator, uLS1TNLLoadIndicator), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LoadIndicator, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLS1TNLLoadIndicator" + }, + { ATF_POINTER, 1, offsetof(struct S1TNLLoadIndicator, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P189, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_S1TNLLoadIndicator_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_S1TNLLoadIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_S1TNLLoadIndicator_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dLS1TNLLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLS1TNLLoadIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_specs_1 = { + sizeof(struct S1TNLLoadIndicator), + offsetof(struct S1TNLLoadIndicator, _asn_ctx), + asn_MAP_S1TNLLoadIndicator_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_S1TNLLoadIndicator_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator = { + "S1TNLLoadIndicator", + "S1TNLLoadIndicator", + &asn_OP_SEQUENCE, + asn_DEF_S1TNLLoadIndicator_tags_1, + sizeof(asn_DEF_S1TNLLoadIndicator_tags_1) + /sizeof(asn_DEF_S1TNLLoadIndicator_tags_1[0]), /* 1 */ + asn_DEF_S1TNLLoadIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_S1TNLLoadIndicator_tags_1) + /sizeof(asn_DEF_S1TNLLoadIndicator_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_S1TNLLoadIndicator_1, + 3, /* Elements count */ + &asn_SPC_S1TNLLoadIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/S1TNLLoadIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/S1TNLLoadIndicator.h new file mode 100644 index 0000000..fe4ee16 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/S1TNLLoadIndicator.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _S1TNLLoadIndicator_H_ +#define _S1TNLLoadIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "LoadIndicator.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* S1TNLLoadIndicator */ +typedef struct S1TNLLoadIndicator { + LoadIndicator_t dLS1TNLLoadIndicator; + LoadIndicator_t uLS1TNLLoadIndicator; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} S1TNLLoadIndicator_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_S1TNLLoadIndicator; +extern asn_SEQUENCE_specifics_t asn_SPC_S1TNLLoadIndicator_specs_1; +extern asn_TYPE_member_t asn_MBR_S1TNLLoadIndicator_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _S1TNLLoadIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGChangeIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGChangeIndication.c new file mode 100644 index 0000000..95cc436 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGChangeIndication.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SCGChangeIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SCGChangeIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SCGChangeIndication_value2enum_1[] = { + { 0, 19, "pDCPCountWrapAround" }, + { 1, 12, "pSCellChange" }, + { 2, 5, "other" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SCGChangeIndication_enum2value_1[] = { + 2, /* other(2) */ + 0, /* pDCPCountWrapAround(0) */ + 1 /* pSCellChange(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SCGChangeIndication_specs_1 = { + asn_MAP_SCGChangeIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SCGChangeIndication_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SCGChangeIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SCGChangeIndication = { + "SCGChangeIndication", + "SCGChangeIndication", + &asn_OP_NativeEnumerated, + asn_DEF_SCGChangeIndication_tags_1, + sizeof(asn_DEF_SCGChangeIndication_tags_1) + /sizeof(asn_DEF_SCGChangeIndication_tags_1[0]), /* 1 */ + asn_DEF_SCGChangeIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SCGChangeIndication_tags_1) + /sizeof(asn_DEF_SCGChangeIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SCGChangeIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SCGChangeIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGChangeIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGChangeIndication.h new file mode 100644 index 0000000..a37ee51 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGChangeIndication.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SCGChangeIndication_H_ +#define _SCGChangeIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SCGChangeIndication { + SCGChangeIndication_pDCPCountWrapAround = 0, + SCGChangeIndication_pSCellChange = 1, + SCGChangeIndication_other = 2 + /* + * Enumeration is extensible + */ +} e_SCGChangeIndication; + +/* SCGChangeIndication */ +typedef long SCGChangeIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SCGChangeIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SCGChangeIndication; +extern const asn_INTEGER_specifics_t asn_SPC_SCGChangeIndication_specs_1; +asn_struct_free_f SCGChangeIndication_free; +asn_struct_print_f SCGChangeIndication_print; +asn_constr_check_f SCGChangeIndication_constraint; +ber_type_decoder_f SCGChangeIndication_decode_ber; +der_type_encoder_f SCGChangeIndication_encode_der; +xer_type_decoder_f SCGChangeIndication_decode_xer; +xer_type_encoder_f SCGChangeIndication_encode_xer; +per_type_decoder_f SCGChangeIndication_decode_uper; +per_type_encoder_f SCGChangeIndication_encode_uper; +per_type_decoder_f SCGChangeIndication_decode_aper; +per_type_encoder_f SCGChangeIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SCGChangeIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGConfigurationQuery.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGConfigurationQuery.c new file mode 100644 index 0000000..f8572a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGConfigurationQuery.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SCGConfigurationQuery.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SCGConfigurationQuery_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SCGConfigurationQuery_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SCGConfigurationQuery_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SCGConfigurationQuery_specs_1 = { + asn_MAP_SCGConfigurationQuery_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SCGConfigurationQuery_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SCGConfigurationQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SCGConfigurationQuery = { + "SCGConfigurationQuery", + "SCGConfigurationQuery", + &asn_OP_NativeEnumerated, + asn_DEF_SCGConfigurationQuery_tags_1, + sizeof(asn_DEF_SCGConfigurationQuery_tags_1) + /sizeof(asn_DEF_SCGConfigurationQuery_tags_1[0]), /* 1 */ + asn_DEF_SCGConfigurationQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_SCGConfigurationQuery_tags_1) + /sizeof(asn_DEF_SCGConfigurationQuery_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SCGConfigurationQuery_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SCGConfigurationQuery_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGConfigurationQuery.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGConfigurationQuery.h new file mode 100644 index 0000000..6a9c71b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SCGConfigurationQuery.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SCGConfigurationQuery_H_ +#define _SCGConfigurationQuery_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SCGConfigurationQuery { + SCGConfigurationQuery_true = 0 + /* + * Enumeration is extensible + */ +} e_SCGConfigurationQuery; + +/* SCGConfigurationQuery */ +typedef long SCGConfigurationQuery_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SCGConfigurationQuery_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SCGConfigurationQuery; +extern const asn_INTEGER_specifics_t asn_SPC_SCGConfigurationQuery_specs_1; +asn_struct_free_f SCGConfigurationQuery_free; +asn_struct_print_f SCGConfigurationQuery_print; +asn_constr_check_f SCGConfigurationQuery_constraint; +ber_type_decoder_f SCGConfigurationQuery_decode_ber; +der_type_encoder_f SCGConfigurationQuery_encode_der; +xer_type_decoder_f SCGConfigurationQuery_decode_xer; +xer_type_encoder_f SCGConfigurationQuery_encode_xer; +per_type_decoder_f SCGConfigurationQuery_decode_uper; +per_type_encoder_f SCGConfigurationQuery_encode_uper; +per_type_decoder_f SCGConfigurationQuery_decode_aper; +per_type_encoder_f SCGConfigurationQuery_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SCGConfigurationQuery_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c new file mode 100644 index 0000000..e3baece --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SGNB-Addition-Trigger-Ind.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SGNB_Addition_Trigger_Ind_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SGNB_Addition_Trigger_Ind_value2enum_1[] = { + { 0, 9, "sn-change" }, + { 1, 12, "inter-eNB-HO" }, + { 2, 12, "intra-eNB-HO" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SGNB_Addition_Trigger_Ind_enum2value_1[] = { + 1, /* inter-eNB-HO(1) */ + 2, /* intra-eNB-HO(2) */ + 0 /* sn-change(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SGNB_Addition_Trigger_Ind_specs_1 = { + asn_MAP_SGNB_Addition_Trigger_Ind_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SGNB_Addition_Trigger_Ind_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SGNB_Addition_Trigger_Ind_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SGNB_Addition_Trigger_Ind = { + "SGNB-Addition-Trigger-Ind", + "SGNB-Addition-Trigger-Ind", + &asn_OP_NativeEnumerated, + asn_DEF_SGNB_Addition_Trigger_Ind_tags_1, + sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1) + /sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1[0]), /* 1 */ + asn_DEF_SGNB_Addition_Trigger_Ind_tags_1, /* Same as above */ + sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1) + /sizeof(asn_DEF_SGNB_Addition_Trigger_Ind_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SGNB_Addition_Trigger_Ind_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SGNB_Addition_Trigger_Ind_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h new file mode 100644 index 0000000..df10820 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SGNB-Addition-Trigger-Ind.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SGNB_Addition_Trigger_Ind_H_ +#define _SGNB_Addition_Trigger_Ind_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SGNB_Addition_Trigger_Ind { + SGNB_Addition_Trigger_Ind_sn_change = 0, + SGNB_Addition_Trigger_Ind_inter_eNB_HO = 1, + SGNB_Addition_Trigger_Ind_intra_eNB_HO = 2 + /* + * Enumeration is extensible + */ +} e_SGNB_Addition_Trigger_Ind; + +/* SGNB-Addition-Trigger-Ind */ +typedef long SGNB_Addition_Trigger_Ind_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SGNB_Addition_Trigger_Ind_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SGNB_Addition_Trigger_Ind; +extern const asn_INTEGER_specifics_t asn_SPC_SGNB_Addition_Trigger_Ind_specs_1; +asn_struct_free_f SGNB_Addition_Trigger_Ind_free; +asn_struct_print_f SGNB_Addition_Trigger_Ind_print; +asn_constr_check_f SGNB_Addition_Trigger_Ind_constraint; +ber_type_decoder_f SGNB_Addition_Trigger_Ind_decode_ber; +der_type_encoder_f SGNB_Addition_Trigger_Ind_encode_der; +xer_type_decoder_f SGNB_Addition_Trigger_Ind_decode_xer; +xer_type_encoder_f SGNB_Addition_Trigger_Ind_encode_xer; +per_type_decoder_f SGNB_Addition_Trigger_Ind_decode_uper; +per_type_encoder_f SGNB_Addition_Trigger_Ind_encode_uper; +per_type_decoder_f SGNB_Addition_Trigger_Ind_decode_aper; +per_type_encoder_f SGNB_Addition_Trigger_Ind_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SGNB_Addition_Trigger_Ind_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c new file mode 100644 index 0000000..47f432b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SIPTOBearerDeactivationIndication.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SIPTOBearerDeactivationIndication_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SIPTOBearerDeactivationIndication_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SIPTOBearerDeactivationIndication_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SIPTOBearerDeactivationIndication_specs_1 = { + asn_MAP_SIPTOBearerDeactivationIndication_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SIPTOBearerDeactivationIndication_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SIPTOBearerDeactivationIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SIPTOBearerDeactivationIndication = { + "SIPTOBearerDeactivationIndication", + "SIPTOBearerDeactivationIndication", + &asn_OP_NativeEnumerated, + asn_DEF_SIPTOBearerDeactivationIndication_tags_1, + sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1) + /sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1[0]), /* 1 */ + asn_DEF_SIPTOBearerDeactivationIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1) + /sizeof(asn_DEF_SIPTOBearerDeactivationIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SIPTOBearerDeactivationIndication_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SIPTOBearerDeactivationIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h new file mode 100644 index 0000000..b9bb0b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SIPTOBearerDeactivationIndication.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SIPTOBearerDeactivationIndication_H_ +#define _SIPTOBearerDeactivationIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SIPTOBearerDeactivationIndication { + SIPTOBearerDeactivationIndication_true = 0 + /* + * Enumeration is extensible + */ +} e_SIPTOBearerDeactivationIndication; + +/* SIPTOBearerDeactivationIndication */ +typedef long SIPTOBearerDeactivationIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SIPTOBearerDeactivationIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SIPTOBearerDeactivationIndication; +extern const asn_INTEGER_specifics_t asn_SPC_SIPTOBearerDeactivationIndication_specs_1; +asn_struct_free_f SIPTOBearerDeactivationIndication_free; +asn_struct_print_f SIPTOBearerDeactivationIndication_print; +asn_constr_check_f SIPTOBearerDeactivationIndication_constraint; +ber_type_decoder_f SIPTOBearerDeactivationIndication_decode_ber; +der_type_encoder_f SIPTOBearerDeactivationIndication_encode_der; +xer_type_decoder_f SIPTOBearerDeactivationIndication_decode_xer; +xer_type_encoder_f SIPTOBearerDeactivationIndication_encode_xer; +per_type_decoder_f SIPTOBearerDeactivationIndication_decode_uper; +per_type_encoder_f SIPTOBearerDeactivationIndication_encode_uper; +per_type_decoder_f SIPTOBearerDeactivationIndication_decode_aper; +per_type_encoder_f SIPTOBearerDeactivationIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SIPTOBearerDeactivationIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SNStatusTransfer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SNStatusTransfer.c new file mode 100644 index 0000000..04ff265 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SNStatusTransfer.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SNStatusTransfer.h" + +static asn_TYPE_member_t asn_MBR_SNStatusTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SNStatusTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SNStatusTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SNStatusTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SNStatusTransfer_specs_1 = { + sizeof(struct SNStatusTransfer), + offsetof(struct SNStatusTransfer, _asn_ctx), + asn_MAP_SNStatusTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer = { + "SNStatusTransfer", + "SNStatusTransfer", + &asn_OP_SEQUENCE, + asn_DEF_SNStatusTransfer_tags_1, + sizeof(asn_DEF_SNStatusTransfer_tags_1) + /sizeof(asn_DEF_SNStatusTransfer_tags_1[0]), /* 1 */ + asn_DEF_SNStatusTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_SNStatusTransfer_tags_1) + /sizeof(asn_DEF_SNStatusTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SNStatusTransfer_1, + 1, /* Elements count */ + &asn_SPC_SNStatusTransfer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SNStatusTransfer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SNStatusTransfer.h new file mode 100644 index 0000000..fe49f67 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SNStatusTransfer.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SNStatusTransfer_H_ +#define _SNStatusTransfer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SNStatusTransfer */ +typedef struct SNStatusTransfer { + ProtocolIE_Container_119P18_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SNStatusTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SNStatusTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _SNStatusTransfer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRBType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRBType.c new file mode 100644 index 0000000..4fd7d12 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRBType.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SRBType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SRBType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SRBType_value2enum_1[] = { + { 0, 4, "srb1" }, + { 1, 4, "srb2" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SRBType_enum2value_1[] = { + 0, /* srb1(0) */ + 1 /* srb2(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SRBType_specs_1 = { + asn_MAP_SRBType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SRBType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SRBType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SRBType = { + "SRBType", + "SRBType", + &asn_OP_NativeEnumerated, + asn_DEF_SRBType_tags_1, + sizeof(asn_DEF_SRBType_tags_1) + /sizeof(asn_DEF_SRBType_tags_1[0]), /* 1 */ + asn_DEF_SRBType_tags_1, /* Same as above */ + sizeof(asn_DEF_SRBType_tags_1) + /sizeof(asn_DEF_SRBType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SRBType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SRBType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRBType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRBType.h new file mode 100644 index 0000000..649577c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRBType.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SRBType_H_ +#define _SRBType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SRBType { + SRBType_srb1 = 0, + SRBType_srb2 = 1 + /* + * Enumeration is extensible + */ +} e_SRBType; + +/* SRBType */ +typedef long SRBType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SRBType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SRBType; +extern const asn_INTEGER_specifics_t asn_SPC_SRBType_specs_1; +asn_struct_free_f SRBType_free; +asn_struct_print_f SRBType_print; +asn_constr_check_f SRBType_constraint; +ber_type_decoder_f SRBType_decode_ber; +der_type_encoder_f SRBType_encode_der; +xer_type_decoder_f SRBType_decode_xer; +xer_type_encoder_f SRBType_encode_xer; +per_type_decoder_f SRBType_decode_uper; +per_type_encoder_f SRBType_encode_uper; +per_type_decoder_f SRBType_decode_aper; +per_type_encoder_f SRBType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SRBType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRVCCOperationPossible.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRVCCOperationPossible.c new file mode 100644 index 0000000..398ff14 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRVCCOperationPossible.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SRVCCOperationPossible.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SRVCCOperationPossible_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SRVCCOperationPossible_value2enum_1[] = { + { 0, 8, "possible" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SRVCCOperationPossible_enum2value_1[] = { + 0 /* possible(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SRVCCOperationPossible_specs_1 = { + asn_MAP_SRVCCOperationPossible_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SRVCCOperationPossible_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SRVCCOperationPossible_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SRVCCOperationPossible = { + "SRVCCOperationPossible", + "SRVCCOperationPossible", + &asn_OP_NativeEnumerated, + asn_DEF_SRVCCOperationPossible_tags_1, + sizeof(asn_DEF_SRVCCOperationPossible_tags_1) + /sizeof(asn_DEF_SRVCCOperationPossible_tags_1[0]), /* 1 */ + asn_DEF_SRVCCOperationPossible_tags_1, /* Same as above */ + sizeof(asn_DEF_SRVCCOperationPossible_tags_1) + /sizeof(asn_DEF_SRVCCOperationPossible_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SRVCCOperationPossible_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SRVCCOperationPossible_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRVCCOperationPossible.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRVCCOperationPossible.h new file mode 100644 index 0000000..5599507 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SRVCCOperationPossible.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SRVCCOperationPossible_H_ +#define _SRVCCOperationPossible_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SRVCCOperationPossible { + SRVCCOperationPossible_possible = 0 + /* + * Enumeration is extensible + */ +} e_SRVCCOperationPossible; + +/* SRVCCOperationPossible */ +typedef long SRVCCOperationPossible_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SRVCCOperationPossible_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SRVCCOperationPossible; +extern const asn_INTEGER_specifics_t asn_SPC_SRVCCOperationPossible_specs_1; +asn_struct_free_f SRVCCOperationPossible_free; +asn_struct_print_f SRVCCOperationPossible_print; +asn_constr_check_f SRVCCOperationPossible_constraint; +ber_type_decoder_f SRVCCOperationPossible_decode_ber; +der_type_encoder_f SRVCCOperationPossible_encode_der; +xer_type_decoder_f SRVCCOperationPossible_decode_xer; +xer_type_encoder_f SRVCCOperationPossible_encode_xer; +per_type_decoder_f SRVCCOperationPossible_decode_uper; +per_type_encoder_f SRVCCOperationPossible_encode_uper; +per_type_decoder_f SRVCCOperationPossible_decode_aper; +per_type_encoder_f SRVCCOperationPossible_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SRVCCOperationPossible_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SULInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SULInformation.c new file mode 100644 index 0000000..91b28fd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SULInformation.c @@ -0,0 +1,126 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SULInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_sUL_ARFCN_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3279165)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_sUL_ARFCN_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 22, -1, 0, 3279165 } /* (0..3279165) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SULInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SULInformation, sUL_ARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_sUL_ARFCN_constr_2, memb_sUL_ARFCN_constraint_1 }, + 0, 0, /* No default value */ + "sUL-ARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct SULInformation, sUL_TxBW), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sUL-TxBW" + }, + { ATF_POINTER, 1, offsetof(struct SULInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P199, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SULInformation_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_SULInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SULInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sUL-ARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sUL-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SULInformation_specs_1 = { + sizeof(struct SULInformation), + offsetof(struct SULInformation, _asn_ctx), + asn_MAP_SULInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SULInformation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SULInformation = { + "SULInformation", + "SULInformation", + &asn_OP_SEQUENCE, + asn_DEF_SULInformation_tags_1, + sizeof(asn_DEF_SULInformation_tags_1) + /sizeof(asn_DEF_SULInformation_tags_1[0]), /* 1 */ + asn_DEF_SULInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SULInformation_tags_1) + /sizeof(asn_DEF_SULInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SULInformation_1, + 3, /* Elements count */ + &asn_SPC_SULInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SULInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SULInformation.h new file mode 100644 index 0000000..3f6f007 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SULInformation.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SULInformation_H_ +#define _SULInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "NR-TxBW.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SULInformation */ +typedef struct SULInformation { + long sUL_ARFCN; + NR_TxBW_t sUL_TxBW; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SULInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SULInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_SULInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_SULInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SULInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ScheduledCommunicationTime.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ScheduledCommunicationTime.c new file mode 100644 index 0000000..61956a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ScheduledCommunicationTime.c @@ -0,0 +1,202 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ScheduledCommunicationTime.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_dayofWeek_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_timeofDayStart_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 86399)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_timeofDayEnd_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 86399)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_dayofWeek_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 7, 7 } /* (SIZE(7..7)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_timeofDayStart_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 17, -1, 0, 86399 } /* (0..86399,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_timeofDayEnd_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 17, -1, 0, 86399 } /* (0..86399,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_1[] = { + { ATF_POINTER, 4, offsetof(struct ScheduledCommunicationTime, dayofWeek), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_dayofWeek_constr_2, memb_dayofWeek_constraint_1 }, + 0, 0, /* No default value */ + "dayofWeek" + }, + { ATF_POINTER, 3, offsetof(struct ScheduledCommunicationTime, timeofDayStart), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_timeofDayStart_constr_3, memb_timeofDayStart_constraint_1 }, + 0, 0, /* No default value */ + "timeofDayStart" + }, + { ATF_POINTER, 2, offsetof(struct ScheduledCommunicationTime, timeofDayEnd), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_timeofDayEnd_constr_4, memb_timeofDayEnd_constraint_1 }, + 0, 0, /* No default value */ + "timeofDayEnd" + }, + { ATF_POINTER, 1, offsetof(struct ScheduledCommunicationTime, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P197, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ScheduledCommunicationTime_oms_1[] = { 0, 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ScheduledCommunicationTime_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ScheduledCommunicationTime_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dayofWeek */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeofDayStart */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeofDayEnd */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_specs_1 = { + sizeof(struct ScheduledCommunicationTime), + offsetof(struct ScheduledCommunicationTime, _asn_ctx), + asn_MAP_ScheduledCommunicationTime_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ScheduledCommunicationTime_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime = { + "ScheduledCommunicationTime", + "ScheduledCommunicationTime", + &asn_OP_SEQUENCE, + asn_DEF_ScheduledCommunicationTime_tags_1, + sizeof(asn_DEF_ScheduledCommunicationTime_tags_1) + /sizeof(asn_DEF_ScheduledCommunicationTime_tags_1[0]), /* 1 */ + asn_DEF_ScheduledCommunicationTime_tags_1, /* Same as above */ + sizeof(asn_DEF_ScheduledCommunicationTime_tags_1) + /sizeof(asn_DEF_ScheduledCommunicationTime_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ScheduledCommunicationTime_1, + 4, /* Elements count */ + &asn_SPC_ScheduledCommunicationTime_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ScheduledCommunicationTime.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ScheduledCommunicationTime.h new file mode 100644 index 0000000..81694ba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ScheduledCommunicationTime.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ScheduledCommunicationTime_H_ +#define _ScheduledCommunicationTime_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ScheduledCommunicationTime */ +typedef struct ScheduledCommunicationTime { + BIT_STRING_t *dayofWeek; /* OPTIONAL */ + long *timeofDayStart; /* OPTIONAL */ + long *timeofDayEnd; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ScheduledCommunicationTime_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime; +extern asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_specs_1; +extern asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ScheduledCommunicationTime_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequest.c new file mode 100644 index 0000000..58bfe97 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBAdditionRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBAdditionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P44, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequest_specs_1 = { + sizeof(struct SeNBAdditionRequest), + offsetof(struct SeNBAdditionRequest, _asn_ctx), + asn_MAP_SeNBAdditionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest = { + "SeNBAdditionRequest", + "SeNBAdditionRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequest_tags_1, + sizeof(asn_DEF_SeNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBAdditionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBAdditionRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequest.h new file mode 100644 index 0000000..ec16df6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBAdditionRequest_H_ +#define _SeNBAdditionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBAdditionRequest */ +typedef struct SeNBAdditionRequest { + ProtocolIE_Container_119P44_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBAdditionRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c new file mode 100644 index 0000000..f20ee6b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBAdditionRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SeNBAdditionRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P45, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestAcknowledge_specs_1 = { + sizeof(struct SeNBAdditionRequestAcknowledge), + offsetof(struct SeNBAdditionRequestAcknowledge, _asn_ctx), + asn_MAP_SeNBAdditionRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge = { + "SeNBAdditionRequestAcknowledge", + "SeNBAdditionRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestAcknowledge_tags_1, + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SeNBAdditionRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h new file mode 100644 index 0000000..6394495 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBAdditionRequestAcknowledge_H_ +#define _SeNBAdditionRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBAdditionRequestAcknowledge */ +typedef struct SeNBAdditionRequestAcknowledge { + ProtocolIE_Container_119P45_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBAdditionRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c new file mode 100644 index 0000000..01bd458 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestReject.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBAdditionRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SeNBAdditionRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBAdditionRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P46, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBAdditionRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBAdditionRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBAdditionRequestReject_specs_1 = { + sizeof(struct SeNBAdditionRequestReject), + offsetof(struct SeNBAdditionRequestReject, _asn_ctx), + asn_MAP_SeNBAdditionRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject = { + "SeNBAdditionRequestReject", + "SeNBAdditionRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SeNBAdditionRequestReject_tags_1, + sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SeNBAdditionRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SeNBAdditionRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBAdditionRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SeNBAdditionRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h new file mode 100644 index 0000000..e25c4f8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBAdditionRequestReject.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBAdditionRequestReject_H_ +#define _SeNBAdditionRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBAdditionRequestReject */ +typedef struct SeNBAdditionRequestReject { + ProtocolIE_Container_119P46_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBAdditionRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBAdditionRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBAdditionRequestReject_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c new file mode 100644 index 0000000..f9db2d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBCounterCheckRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBCounterCheckRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBCounterCheckRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBCounterCheckRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P57, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBCounterCheckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBCounterCheckRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBCounterCheckRequest_specs_1 = { + sizeof(struct SeNBCounterCheckRequest), + offsetof(struct SeNBCounterCheckRequest, _asn_ctx), + asn_MAP_SeNBCounterCheckRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest = { + "SeNBCounterCheckRequest", + "SeNBCounterCheckRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBCounterCheckRequest_tags_1, + sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBCounterCheckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SeNBCounterCheckRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBCounterCheckRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBCounterCheckRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h new file mode 100644 index 0000000..a3989cb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBCounterCheckRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBCounterCheckRequest_H_ +#define _SeNBCounterCheckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBCounterCheckRequest */ +typedef struct SeNBCounterCheckRequest { + ProtocolIE_Container_119P57_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBCounterCheckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBCounterCheckRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBCounterCheckRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationConfirm.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationConfirm.c new file mode 100644 index 0000000..41f8e35 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationConfirm.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationConfirm.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P52, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationConfirm_specs_1 = { + sizeof(struct SeNBModificationConfirm), + offsetof(struct SeNBModificationConfirm, _asn_ctx), + asn_MAP_SeNBModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm = { + "SeNBModificationConfirm", + "SeNBModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationConfirm_tags_1, + sizeof(asn_DEF_SeNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SeNBModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SeNBModificationConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationConfirm.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationConfirm.h new file mode 100644 index 0000000..33f58c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationConfirm.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationConfirm_H_ +#define _SeNBModificationConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationConfirm */ +typedef struct SeNBModificationConfirm { + ProtocolIE_Container_119P52_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationConfirm_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRefuse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRefuse.c new file mode 100644 index 0000000..8c9c5b8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRefuse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRefuse.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P53, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRefuse_specs_1 = { + sizeof(struct SeNBModificationRefuse), + offsetof(struct SeNBModificationRefuse, _asn_ctx), + asn_MAP_SeNBModificationRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse = { + "SeNBModificationRefuse", + "SeNBModificationRefuse", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRefuse_tags_1, + sizeof(asn_DEF_SeNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SeNBModificationRefuse_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SeNBModificationRefuse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRefuse_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRefuse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRefuse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRefuse.h new file mode 100644 index 0000000..dd551da --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRefuse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRefuse_H_ +#define _SeNBModificationRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRefuse */ +typedef struct SeNBModificationRefuse { + ProtocolIE_Container_119P53_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRefuse; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRefuse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequest.c new file mode 100644 index 0000000..be2f8c6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequest_specs_1 = { + sizeof(struct SeNBModificationRequest), + offsetof(struct SeNBModificationRequest, _asn_ctx), + asn_MAP_SeNBModificationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest = { + "SeNBModificationRequest", + "SeNBModificationRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequest_tags_1, + sizeof(asn_DEF_SeNBModificationRequest_tags_1) + /sizeof(asn_DEF_SeNBModificationRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequest_tags_1) + /sizeof(asn_DEF_SeNBModificationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequest.h new file mode 100644 index 0000000..c183bcc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequest_H_ +#define _SeNBModificationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequest */ +typedef struct SeNBModificationRequest { + ProtocolIE_Container_119P48_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c new file mode 100644 index 0000000..b5a7b40 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P49, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestAcknowledge_specs_1 = { + sizeof(struct SeNBModificationRequestAcknowledge), + offsetof(struct SeNBModificationRequestAcknowledge, _asn_ctx), + asn_MAP_SeNBModificationRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge = { + "SeNBModificationRequestAcknowledge", + "SeNBModificationRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestAcknowledge_tags_1, + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h new file mode 100644 index 0000000..48141c6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequestAcknowledge_H_ +#define _SeNBModificationRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequestAcknowledge */ +typedef struct SeNBModificationRequestAcknowledge { + ProtocolIE_Container_119P49_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestReject.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestReject.c new file mode 100644 index 0000000..c11fc9f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestReject.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P50, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequestReject_specs_1 = { + sizeof(struct SeNBModificationRequestReject), + offsetof(struct SeNBModificationRequestReject, _asn_ctx), + asn_MAP_SeNBModificationRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject = { + "SeNBModificationRequestReject", + "SeNBModificationRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequestReject_tags_1, + sizeof(asn_DEF_SeNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SeNBModificationRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestReject.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestReject.h new file mode 100644 index 0000000..ba3bef6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequestReject.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequestReject_H_ +#define _SeNBModificationRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequestReject */ +typedef struct SeNBModificationRequestReject { + ProtocolIE_Container_119P50_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequestReject_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequired.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequired.c new file mode 100644 index 0000000..7cfbeec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequired.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBModificationRequired.h" + +static asn_TYPE_member_t asn_MBR_SeNBModificationRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBModificationRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P51, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBModificationRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBModificationRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBModificationRequired_specs_1 = { + sizeof(struct SeNBModificationRequired), + offsetof(struct SeNBModificationRequired, _asn_ctx), + asn_MAP_SeNBModificationRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired = { + "SeNBModificationRequired", + "SeNBModificationRequired", + &asn_OP_SEQUENCE, + asn_DEF_SeNBModificationRequired_tags_1, + sizeof(asn_DEF_SeNBModificationRequired_tags_1) + /sizeof(asn_DEF_SeNBModificationRequired_tags_1[0]), /* 1 */ + asn_DEF_SeNBModificationRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBModificationRequired_tags_1) + /sizeof(asn_DEF_SeNBModificationRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBModificationRequired_1, + 1, /* Elements count */ + &asn_SPC_SeNBModificationRequired_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequired.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequired.h new file mode 100644 index 0000000..0ca27a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBModificationRequired.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBModificationRequired_H_ +#define _SeNBModificationRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBModificationRequired */ +typedef struct SeNBModificationRequired { + ProtocolIE_Container_119P51_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBModificationRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBModificationRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBModificationRequired_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c new file mode 100644 index 0000000..c1446ab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReconfigurationComplete.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReconfigurationComplete.h" + +static asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReconfigurationComplete, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P47, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReconfigurationComplete_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReconfigurationComplete_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_specs_1 = { + sizeof(struct SeNBReconfigurationComplete), + offsetof(struct SeNBReconfigurationComplete, _asn_ctx), + asn_MAP_SeNBReconfigurationComplete_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete = { + "SeNBReconfigurationComplete", + "SeNBReconfigurationComplete", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReconfigurationComplete_tags_1, + sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1[0]), /* 1 */ + asn_DEF_SeNBReconfigurationComplete_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SeNBReconfigurationComplete_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReconfigurationComplete_1, + 1, /* Elements count */ + &asn_SPC_SeNBReconfigurationComplete_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h new file mode 100644 index 0000000..1be97b8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReconfigurationComplete.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReconfigurationComplete_H_ +#define _SeNBReconfigurationComplete_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReconfigurationComplete */ +typedef struct SeNBReconfigurationComplete { + ProtocolIE_Container_119P47_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReconfigurationComplete_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReconfigurationComplete_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseConfirm.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseConfirm.c new file mode 100644 index 0000000..dfbd52d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseConfirm.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReleaseConfirm.h" + +static asn_TYPE_member_t asn_MBR_SeNBReleaseConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P56, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseConfirm_specs_1 = { + sizeof(struct SeNBReleaseConfirm), + offsetof(struct SeNBReleaseConfirm, _asn_ctx), + asn_MAP_SeNBReleaseConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm = { + "SeNBReleaseConfirm", + "SeNBReleaseConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseConfirm_tags_1, + sizeof(asn_DEF_SeNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SeNBReleaseConfirm_tags_1[0]), /* 1 */ + asn_DEF_SeNBReleaseConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SeNBReleaseConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseConfirm_1, + 1, /* Elements count */ + &asn_SPC_SeNBReleaseConfirm_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseConfirm.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseConfirm.h new file mode 100644 index 0000000..fe08cc3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseConfirm.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReleaseConfirm_H_ +#define _SeNBReleaseConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReleaseConfirm */ +typedef struct SeNBReleaseConfirm { + ProtocolIE_Container_119P56_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReleaseConfirm_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequest.c new file mode 100644 index 0000000..8054c9e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReleaseRequest.h" + +static asn_TYPE_member_t asn_MBR_SeNBReleaseRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P54, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequest_specs_1 = { + sizeof(struct SeNBReleaseRequest), + offsetof(struct SeNBReleaseRequest, _asn_ctx), + asn_MAP_SeNBReleaseRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest = { + "SeNBReleaseRequest", + "SeNBReleaseRequest", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequest_tags_1, + sizeof(asn_DEF_SeNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequest_tags_1[0]), /* 1 */ + asn_DEF_SeNBReleaseRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequest_1, + 1, /* Elements count */ + &asn_SPC_SeNBReleaseRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequest.h new file mode 100644 index 0000000..8d6c9bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReleaseRequest_H_ +#define _SeNBReleaseRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReleaseRequest */ +typedef struct SeNBReleaseRequest { + ProtocolIE_Container_119P54_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReleaseRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequired.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequired.c new file mode 100644 index 0000000..38e0c56 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequired.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBReleaseRequired.h" + +static asn_TYPE_member_t asn_MBR_SeNBReleaseRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SeNBReleaseRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P55, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SeNBReleaseRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SeNBReleaseRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SeNBReleaseRequired_specs_1 = { + sizeof(struct SeNBReleaseRequired), + offsetof(struct SeNBReleaseRequired, _asn_ctx), + asn_MAP_SeNBReleaseRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired = { + "SeNBReleaseRequired", + "SeNBReleaseRequired", + &asn_OP_SEQUENCE, + asn_DEF_SeNBReleaseRequired_tags_1, + sizeof(asn_DEF_SeNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequired_tags_1[0]), /* 1 */ + asn_DEF_SeNBReleaseRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SeNBReleaseRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SeNBReleaseRequired_1, + 1, /* Elements count */ + &asn_SPC_SeNBReleaseRequired_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequired.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequired.h new file mode 100644 index 0000000..2cf5da8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBReleaseRequired.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBReleaseRequired_H_ +#define _SeNBReleaseRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBReleaseRequired */ +typedef struct SeNBReleaseRequired { + ProtocolIE_Container_119P55_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SeNBReleaseRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBReleaseRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBReleaseRequired_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBSecurityKey.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBSecurityKey.c new file mode 100644 index 0000000..0334334 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBSecurityKey.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBSecurityKey.h" + +int +SeNBSecurityKey_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SeNBSecurityKey_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SeNBSecurityKey_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SeNBSecurityKey = { + "SeNBSecurityKey", + "SeNBSecurityKey", + &asn_OP_BIT_STRING, + asn_DEF_SeNBSecurityKey_tags_1, + sizeof(asn_DEF_SeNBSecurityKey_tags_1) + /sizeof(asn_DEF_SeNBSecurityKey_tags_1[0]), /* 1 */ + asn_DEF_SeNBSecurityKey_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBSecurityKey_tags_1) + /sizeof(asn_DEF_SeNBSecurityKey_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SeNBSecurityKey_constr_1, SeNBSecurityKey_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBSecurityKey.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBSecurityKey.h new file mode 100644 index 0000000..fd6be2c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBSecurityKey.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBSecurityKey_H_ +#define _SeNBSecurityKey_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBSecurityKey */ +typedef BIT_STRING_t SeNBSecurityKey_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SeNBSecurityKey_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SeNBSecurityKey; +asn_struct_free_f SeNBSecurityKey_free; +asn_struct_print_f SeNBSecurityKey_print; +asn_constr_check_f SeNBSecurityKey_constraint; +ber_type_decoder_f SeNBSecurityKey_decode_ber; +der_type_encoder_f SeNBSecurityKey_encode_der; +xer_type_decoder_f SeNBSecurityKey_decode_xer; +xer_type_encoder_f SeNBSecurityKey_encode_xer; +per_type_decoder_f SeNBSecurityKey_decode_uper; +per_type_encoder_f SeNBSecurityKey_encode_uper; +per_type_decoder_f SeNBSecurityKey_decode_aper; +per_type_encoder_f SeNBSecurityKey_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBSecurityKey_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c new file mode 100644 index 0000000..6f9b9c8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBtoMeNBContainer.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SeNBtoMeNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_SeNBtoMeNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SeNBtoMeNBContainer = { + "SeNBtoMeNBContainer", + "SeNBtoMeNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_SeNBtoMeNBContainer_tags_1, + sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1[0]), /* 1 */ + asn_DEF_SeNBtoMeNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SeNBtoMeNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h new file mode 100644 index 0000000..d390e2c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SeNBtoMeNBContainer.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SeNBtoMeNBContainer_H_ +#define _SeNBtoMeNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SeNBtoMeNBContainer */ +typedef OCTET_STRING_t SeNBtoMeNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SeNBtoMeNBContainer; +asn_struct_free_f SeNBtoMeNBContainer_free; +asn_struct_print_f SeNBtoMeNBContainer_print; +asn_constr_check_f SeNBtoMeNBContainer_constraint; +ber_type_decoder_f SeNBtoMeNBContainer_decode_ber; +der_type_encoder_f SeNBtoMeNBContainer_encode_der; +xer_type_decoder_f SeNBtoMeNBContainer_decode_xer; +xer_type_encoder_f SeNBtoMeNBContainer_encode_xer; +per_type_decoder_f SeNBtoMeNBContainer_decode_uper; +per_type_encoder_f SeNBtoMeNBContainer_encode_uper; +per_type_decoder_f SeNBtoMeNBContainer_decode_aper; +per_type_encoder_f SeNBtoMeNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SeNBtoMeNBContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c new file mode 100644 index 0000000..8062cb7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SecondaryRATDataUsageReport.h" + +static asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReport_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATDataUsageReport, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P101, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATDataUsageReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATDataUsageReport_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReport_specs_1 = { + sizeof(struct SecondaryRATDataUsageReport), + offsetof(struct SecondaryRATDataUsageReport, _asn_ctx), + asn_MAP_SecondaryRATDataUsageReport_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport = { + "SecondaryRATDataUsageReport", + "SecondaryRATDataUsageReport", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATDataUsageReport_tags_1, + sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1[0]), /* 1 */ + asn_DEF_SecondaryRATDataUsageReport_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1) + /sizeof(asn_DEF_SecondaryRATDataUsageReport_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATDataUsageReport_1, + 1, /* Elements count */ + &asn_SPC_SecondaryRATDataUsageReport_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h new file mode 100644 index 0000000..fb0a935 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATDataUsageReport.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SecondaryRATDataUsageReport_H_ +#define _SecondaryRATDataUsageReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SecondaryRATDataUsageReport */ +typedef struct SecondaryRATDataUsageReport { + ProtocolIE_Container_119P101_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATDataUsageReport_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReport; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondaryRATDataUsageReport_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c new file mode 100644 index 0000000..8a36f8e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.c @@ -0,0 +1,152 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SecondaryRATUsageReport-Item.h" + +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_secondaryRATType_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_secondaryRATType_value2enum_3[] = { + { 0, 2, "nr" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_secondaryRATType_enum2value_3[] = { + 0 /* nr(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_secondaryRATType_specs_3 = { + asn_MAP_secondaryRATType_value2enum_3, /* "tag" => N; sorted by tag */ + asn_MAP_secondaryRATType_enum2value_3, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_secondaryRATType_tags_3[] = { + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_secondaryRATType_3 = { + "secondaryRATType", + "secondaryRATType", + &asn_OP_NativeEnumerated, + asn_DEF_secondaryRATType_tags_3, + sizeof(asn_DEF_secondaryRATType_tags_3) + /sizeof(asn_DEF_secondaryRATType_tags_3[0]) - 1, /* 1 */ + asn_DEF_secondaryRATType_tags_3, /* Same as above */ + sizeof(asn_DEF_secondaryRATType_tags_3) + /sizeof(asn_DEF_secondaryRATType_tags_3[0]), /* 2 */ + { 0, &asn_PER_type_secondaryRATType_constr_3, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_secondaryRATType_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item, e_RAB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RAB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RAB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item, secondaryRATType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_secondaryRATType_3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "secondaryRATType" + }, + { ATF_NOFLAGS, 0, offsetof(struct SecondaryRATUsageReport_Item, e_RABUsageReportList), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABUsageReportList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABUsageReportList" + }, + { ATF_POINTER, 1, offsetof(struct SecondaryRATUsageReport_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P190, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SecondaryRATUsageReport_Item_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReport_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SecondaryRATUsageReport_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* e-RAB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondaryRATType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* e-RABUsageReportList */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_specs_1 = { + sizeof(struct SecondaryRATUsageReport_Item), + offsetof(struct SecondaryRATUsageReport_Item, _asn_ctx), + asn_MAP_SecondaryRATUsageReport_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SecondaryRATUsageReport_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item = { + "SecondaryRATUsageReport-Item", + "SecondaryRATUsageReport-Item", + &asn_OP_SEQUENCE, + asn_DEF_SecondaryRATUsageReport_Item_tags_1, + sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReport_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReport_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SecondaryRATUsageReport_Item_1, + 4, /* Elements count */ + &asn_SPC_SecondaryRATUsageReport_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h new file mode 100644 index 0000000..5c86d2e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReport-Item.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SecondaryRATUsageReport_Item_H_ +#define _SecondaryRATUsageReport_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "E-RAB-ID.h" +#include "NativeEnumerated.h" +#include "E-RABUsageReportList.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SecondaryRATUsageReport_Item__secondaryRATType { + SecondaryRATUsageReport_Item__secondaryRATType_nr = 0 + /* + * Enumeration is extensible + */ +} e_SecondaryRATUsageReport_Item__secondaryRATType; + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SecondaryRATUsageReport-Item */ +typedef struct SecondaryRATUsageReport_Item { + E_RAB_ID_t e_RAB_ID; + long secondaryRATType; + E_RABUsageReportList_t e_RABUsageReportList; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReport_Item_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_secondaryRATType_3; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReport_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATUsageReport_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReport_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondaryRATUsageReport_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c new file mode 100644 index 0000000..ee4d1bf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReportList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SecondaryRATUsageReportList.h" + +#include "ProtocolIE-Single-Container.h" +asn_per_constraints_t asn_PER_type_SecondaryRATUsageReportList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SecondaryRATUsageReportList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_Single_Container_122P48, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SecondaryRATUsageReportList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SecondaryRATUsageReportList_specs_1 = { + sizeof(struct SecondaryRATUsageReportList), + offsetof(struct SecondaryRATUsageReportList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReportList = { + "SecondaryRATUsageReportList", + "SecondaryRATUsageReportList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SecondaryRATUsageReportList_tags_1, + sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1[0]), /* 1 */ + asn_DEF_SecondaryRATUsageReportList_tags_1, /* Same as above */ + sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1) + /sizeof(asn_DEF_SecondaryRATUsageReportList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SecondaryRATUsageReportList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_SecondaryRATUsageReportList_1, + 1, /* Single element */ + &asn_SPC_SecondaryRATUsageReportList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h new file mode 100644 index 0000000..ab17c25 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SecondaryRATUsageReportList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SecondaryRATUsageReportList_H_ +#define _SecondaryRATUsageReportList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_Single_Container; + +/* SecondaryRATUsageReportList */ +typedef struct SecondaryRATUsageReportList { + A_SEQUENCE_OF(struct ProtocolIE_Single_Container) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SecondaryRATUsageReportList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATUsageReportList; +extern asn_SET_OF_specifics_t asn_SPC_SecondaryRATUsageReportList_specs_1; +extern asn_TYPE_member_t asn_MBR_SecondaryRATUsageReportList_1[1]; +extern asn_per_constraints_t asn_PER_type_SecondaryRATUsageReportList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SecondaryRATUsageReportList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCell-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCell-Information.c new file mode 100644 index 0000000..bea7219 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCell-Information.c @@ -0,0 +1,126 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, pCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, cellId), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cellId" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, tAC), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, broadcastPLMNs), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BroadcastPLMNs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "broadcastPLMNs" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCell_Information, eUTRA_Mode_Info), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_EUTRA_Mode_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRA-Mode-Info" + }, + { ATF_POINTER, 1, offsetof(struct ServedCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P192, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedCell_Information_oms_1[] = { 5 }; +static const ber_tlv_tag_t asn_DEF_ServedCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellId */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tAC */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* broadcastPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* eUTRA-Mode-Info */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_specs_1 = { + sizeof(struct ServedCell_Information), + offsetof(struct ServedCell_Information, _asn_ctx), + asn_MAP_ServedCell_Information_tag2el_1, + 6, /* Count of tags in the map */ + asn_MAP_ServedCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 6, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCell_Information = { + "ServedCell-Information", + "ServedCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_ServedCell_Information_tags_1, + sizeof(asn_DEF_ServedCell_Information_tags_1) + /sizeof(asn_DEF_ServedCell_Information_tags_1[0]), /* 1 */ + asn_DEF_ServedCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCell_Information_tags_1) + /sizeof(asn_DEF_ServedCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCell_Information_1, + 6, /* Elements count */ + &asn_SPC_ServedCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCell-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCell-Information.h new file mode 100644 index 0000000..6b1d8ca --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCell-Information.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCell_Information_H_ +#define _ServedCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PCI.h" +#include "ECGI.h" +#include "TAC.h" +#include "BroadcastPLMNs-Item.h" +#include "EUTRA-Mode-Info.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ServedCell-Information */ +typedef struct ServedCell_Information { + PCI_t pCI; + ECGI_t cellId; + TAC_t tAC; + BroadcastPLMNs_Item_t broadcastPLMNs; + EUTRA_Mode_Info_t eUTRA_Mode_Info; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCell_Information_1[6]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCell_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCells.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCells.c new file mode 100644 index 0000000..46eaebd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCells.c @@ -0,0 +1,138 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCells.h" + +#include "Neighbour-Information.h" +#include "ProtocolExtensionContainer.h" +asn_per_constraints_t asn_PER_type_ServedCells_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCells__Member, servedCellInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedCellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedCells__Member, neighbour_Info), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Neighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "neighbour-Info" + }, + { ATF_POINTER, 1, offsetof(struct ServedCells__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P191, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedCellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* neighbour-Info */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedCells__Member), + offsetof(struct ServedCells__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedCells_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCells_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ServedCells_specs_1 = { + sizeof(struct ServedCells), + offsetof(struct ServedCells, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCells = { + "ServedCells", + "ServedCells", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedCells_tags_1, + sizeof(asn_DEF_ServedCells_tags_1) + /sizeof(asn_DEF_ServedCells_tags_1[0]), /* 1 */ + asn_DEF_ServedCells_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCells_tags_1) + /sizeof(asn_DEF_ServedCells_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedCells_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedCells_1, + 1, /* Single element */ + &asn_SPC_ServedCells_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCells.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCells.h new file mode 100644 index 0000000..165f93d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCells.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCells_H_ +#define _ServedCells_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Neighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedCells__Member { + ServedCell_Information_t servedCellInfo; + struct Neighbour_Information *neighbour_Info; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCells__Member; + +/* ServedCells */ +typedef struct ServedCells { + A_SEQUENCE_OF(ServedCells__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCells_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCells; +extern asn_SET_OF_specifics_t asn_SPC_ServedCells_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCells_1[1]; +extern asn_per_constraints_t asn_PER_type_ServedCells_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCells_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c new file mode 100644 index 0000000..18025d4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate-Item.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToActivate-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToActivate_Item, ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ecgi" + }, + { ATF_POINTER, 1, offsetof(struct ServedCellsToActivate_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedCellsToActivate_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ServedCellsToActivate_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToActivate_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_specs_1 = { + sizeof(struct ServedCellsToActivate_Item), + offsetof(struct ServedCellsToActivate_Item, _asn_ctx), + asn_MAP_ServedCellsToActivate_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ServedCellsToActivate_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item = { + "ServedCellsToActivate-Item", + "ServedCellsToActivate-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToActivate_Item_tags_1, + sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToActivate_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToActivate_Item_1, + 2, /* Elements count */ + &asn_SPC_ServedCellsToActivate_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h new file mode 100644 index 0000000..cdec16c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToActivate_Item_H_ +#define _ServedCellsToActivate_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ServedCellsToActivate-Item */ +typedef struct ServedCellsToActivate_Item { + ECGI_t ecgi; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToActivate_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToActivate_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCellsToActivate_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToActivate_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate.c new file mode 100644 index 0000000..951ac2c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToActivate.h" + +#include "ServedCellsToActivate-Item.h" +static asn_per_constraints_t asn_PER_type_ServedCellsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedCellsToActivate_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToActivate_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedCellsToActivate_specs_1 = { + sizeof(struct ServedCellsToActivate), + offsetof(struct ServedCellsToActivate, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate = { + "ServedCellsToActivate", + "ServedCellsToActivate", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedCellsToActivate_tags_1, + sizeof(asn_DEF_ServedCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedCellsToActivate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedCellsToActivate_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedCellsToActivate_1, + 1, /* Single element */ + &asn_SPC_ServedCellsToActivate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate.h new file mode 100644 index 0000000..2cdae5c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToActivate.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToActivate_H_ +#define _ServedCellsToActivate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedCellsToActivate_Item; + +/* ServedCellsToActivate */ +typedef struct ServedCellsToActivate { + A_SEQUENCE_OF(struct ServedCellsToActivate_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToActivate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToActivate; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToActivate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify-Item.c new file mode 100644 index 0000000..0987da1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify-Item.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToModify-Item.h" + +#include "Neighbour-Information.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item, old_ecgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "old-ecgi" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedCellsToModify_Item, servedCellInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedCellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedCellsToModify_Item, neighbour_Info), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Neighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "neighbour-Info" + }, + { ATF_POINTER, 1, offsetof(struct ServedCellsToModify_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedCellsToModify_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_ServedCellsToModify_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedCellsToModify_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* old-ecgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedCellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* neighbour-Info */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_specs_1 = { + sizeof(struct ServedCellsToModify_Item), + offsetof(struct ServedCellsToModify_Item, _asn_ctx), + asn_MAP_ServedCellsToModify_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_ServedCellsToModify_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item = { + "ServedCellsToModify-Item", + "ServedCellsToModify-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedCellsToModify_Item_tags_1, + sizeof(asn_DEF_ServedCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToModify_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedCellsToModify_Item_1, + 4, /* Elements count */ + &asn_SPC_ServedCellsToModify_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify-Item.h new file mode 100644 index 0000000..3c7f499 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify-Item.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToModify_Item_H_ +#define _ServedCellsToModify_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct Neighbour_Information; +struct ProtocolExtensionContainer; + +/* ServedCellsToModify-Item */ +typedef struct ServedCellsToModify_Item { + ECGI_t old_ecgi; + ServedCell_Information_t servedCellInfo; + struct Neighbour_Information *neighbour_Info; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToModify_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedCellsToModify_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedCellsToModify_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToModify_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify.c new file mode 100644 index 0000000..57fc107 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedCellsToModify.h" + +#include "ServedCellsToModify-Item.h" +static asn_per_constraints_t asn_PER_type_ServedCellsToModify_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedCellsToModify_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedCellsToModify_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedCellsToModify_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedCellsToModify_specs_1 = { + sizeof(struct ServedCellsToModify), + offsetof(struct ServedCellsToModify, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify = { + "ServedCellsToModify", + "ServedCellsToModify", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedCellsToModify_tags_1, + sizeof(asn_DEF_ServedCellsToModify_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_tags_1[0]), /* 1 */ + asn_DEF_ServedCellsToModify_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedCellsToModify_tags_1) + /sizeof(asn_DEF_ServedCellsToModify_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedCellsToModify_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedCellsToModify_1, + 1, /* Single element */ + &asn_SPC_ServedCellsToModify_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify.h new file mode 100644 index 0000000..d9c7196 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedCellsToModify.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedCellsToModify_H_ +#define _ServedCellsToModify_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedCellsToModify_Item; + +/* ServedCellsToModify */ +typedef struct ServedCellsToModify { + A_SEQUENCE_OF(struct ServedCellsToModify_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedCellsToModify_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedCellsToModify; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedCellsToModify_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c new file mode 100644 index 0000000..df3fb1d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.c @@ -0,0 +1,138 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedEUTRAcellsENDCX2ManagementList.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +static asn_per_constraints_t asn_PER_type_ServedEUTRAcellsENDCX2ManagementList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, servedEUTRACellInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedEUTRACellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, nrNeighbourInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrNeighbourInfo" + }, + { ATF_POINTER, 1, offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P90, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedEUTRACellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrNeighbourInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedEUTRAcellsENDCX2ManagementList__Member), + offsetof(struct ServedEUTRAcellsENDCX2ManagementList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ServedEUTRAcellsENDCX2ManagementList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedEUTRAcellsENDCX2ManagementList_specs_1 = { + sizeof(struct ServedEUTRAcellsENDCX2ManagementList), + offsetof(struct ServedEUTRAcellsENDCX2ManagementList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2ManagementList = { + "ServedEUTRAcellsENDCX2ManagementList", + "ServedEUTRAcellsENDCX2ManagementList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1, + sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedEUTRAcellsENDCX2ManagementList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedEUTRAcellsENDCX2ManagementList_1, + 1, /* Single element */ + &asn_SPC_ServedEUTRAcellsENDCX2ManagementList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h new file mode 100644 index 0000000..ae0b6b5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsENDCX2ManagementList.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedEUTRAcellsENDCX2ManagementList_H_ +#define _ServedEUTRAcellsENDCX2ManagementList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedEUTRAcellsENDCX2ManagementList__Member { + ServedCell_Information_t servedEUTRACellInfo; + struct NRNeighbour_Information *nrNeighbourInfo; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsENDCX2ManagementList__Member; + +/* ServedEUTRAcellsENDCX2ManagementList */ +typedef struct ServedEUTRAcellsENDCX2ManagementList { + A_SEQUENCE_OF(ServedEUTRAcellsENDCX2ManagementList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsENDCX2ManagementList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsENDCX2ManagementList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedEUTRAcellsENDCX2ManagementList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c new file mode 100644 index 0000000..cd6ea0d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedEUTRAcellsToDeleteListENDCConfUpd.h" + +#include "ECGI.h" +static asn_per_constraints_t asn_PER_type_ServedEUTRAcellsToDeleteListENDCConfUpd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToDeleteListENDCConfUpd_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedEUTRAcellsToDeleteListENDCConfUpd_specs_1 = { + sizeof(struct ServedEUTRAcellsToDeleteListENDCConfUpd), + offsetof(struct ServedEUTRAcellsToDeleteListENDCConfUpd, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd = { + "ServedEUTRAcellsToDeleteListENDCConfUpd", + "ServedEUTRAcellsToDeleteListENDCConfUpd", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1, + sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedEUTRAcellsToDeleteListENDCConfUpd_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedEUTRAcellsToDeleteListENDCConfUpd_1, + 1, /* Single element */ + &asn_SPC_ServedEUTRAcellsToDeleteListENDCConfUpd_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h new file mode 100644 index 0000000..042b93d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToDeleteListENDCConfUpd.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedEUTRAcellsToDeleteListENDCConfUpd_H_ +#define _ServedEUTRAcellsToDeleteListENDCConfUpd_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ECGI; + +/* ServedEUTRAcellsToDeleteListENDCConfUpd */ +typedef struct ServedEUTRAcellsToDeleteListENDCConfUpd { + A_SEQUENCE_OF(struct ECGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToDeleteListENDCConfUpd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToDeleteListENDCConfUpd; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedEUTRAcellsToDeleteListENDCConfUpd_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c new file mode 100644 index 0000000..aeb6597 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.c @@ -0,0 +1,148 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedEUTRAcellsToModifyListENDCConfUpd.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +static asn_per_constraints_t asn_PER_type_ServedEUTRAcellsToModifyListENDCConfUpd_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, old_ECGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "old-ECGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, servedEUTRACellInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedEUTRACellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, nrNeighbourInfo), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrNeighbourInfo" + }, + { ATF_POINTER, 1, offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P99, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* old-ECGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedEUTRACellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrNeighbourInfo */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 4, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 4, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_specs_1 = { + sizeof(struct ServedEUTRAcellsToModifyListENDCConfUpd), + offsetof(struct ServedEUTRAcellsToModifyListENDCConfUpd, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd = { + "ServedEUTRAcellsToModifyListENDCConfUpd", + "ServedEUTRAcellsToModifyListENDCConfUpd", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1, + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1[0]), /* 1 */ + asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1) + /sizeof(asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedEUTRAcellsToModifyListENDCConfUpd_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedEUTRAcellsToModifyListENDCConfUpd_1, + 1, /* Single element */ + &asn_SPC_ServedEUTRAcellsToModifyListENDCConfUpd_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h new file mode 100644 index 0000000..31dc20f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedEUTRAcellsToModifyListENDCConfUpd.h @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedEUTRAcellsToModifyListENDCConfUpd_H_ +#define _ServedEUTRAcellsToModifyListENDCConfUpd_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ECGI.h" +#include "ServedCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedEUTRAcellsToModifyListENDCConfUpd__Member { + ECGI_t old_ECGI; + ServedCell_Information_t servedEUTRACellInfo; + struct NRNeighbour_Information *nrNeighbourInfo; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToModifyListENDCConfUpd__Member; + +/* ServedEUTRAcellsToModifyListENDCConfUpd */ +typedef struct ServedEUTRAcellsToModifyListENDCConfUpd { + A_SEQUENCE_OF(ServedEUTRAcellsToModifyListENDCConfUpd__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedEUTRAcellsToModifyListENDCConfUpd_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedEUTRAcellsToModifyListENDCConfUpd_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCell-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCell-Information.c new file mode 100644 index 0000000..7b3aefb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCell-Information.c @@ -0,0 +1,202 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +#include "FDD-InfoServedNRCell-Information.h" +#include "TDD-InfoServedNRCell-Information.h" +static asn_per_constraints_t asn_PER_type_nrModeInfo_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_nrModeInfo_7[] = { + { ATF_POINTER, 0, offsetof(struct ServedNRCell_Information__nrModeInfo, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FDD_InfoServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct ServedNRCell_Information__nrModeInfo, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TDD_InfoServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_nrModeInfo_tag2el_7[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tdd */ +}; +static asn_CHOICE_specifics_t asn_SPC_nrModeInfo_specs_7 = { + sizeof(struct ServedNRCell_Information__nrModeInfo), + offsetof(struct ServedNRCell_Information__nrModeInfo, _asn_ctx), + offsetof(struct ServedNRCell_Information__nrModeInfo, present), + sizeof(((struct ServedNRCell_Information__nrModeInfo *)0)->present), + asn_MAP_nrModeInfo_tag2el_7, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_nrModeInfo_7 = { + "nrModeInfo", + "nrModeInfo", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_nrModeInfo_constr_7, CHOICE_constraint }, + asn_MBR_nrModeInfo_7, + 2, /* Elements count */ + &asn_SPC_nrModeInfo_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, nrpCI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRPCI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrpCI" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 2, offsetof(struct ServedNRCell_Information, fiveGS_TAC), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_FiveGS_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fiveGS-TAC" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCell_Information, configured_TAC), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "configured-TAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, broadcastPLMNs), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BroadcastPLMNs_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "broadcastPLMNs" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, nrModeInfo), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_nrModeInfo_7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrModeInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCell_Information, measurementTimingConfiguration), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "measurementTimingConfiguration" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P92, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedNRCell_Information_oms_1[] = { 2, 3, 7 }; +static const ber_tlv_tag_t asn_DEF_ServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrpCI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* fiveGS-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* configured-TAC */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* broadcastPLMNs */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* nrModeInfo */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* measurementTimingConfiguration */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_specs_1 = { + sizeof(struct ServedNRCell_Information), + offsetof(struct ServedNRCell_Information, _asn_ctx), + asn_MAP_ServedNRCell_Information_tag2el_1, + 8, /* Count of tags in the map */ + asn_MAP_ServedNRCell_Information_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 8, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information = { + "ServedNRCell-Information", + "ServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCell_Information_tags_1, + sizeof(asn_DEF_ServedNRCell_Information_tags_1) + /sizeof(asn_DEF_ServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCell_Information_tags_1) + /sizeof(asn_DEF_ServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCell_Information_1, + 8, /* Elements count */ + &asn_SPC_ServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCell-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCell-Information.h new file mode 100644 index 0000000..eb2faad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCell-Information.h @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCell_Information_H_ +#define _ServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRPCI.h" +#include "NRCGI.h" +#include "FiveGS-TAC.h" +#include "TAC.h" +#include "BroadcastPLMNs-Item.h" +#include "OCTET_STRING.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ServedNRCell_Information__nrModeInfo_PR { + ServedNRCell_Information__nrModeInfo_PR_NOTHING, /* No components present */ + ServedNRCell_Information__nrModeInfo_PR_fdd, + ServedNRCell_Information__nrModeInfo_PR_tdd + /* Extensions may appear below */ + +} ServedNRCell_Information__nrModeInfo_PR; + +/* Forward declarations */ +struct ProtocolExtensionContainer; +struct FDD_InfoServedNRCell_Information; +struct TDD_InfoServedNRCell_Information; + +/* ServedNRCell-Information */ +typedef struct ServedNRCell_Information { + NRPCI_t nrpCI; + NRCGI_t nrCellID; + FiveGS_TAC_t *fiveGS_TAC; /* OPTIONAL */ + TAC_t *configured_TAC; /* OPTIONAL */ + BroadcastPLMNs_Item_t broadcastPLMNs; + struct ServedNRCell_Information__nrModeInfo { + ServedNRCell_Information__nrModeInfo_PR present; + union ServedNRCell_Information__nrModeInfo_u { + struct FDD_InfoServedNRCell_Information *fdd; + struct TDD_InfoServedNRCell_Information *tdd; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } nrModeInfo; + OCTET_STRING_t measurementTimingConfiguration; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedNRCell_Information_1[8]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c new file mode 100644 index 0000000..63c21c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCellsToActivate-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToActivate_Item, nrCellID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrCellID" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCellsToActivate_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P101, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedNRCellsToActivate_Item_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToActivate_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToActivate_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrCellID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_specs_1 = { + sizeof(struct ServedNRCellsToActivate_Item), + offsetof(struct ServedNRCellsToActivate_Item, _asn_ctx), + asn_MAP_ServedNRCellsToActivate_Item_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ServedNRCellsToActivate_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item = { + "ServedNRCellsToActivate-Item", + "ServedNRCellsToActivate-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToActivate_Item_tags_1, + sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCellsToActivate_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToActivate_Item_1, + 2, /* Elements count */ + &asn_SPC_ServedNRCellsToActivate_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h new file mode 100644 index 0000000..e527a80 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate-Item.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCellsToActivate_Item_H_ +#define _ServedNRCellsToActivate_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ServedNRCellsToActivate-Item */ +typedef struct ServedNRCellsToActivate_Item { + NRCGI_t nrCellID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToActivate_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToActivate_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_Item_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCellsToActivate_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate.c new file mode 100644 index 0000000..6d4f7a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCellsToActivate.h" + +#include "ServedNRCellsToActivate-Item.h" +static asn_per_constraints_t asn_PER_type_ServedNRCellsToActivate_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedNRCellsToActivate_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToActivate_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToActivate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRCellsToActivate_specs_1 = { + sizeof(struct ServedNRCellsToActivate), + offsetof(struct ServedNRCellsToActivate, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate = { + "ServedNRCellsToActivate", + "ServedNRCellsToActivate", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRCellsToActivate_tags_1, + sizeof(asn_DEF_ServedNRCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCellsToActivate_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToActivate_tags_1) + /sizeof(asn_DEF_ServedNRCellsToActivate_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRCellsToActivate_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRCellsToActivate_1, + 1, /* Single element */ + &asn_SPC_ServedNRCellsToActivate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate.h new file mode 100644 index 0000000..70da1f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToActivate.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCellsToActivate_H_ +#define _ServedNRCellsToActivate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedNRCellsToActivate_Item; + +/* ServedNRCellsToActivate */ +typedef struct ServedNRCellsToActivate { + A_SEQUENCE_OF(struct ServedNRCellsToActivate_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToActivate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToActivate; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCellsToActivate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c new file mode 100644 index 0000000..8b877d8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.c @@ -0,0 +1,117 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRCellsToModify-Item.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item, old_nrcgi), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "old-nrcgi" + }, + { ATF_NOFLAGS, 0, offsetof(struct ServedNRCellsToModify_Item, servedNRCellInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedNRCellInformation" + }, + { ATF_POINTER, 3, offsetof(struct ServedNRCellsToModify_Item, nrNeighbourInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrNeighbourInformation" + }, + { ATF_POINTER, 2, offsetof(struct ServedNRCellsToModify_Item, nrDeactivationIndication), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeactivationIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nrDeactivationIndication" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRCellsToModify_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P100, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ServedNRCellsToModify_Item_oms_1[] = { 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_ServedNRCellsToModify_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ServedNRCellsToModify_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* old-nrcgi */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedNRCellInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrNeighbourInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrDeactivationIndication */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_specs_1 = { + sizeof(struct ServedNRCellsToModify_Item), + offsetof(struct ServedNRCellsToModify_Item, _asn_ctx), + asn_MAP_ServedNRCellsToModify_Item_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_ServedNRCellsToModify_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item = { + "ServedNRCellsToModify-Item", + "ServedNRCellsToModify-Item", + &asn_OP_SEQUENCE, + asn_DEF_ServedNRCellsToModify_Item_tags_1, + sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1[0]), /* 1 */ + asn_DEF_ServedNRCellsToModify_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1) + /sizeof(asn_DEF_ServedNRCellsToModify_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ServedNRCellsToModify_Item_1, + 5, /* Elements count */ + &asn_SPC_ServedNRCellsToModify_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h new file mode 100644 index 0000000..014ff7f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRCellsToModify-Item.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRCellsToModify_Item_H_ +#define _ServedNRCellsToModify_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "ServedNRCell-Information.h" +#include "DeactivationIndication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* ServedNRCellsToModify-Item */ +typedef struct ServedNRCellsToModify_Item { + NRCGI_t old_nrcgi; + ServedNRCell_Information_t servedNRCellInformation; + struct NRNeighbour_Information *nrNeighbourInformation; /* OPTIONAL */ + DeactivationIndication_t *nrDeactivationIndication; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRCellsToModify_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRCellsToModify_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_ServedNRCellsToModify_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_ServedNRCellsToModify_Item_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRCellsToModify_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c new file mode 100644 index 0000000..3b0a587 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.c @@ -0,0 +1,138 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRcellsENDCX2ManagementList.h" + +#include "NRNeighbour-Information.h" +#include "ProtocolExtensionContainer.h" +static asn_per_constraints_t asn_PER_type_ServedNRcellsENDCX2ManagementList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_Member_2[] = { + { ATF_NOFLAGS, 0, offsetof(struct ServedNRcellsENDCX2ManagementList__Member, servedNRCellInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ServedNRCell_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "servedNRCellInfo" + }, + { ATF_POINTER, 2, offsetof(struct ServedNRcellsENDCX2ManagementList__Member, nRNeighbourInfo), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRNeighbour_Information, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRNeighbourInfo" + }, + { ATF_POINTER, 1, offsetof(struct ServedNRcellsENDCX2ManagementList__Member, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P91, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Member_oms_2[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_Member_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servedNRCellInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nRNeighbourInfo */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_Member_specs_2 = { + sizeof(struct ServedNRcellsENDCX2ManagementList__Member), + offsetof(struct ServedNRcellsENDCX2ManagementList__Member, _asn_ctx), + asn_MAP_Member_tag2el_2, + 3, /* Count of tags in the map */ + asn_MAP_Member_oms_2, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_Member_2 = { + "SEQUENCE", + "SEQUENCE", + &asn_OP_SEQUENCE, + asn_DEF_Member_tags_2, + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + asn_DEF_Member_tags_2, /* Same as above */ + sizeof(asn_DEF_Member_tags_2) + /sizeof(asn_DEF_Member_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Member_2, + 3, /* Elements count */ + &asn_SPC_Member_specs_2 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_ServedNRcellsENDCX2ManagementList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_Member_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRcellsENDCX2ManagementList_specs_1 = { + sizeof(struct ServedNRcellsENDCX2ManagementList), + offsetof(struct ServedNRcellsENDCX2ManagementList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRcellsENDCX2ManagementList = { + "ServedNRcellsENDCX2ManagementList", + "ServedNRcellsENDCX2ManagementList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1, + sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1) + /sizeof(asn_DEF_ServedNRcellsENDCX2ManagementList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRcellsENDCX2ManagementList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRcellsENDCX2ManagementList_1, + 1, /* Single element */ + &asn_SPC_ServedNRcellsENDCX2ManagementList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h new file mode 100644 index 0000000..03d38a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsENDCX2ManagementList.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRcellsENDCX2ManagementList_H_ +#define _ServedNRcellsENDCX2ManagementList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "ServedNRCell-Information.h" +#include "constr_SEQUENCE.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRNeighbour_Information; +struct ProtocolExtensionContainer; + +/* Forward definitions */ +typedef struct ServedNRcellsENDCX2ManagementList__Member { + ServedNRCell_Information_t servedNRCellInfo; + struct NRNeighbour_Information *nRNeighbourInfo; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsENDCX2ManagementList__Member; + +/* ServedNRcellsENDCX2ManagementList */ +typedef struct ServedNRcellsENDCX2ManagementList { + A_SEQUENCE_OF(ServedNRcellsENDCX2ManagementList__Member) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsENDCX2ManagementList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRcellsENDCX2ManagementList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRcellsENDCX2ManagementList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c new file mode 100644 index 0000000..cc4c16b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRcellsToDeleteENDCConfUpdList.h" + +#include "NRCGI.h" +static asn_per_constraints_t asn_PER_type_ServedNRcellsToDeleteENDCConfUpdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedNRcellsToDeleteENDCConfUpdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRcellsToDeleteENDCConfUpdList_specs_1 = { + sizeof(struct ServedNRcellsToDeleteENDCConfUpdList), + offsetof(struct ServedNRcellsToDeleteENDCConfUpdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToDeleteENDCConfUpdList = { + "ServedNRcellsToDeleteENDCConfUpdList", + "ServedNRcellsToDeleteENDCConfUpdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1, + sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1[0]), /* 1 */ + asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToDeleteENDCConfUpdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRcellsToDeleteENDCConfUpdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRcellsToDeleteENDCConfUpdList_1, + 1, /* Single element */ + &asn_SPC_ServedNRcellsToDeleteENDCConfUpdList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h new file mode 100644 index 0000000..6e50259 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToDeleteENDCConfUpdList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRcellsToDeleteENDCConfUpdList_H_ +#define _ServedNRcellsToDeleteENDCConfUpdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRCGI; + +/* ServedNRcellsToDeleteENDCConfUpdList */ +typedef struct ServedNRcellsToDeleteENDCConfUpdList { + A_SEQUENCE_OF(struct NRCGI) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsToDeleteENDCConfUpdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToDeleteENDCConfUpdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRcellsToDeleteENDCConfUpdList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c new file mode 100644 index 0000000..a368e13 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServedNRcellsToModifyENDCConfUpdList.h" + +#include "ServedNRCellsToModify-Item.h" +static asn_per_constraints_t asn_PER_type_ServedNRcellsToModifyENDCConfUpdList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 14, 14, 1, 16384 } /* (SIZE(1..16384)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ServedNRcellsToModifyENDCConfUpdList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ServedNRCellsToModify_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ServedNRcellsToModifyENDCConfUpdList_specs_1 = { + sizeof(struct ServedNRcellsToModifyENDCConfUpdList), + offsetof(struct ServedNRcellsToModifyENDCConfUpdList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToModifyENDCConfUpdList = { + "ServedNRcellsToModifyENDCConfUpdList", + "ServedNRcellsToModifyENDCConfUpdList", + &asn_OP_SEQUENCE_OF, + asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1, + sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1[0]), /* 1 */ + asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1, /* Same as above */ + sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1) + /sizeof(asn_DEF_ServedNRcellsToModifyENDCConfUpdList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServedNRcellsToModifyENDCConfUpdList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ServedNRcellsToModifyENDCConfUpdList_1, + 1, /* Single element */ + &asn_SPC_ServedNRcellsToModifyENDCConfUpdList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h new file mode 100644 index 0000000..06051a7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServedNRcellsToModifyENDCConfUpdList.h @@ -0,0 +1,64 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServedNRcellsToModifyENDCConfUpdList_H_ +#define _ServedNRcellsToModifyENDCConfUpdList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ServedNRCellsToModify_Item; + +/* ServedNRcellsToModifyENDCConfUpdList */ +typedef struct ServedNRcellsToModifyENDCConfUpdList { + A_SEQUENCE_OF(struct ServedNRCellsToModify_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ServedNRcellsToModifyENDCConfUpdList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ServedNRcellsToModifyENDCConfUpdList; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServedNRcellsToModifyENDCConfUpdList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServiceType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServiceType.c new file mode 100644 index 0000000..68aef4c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServiceType.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ServiceType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ServiceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_ServiceType_value2enum_1[] = { + { 0, 25, "qMC-for-streaming-service" }, + { 1, 20, "qMC-for-MTSI-service" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_ServiceType_enum2value_1[] = { + 1, /* qMC-for-MTSI-service(1) */ + 0 /* qMC-for-streaming-service(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_ServiceType_specs_1 = { + asn_MAP_ServiceType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_ServiceType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_ServiceType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ServiceType = { + "ServiceType", + "ServiceType", + &asn_OP_NativeEnumerated, + asn_DEF_ServiceType_tags_1, + sizeof(asn_DEF_ServiceType_tags_1) + /sizeof(asn_DEF_ServiceType_tags_1[0]), /* 1 */ + asn_DEF_ServiceType_tags_1, /* Same as above */ + sizeof(asn_DEF_ServiceType_tags_1) + /sizeof(asn_DEF_ServiceType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ServiceType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_ServiceType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServiceType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServiceType.h new file mode 100644 index 0000000..c42f7ea --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ServiceType.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ServiceType_H_ +#define _ServiceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ServiceType { + ServiceType_qMC_for_streaming_service = 0, + ServiceType_qMC_for_MTSI_service = 1 + /* + * Enumeration is extensible + */ +} e_ServiceType; + +/* ServiceType */ +typedef long ServiceType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ServiceType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ServiceType; +extern const asn_INTEGER_specifics_t asn_SPC_ServiceType_specs_1; +asn_struct_free_f ServiceType_free; +asn_struct_print_f ServiceType_print; +asn_constr_check_f ServiceType_constraint; +ber_type_decoder_f ServiceType_decode_ber; +der_type_encoder_f ServiceType_encode_der; +xer_type_decoder_f ServiceType_decode_xer; +xer_type_encoder_f ServiceType_encode_xer; +per_type_decoder_f ServiceType_decode_uper; +per_type_encoder_f ServiceType_encode_uper; +per_type_decoder_f ServiceType_decode_aper; +per_type_encoder_f ServiceType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ServiceType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c new file mode 100644 index 0000000..78d895f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNB-UE-X2AP-ID.h" + +int +SgNB_UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SgNB_UE_X2AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +const asn_INTEGER_specifics_t asn_SPC_SgNB_UE_X2AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_SgNB_UE_X2AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNB_UE_X2AP_ID = { + "SgNB-UE-X2AP-ID", + "SgNB-UE-X2AP-ID", + &asn_OP_NativeInteger, + asn_DEF_SgNB_UE_X2AP_ID_tags_1, + sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1[0]), /* 1 */ + asn_DEF_SgNB_UE_X2AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_SgNB_UE_X2AP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SgNB_UE_X2AP_ID_constr_1, SgNB_UE_X2AP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_SgNB_UE_X2AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h new file mode 100644 index 0000000..540c284 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNB-UE-X2AP-ID.h @@ -0,0 +1,68 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNB_UE_X2AP_ID_H_ +#define _SgNB_UE_X2AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNB-UE-X2AP-ID */ +typedef unsigned long SgNB_UE_X2AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SgNB_UE_X2AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SgNB_UE_X2AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_SgNB_UE_X2AP_ID_specs_1; +asn_struct_free_f SgNB_UE_X2AP_ID_free; +asn_struct_print_f SgNB_UE_X2AP_ID_print; +asn_constr_check_f SgNB_UE_X2AP_ID_constraint; +ber_type_decoder_f SgNB_UE_X2AP_ID_decode_ber; +der_type_encoder_f SgNB_UE_X2AP_ID_encode_der; +xer_type_decoder_f SgNB_UE_X2AP_ID_decode_xer; +xer_type_encoder_f SgNB_UE_X2AP_ID_encode_xer; +per_type_decoder_f SgNB_UE_X2AP_ID_decode_uper; +per_type_encoder_f SgNB_UE_X2AP_ID_encode_uper; +per_type_decoder_f SgNB_UE_X2AP_ID_decode_aper; +per_type_encoder_f SgNB_UE_X2AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNB_UE_X2AP_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBActivityNotification.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBActivityNotification.c new file mode 100644 index 0000000..268a88e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBActivityNotification.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBActivityNotification.h" + +static asn_TYPE_member_t asn_MBR_SgNBActivityNotification_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBActivityNotification, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P102, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBActivityNotification_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBActivityNotification_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBActivityNotification_specs_1 = { + sizeof(struct SgNBActivityNotification), + offsetof(struct SgNBActivityNotification, _asn_ctx), + asn_MAP_SgNBActivityNotification_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification = { + "SgNBActivityNotification", + "SgNBActivityNotification", + &asn_OP_SEQUENCE, + asn_DEF_SgNBActivityNotification_tags_1, + sizeof(asn_DEF_SgNBActivityNotification_tags_1) + /sizeof(asn_DEF_SgNBActivityNotification_tags_1[0]), /* 1 */ + asn_DEF_SgNBActivityNotification_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBActivityNotification_tags_1) + /sizeof(asn_DEF_SgNBActivityNotification_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBActivityNotification_1, + 1, /* Elements count */ + &asn_SPC_SgNBActivityNotification_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBActivityNotification.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBActivityNotification.h new file mode 100644 index 0000000..be7c975 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBActivityNotification.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBActivityNotification_H_ +#define _SgNBActivityNotification_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBActivityNotification */ +typedef struct SgNBActivityNotification { + ProtocolIE_Container_119P102_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBActivityNotification_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBActivityNotification; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBActivityNotification_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequest.c new file mode 100644 index 0000000..9f61cc4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBAdditionRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBAdditionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P64, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequest_specs_1 = { + sizeof(struct SgNBAdditionRequest), + offsetof(struct SgNBAdditionRequest, _asn_ctx), + asn_MAP_SgNBAdditionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest = { + "SgNBAdditionRequest", + "SgNBAdditionRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequest_tags_1, + sizeof(asn_DEF_SgNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBAdditionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequest_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBAdditionRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequest.h new file mode 100644 index 0000000..ed2fbbc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBAdditionRequest_H_ +#define _SgNBAdditionRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBAdditionRequest */ +typedef struct SgNBAdditionRequest { + ProtocolIE_Container_119P64_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBAdditionRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c new file mode 100644 index 0000000..96e7d06 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBAdditionRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SgNBAdditionRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P65, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestAcknowledge_specs_1 = { + sizeof(struct SgNBAdditionRequestAcknowledge), + offsetof(struct SgNBAdditionRequestAcknowledge, _asn_ctx), + asn_MAP_SgNBAdditionRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge = { + "SgNBAdditionRequestAcknowledge", + "SgNBAdditionRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestAcknowledge_tags_1, + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SgNBAdditionRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h new file mode 100644 index 0000000..215f47c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBAdditionRequestAcknowledge_H_ +#define _SgNBAdditionRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBAdditionRequestAcknowledge */ +typedef struct SgNBAdditionRequestAcknowledge { + ProtocolIE_Container_119P65_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBAdditionRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c new file mode 100644 index 0000000..95d93a3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestReject.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBAdditionRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SgNBAdditionRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBAdditionRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P66, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBAdditionRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBAdditionRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBAdditionRequestReject_specs_1 = { + sizeof(struct SgNBAdditionRequestReject), + offsetof(struct SgNBAdditionRequestReject, _asn_ctx), + asn_MAP_SgNBAdditionRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject = { + "SgNBAdditionRequestReject", + "SgNBAdditionRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SgNBAdditionRequestReject_tags_1, + sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SgNBAdditionRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1) + /sizeof(asn_DEF_SgNBAdditionRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBAdditionRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SgNBAdditionRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h new file mode 100644 index 0000000..4b0121f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBAdditionRequestReject.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBAdditionRequestReject_H_ +#define _SgNBAdditionRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBAdditionRequestReject */ +typedef struct SgNBAdditionRequestReject { + ProtocolIE_Container_119P66_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBAdditionRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBAdditionRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBAdditionRequestReject_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeConfirm.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeConfirm.c new file mode 100644 index 0000000..61cd93a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeConfirm.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBChangeConfirm.h" + +static asn_TYPE_member_t asn_MBR_SgNBChangeConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P81, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeConfirm_specs_1 = { + sizeof(struct SgNBChangeConfirm), + offsetof(struct SgNBChangeConfirm, _asn_ctx), + asn_MAP_SgNBChangeConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm = { + "SgNBChangeConfirm", + "SgNBChangeConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeConfirm_tags_1, + sizeof(asn_DEF_SgNBChangeConfirm_tags_1) + /sizeof(asn_DEF_SgNBChangeConfirm_tags_1[0]), /* 1 */ + asn_DEF_SgNBChangeConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBChangeConfirm_tags_1) + /sizeof(asn_DEF_SgNBChangeConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeConfirm_1, + 1, /* Elements count */ + &asn_SPC_SgNBChangeConfirm_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeConfirm.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeConfirm.h new file mode 100644 index 0000000..57672ff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeConfirm.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBChangeConfirm_H_ +#define _SgNBChangeConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBChangeConfirm */ +typedef struct SgNBChangeConfirm { + ProtocolIE_Container_119P81_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBChangeConfirm_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRefuse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRefuse.c new file mode 100644 index 0000000..b6d55d9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRefuse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBChangeRefuse.h" + +static asn_TYPE_member_t asn_MBR_SgNBChangeRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P83, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRefuse_specs_1 = { + sizeof(struct SgNBChangeRefuse), + offsetof(struct SgNBChangeRefuse, _asn_ctx), + asn_MAP_SgNBChangeRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse = { + "SgNBChangeRefuse", + "SgNBChangeRefuse", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRefuse_tags_1, + sizeof(asn_DEF_SgNBChangeRefuse_tags_1) + /sizeof(asn_DEF_SgNBChangeRefuse_tags_1[0]), /* 1 */ + asn_DEF_SgNBChangeRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRefuse_tags_1) + /sizeof(asn_DEF_SgNBChangeRefuse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRefuse_1, + 1, /* Elements count */ + &asn_SPC_SgNBChangeRefuse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRefuse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRefuse.h new file mode 100644 index 0000000..e0891bb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRefuse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBChangeRefuse_H_ +#define _SgNBChangeRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBChangeRefuse */ +typedef struct SgNBChangeRefuse { + ProtocolIE_Container_119P83_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRefuse; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBChangeRefuse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRequired.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRequired.c new file mode 100644 index 0000000..ff667ec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRequired.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBChangeRequired.h" + +static asn_TYPE_member_t asn_MBR_SgNBChangeRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBChangeRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P80, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBChangeRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBChangeRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBChangeRequired_specs_1 = { + sizeof(struct SgNBChangeRequired), + offsetof(struct SgNBChangeRequired, _asn_ctx), + asn_MAP_SgNBChangeRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired = { + "SgNBChangeRequired", + "SgNBChangeRequired", + &asn_OP_SEQUENCE, + asn_DEF_SgNBChangeRequired_tags_1, + sizeof(asn_DEF_SgNBChangeRequired_tags_1) + /sizeof(asn_DEF_SgNBChangeRequired_tags_1[0]), /* 1 */ + asn_DEF_SgNBChangeRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBChangeRequired_tags_1) + /sizeof(asn_DEF_SgNBChangeRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBChangeRequired_1, + 1, /* Elements count */ + &asn_SPC_SgNBChangeRequired_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRequired.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRequired.h new file mode 100644 index 0000000..9b475ad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBChangeRequired.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBChangeRequired_H_ +#define _SgNBChangeRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBChangeRequired */ +typedef struct SgNBChangeRequired { + ProtocolIE_Container_119P80_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBChangeRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBChangeRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBChangeRequired_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c new file mode 100644 index 0000000..1b90034 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBCoordinationAssistanceInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SgNBCoordinationAssistanceInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SgNBCoordinationAssistanceInformation_value2enum_1[] = { + { 0, 25, "coordination-not-required" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SgNBCoordinationAssistanceInformation_enum2value_1[] = { + 0 /* coordination-not-required(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SgNBCoordinationAssistanceInformation_specs_1 = { + asn_MAP_SgNBCoordinationAssistanceInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SgNBCoordinationAssistanceInformation_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SgNBCoordinationAssistanceInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNBCoordinationAssistanceInformation = { + "SgNBCoordinationAssistanceInformation", + "SgNBCoordinationAssistanceInformation", + &asn_OP_NativeEnumerated, + asn_DEF_SgNBCoordinationAssistanceInformation_tags_1, + sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + asn_DEF_SgNBCoordinationAssistanceInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1) + /sizeof(asn_DEF_SgNBCoordinationAssistanceInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SgNBCoordinationAssistanceInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SgNBCoordinationAssistanceInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h new file mode 100644 index 0000000..48b0bca --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCoordinationAssistanceInformation.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBCoordinationAssistanceInformation_H_ +#define _SgNBCoordinationAssistanceInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SgNBCoordinationAssistanceInformation { + SgNBCoordinationAssistanceInformation_coordination_not_required = 0 + /* + * Enumeration is extensible + */ +} e_SgNBCoordinationAssistanceInformation; + +/* SgNBCoordinationAssistanceInformation */ +typedef long SgNBCoordinationAssistanceInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SgNBCoordinationAssistanceInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SgNBCoordinationAssistanceInformation; +extern const asn_INTEGER_specifics_t asn_SPC_SgNBCoordinationAssistanceInformation_specs_1; +asn_struct_free_f SgNBCoordinationAssistanceInformation_free; +asn_struct_print_f SgNBCoordinationAssistanceInformation_print; +asn_constr_check_f SgNBCoordinationAssistanceInformation_constraint; +ber_type_decoder_f SgNBCoordinationAssistanceInformation_decode_ber; +der_type_encoder_f SgNBCoordinationAssistanceInformation_encode_der; +xer_type_decoder_f SgNBCoordinationAssistanceInformation_decode_xer; +xer_type_encoder_f SgNBCoordinationAssistanceInformation_encode_xer; +per_type_decoder_f SgNBCoordinationAssistanceInformation_decode_uper; +per_type_encoder_f SgNBCoordinationAssistanceInformation_encode_uper; +per_type_decoder_f SgNBCoordinationAssistanceInformation_decode_aper; +per_type_encoder_f SgNBCoordinationAssistanceInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBCoordinationAssistanceInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c new file mode 100644 index 0000000..cf10dea --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCounterCheckRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBCounterCheckRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBCounterCheckRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBCounterCheckRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P79, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBCounterCheckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBCounterCheckRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBCounterCheckRequest_specs_1 = { + sizeof(struct SgNBCounterCheckRequest), + offsetof(struct SgNBCounterCheckRequest, _asn_ctx), + asn_MAP_SgNBCounterCheckRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest = { + "SgNBCounterCheckRequest", + "SgNBCounterCheckRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBCounterCheckRequest_tags_1, + sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBCounterCheckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1) + /sizeof(asn_DEF_SgNBCounterCheckRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBCounterCheckRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBCounterCheckRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h new file mode 100644 index 0000000..7a03796 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBCounterCheckRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBCounterCheckRequest_H_ +#define _SgNBCounterCheckRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBCounterCheckRequest */ +typedef struct SgNBCounterCheckRequest { + ProtocolIE_Container_119P79_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBCounterCheckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBCounterCheckRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBCounterCheckRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationConfirm.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationConfirm.c new file mode 100644 index 0000000..1aa928e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationConfirm.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationConfirm.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P72, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationConfirm_specs_1 = { + sizeof(struct SgNBModificationConfirm), + offsetof(struct SgNBModificationConfirm, _asn_ctx), + asn_MAP_SgNBModificationConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm = { + "SgNBModificationConfirm", + "SgNBModificationConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationConfirm_tags_1, + sizeof(asn_DEF_SgNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SgNBModificationConfirm_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationConfirm_tags_1) + /sizeof(asn_DEF_SgNBModificationConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationConfirm_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationConfirm_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationConfirm.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationConfirm.h new file mode 100644 index 0000000..1372c03 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationConfirm.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationConfirm_H_ +#define _SgNBModificationConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationConfirm */ +typedef struct SgNBModificationConfirm { + ProtocolIE_Container_119P72_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationConfirm_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRefuse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRefuse.c new file mode 100644 index 0000000..a4ef2f2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRefuse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRefuse.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRefuse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRefuse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P73, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRefuse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRefuse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRefuse_specs_1 = { + sizeof(struct SgNBModificationRefuse), + offsetof(struct SgNBModificationRefuse, _asn_ctx), + asn_MAP_SgNBModificationRefuse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse = { + "SgNBModificationRefuse", + "SgNBModificationRefuse", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRefuse_tags_1, + sizeof(asn_DEF_SgNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SgNBModificationRefuse_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRefuse_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRefuse_tags_1) + /sizeof(asn_DEF_SgNBModificationRefuse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRefuse_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRefuse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRefuse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRefuse.h new file mode 100644 index 0000000..e15572e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRefuse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRefuse_H_ +#define _SgNBModificationRefuse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRefuse */ +typedef struct SgNBModificationRefuse { + ProtocolIE_Container_119P73_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRefuse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRefuse; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRefuse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequest.c new file mode 100644 index 0000000..b8a9614 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P68, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequest_specs_1 = { + sizeof(struct SgNBModificationRequest), + offsetof(struct SgNBModificationRequest, _asn_ctx), + asn_MAP_SgNBModificationRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest = { + "SgNBModificationRequest", + "SgNBModificationRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequest_tags_1, + sizeof(asn_DEF_SgNBModificationRequest_tags_1) + /sizeof(asn_DEF_SgNBModificationRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequest_tags_1) + /sizeof(asn_DEF_SgNBModificationRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequest.h new file mode 100644 index 0000000..c150b0a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequest_H_ +#define _SgNBModificationRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequest */ +typedef struct SgNBModificationRequest { + ProtocolIE_Container_119P68_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c new file mode 100644 index 0000000..512edcb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P69, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestAcknowledge_specs_1 = { + sizeof(struct SgNBModificationRequestAcknowledge), + offsetof(struct SgNBModificationRequestAcknowledge, _asn_ctx), + asn_MAP_SgNBModificationRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge = { + "SgNBModificationRequestAcknowledge", + "SgNBModificationRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestAcknowledge_tags_1, + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h new file mode 100644 index 0000000..3056e95 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequestAcknowledge_H_ +#define _SgNBModificationRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequestAcknowledge */ +typedef struct SgNBModificationRequestAcknowledge { + ProtocolIE_Container_119P69_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestReject.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestReject.c new file mode 100644 index 0000000..bb5ed9f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestReject.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P70, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequestReject_specs_1 = { + sizeof(struct SgNBModificationRequestReject), + offsetof(struct SgNBModificationRequestReject, _asn_ctx), + asn_MAP_SgNBModificationRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject = { + "SgNBModificationRequestReject", + "SgNBModificationRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequestReject_tags_1, + sizeof(asn_DEF_SgNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequestReject_tags_1) + /sizeof(asn_DEF_SgNBModificationRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestReject.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestReject.h new file mode 100644 index 0000000..425cd38 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequestReject.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequestReject_H_ +#define _SgNBModificationRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequestReject */ +typedef struct SgNBModificationRequestReject { + ProtocolIE_Container_119P70_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequestReject_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequired.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequired.c new file mode 100644 index 0000000..c592e9e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequired.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBModificationRequired.h" + +static asn_TYPE_member_t asn_MBR_SgNBModificationRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBModificationRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P71, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBModificationRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBModificationRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBModificationRequired_specs_1 = { + sizeof(struct SgNBModificationRequired), + offsetof(struct SgNBModificationRequired, _asn_ctx), + asn_MAP_SgNBModificationRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired = { + "SgNBModificationRequired", + "SgNBModificationRequired", + &asn_OP_SEQUENCE, + asn_DEF_SgNBModificationRequired_tags_1, + sizeof(asn_DEF_SgNBModificationRequired_tags_1) + /sizeof(asn_DEF_SgNBModificationRequired_tags_1[0]), /* 1 */ + asn_DEF_SgNBModificationRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBModificationRequired_tags_1) + /sizeof(asn_DEF_SgNBModificationRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBModificationRequired_1, + 1, /* Elements count */ + &asn_SPC_SgNBModificationRequired_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequired.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequired.h new file mode 100644 index 0000000..fbc38a5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBModificationRequired.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBModificationRequired_H_ +#define _SgNBModificationRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBModificationRequired */ +typedef struct SgNBModificationRequired { + ProtocolIE_Container_119P71_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBModificationRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBModificationRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBModificationRequired_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c new file mode 100644 index 0000000..ef6b5fe --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReconfigurationComplete.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReconfigurationComplete.h" + +static asn_TYPE_member_t asn_MBR_SgNBReconfigurationComplete_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReconfigurationComplete, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P67, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReconfigurationComplete_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReconfigurationComplete_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReconfigurationComplete_specs_1 = { + sizeof(struct SgNBReconfigurationComplete), + offsetof(struct SgNBReconfigurationComplete, _asn_ctx), + asn_MAP_SgNBReconfigurationComplete_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete = { + "SgNBReconfigurationComplete", + "SgNBReconfigurationComplete", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReconfigurationComplete_tags_1, + sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1[0]), /* 1 */ + asn_DEF_SgNBReconfigurationComplete_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1) + /sizeof(asn_DEF_SgNBReconfigurationComplete_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReconfigurationComplete_1, + 1, /* Elements count */ + &asn_SPC_SgNBReconfigurationComplete_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h new file mode 100644 index 0000000..7e6ba52 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReconfigurationComplete.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReconfigurationComplete_H_ +#define _SgNBReconfigurationComplete_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReconfigurationComplete */ +typedef struct SgNBReconfigurationComplete { + ProtocolIE_Container_119P67_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReconfigurationComplete_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReconfigurationComplete; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReconfigurationComplete_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseConfirm.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseConfirm.c new file mode 100644 index 0000000..9585722 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseConfirm.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseConfirm.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseConfirm_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseConfirm, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P78, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseConfirm_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseConfirm_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseConfirm_specs_1 = { + sizeof(struct SgNBReleaseConfirm), + offsetof(struct SgNBReleaseConfirm, _asn_ctx), + asn_MAP_SgNBReleaseConfirm_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm = { + "SgNBReleaseConfirm", + "SgNBReleaseConfirm", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseConfirm_tags_1, + sizeof(asn_DEF_SgNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SgNBReleaseConfirm_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseConfirm_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseConfirm_tags_1) + /sizeof(asn_DEF_SgNBReleaseConfirm_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseConfirm_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseConfirm_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseConfirm.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseConfirm.h new file mode 100644 index 0000000..bea6c21 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseConfirm.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseConfirm_H_ +#define _SgNBReleaseConfirm_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseConfirm */ +typedef struct SgNBReleaseConfirm { + ProtocolIE_Container_119P78_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseConfirm_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseConfirm; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseConfirm_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequest.c new file mode 100644 index 0000000..30d0107 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequest.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P74, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequest_specs_1 = { + sizeof(struct SgNBReleaseRequest), + offsetof(struct SgNBReleaseRequest, _asn_ctx), + asn_MAP_SgNBReleaseRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest = { + "SgNBReleaseRequest", + "SgNBReleaseRequest", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequest_tags_1, + sizeof(asn_DEF_SgNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequest_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequest_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequest_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequest.h new file mode 100644 index 0000000..68d610b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequest_H_ +#define _SgNBReleaseRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequest */ +typedef struct SgNBReleaseRequest { + ProtocolIE_Container_119P74_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c new file mode 100644 index 0000000..6356c67 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequestAcknowledge.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequestAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P75, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestAcknowledge_specs_1 = { + sizeof(struct SgNBReleaseRequestAcknowledge), + offsetof(struct SgNBReleaseRequestAcknowledge, _asn_ctx), + asn_MAP_SgNBReleaseRequestAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge = { + "SgNBReleaseRequestAcknowledge", + "SgNBReleaseRequestAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestAcknowledge_tags_1, + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequestAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h new file mode 100644 index 0000000..55617e7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestAcknowledge.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequestAcknowledge_H_ +#define _SgNBReleaseRequestAcknowledge_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequestAcknowledge */ +typedef struct SgNBReleaseRequestAcknowledge { + ProtocolIE_Container_119P75_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestAcknowledge; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequestAcknowledge_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c new file mode 100644 index 0000000..42082ab --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestReject.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequestReject.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequestReject_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequestReject, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P76, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequestReject_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequestReject_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequestReject_specs_1 = { + sizeof(struct SgNBReleaseRequestReject), + offsetof(struct SgNBReleaseRequestReject, _asn_ctx), + asn_MAP_SgNBReleaseRequestReject_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject = { + "SgNBReleaseRequestReject", + "SgNBReleaseRequestReject", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequestReject_tags_1, + sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequestReject_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequestReject_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequestReject_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequestReject_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h new file mode 100644 index 0000000..921e892 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequestReject.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequestReject_H_ +#define _SgNBReleaseRequestReject_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequestReject */ +typedef struct SgNBReleaseRequestReject { + ProtocolIE_Container_119P76_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequestReject_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequestReject; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequestReject_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequired.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequired.c new file mode 100644 index 0000000..2c0c1e4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequired.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBReleaseRequired.h" + +static asn_TYPE_member_t asn_MBR_SgNBReleaseRequired_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBReleaseRequired, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P77, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_SgNBReleaseRequired_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBReleaseRequired_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_SgNBReleaseRequired_specs_1 = { + sizeof(struct SgNBReleaseRequired), + offsetof(struct SgNBReleaseRequired, _asn_ctx), + asn_MAP_SgNBReleaseRequired_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired = { + "SgNBReleaseRequired", + "SgNBReleaseRequired", + &asn_OP_SEQUENCE, + asn_DEF_SgNBReleaseRequired_tags_1, + sizeof(asn_DEF_SgNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequired_tags_1[0]), /* 1 */ + asn_DEF_SgNBReleaseRequired_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBReleaseRequired_tags_1) + /sizeof(asn_DEF_SgNBReleaseRequired_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBReleaseRequired_1, + 1, /* Elements count */ + &asn_SPC_SgNBReleaseRequired_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequired.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequired.h new file mode 100644 index 0000000..8111339 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBReleaseRequired.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBReleaseRequired_H_ +#define _SgNBReleaseRequired_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBReleaseRequired */ +typedef struct SgNBReleaseRequired { + ProtocolIE_Container_119P77_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBReleaseRequired_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBReleaseRequired; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBReleaseRequired_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c new file mode 100644 index 0000000..c703d11 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.c @@ -0,0 +1,178 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBResourceCoordinationInformation.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_uLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_dLCoordinationInformation_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 4400)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_uLCoordinationInformation_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_dLCoordinationInformation_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 13, 13, 6, 4400 } /* (SIZE(6..4400,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformation, nR_CGI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRCGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nR-CGI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SgNBResourceCoordinationInformation, uLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_uLCoordinationInformation_constr_3, memb_uLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "uLCoordinationInformation" + }, + { ATF_POINTER, 2, offsetof(struct SgNBResourceCoordinationInformation, dLCoordinationInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_dLCoordinationInformation_constr_4, memb_dLCoordinationInformation_constraint_1 }, + 0, 0, /* No default value */ + "dLCoordinationInformation" + }, + { ATF_POINTER, 1, offsetof(struct SgNBResourceCoordinationInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P193, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SgNBResourceCoordinationInformation_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_SgNBResourceCoordinationInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SgNBResourceCoordinationInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nR-CGI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dLCoordinationInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformation_specs_1 = { + sizeof(struct SgNBResourceCoordinationInformation), + offsetof(struct SgNBResourceCoordinationInformation, _asn_ctx), + asn_MAP_SgNBResourceCoordinationInformation_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SgNBResourceCoordinationInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformation = { + "SgNBResourceCoordinationInformation", + "SgNBResourceCoordinationInformation", + &asn_OP_SEQUENCE, + asn_DEF_SgNBResourceCoordinationInformation_tags_1, + sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + asn_DEF_SgNBResourceCoordinationInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1) + /sizeof(asn_DEF_SgNBResourceCoordinationInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SgNBResourceCoordinationInformation_1, + 4, /* Elements count */ + &asn_SPC_SgNBResourceCoordinationInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h new file mode 100644 index 0000000..353061b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBResourceCoordinationInformation.h @@ -0,0 +1,74 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBResourceCoordinationInformation_H_ +#define _SgNBResourceCoordinationInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRCGI.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SgNBResourceCoordinationInformation */ +typedef struct SgNBResourceCoordinationInformation { + NRCGI_t nR_CGI; + BIT_STRING_t uLCoordinationInformation; + BIT_STRING_t *dLCoordinationInformation; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SgNBResourceCoordinationInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBResourceCoordinationInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_SgNBResourceCoordinationInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_SgNBResourceCoordinationInformation_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBResourceCoordinationInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBSecurityKey.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBSecurityKey.c new file mode 100644 index 0000000..ab40074 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBSecurityKey.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBSecurityKey.h" + +int +SgNBSecurityKey_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SgNBSecurityKey_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 256, 256 } /* (SIZE(256..256)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SgNBSecurityKey_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNBSecurityKey = { + "SgNBSecurityKey", + "SgNBSecurityKey", + &asn_OP_BIT_STRING, + asn_DEF_SgNBSecurityKey_tags_1, + sizeof(asn_DEF_SgNBSecurityKey_tags_1) + /sizeof(asn_DEF_SgNBSecurityKey_tags_1[0]), /* 1 */ + asn_DEF_SgNBSecurityKey_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBSecurityKey_tags_1) + /sizeof(asn_DEF_SgNBSecurityKey_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SgNBSecurityKey_constr_1, SgNBSecurityKey_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBSecurityKey.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBSecurityKey.h new file mode 100644 index 0000000..10e6cba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBSecurityKey.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBSecurityKey_H_ +#define _SgNBSecurityKey_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBSecurityKey */ +typedef BIT_STRING_t SgNBSecurityKey_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SgNBSecurityKey_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SgNBSecurityKey; +asn_struct_free_f SgNBSecurityKey_free; +asn_struct_print_f SgNBSecurityKey_print; +asn_constr_check_f SgNBSecurityKey_constraint; +ber_type_decoder_f SgNBSecurityKey_decode_ber; +der_type_encoder_f SgNBSecurityKey_encode_der; +xer_type_decoder_f SgNBSecurityKey_decode_xer; +xer_type_encoder_f SgNBSecurityKey_encode_xer; +per_type_decoder_f SgNBSecurityKey_decode_uper; +per_type_encoder_f SgNBSecurityKey_encode_uper; +per_type_decoder_f SgNBSecurityKey_decode_aper; +per_type_encoder_f SgNBSecurityKey_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBSecurityKey_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c new file mode 100644 index 0000000..ecd7480 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBtoMeNBContainer.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SgNBtoMeNBContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_SgNBtoMeNBContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SgNBtoMeNBContainer = { + "SgNBtoMeNBContainer", + "SgNBtoMeNBContainer", + &asn_OP_OCTET_STRING, + asn_DEF_SgNBtoMeNBContainer_tags_1, + sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1[0]), /* 1 */ + asn_DEF_SgNBtoMeNBContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1) + /sizeof(asn_DEF_SgNBtoMeNBContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h new file mode 100644 index 0000000..b0d33a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SgNBtoMeNBContainer.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SgNBtoMeNBContainer_H_ +#define _SgNBtoMeNBContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SgNBtoMeNBContainer */ +typedef OCTET_STRING_t SgNBtoMeNBContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SgNBtoMeNBContainer; +asn_struct_free_f SgNBtoMeNBContainer_free; +asn_struct_print_f SgNBtoMeNBContainer_print; +asn_constr_check_f SgNBtoMeNBContainer_constraint; +ber_type_decoder_f SgNBtoMeNBContainer_decode_ber; +der_type_encoder_f SgNBtoMeNBContainer_encode_der; +xer_type_decoder_f SgNBtoMeNBContainer_decode_xer; +xer_type_encoder_f SgNBtoMeNBContainer_encode_xer; +per_type_decoder_f SgNBtoMeNBContainer_decode_uper; +per_type_encoder_f SgNBtoMeNBContainer_encode_uper; +per_type_decoder_f SgNBtoMeNBContainer_decode_aper; +per_type_encoder_f SgNBtoMeNBContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SgNBtoMeNBContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SharedResourceType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SharedResourceType.c new file mode 100644 index 0000000..def2c60 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SharedResourceType.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SharedResourceType.h" + +#include "ULOnlySharing.h" +#include "ULandDLSharing.h" +asn_per_constraints_t asn_PER_type_SharedResourceType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SharedResourceType_1[] = { + { ATF_POINTER, 0, offsetof(struct SharedResourceType, choice.uLOnlySharing), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULOnlySharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLOnlySharing" + }, + { ATF_POINTER, 0, offsetof(struct SharedResourceType, choice.uLandDLSharing), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLandDLSharing" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SharedResourceType_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uLOnlySharing */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uLandDLSharing */ +}; +asn_CHOICE_specifics_t asn_SPC_SharedResourceType_specs_1 = { + sizeof(struct SharedResourceType), + offsetof(struct SharedResourceType, _asn_ctx), + offsetof(struct SharedResourceType, present), + sizeof(((struct SharedResourceType *)0)->present), + asn_MAP_SharedResourceType_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SharedResourceType = { + "SharedResourceType", + "SharedResourceType", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SharedResourceType_constr_1, CHOICE_constraint }, + asn_MBR_SharedResourceType_1, + 2, /* Elements count */ + &asn_SPC_SharedResourceType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SharedResourceType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SharedResourceType.h new file mode 100644 index 0000000..eb24d8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SharedResourceType.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SharedResourceType_H_ +#define _SharedResourceType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SharedResourceType_PR { + SharedResourceType_PR_NOTHING, /* No components present */ + SharedResourceType_PR_uLOnlySharing, + SharedResourceType_PR_uLandDLSharing + /* Extensions may appear below */ + +} SharedResourceType_PR; + +/* Forward declarations */ +struct ULOnlySharing; +struct ULandDLSharing; + +/* SharedResourceType */ +typedef struct SharedResourceType { + SharedResourceType_PR present; + union SharedResourceType_u { + struct ULOnlySharing *uLOnlySharing; + struct ULandDLSharing *uLandDLSharing; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SharedResourceType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SharedResourceType; +extern asn_CHOICE_specifics_t asn_SPC_SharedResourceType_specs_1; +extern asn_TYPE_member_t asn_MBR_SharedResourceType_1[2]; +extern asn_per_constraints_t asn_PER_type_SharedResourceType_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SharedResourceType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ShortMAC-I.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ShortMAC-I.c new file mode 100644 index 0000000..32a9600 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ShortMAC-I.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ShortMAC-I.h" + +int +ShortMAC_I_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ShortMAC_I_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ShortMAC_I_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ShortMAC_I = { + "ShortMAC-I", + "ShortMAC-I", + &asn_OP_BIT_STRING, + asn_DEF_ShortMAC_I_tags_1, + sizeof(asn_DEF_ShortMAC_I_tags_1) + /sizeof(asn_DEF_ShortMAC_I_tags_1[0]), /* 1 */ + asn_DEF_ShortMAC_I_tags_1, /* Same as above */ + sizeof(asn_DEF_ShortMAC_I_tags_1) + /sizeof(asn_DEF_ShortMAC_I_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ShortMAC_I_constr_1, ShortMAC_I_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ShortMAC-I.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ShortMAC-I.h new file mode 100644 index 0000000..06d4524 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ShortMAC-I.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ShortMAC_I_H_ +#define _ShortMAC_I_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ShortMAC-I */ +typedef BIT_STRING_t ShortMAC_I_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ShortMAC_I_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ShortMAC_I; +asn_struct_free_f ShortMAC_I_free; +asn_struct_print_f ShortMAC_I_print; +asn_constr_check_f ShortMAC_I_constraint; +ber_type_decoder_f ShortMAC_I_decode_ber; +der_type_encoder_f ShortMAC_I_encode_der; +xer_type_decoder_f ShortMAC_I_decode_xer; +xer_type_encoder_f ShortMAC_I_encode_xer; +per_type_decoder_f ShortMAC_I_decode_uper; +per_type_encoder_f ShortMAC_I_encode_uper; +per_type_decoder_f ShortMAC_I_decode_aper; +per_type_encoder_f ShortMAC_I_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ShortMAC_I_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c new file mode 100644 index 0000000..5b0774c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SourceOfUEActivityBehaviourInformation.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SourceOfUEActivityBehaviourInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SourceOfUEActivityBehaviourInformation_value2enum_1[] = { + { 0, 24, "subscription-information" }, + { 1, 10, "statistics" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SourceOfUEActivityBehaviourInformation_enum2value_1[] = { + 1, /* statistics(1) */ + 0 /* subscription-information(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1 = { + asn_MAP_SourceOfUEActivityBehaviourInformation_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SourceOfUEActivityBehaviourInformation_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SourceOfUEActivityBehaviourInformation = { + "SourceOfUEActivityBehaviourInformation", + "SourceOfUEActivityBehaviourInformation", + &asn_OP_NativeEnumerated, + asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1, + sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1) + /sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1[0]), /* 1 */ + asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1) + /sizeof(asn_DEF_SourceOfUEActivityBehaviourInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SourceOfUEActivityBehaviourInformation_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h new file mode 100644 index 0000000..fe9ec48 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SourceOfUEActivityBehaviourInformation.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SourceOfUEActivityBehaviourInformation_H_ +#define _SourceOfUEActivityBehaviourInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SourceOfUEActivityBehaviourInformation { + SourceOfUEActivityBehaviourInformation_subscription_information = 0, + SourceOfUEActivityBehaviourInformation_statistics = 1 + /* + * Enumeration is extensible + */ +} e_SourceOfUEActivityBehaviourInformation; + +/* SourceOfUEActivityBehaviourInformation */ +typedef long SourceOfUEActivityBehaviourInformation_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SourceOfUEActivityBehaviourInformation_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SourceOfUEActivityBehaviourInformation; +extern const asn_INTEGER_specifics_t asn_SPC_SourceOfUEActivityBehaviourInformation_specs_1; +asn_struct_free_f SourceOfUEActivityBehaviourInformation_free; +asn_struct_print_f SourceOfUEActivityBehaviourInformation_print; +asn_constr_check_f SourceOfUEActivityBehaviourInformation_constraint; +ber_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_ber; +der_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_der; +xer_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_xer; +xer_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_xer; +per_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_uper; +per_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_uper; +per_type_decoder_f SourceOfUEActivityBehaviourInformation_decode_aper; +per_type_encoder_f SourceOfUEActivityBehaviourInformation_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SourceOfUEActivityBehaviourInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframe-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframe-Info.c new file mode 100644 index 0000000..d770494 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframe-Info.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SpecialSubframe-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info, specialSubframePatterns), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpecialSubframePatterns, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "specialSubframePatterns" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info, cyclicPrefixDL), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixDL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixDL" + }, + { ATF_NOFLAGS, 0, offsetof(struct SpecialSubframe_Info, cyclicPrefixUL), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CyclicPrefixUL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cyclicPrefixUL" + }, + { ATF_POINTER, 1, offsetof(struct SpecialSubframe_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P194, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SpecialSubframe_Info_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_SpecialSubframe_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SpecialSubframe_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* specialSubframePatterns */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cyclicPrefixDL */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cyclicPrefixUL */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_specs_1 = { + sizeof(struct SpecialSubframe_Info), + offsetof(struct SpecialSubframe_Info, _asn_ctx), + asn_MAP_SpecialSubframe_Info_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SpecialSubframe_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info = { + "SpecialSubframe-Info", + "SpecialSubframe-Info", + &asn_OP_SEQUENCE, + asn_DEF_SpecialSubframe_Info_tags_1, + sizeof(asn_DEF_SpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_SpecialSubframe_Info_tags_1[0]), /* 1 */ + asn_DEF_SpecialSubframe_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_SpecialSubframe_Info_tags_1) + /sizeof(asn_DEF_SpecialSubframe_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SpecialSubframe_Info_1, + 4, /* Elements count */ + &asn_SPC_SpecialSubframe_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframe-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframe-Info.h new file mode 100644 index 0000000..026a4e1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframe-Info.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SpecialSubframe_Info_H_ +#define _SpecialSubframe_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SpecialSubframePatterns.h" +#include "CyclicPrefixDL.h" +#include "CyclicPrefixUL.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SpecialSubframe-Info */ +typedef struct SpecialSubframe_Info { + SpecialSubframePatterns_t specialSubframePatterns; + CyclicPrefixDL_t cyclicPrefixDL; + CyclicPrefixUL_t cyclicPrefixUL; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SpecialSubframe_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframe_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_SpecialSubframe_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_SpecialSubframe_Info_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpecialSubframe_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframePatterns.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframePatterns.c new file mode 100644 index 0000000..a14e8af --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframePatterns.c @@ -0,0 +1,92 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SpecialSubframePatterns.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SpecialSubframePatterns_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 8 } /* (0..8,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SpecialSubframePatterns_value2enum_1[] = { + { 0, 4, "ssp0" }, + { 1, 4, "ssp1" }, + { 2, 4, "ssp2" }, + { 3, 4, "ssp3" }, + { 4, 4, "ssp4" }, + { 5, 4, "ssp5" }, + { 6, 4, "ssp6" }, + { 7, 4, "ssp7" }, + { 8, 4, "ssp8" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SpecialSubframePatterns_enum2value_1[] = { + 0, /* ssp0(0) */ + 1, /* ssp1(1) */ + 2, /* ssp2(2) */ + 3, /* ssp3(3) */ + 4, /* ssp4(4) */ + 5, /* ssp5(5) */ + 6, /* ssp6(6) */ + 7, /* ssp7(7) */ + 8 /* ssp8(8) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SpecialSubframePatterns_specs_1 = { + asn_MAP_SpecialSubframePatterns_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SpecialSubframePatterns_enum2value_1, /* N => "tag"; sorted by N */ + 9, /* Number of elements in the maps */ + 10, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SpecialSubframePatterns_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpecialSubframePatterns = { + "SpecialSubframePatterns", + "SpecialSubframePatterns", + &asn_OP_NativeEnumerated, + asn_DEF_SpecialSubframePatterns_tags_1, + sizeof(asn_DEF_SpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_SpecialSubframePatterns_tags_1[0]), /* 1 */ + asn_DEF_SpecialSubframePatterns_tags_1, /* Same as above */ + sizeof(asn_DEF_SpecialSubframePatterns_tags_1) + /sizeof(asn_DEF_SpecialSubframePatterns_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SpecialSubframePatterns_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SpecialSubframePatterns_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframePatterns.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframePatterns.h new file mode 100644 index 0000000..16f06bf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpecialSubframePatterns.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SpecialSubframePatterns_H_ +#define _SpecialSubframePatterns_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SpecialSubframePatterns { + SpecialSubframePatterns_ssp0 = 0, + SpecialSubframePatterns_ssp1 = 1, + SpecialSubframePatterns_ssp2 = 2, + SpecialSubframePatterns_ssp3 = 3, + SpecialSubframePatterns_ssp4 = 4, + SpecialSubframePatterns_ssp5 = 5, + SpecialSubframePatterns_ssp6 = 6, + SpecialSubframePatterns_ssp7 = 7, + SpecialSubframePatterns_ssp8 = 8 + /* + * Enumeration is extensible + */ +} e_SpecialSubframePatterns; + +/* SpecialSubframePatterns */ +typedef long SpecialSubframePatterns_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpecialSubframePatterns_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpecialSubframePatterns; +extern const asn_INTEGER_specifics_t asn_SPC_SpecialSubframePatterns_specs_1; +asn_struct_free_f SpecialSubframePatterns_free; +asn_struct_print_f SpecialSubframePatterns_print; +asn_constr_check_f SpecialSubframePatterns_constraint; +ber_type_decoder_f SpecialSubframePatterns_decode_ber; +der_type_encoder_f SpecialSubframePatterns_encode_der; +xer_type_decoder_f SpecialSubframePatterns_decode_xer; +xer_type_encoder_f SpecialSubframePatterns_encode_xer; +per_type_decoder_f SpecialSubframePatterns_decode_uper; +per_type_encoder_f SpecialSubframePatterns_encode_uper; +per_type_decoder_f SpecialSubframePatterns_decode_aper; +per_type_encoder_f SpecialSubframePatterns_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpecialSubframePatterns_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpectrumSharingGroupID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpectrumSharingGroupID.c new file mode 100644 index 0000000..f06e57e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpectrumSharingGroupID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SpectrumSharingGroupID.h" + +int +SpectrumSharingGroupID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SpectrumSharingGroupID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SpectrumSharingGroupID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SpectrumSharingGroupID = { + "SpectrumSharingGroupID", + "SpectrumSharingGroupID", + &asn_OP_NativeInteger, + asn_DEF_SpectrumSharingGroupID_tags_1, + sizeof(asn_DEF_SpectrumSharingGroupID_tags_1) + /sizeof(asn_DEF_SpectrumSharingGroupID_tags_1[0]), /* 1 */ + asn_DEF_SpectrumSharingGroupID_tags_1, /* Same as above */ + sizeof(asn_DEF_SpectrumSharingGroupID_tags_1) + /sizeof(asn_DEF_SpectrumSharingGroupID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SpectrumSharingGroupID_constr_1, SpectrumSharingGroupID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpectrumSharingGroupID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpectrumSharingGroupID.h new file mode 100644 index 0000000..791ce03 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SpectrumSharingGroupID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SpectrumSharingGroupID_H_ +#define _SpectrumSharingGroupID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SpectrumSharingGroupID */ +typedef long SpectrumSharingGroupID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SpectrumSharingGroupID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SpectrumSharingGroupID; +asn_struct_free_f SpectrumSharingGroupID_free; +asn_struct_print_f SpectrumSharingGroupID_print; +asn_constr_check_f SpectrumSharingGroupID_constraint; +ber_type_decoder_f SpectrumSharingGroupID_decode_ber; +der_type_encoder_f SpectrumSharingGroupID_encode_der; +xer_type_decoder_f SpectrumSharingGroupID_decode_xer; +xer_type_encoder_f SpectrumSharingGroupID_encode_xer; +per_type_decoder_f SpectrumSharingGroupID_decode_uper; +per_type_encoder_f SpectrumSharingGroupID_encode_uper; +per_type_decoder_f SpectrumSharingGroupID_decode_aper; +per_type_encoder_f SpectrumSharingGroupID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SpectrumSharingGroupID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRB.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRB.c new file mode 100644 index 0000000..53503ad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRB.c @@ -0,0 +1,107 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SplitSRB.h" + +#include "DeliveryStatus.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_SplitSRB_1[] = { + { ATF_POINTER, 1, offsetof(struct SplitSRB, rrcContainer), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRCContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rrcContainer" + }, + { ATF_NOFLAGS, 0, offsetof(struct SplitSRB, srbType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SRBType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "srbType" + }, + { ATF_POINTER, 2, offsetof(struct SplitSRB, deliveryStatus), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DeliveryStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "deliveryStatus" + }, + { ATF_POINTER, 1, offsetof(struct SplitSRB, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P170, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SplitSRB_oms_1[] = { 0, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_SplitSRB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SplitSRB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcContainer */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* srbType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* deliveryStatus */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_specs_1 = { + sizeof(struct SplitSRB), + offsetof(struct SplitSRB, _asn_ctx), + asn_MAP_SplitSRB_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_SplitSRB_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SplitSRB = { + "SplitSRB", + "SplitSRB", + &asn_OP_SEQUENCE, + asn_DEF_SplitSRB_tags_1, + sizeof(asn_DEF_SplitSRB_tags_1) + /sizeof(asn_DEF_SplitSRB_tags_1[0]), /* 1 */ + asn_DEF_SplitSRB_tags_1, /* Same as above */ + sizeof(asn_DEF_SplitSRB_tags_1) + /sizeof(asn_DEF_SplitSRB_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SplitSRB_1, + 4, /* Elements count */ + &asn_SPC_SplitSRB_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRB.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRB.h new file mode 100644 index 0000000..c0e6d8b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRB.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SplitSRB_H_ +#define _SplitSRB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RRCContainer.h" +#include "SRBType.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct DeliveryStatus; +struct ProtocolExtensionContainer; + +/* SplitSRB */ +typedef struct SplitSRB { + RRCContainer_t *rrcContainer; /* OPTIONAL */ + SRBType_t srbType; + struct DeliveryStatus *deliveryStatus; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SplitSRB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SplitSRB; +extern asn_SEQUENCE_specifics_t asn_SPC_SplitSRB_specs_1; +extern asn_TYPE_member_t asn_MBR_SplitSRB_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SplitSRB_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRBs.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRBs.c new file mode 100644 index 0000000..191ee1b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRBs.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SplitSRBs.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SplitSRBs_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SplitSRBs_value2enum_1[] = { + { 0, 4, "srb1" }, + { 1, 4, "srb2" }, + { 2, 8, "srb1and2" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SplitSRBs_enum2value_1[] = { + 0, /* srb1(0) */ + 2, /* srb1and2(2) */ + 1 /* srb2(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SplitSRBs_specs_1 = { + asn_MAP_SplitSRBs_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SplitSRBs_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SplitSRBs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SplitSRBs = { + "SplitSRBs", + "SplitSRBs", + &asn_OP_NativeEnumerated, + asn_DEF_SplitSRBs_tags_1, + sizeof(asn_DEF_SplitSRBs_tags_1) + /sizeof(asn_DEF_SplitSRBs_tags_1[0]), /* 1 */ + asn_DEF_SplitSRBs_tags_1, /* Same as above */ + sizeof(asn_DEF_SplitSRBs_tags_1) + /sizeof(asn_DEF_SplitSRBs_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SplitSRBs_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SplitSRBs_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRBs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRBs.h new file mode 100644 index 0000000..cd72e9c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SplitSRBs.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SplitSRBs_H_ +#define _SplitSRBs_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SplitSRBs { + SplitSRBs_srb1 = 0, + SplitSRBs_srb2 = 1, + SplitSRBs_srb1and2 = 2 + /* + * Enumeration is extensible + */ +} e_SplitSRBs; + +/* SplitSRBs */ +typedef long SplitSRBs_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SplitSRBs_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SplitSRBs; +extern const asn_INTEGER_specifics_t asn_SPC_SplitSRBs_specs_1; +asn_struct_free_f SplitSRBs_free; +asn_struct_print_f SplitSRBs_print; +asn_constr_check_f SplitSRBs_constraint; +ber_type_decoder_f SplitSRBs_decode_ber; +der_type_encoder_f SplitSRBs_encode_der; +xer_type_decoder_f SplitSRBs_decode_xer; +xer_type_encoder_f SplitSRBs_encode_xer; +per_type_decoder_f SplitSRBs_decode_uper; +per_type_encoder_f SplitSRBs_encode_uper; +per_type_decoder_f SplitSRBs_decode_aper; +per_type_encoder_f SplitSRBs_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SplitSRBs_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Style-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Style-ID.c new file mode 100644 index 0000000..b802903 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Style-ID.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Style-ID.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_Style_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Style_ID = { + "Style-ID", + "Style-ID", + &asn_OP_NativeInteger, + asn_DEF_Style_ID_tags_1, + sizeof(asn_DEF_Style_ID_tags_1) + /sizeof(asn_DEF_Style_ID_tags_1[0]), /* 1 */ + asn_DEF_Style_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_Style_ID_tags_1) + /sizeof(asn_DEF_Style_ID_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Style-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Style-ID.h new file mode 100644 index 0000000..da36dd0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Style-ID.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Style_ID_H_ +#define _Style_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Style-ID */ +typedef long Style_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Style_ID; +asn_struct_free_f Style_ID_free; +asn_struct_print_f Style_ID_print; +asn_constr_check_f Style_ID_constraint; +ber_type_decoder_f Style_ID_decode_ber; +der_type_encoder_f Style_ID_encode_der; +xer_type_decoder_f Style_ID_decode_xer; +xer_type_encoder_f Style_ID_encode_xer; +per_type_decoder_f Style_ID_decode_uper; +per_type_encoder_f Style_ID_encode_uper; +per_type_decoder_f Style_ID_decode_aper; +per_type_encoder_f Style_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Style_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQI.c new file mode 100644 index 0000000..dec1015 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQI.c @@ -0,0 +1,97 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQI.h" + +#include "SubbandCQICodeword1.h" +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_SubbandCQI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQI, subbandCQICodeword0), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SubbandCQICodeword0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQICodeword0" + }, + { ATF_POINTER, 2, offsetof(struct SubbandCQI, subbandCQICodeword1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_SubbandCQICodeword1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQICodeword1" + }, + { ATF_POINTER, 1, offsetof(struct SubbandCQI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P195, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SubbandCQI_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_SubbandCQI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subbandCQICodeword0 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subbandCQICodeword1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_specs_1 = { + sizeof(struct SubbandCQI), + offsetof(struct SubbandCQI, _asn_ctx), + asn_MAP_SubbandCQI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SubbandCQI_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQI = { + "SubbandCQI", + "SubbandCQI", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQI_tags_1, + sizeof(asn_DEF_SubbandCQI_tags_1) + /sizeof(asn_DEF_SubbandCQI_tags_1[0]), /* 1 */ + asn_DEF_SubbandCQI_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandCQI_tags_1) + /sizeof(asn_DEF_SubbandCQI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQI_1, + 3, /* Elements count */ + &asn_SPC_SubbandCQI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQI.h new file mode 100644 index 0000000..5946cd8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQI.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQI_H_ +#define _SubbandCQI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SubbandCQICodeword0.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SubbandCQICodeword1; +struct ProtocolExtensionContainer; + +/* SubbandCQI */ +typedef struct SubbandCQI { + SubbandCQICodeword0_t subbandCQICodeword0; + struct SubbandCQICodeword1 *subbandCQICodeword1; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQI; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQI_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword0.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword0.c new file mode 100644 index 0000000..b4f6f40 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword0.c @@ -0,0 +1,185 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQICodeword0.h" + +static int +memb_four_bitCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_two_bitSubbandDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_two_bitDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_four_bitCQI_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitSubbandDifferentialCQI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitDifferentialCQI_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_SubbandCQICodeword0_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQICodeword0_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword0, choice.four_bitCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_four_bitCQI_constr_2, memb_four_bitCQI_constraint_1 }, + 0, 0, /* No default value */ + "four-bitCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword0, choice.two_bitSubbandDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitSubbandDifferentialCQI_constr_3, memb_two_bitSubbandDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitSubbandDifferentialCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword0, choice.two_bitDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitDifferentialCQI_constr_4, memb_two_bitDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitDifferentialCQI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQICodeword0_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* four-bitCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-bitSubbandDifferentialCQI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* two-bitDifferentialCQI */ +}; +asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword0_specs_1 = { + sizeof(struct SubbandCQICodeword0), + offsetof(struct SubbandCQICodeword0, _asn_ctx), + offsetof(struct SubbandCQICodeword0, present), + sizeof(((struct SubbandCQICodeword0 *)0)->present), + asn_MAP_SubbandCQICodeword0_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword0 = { + "SubbandCQICodeword0", + "SubbandCQICodeword0", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SubbandCQICodeword0_constr_1, CHOICE_constraint }, + asn_MBR_SubbandCQICodeword0_1, + 3, /* Elements count */ + &asn_SPC_SubbandCQICodeword0_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword0.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword0.h new file mode 100644 index 0000000..b5c8039 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword0.h @@ -0,0 +1,83 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQICodeword0_H_ +#define _SubbandCQICodeword0_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubbandCQICodeword0_PR { + SubbandCQICodeword0_PR_NOTHING, /* No components present */ + SubbandCQICodeword0_PR_four_bitCQI, + SubbandCQICodeword0_PR_two_bitSubbandDifferentialCQI, + SubbandCQICodeword0_PR_two_bitDifferentialCQI + /* Extensions may appear below */ + +} SubbandCQICodeword0_PR; + +/* SubbandCQICodeword0 */ +typedef struct SubbandCQICodeword0 { + SubbandCQICodeword0_PR present; + union SubbandCQICodeword0_u { + long four_bitCQI; + long two_bitSubbandDifferentialCQI; + long two_bitDifferentialCQI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQICodeword0_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword0; +extern asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword0_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQICodeword0_1[3]; +extern asn_per_constraints_t asn_PER_type_SubbandCQICodeword0_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQICodeword0_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword1.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword1.c new file mode 100644 index 0000000..810e43b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword1.c @@ -0,0 +1,225 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQICodeword1.h" + +static int +memb_four_bitCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_three_bitSpatialDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_two_bitSubbandDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_two_bitDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_four_bitCQI_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitSubbandDifferentialCQI_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_two_bitDifferentialCQI_constr_5 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_SubbandCQICodeword1_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQICodeword1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.four_bitCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_four_bitCQI_constr_2, memb_four_bitCQI_constraint_1 }, + 0, 0, /* No default value */ + "four-bitCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.three_bitSpatialDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3, memb_three_bitSpatialDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "three-bitSpatialDifferentialCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.two_bitSubbandDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitSubbandDifferentialCQI_constr_4, memb_two_bitSubbandDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitSubbandDifferentialCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQICodeword1, choice.two_bitDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_two_bitDifferentialCQI_constr_5, memb_two_bitDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "two-bitDifferentialCQI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQICodeword1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* four-bitCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* three-bitSpatialDifferentialCQI */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* two-bitSubbandDifferentialCQI */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* two-bitDifferentialCQI */ +}; +asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword1_specs_1 = { + sizeof(struct SubbandCQICodeword1), + offsetof(struct SubbandCQICodeword1, _asn_ctx), + offsetof(struct SubbandCQICodeword1, present), + sizeof(((struct SubbandCQICodeword1 *)0)->present), + asn_MAP_SubbandCQICodeword1_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword1 = { + "SubbandCQICodeword1", + "SubbandCQICodeword1", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SubbandCQICodeword1_constr_1, CHOICE_constraint }, + asn_MBR_SubbandCQICodeword1_1, + 4, /* Elements count */ + &asn_SPC_SubbandCQICodeword1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword1.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword1.h new file mode 100644 index 0000000..a481723 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQICodeword1.h @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQICodeword1_H_ +#define _SubbandCQICodeword1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubbandCQICodeword1_PR { + SubbandCQICodeword1_PR_NOTHING, /* No components present */ + SubbandCQICodeword1_PR_four_bitCQI, + SubbandCQICodeword1_PR_three_bitSpatialDifferentialCQI, + SubbandCQICodeword1_PR_two_bitSubbandDifferentialCQI, + SubbandCQICodeword1_PR_two_bitDifferentialCQI + /* Extensions may appear below */ + +} SubbandCQICodeword1_PR; + +/* SubbandCQICodeword1 */ +typedef struct SubbandCQICodeword1 { + SubbandCQICodeword1_PR present; + union SubbandCQICodeword1_u { + long four_bitCQI; + long three_bitSpatialDifferentialCQI; + long two_bitSubbandDifferentialCQI; + long two_bitDifferentialCQI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQICodeword1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQICodeword1; +extern asn_CHOICE_specifics_t asn_SPC_SubbandCQICodeword1_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQICodeword1_1[4]; +extern asn_per_constraints_t asn_PER_type_SubbandCQICodeword1_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQICodeword1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIItem.c new file mode 100644 index 0000000..8bb51d0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIItem.c @@ -0,0 +1,126 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQIItem.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_subbandIndex_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 27)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_subbandIndex_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 27 } /* (0..27,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQIItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem, subbandCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubbandCQI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subbandCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubbandCQIItem, subbandIndex), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_subbandIndex_constr_3, memb_subbandIndex_constraint_1 }, + 0, 0, /* No default value */ + "subbandIndex" + }, + { ATF_POINTER, 1, offsetof(struct SubbandCQIItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P198, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SubbandCQIItem_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_SubbandCQIItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SubbandCQIItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subbandCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subbandIndex */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_specs_1 = { + sizeof(struct SubbandCQIItem), + offsetof(struct SubbandCQIItem, _asn_ctx), + asn_MAP_SubbandCQIItem_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_SubbandCQIItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem = { + "SubbandCQIItem", + "SubbandCQIItem", + &asn_OP_SEQUENCE, + asn_DEF_SubbandCQIItem_tags_1, + sizeof(asn_DEF_SubbandCQIItem_tags_1) + /sizeof(asn_DEF_SubbandCQIItem_tags_1[0]), /* 1 */ + asn_DEF_SubbandCQIItem_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandCQIItem_tags_1) + /sizeof(asn_DEF_SubbandCQIItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SubbandCQIItem_1, + 3, /* Elements count */ + &asn_SPC_SubbandCQIItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIItem.h new file mode 100644 index 0000000..a1b6a1f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIItem.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQIItem_H_ +#define _SubbandCQIItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SubbandCQI.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SubbandCQIItem */ +typedef struct SubbandCQIItem { + SubbandCQI_t subbandCQI; + long subbandIndex; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQIItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIItem; +extern asn_SEQUENCE_specifics_t asn_SPC_SubbandCQIItem_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQIItem_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQIItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIList.c new file mode 100644 index 0000000..b4f3771 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandCQIList.h" + +#include "SubbandCQIItem.h" +asn_per_constraints_t asn_PER_type_SubbandCQIList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 14 } /* (SIZE(1..14)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubbandCQIList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_SubbandCQIItem, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_SubbandCQIList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_SubbandCQIList_specs_1 = { + sizeof(struct SubbandCQIList), + offsetof(struct SubbandCQIList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_SubbandCQIList = { + "SubbandCQIList", + "SubbandCQIList", + &asn_OP_SEQUENCE_OF, + asn_DEF_SubbandCQIList_tags_1, + sizeof(asn_DEF_SubbandCQIList_tags_1) + /sizeof(asn_DEF_SubbandCQIList_tags_1[0]), /* 1 */ + asn_DEF_SubbandCQIList_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandCQIList_tags_1) + /sizeof(asn_DEF_SubbandCQIList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubbandCQIList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_SubbandCQIList_1, + 1, /* Single element */ + &asn_SPC_SubbandCQIList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIList.h new file mode 100644 index 0000000..cf6e716 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandCQIList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandCQIList_H_ +#define _SubbandCQIList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct SubbandCQIItem; + +/* SubbandCQIList */ +typedef struct SubbandCQIList { + A_SEQUENCE_OF(struct SubbandCQIItem) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubbandCQIList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubbandCQIList; +extern asn_SET_OF_specifics_t asn_SPC_SubbandCQIList_specs_1; +extern asn_TYPE_member_t asn_MBR_SubbandCQIList_1[1]; +extern asn_per_constraints_t asn_PER_type_SubbandCQIList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandCQIList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandSize.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandSize.c new file mode 100644 index 0000000..3f3ac40 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandSize.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubbandSize.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubbandSize_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SubbandSize_value2enum_1[] = { + { 0, 5, "size2" }, + { 1, 5, "size3" }, + { 2, 5, "size4" }, + { 3, 5, "size6" }, + { 4, 5, "size8" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SubbandSize_enum2value_1[] = { + 0, /* size2(0) */ + 1, /* size3(1) */ + 2, /* size4(2) */ + 3, /* size6(3) */ + 4 /* size8(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SubbandSize_specs_1 = { + asn_MAP_SubbandSize_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SubbandSize_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SubbandSize_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubbandSize = { + "SubbandSize", + "SubbandSize", + &asn_OP_NativeEnumerated, + asn_DEF_SubbandSize_tags_1, + sizeof(asn_DEF_SubbandSize_tags_1) + /sizeof(asn_DEF_SubbandSize_tags_1[0]), /* 1 */ + asn_DEF_SubbandSize_tags_1, /* Same as above */ + sizeof(asn_DEF_SubbandSize_tags_1) + /sizeof(asn_DEF_SubbandSize_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubbandSize_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SubbandSize_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandSize.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandSize.h new file mode 100644 index 0000000..c2f00c1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubbandSize.h @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubbandSize_H_ +#define _SubbandSize_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubbandSize { + SubbandSize_size2 = 0, + SubbandSize_size3 = 1, + SubbandSize_size4 = 2, + SubbandSize_size6 = 3, + SubbandSize_size8 = 4 + /* + * Enumeration is extensible + */ +} e_SubbandSize; + +/* SubbandSize */ +typedef long SubbandSize_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubbandSize_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubbandSize; +extern const asn_INTEGER_specifics_t asn_SPC_SubbandSize_specs_1; +asn_struct_free_f SubbandSize_free; +asn_struct_print_f SubbandSize_print; +asn_constr_check_f SubbandSize_constraint; +ber_type_decoder_f SubbandSize_decode_ber; +der_type_encoder_f SubbandSize_encode_der; +xer_type_decoder_f SubbandSize_decode_xer; +xer_type_encoder_f SubbandSize_encode_xer; +per_type_decoder_f SubbandSize_decode_uper; +per_type_encoder_f SubbandSize_encode_uper; +per_type_decoder_f SubbandSize_decode_aper; +per_type_encoder_f SubbandSize_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubbandSize_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAllocation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAllocation.c new file mode 100644 index 0000000..3cf4d66 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAllocation.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubframeAllocation.h" + +asn_per_constraints_t asn_PER_type_SubframeAllocation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SubframeAllocation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SubframeAllocation, choice.oneframe), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Oneframe, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "oneframe" + }, + { ATF_NOFLAGS, 0, offsetof(struct SubframeAllocation, choice.fourframes), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Fourframes, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fourframes" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_SubframeAllocation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneframe */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fourframes */ +}; +asn_CHOICE_specifics_t asn_SPC_SubframeAllocation_specs_1 = { + sizeof(struct SubframeAllocation), + offsetof(struct SubframeAllocation, _asn_ctx), + offsetof(struct SubframeAllocation, present), + sizeof(((struct SubframeAllocation *)0)->present), + asn_MAP_SubframeAllocation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_SubframeAllocation = { + "SubframeAllocation", + "SubframeAllocation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_SubframeAllocation_constr_1, CHOICE_constraint }, + asn_MBR_SubframeAllocation_1, + 2, /* Elements count */ + &asn_SPC_SubframeAllocation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAllocation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAllocation.h new file mode 100644 index 0000000..3ad6110 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAllocation.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubframeAllocation_H_ +#define _SubframeAllocation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "Oneframe.h" +#include "Fourframes.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubframeAllocation_PR { + SubframeAllocation_PR_NOTHING, /* No components present */ + SubframeAllocation_PR_oneframe, + SubframeAllocation_PR_fourframes + /* Extensions may appear below */ + +} SubframeAllocation_PR; + +/* SubframeAllocation */ +typedef struct SubframeAllocation { + SubframeAllocation_PR present; + union SubframeAllocation_u { + Oneframe_t oneframe; + Fourframes_t fourframes; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SubframeAllocation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SubframeAllocation; +extern asn_CHOICE_specifics_t asn_SPC_SubframeAllocation_specs_1; +extern asn_TYPE_member_t asn_MBR_SubframeAllocation_1[2]; +extern asn_per_constraints_t asn_PER_type_SubframeAllocation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubframeAllocation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAssignment.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAssignment.c new file mode 100644 index 0000000..b37d5b0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAssignment.c @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubframeAssignment.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubframeAssignment_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SubframeAssignment_value2enum_1[] = { + { 0, 3, "sa0" }, + { 1, 3, "sa1" }, + { 2, 3, "sa2" }, + { 3, 3, "sa3" }, + { 4, 3, "sa4" }, + { 5, 3, "sa5" }, + { 6, 3, "sa6" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SubframeAssignment_enum2value_1[] = { + 0, /* sa0(0) */ + 1, /* sa1(1) */ + 2, /* sa2(2) */ + 3, /* sa3(3) */ + 4, /* sa4(4) */ + 5, /* sa5(5) */ + 6 /* sa6(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SubframeAssignment_specs_1 = { + asn_MAP_SubframeAssignment_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SubframeAssignment_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SubframeAssignment_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubframeAssignment = { + "SubframeAssignment", + "SubframeAssignment", + &asn_OP_NativeEnumerated, + asn_DEF_SubframeAssignment_tags_1, + sizeof(asn_DEF_SubframeAssignment_tags_1) + /sizeof(asn_DEF_SubframeAssignment_tags_1[0]), /* 1 */ + asn_DEF_SubframeAssignment_tags_1, /* Same as above */ + sizeof(asn_DEF_SubframeAssignment_tags_1) + /sizeof(asn_DEF_SubframeAssignment_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubframeAssignment_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SubframeAssignment_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAssignment.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAssignment.h new file mode 100644 index 0000000..0df0b3b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeAssignment.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubframeAssignment_H_ +#define _SubframeAssignment_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubframeAssignment { + SubframeAssignment_sa0 = 0, + SubframeAssignment_sa1 = 1, + SubframeAssignment_sa2 = 2, + SubframeAssignment_sa3 = 3, + SubframeAssignment_sa4 = 4, + SubframeAssignment_sa5 = 5, + SubframeAssignment_sa6 = 6 + /* + * Enumeration is extensible + */ +} e_SubframeAssignment; + +/* SubframeAssignment */ +typedef long SubframeAssignment_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubframeAssignment_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubframeAssignment; +extern const asn_INTEGER_specifics_t asn_SPC_SubframeAssignment_specs_1; +asn_struct_free_f SubframeAssignment_free; +asn_struct_print_f SubframeAssignment_print; +asn_constr_check_f SubframeAssignment_constraint; +ber_type_decoder_f SubframeAssignment_decode_ber; +der_type_encoder_f SubframeAssignment_encode_der; +xer_type_decoder_f SubframeAssignment_decode_xer; +xer_type_encoder_f SubframeAssignment_encode_xer; +per_type_decoder_f SubframeAssignment_decode_uper; +per_type_encoder_f SubframeAssignment_encode_uper; +per_type_decoder_f SubframeAssignment_decode_aper; +per_type_encoder_f SubframeAssignment_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubframeAssignment_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeType.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeType.c new file mode 100644 index 0000000..51302a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeType.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubframeType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubframeType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_SubframeType_value2enum_1[] = { + { 0, 5, "mbsfn" }, + { 1, 8, "nonmbsfn" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_SubframeType_enum2value_1[] = { + 0, /* mbsfn(0) */ + 1 /* nonmbsfn(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_SubframeType_specs_1 = { + asn_MAP_SubframeType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_SubframeType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_SubframeType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubframeType = { + "SubframeType", + "SubframeType", + &asn_OP_NativeEnumerated, + asn_DEF_SubframeType_tags_1, + sizeof(asn_DEF_SubframeType_tags_1) + /sizeof(asn_DEF_SubframeType_tags_1[0]), /* 1 */ + asn_DEF_SubframeType_tags_1, /* Same as above */ + sizeof(asn_DEF_SubframeType_tags_1) + /sizeof(asn_DEF_SubframeType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubframeType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_SubframeType_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeType.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeType.h new file mode 100644 index 0000000..f8348a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubframeType.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubframeType_H_ +#define _SubframeType_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SubframeType { + SubframeType_mbsfn = 0, + SubframeType_nonmbsfn = 1 + /* + * Enumeration is extensible + */ +} e_SubframeType; + +/* SubframeType */ +typedef long SubframeType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubframeType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubframeType; +extern const asn_INTEGER_specifics_t asn_SPC_SubframeType_specs_1; +asn_struct_free_f SubframeType_free; +asn_struct_print_f SubframeType_print; +asn_constr_check_f SubframeType_constraint; +ber_type_decoder_f SubframeType_decode_ber; +der_type_encoder_f SubframeType_encode_der; +xer_type_decoder_f SubframeType_decode_xer; +xer_type_encoder_f SubframeType_encode_xer; +per_type_decoder_f SubframeType_decode_uper; +per_type_encoder_f SubframeType_encode_uper; +per_type_decoder_f SubframeType_decode_aper; +per_type_encoder_f SubframeType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubframeType_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c new file mode 100644 index 0000000..67b5e64 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SubscriberProfileIDforRFP.h" + +int +SubscriberProfileIDforRFP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 256)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_SubscriberProfileIDforRFP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (1..256) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_SubscriberProfileIDforRFP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP = { + "SubscriberProfileIDforRFP", + "SubscriberProfileIDforRFP", + &asn_OP_NativeInteger, + asn_DEF_SubscriberProfileIDforRFP_tags_1, + sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + asn_DEF_SubscriberProfileIDforRFP_tags_1, /* Same as above */ + sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1) + /sizeof(asn_DEF_SubscriberProfileIDforRFP_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_SubscriberProfileIDforRFP_constr_1, SubscriberProfileIDforRFP_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h new file mode 100644 index 0000000..c53fb7c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SubscriberProfileIDforRFP.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SubscriberProfileIDforRFP_H_ +#define _SubscriberProfileIDforRFP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* SubscriberProfileIDforRFP */ +typedef long SubscriberProfileIDforRFP_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_SubscriberProfileIDforRFP_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_SubscriberProfileIDforRFP; +asn_struct_free_f SubscriberProfileIDforRFP_free; +asn_struct_print_f SubscriberProfileIDforRFP_print; +asn_constr_check_f SubscriberProfileIDforRFP_constraint; +ber_type_decoder_f SubscriberProfileIDforRFP_decode_ber; +der_type_encoder_f SubscriberProfileIDforRFP_encode_der; +xer_type_decoder_f SubscriberProfileIDforRFP_decode_xer; +xer_type_encoder_f SubscriberProfileIDforRFP_encode_xer; +per_type_decoder_f SubscriberProfileIDforRFP_decode_uper; +per_type_encoder_f SubscriberProfileIDforRFP_encode_uper; +per_type_decoder_f SubscriberProfileIDforRFP_decode_aper; +per_type_encoder_f SubscriberProfileIDforRFP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _SubscriberProfileIDforRFP_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c new file mode 100644 index 0000000..13a182e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.c @@ -0,0 +1,363 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Subscription-Based-UE-DifferentiationInfo.h" + +#include "ScheduledCommunicationTime.h" +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static int +memb_periodicTime_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 3600)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_periodicCommunicationIndicator_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_stationaryIndication_constr_8 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_trafficProfile_constr_12 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_batteryIndication_constr_17 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_periodicTime_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 1, 3600 } /* (1..3600,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_periodicCommunicationIndicator_value2enum_2[] = { + { 0, 12, "periodically" }, + { 1, 8, "ondemand" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_periodicCommunicationIndicator_enum2value_2[] = { + 1, /* ondemand(1) */ + 0 /* periodically(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_periodicCommunicationIndicator_specs_2 = { + asn_MAP_periodicCommunicationIndicator_value2enum_2, /* "tag" => N; sorted by tag */ + asn_MAP_periodicCommunicationIndicator_enum2value_2, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_periodicCommunicationIndicator_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_periodicCommunicationIndicator_2 = { + "periodicCommunicationIndicator", + "periodicCommunicationIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_periodicCommunicationIndicator_tags_2, + sizeof(asn_DEF_periodicCommunicationIndicator_tags_2) + /sizeof(asn_DEF_periodicCommunicationIndicator_tags_2[0]) - 1, /* 1 */ + asn_DEF_periodicCommunicationIndicator_tags_2, /* Same as above */ + sizeof(asn_DEF_periodicCommunicationIndicator_tags_2) + /sizeof(asn_DEF_periodicCommunicationIndicator_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_periodicCommunicationIndicator_constr_2, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_periodicCommunicationIndicator_specs_2 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_stationaryIndication_value2enum_8[] = { + { 0, 10, "stationary" }, + { 1, 6, "mobile" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_stationaryIndication_enum2value_8[] = { + 1, /* mobile(1) */ + 0 /* stationary(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_stationaryIndication_specs_8 = { + asn_MAP_stationaryIndication_value2enum_8, /* "tag" => N; sorted by tag */ + asn_MAP_stationaryIndication_enum2value_8, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_stationaryIndication_tags_8[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_stationaryIndication_8 = { + "stationaryIndication", + "stationaryIndication", + &asn_OP_NativeEnumerated, + asn_DEF_stationaryIndication_tags_8, + sizeof(asn_DEF_stationaryIndication_tags_8) + /sizeof(asn_DEF_stationaryIndication_tags_8[0]) - 1, /* 1 */ + asn_DEF_stationaryIndication_tags_8, /* Same as above */ + sizeof(asn_DEF_stationaryIndication_tags_8) + /sizeof(asn_DEF_stationaryIndication_tags_8[0]), /* 2 */ + { 0, &asn_PER_type_stationaryIndication_constr_8, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_stationaryIndication_specs_8 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_trafficProfile_value2enum_12[] = { + { 0, 13, "single-packet" }, + { 1, 12, "dual-packets" }, + { 2, 16, "multiple-packets" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_trafficProfile_enum2value_12[] = { + 1, /* dual-packets(1) */ + 2, /* multiple-packets(2) */ + 0 /* single-packet(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_trafficProfile_specs_12 = { + asn_MAP_trafficProfile_value2enum_12, /* "tag" => N; sorted by tag */ + asn_MAP_trafficProfile_enum2value_12, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_trafficProfile_tags_12[] = { + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_trafficProfile_12 = { + "trafficProfile", + "trafficProfile", + &asn_OP_NativeEnumerated, + asn_DEF_trafficProfile_tags_12, + sizeof(asn_DEF_trafficProfile_tags_12) + /sizeof(asn_DEF_trafficProfile_tags_12[0]) - 1, /* 1 */ + asn_DEF_trafficProfile_tags_12, /* Same as above */ + sizeof(asn_DEF_trafficProfile_tags_12) + /sizeof(asn_DEF_trafficProfile_tags_12[0]), /* 2 */ + { 0, &asn_PER_type_trafficProfile_constr_12, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_trafficProfile_specs_12 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_batteryIndication_value2enum_17[] = { + { 0, 15, "battery-powered" }, + { 1, 47, "battery-powered-not-rechargeable-or-replaceable" }, + { 2, 19, "not-battery-powered" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_batteryIndication_enum2value_17[] = { + 0, /* battery-powered(0) */ + 1, /* battery-powered-not-rechargeable-or-replaceable(1) */ + 2 /* not-battery-powered(2) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_batteryIndication_specs_17 = { + asn_MAP_batteryIndication_value2enum_17, /* "tag" => N; sorted by tag */ + asn_MAP_batteryIndication_enum2value_17, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_batteryIndication_tags_17[] = { + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_batteryIndication_17 = { + "batteryIndication", + "batteryIndication", + &asn_OP_NativeEnumerated, + asn_DEF_batteryIndication_tags_17, + sizeof(asn_DEF_batteryIndication_tags_17) + /sizeof(asn_DEF_batteryIndication_tags_17[0]) - 1, /* 1 */ + asn_DEF_batteryIndication_tags_17, /* Same as above */ + sizeof(asn_DEF_batteryIndication_tags_17) + /sizeof(asn_DEF_batteryIndication_tags_17[0]), /* 2 */ + { 0, &asn_PER_type_batteryIndication_constr_17, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_batteryIndication_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_1[] = { + { ATF_POINTER, 7, offsetof(struct Subscription_Based_UE_DifferentiationInfo, periodicCommunicationIndicator), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_periodicCommunicationIndicator_2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "periodicCommunicationIndicator" + }, + { ATF_POINTER, 6, offsetof(struct Subscription_Based_UE_DifferentiationInfo, periodicTime), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_periodicTime_constr_6, memb_periodicTime_constraint_1 }, + 0, 0, /* No default value */ + "periodicTime" + }, + { ATF_POINTER, 5, offsetof(struct Subscription_Based_UE_DifferentiationInfo, scheduledCommunicationTime), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ScheduledCommunicationTime, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "scheduledCommunicationTime" + }, + { ATF_POINTER, 4, offsetof(struct Subscription_Based_UE_DifferentiationInfo, stationaryIndication), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_stationaryIndication_8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "stationaryIndication" + }, + { ATF_POINTER, 3, offsetof(struct Subscription_Based_UE_DifferentiationInfo, trafficProfile), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_trafficProfile_12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "trafficProfile" + }, + { ATF_POINTER, 2, offsetof(struct Subscription_Based_UE_DifferentiationInfo, batteryIndication), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_batteryIndication_17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "batteryIndication" + }, + { ATF_POINTER, 1, offsetof(struct Subscription_Based_UE_DifferentiationInfo, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P196, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_Subscription_Based_UE_DifferentiationInfo_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_Subscription_Based_UE_DifferentiationInfo_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodicCommunicationIndicator */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* periodicTime */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scheduledCommunicationTime */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* stationaryIndication */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* trafficProfile */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* batteryIndication */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_specs_1 = { + sizeof(struct Subscription_Based_UE_DifferentiationInfo), + offsetof(struct Subscription_Based_UE_DifferentiationInfo, _asn_ctx), + asn_MAP_Subscription_Based_UE_DifferentiationInfo_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_Subscription_Based_UE_DifferentiationInfo_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo = { + "Subscription-Based-UE-DifferentiationInfo", + "Subscription-Based-UE-DifferentiationInfo", + &asn_OP_SEQUENCE, + asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1, + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1[0]), /* 1 */ + asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1) + /sizeof(asn_DEF_Subscription_Based_UE_DifferentiationInfo_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_Subscription_Based_UE_DifferentiationInfo_1, + 7, /* Elements count */ + &asn_SPC_Subscription_Based_UE_DifferentiationInfo_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h new file mode 100644 index 0000000..be8dff0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Subscription-Based-UE-DifferentiationInfo.h @@ -0,0 +1,114 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Subscription_Based_UE_DifferentiationInfo_H_ +#define _Subscription_Based_UE_DifferentiationInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator { + Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator_periodically = 0, + Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator_ondemand = 1 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__periodicCommunicationIndicator; +typedef enum Subscription_Based_UE_DifferentiationInfo__stationaryIndication { + Subscription_Based_UE_DifferentiationInfo__stationaryIndication_stationary = 0, + Subscription_Based_UE_DifferentiationInfo__stationaryIndication_mobile = 1 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__stationaryIndication; +typedef enum Subscription_Based_UE_DifferentiationInfo__trafficProfile { + Subscription_Based_UE_DifferentiationInfo__trafficProfile_single_packet = 0, + Subscription_Based_UE_DifferentiationInfo__trafficProfile_dual_packets = 1, + Subscription_Based_UE_DifferentiationInfo__trafficProfile_multiple_packets = 2 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__trafficProfile; +typedef enum Subscription_Based_UE_DifferentiationInfo__batteryIndication { + Subscription_Based_UE_DifferentiationInfo__batteryIndication_battery_powered = 0, + Subscription_Based_UE_DifferentiationInfo__batteryIndication_battery_powered_not_rechargeable_or_replaceable = 1, + Subscription_Based_UE_DifferentiationInfo__batteryIndication_not_battery_powered = 2 + /* + * Enumeration is extensible + */ +} e_Subscription_Based_UE_DifferentiationInfo__batteryIndication; + +/* Forward declarations */ +struct ScheduledCommunicationTime; +struct ProtocolExtensionContainer; + +/* Subscription-Based-UE-DifferentiationInfo */ +typedef struct Subscription_Based_UE_DifferentiationInfo { + long *periodicCommunicationIndicator; /* OPTIONAL */ + long *periodicTime; /* OPTIONAL */ + struct ScheduledCommunicationTime *scheduledCommunicationTime; /* OPTIONAL */ + long *stationaryIndication; /* OPTIONAL */ + long *trafficProfile; /* OPTIONAL */ + long *batteryIndication; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Subscription_Based_UE_DifferentiationInfo_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_periodicCommunicationIndicator_2; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_stationaryIndication_8; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_trafficProfile_12; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_batteryIndication_17; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo; +extern asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_1[7]; + +#ifdef __cplusplus +} +#endif + +#endif /* _Subscription_Based_UE_DifferentiationInfo_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SuccessfulOutcome.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SuccessfulOutcome.c new file mode 100644 index 0000000..6aaf903 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SuccessfulOutcome.c @@ -0,0 +1,471 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SuccessfulOutcome.h" + +static const long asn_VAL_1_id_ricSubscription = 201; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_ricSubscriptionDelete = 202; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_ricServiceUpdate = 203; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_ricControl = 204; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_x2Setup = 6; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_endcX2Setup = 36; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_resourceStatusReportingInitiation = 9; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_eNBConfigurationUpdate = 8; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_endcConfigurationUpdate = 37; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_reset = 7; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_ricIndication = 205; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_12_id_ricServiceQuery = 206; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_13_id_loadIndication = 2; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_gNBStatusIndication = 45; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_resourceStatusReporting = 10; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_errorIndication = 3; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_ricSubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_ricSubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_ricServiceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_ricControl }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_X2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_X2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_X2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_x2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCX2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_endcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_resourceStatusReportingInitiation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_eNBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_endcConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ricIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_ricServiceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_LoadInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_loadIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_GNBStatusIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_gNBStatusIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusUpdate }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_resourceStatusReporting }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_errorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 1; /* &SuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.X2SetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2SetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ENDCX2SetupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCX2SetupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResourceStatusResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ENBConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ENDCConfigurationUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCConfigurationUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetResponse" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 9 }, /* RICsubscriptionResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 8 }, /* RICsubscriptionDeleteResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 7 }, /* RICserviceUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 6 }, /* RICcontrolAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 5 }, /* X2SetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 4 }, /* ENDCX2SetupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 3 }, /* ResourceStatusResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 2 }, /* ENBConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 1 }, /* ENDCConfigurationUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 9, -9, 0 } /* ResetResponse */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct SuccessfulOutcome__value), + offsetof(struct SuccessfulOutcome__value, _asn_ctx), + offsetof(struct SuccessfulOutcome__value, present), + sizeof(((struct SuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 10, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 10, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_SuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { + sizeof(struct SuccessfulOutcome), + offsetof(struct SuccessfulOutcome, _asn_ctx), + asn_MAP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SuccessfulOutcome.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SuccessfulOutcome.h new file mode 100644 index 0000000..dc595ec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SuccessfulOutcome.h @@ -0,0 +1,137 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SuccessfulOutcome_H_ +#define _SuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "X2SetupRequest.h" +#include "X2SetupResponse.h" +#include "X2SetupFailure.h" +#include "ENDCX2SetupRequest.h" +#include "ENDCX2SetupResponse.h" +#include "ENDCX2SetupFailure.h" +#include "ResourceStatusRequest.h" +#include "ResourceStatusResponse.h" +#include "ResourceStatusFailure.h" +#include "ENBConfigurationUpdate.h" +#include "ENBConfigurationUpdateAcknowledge.h" +#include "ENBConfigurationUpdateFailure.h" +#include "ENDCConfigurationUpdate.h" +#include "ENDCConfigurationUpdateAcknowledge.h" +#include "ENDCConfigurationUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "LoadInformation.h" +#include "GNBStatusIndication.h" +#include "ResourceStatusUpdate.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SuccessfulOutcome__value_PR { + SuccessfulOutcome__value_PR_NOTHING, /* No components present */ + SuccessfulOutcome__value_PR_RICsubscriptionResponse, + SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, + SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, + SuccessfulOutcome__value_PR_RICcontrolAcknowledge, + SuccessfulOutcome__value_PR_X2SetupResponse, + SuccessfulOutcome__value_PR_ENDCX2SetupResponse, + SuccessfulOutcome__value_PR_ResourceStatusResponse, + SuccessfulOutcome__value_PR_ENBConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_ENDCConfigurationUpdateAcknowledge, + SuccessfulOutcome__value_PR_ResetResponse +} SuccessfulOutcome__value_PR; + +/* SuccessfulOutcome */ +typedef struct SuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct SuccessfulOutcome__value { + SuccessfulOutcome__value_PR present; + union SuccessfulOutcome__value_u { + RICsubscriptionResponse_t RICsubscriptionResponse; + RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; + RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; + RICcontrolAcknowledge_t RICcontrolAcknowledge; + X2SetupResponse_t X2SetupResponse; + ENDCX2SetupResponse_t ENDCX2SetupResponse; + ResourceStatusResponse_t ResourceStatusResponse; + ENBConfigurationUpdateAcknowledge_t ENBConfigurationUpdateAcknowledge; + ENDCConfigurationUpdateAcknowledge_t ENDCConfigurationUpdateAcknowledge; + ResetResponse_t ResetResponse; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c new file mode 100644 index 0000000..1226842 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SupportedSULFreqBandItem.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "SupportedSULFreqBandItem.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_freqBandIndicatorNr_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 1024)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_freqBandIndicatorNr_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 10, 10, 1, 1024 } /* (1..1024,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SupportedSULFreqBandItem, freqBandIndicatorNr), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_freqBandIndicatorNr_constr_2, memb_freqBandIndicatorNr_constraint_1 }, + 0, 0, /* No default value */ + "freqBandIndicatorNr" + }, + { ATF_POINTER, 1, offsetof(struct SupportedSULFreqBandItem, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P200, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_SupportedSULFreqBandItem_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_SupportedSULFreqBandItem_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SupportedSULFreqBandItem_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNr */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1 = { + sizeof(struct SupportedSULFreqBandItem), + offsetof(struct SupportedSULFreqBandItem, _asn_ctx), + asn_MAP_SupportedSULFreqBandItem_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_SupportedSULFreqBandItem_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem = { + "SupportedSULFreqBandItem", + "SupportedSULFreqBandItem", + &asn_OP_SEQUENCE, + asn_DEF_SupportedSULFreqBandItem_tags_1, + sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1) + /sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */ + asn_DEF_SupportedSULFreqBandItem_tags_1, /* Same as above */ + sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1) + /sizeof(asn_DEF_SupportedSULFreqBandItem_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SupportedSULFreqBandItem_1, + 2, /* Elements count */ + &asn_SPC_SupportedSULFreqBandItem_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h new file mode 100644 index 0000000..2b2a591 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/SupportedSULFreqBandItem.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _SupportedSULFreqBandItem_H_ +#define _SupportedSULFreqBandItem_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* SupportedSULFreqBandItem */ +typedef struct SupportedSULFreqBandItem { + long freqBandIndicatorNr; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SupportedSULFreqBandItem_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SupportedSULFreqBandItem; +extern asn_SEQUENCE_specifics_t asn_SPC_SupportedSULFreqBandItem_specs_1; +extern asn_TYPE_member_t asn_MBR_SupportedSULFreqBandItem_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SupportedSULFreqBandItem_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedMDT.c new file mode 100644 index 0000000..bc29ca2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedMDT.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TABasedMDT.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TABasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedMDT, tAListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct TABasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P201, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TABasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TABasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_specs_1 = { + sizeof(struct TABasedMDT), + offsetof(struct TABasedMDT, _asn_ctx), + asn_MAP_TABasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TABasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedMDT = { + "TABasedMDT", + "TABasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_TABasedMDT_tags_1, + sizeof(asn_DEF_TABasedMDT_tags_1) + /sizeof(asn_DEF_TABasedMDT_tags_1[0]), /* 1 */ + asn_DEF_TABasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TABasedMDT_tags_1) + /sizeof(asn_DEF_TABasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedMDT_1, + 2, /* Elements count */ + &asn_SPC_TABasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedMDT.h new file mode 100644 index 0000000..99540a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedMDT.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TABasedMDT_H_ +#define _TABasedMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAListforMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TABasedMDT */ +typedef struct TABasedMDT { + TAListforMDT_t tAListforMDT; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TABasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TABasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TABasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TABasedMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedQMC.c new file mode 100644 index 0000000..f2bef3c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedQMC.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TABasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TABasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TABasedQMC, tAListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct TABasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P204, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TABasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TABasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TABasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_specs_1 = { + sizeof(struct TABasedQMC), + offsetof(struct TABasedQMC, _asn_ctx), + asn_MAP_TABasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TABasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TABasedQMC = { + "TABasedQMC", + "TABasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_TABasedQMC_tags_1, + sizeof(asn_DEF_TABasedQMC_tags_1) + /sizeof(asn_DEF_TABasedQMC_tags_1[0]), /* 1 */ + asn_DEF_TABasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TABasedQMC_tags_1) + /sizeof(asn_DEF_TABasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TABasedQMC_1, + 2, /* Elements count */ + &asn_SPC_TABasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedQMC.h new file mode 100644 index 0000000..82b6637 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TABasedQMC.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TABasedQMC_H_ +#define _TABasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TABasedQMC */ +typedef struct TABasedQMC { + TAListforQMC_t tAListforQMC; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TABasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TABasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TABasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TABasedQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAC.c new file mode 100644 index 0000000..8c27f2e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAC.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAC.h" + +int +TAC_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 2)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TAC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 2, 2 } /* (SIZE(2..2)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TAC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TAC = { + "TAC", + "TAC", + &asn_OP_OCTET_STRING, + asn_DEF_TAC_tags_1, + sizeof(asn_DEF_TAC_tags_1) + /sizeof(asn_DEF_TAC_tags_1[0]), /* 1 */ + asn_DEF_TAC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAC_tags_1) + /sizeof(asn_DEF_TAC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAC_constr_1, TAC_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAC.h new file mode 100644 index 0000000..f0bdd65 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAC.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAC_H_ +#define _TAC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TAC */ +typedef OCTET_STRING_t TAC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TAC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TAC; +asn_struct_free_f TAC_free; +asn_struct_print_f TAC_print; +asn_constr_check_f TAC_constraint; +ber_type_decoder_f TAC_decode_ber; +der_type_encoder_f TAC_encode_der; +xer_type_decoder_f TAC_decode_xer; +xer_type_encoder_f TAC_encode_xer; +per_type_decoder_f TAC_decode_uper; +per_type_encoder_f TAC_encode_uper; +per_type_decoder_f TAC_decode_aper; +per_type_encoder_f TAC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAI-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAI-Item.c new file mode 100644 index 0000000..5436f73 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAI-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAI-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TAI_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item, tAC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAC" + }, + { ATF_NOFLAGS, 0, offsetof(struct TAI_Item, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_POINTER, 1, offsetof(struct TAI_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P203, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TAI_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_TAI_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAI_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_specs_1 = { + sizeof(struct TAI_Item), + offsetof(struct TAI_Item, _asn_ctx), + asn_MAP_TAI_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TAI_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAI_Item = { + "TAI-Item", + "TAI-Item", + &asn_OP_SEQUENCE, + asn_DEF_TAI_Item_tags_1, + sizeof(asn_DEF_TAI_Item_tags_1) + /sizeof(asn_DEF_TAI_Item_tags_1[0]), /* 1 */ + asn_DEF_TAI_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_TAI_Item_tags_1) + /sizeof(asn_DEF_TAI_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAI_Item_1, + 3, /* Elements count */ + &asn_SPC_TAI_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAI-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAI-Item.h new file mode 100644 index 0000000..096cb9c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAI-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAI_Item_H_ +#define _TAI_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "PLMN-Identity.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TAI-Item */ +typedef struct TAI_Item { + TAC_t tAC; + PLMN_Identity_t pLMN_Identity; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAI_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAI_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_TAI_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_TAI_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAI_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedMDT.c new file mode 100644 index 0000000..c2c7b2d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedMDT.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIBasedMDT.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TAIBasedMDT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedMDT, tAIListforMDT), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIListforMDT, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIListforMDT" + }, + { ATF_POINTER, 1, offsetof(struct TAIBasedMDT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P202, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TAIBasedMDT_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TAIBasedMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedMDT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAIListforMDT */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_specs_1 = { + sizeof(struct TAIBasedMDT), + offsetof(struct TAIBasedMDT, _asn_ctx), + asn_MAP_TAIBasedMDT_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TAIBasedMDT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT = { + "TAIBasedMDT", + "TAIBasedMDT", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedMDT_tags_1, + sizeof(asn_DEF_TAIBasedMDT_tags_1) + /sizeof(asn_DEF_TAIBasedMDT_tags_1[0]), /* 1 */ + asn_DEF_TAIBasedMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIBasedMDT_tags_1) + /sizeof(asn_DEF_TAIBasedMDT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedMDT_1, + 2, /* Elements count */ + &asn_SPC_TAIBasedMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedMDT.h new file mode 100644 index 0000000..33c8b0f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedMDT.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIBasedMDT_H_ +#define _TAIBasedMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAIListforMDT.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TAIBasedMDT */ +typedef struct TAIBasedMDT { + TAIListforMDT_t tAIListforMDT; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIBasedMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIBasedMDT_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIBasedMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedQMC.c new file mode 100644 index 0000000..063857a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedQMC.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIBasedQMC.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TAIBasedQMC_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TAIBasedQMC, tAIListforQMC), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TAIListforQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tAIListforQMC" + }, + { ATF_POINTER, 1, offsetof(struct TAIBasedQMC, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P205, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TAIBasedQMC_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TAIBasedQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TAIBasedQMC_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tAIListforQMC */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_specs_1 = { + sizeof(struct TAIBasedQMC), + offsetof(struct TAIBasedQMC, _asn_ctx), + asn_MAP_TAIBasedQMC_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TAIBasedQMC_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC = { + "TAIBasedQMC", + "TAIBasedQMC", + &asn_OP_SEQUENCE, + asn_DEF_TAIBasedQMC_tags_1, + sizeof(asn_DEF_TAIBasedQMC_tags_1) + /sizeof(asn_DEF_TAIBasedQMC_tags_1[0]), /* 1 */ + asn_DEF_TAIBasedQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIBasedQMC_tags_1) + /sizeof(asn_DEF_TAIBasedQMC_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TAIBasedQMC_1, + 2, /* Elements count */ + &asn_SPC_TAIBasedQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedQMC.h new file mode 100644 index 0000000..823d208 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIBasedQMC.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIBasedQMC_H_ +#define _TAIBasedQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAIListforQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TAIBasedQMC */ +typedef struct TAIBasedQMC { + TAIListforQMC_t tAIListforQMC; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIBasedQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC; +extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIBasedQMC_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIBasedQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforMDT.c new file mode 100644 index 0000000..ced69e8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforMDT.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIListforMDT.h" + +#include "TAI-Item.h" +asn_per_constraints_t asn_PER_type_TAIListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAIListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAIListforMDT_specs_1 = { + sizeof(struct TAIListforMDT), + offsetof(struct TAIListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIListforMDT = { + "TAIListforMDT", + "TAIListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAIListforMDT_tags_1, + sizeof(asn_DEF_TAIListforMDT_tags_1) + /sizeof(asn_DEF_TAIListforMDT_tags_1[0]), /* 1 */ + asn_DEF_TAIListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIListforMDT_tags_1) + /sizeof(asn_DEF_TAIListforMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAIListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAIListforMDT_1, + 1, /* Single element */ + &asn_SPC_TAIListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforMDT.h new file mode 100644 index 0000000..e34f304 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforMDT.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIListforMDT_H_ +#define _TAIListforMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TAI_Item; + +/* TAIListforMDT */ +typedef struct TAIListforMDT { + A_SEQUENCE_OF(struct TAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_TAIListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_TAIListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIListforMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforQMC.c new file mode 100644 index 0000000..b6a0523 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforQMC.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAIListforQMC.h" + +#include "TAI-Item.h" +asn_per_constraints_t asn_PER_type_TAIListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAIListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_TAI_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAIListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAIListforQMC_specs_1 = { + sizeof(struct TAIListforQMC), + offsetof(struct TAIListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAIListforQMC = { + "TAIListforQMC", + "TAIListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAIListforQMC_tags_1, + sizeof(asn_DEF_TAIListforQMC_tags_1) + /sizeof(asn_DEF_TAIListforQMC_tags_1[0]), /* 1 */ + asn_DEF_TAIListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAIListforQMC_tags_1) + /sizeof(asn_DEF_TAIListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAIListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAIListforQMC_1, + 1, /* Single element */ + &asn_SPC_TAIListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforQMC.h new file mode 100644 index 0000000..ff514be --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAIListforQMC.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAIListforQMC_H_ +#define _TAIListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct TAI_Item; + +/* TAIListforQMC */ +typedef struct TAIListforQMC { + A_SEQUENCE_OF(struct TAI_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAIListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAIListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_TAIListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TAIListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_TAIListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAIListforQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforMDT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforMDT.c new file mode 100644 index 0000000..ecf0320 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforMDT.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAListforMDT.h" + +asn_per_constraints_t asn_PER_type_TAListforMDT_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAListforMDT_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAListforMDT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAListforMDT_specs_1 = { + sizeof(struct TAListforMDT), + offsetof(struct TAListforMDT, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAListforMDT = { + "TAListforMDT", + "TAListforMDT", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAListforMDT_tags_1, + sizeof(asn_DEF_TAListforMDT_tags_1) + /sizeof(asn_DEF_TAListforMDT_tags_1[0]), /* 1 */ + asn_DEF_TAListforMDT_tags_1, /* Same as above */ + sizeof(asn_DEF_TAListforMDT_tags_1) + /sizeof(asn_DEF_TAListforMDT_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAListforMDT_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAListforMDT_1, + 1, /* Single element */ + &asn_SPC_TAListforMDT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforMDT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforMDT.h new file mode 100644 index 0000000..0ed4350 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforMDT.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAListforMDT_H_ +#define _TAListforMDT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TAListforMDT */ +typedef struct TAListforMDT { + A_SEQUENCE_OF(TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAListforMDT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAListforMDT; +extern asn_SET_OF_specifics_t asn_SPC_TAListforMDT_specs_1; +extern asn_TYPE_member_t asn_MBR_TAListforMDT_1[1]; +extern asn_per_constraints_t asn_PER_type_TAListforMDT_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAListforMDT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforQMC.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforQMC.c new file mode 100644 index 0000000..51da3f6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforQMC.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TAListforQMC.h" + +asn_per_constraints_t asn_PER_type_TAListforQMC_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 3, 3, 1, 8 } /* (SIZE(1..8)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_TAListforQMC_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_TAC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_TAListforQMC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_TAListforQMC_specs_1 = { + sizeof(struct TAListforQMC), + offsetof(struct TAListforQMC, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_TAListforQMC = { + "TAListforQMC", + "TAListforQMC", + &asn_OP_SEQUENCE_OF, + asn_DEF_TAListforQMC_tags_1, + sizeof(asn_DEF_TAListforQMC_tags_1) + /sizeof(asn_DEF_TAListforQMC_tags_1[0]), /* 1 */ + asn_DEF_TAListforQMC_tags_1, /* Same as above */ + sizeof(asn_DEF_TAListforQMC_tags_1) + /sizeof(asn_DEF_TAListforQMC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TAListforQMC_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_TAListforQMC_1, + 1, /* Single element */ + &asn_SPC_TAListforQMC_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforQMC.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforQMC.h new file mode 100644 index 0000000..335292a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TAListforQMC.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TAListforQMC_H_ +#define _TAListforQMC_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TAC.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TAListforQMC */ +typedef struct TAListforQMC { + A_SEQUENCE_OF(TAC_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TAListforQMC_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TAListforQMC; +extern asn_SET_OF_specifics_t asn_SPC_TAListforQMC_specs_1; +extern asn_TYPE_member_t asn_MBR_TAListforQMC_1[1]; +extern asn_per_constraints_t asn_PER_type_TAListforQMC_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _TAListforQMC_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-Info.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-Info.c new file mode 100644 index 0000000..e2c16cd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-Info.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TDD-Info.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TDD_Info_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, eARFCN), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EARFCN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eARFCN" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, transmission_Bandwidth), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Transmission_Bandwidth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transmission-Bandwidth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, subframeAssignment), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubframeAssignment, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subframeAssignment" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_Info, specialSubframe_Info), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SpecialSubframe_Info, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "specialSubframe-Info" + }, + { ATF_POINTER, 1, offsetof(struct TDD_Info, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P206, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TDD_Info_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_TDD_Info_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_Info_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eARFCN */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* transmission-Bandwidth */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subframeAssignment */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* specialSubframe-Info */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_specs_1 = { + sizeof(struct TDD_Info), + offsetof(struct TDD_Info, _asn_ctx), + asn_MAP_TDD_Info_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_TDD_Info_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_Info = { + "TDD-Info", + "TDD-Info", + &asn_OP_SEQUENCE, + asn_DEF_TDD_Info_tags_1, + sizeof(asn_DEF_TDD_Info_tags_1) + /sizeof(asn_DEF_TDD_Info_tags_1[0]), /* 1 */ + asn_DEF_TDD_Info_tags_1, /* Same as above */ + sizeof(asn_DEF_TDD_Info_tags_1) + /sizeof(asn_DEF_TDD_Info_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_Info_1, + 5, /* Elements count */ + &asn_SPC_TDD_Info_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-Info.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-Info.h new file mode 100644 index 0000000..238deb6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-Info.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TDD_Info_H_ +#define _TDD_Info_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EARFCN.h" +#include "Transmission-Bandwidth.h" +#include "SubframeAssignment.h" +#include "SpecialSubframe-Info.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TDD-Info */ +typedef struct TDD_Info { + EARFCN_t eARFCN; + Transmission_Bandwidth_t transmission_Bandwidth; + SubframeAssignment_t subframeAssignment; + SpecialSubframe_Info_t specialSubframe_Info; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_Info_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TDD_Info; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_Info_specs_1; +extern asn_TYPE_member_t asn_MBR_TDD_Info_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TDD_Info_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c new file mode 100644 index 0000000..3c833b0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TDD-InfoNeighbourServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoNeighbourServedNRCell_Information, nRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRFreqInfo" + }, + { ATF_POINTER, 1, offsetof(struct TDD_InfoNeighbourServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P96, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TDD_InfoNeighbourServedNRCell_Information_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoNeighbourServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_specs_1 = { + sizeof(struct TDD_InfoNeighbourServedNRCell_Information), + offsetof(struct TDD_InfoNeighbourServedNRCell_Information, _asn_ctx), + asn_MAP_TDD_InfoNeighbourServedNRCell_Information_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_TDD_InfoNeighbourServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information = { + "TDD-InfoNeighbourServedNRCell-Information", + "TDD-InfoNeighbourServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1, + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoNeighbourServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoNeighbourServedNRCell_Information_1, + 2, /* Elements count */ + &asn_SPC_TDD_InfoNeighbourServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h new file mode 100644 index 0000000..d5e55f1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoNeighbourServedNRCell-Information.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TDD_InfoNeighbourServedNRCell_Information_H_ +#define _TDD_InfoNeighbourServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TDD-InfoNeighbourServedNRCell-Information */ +typedef struct TDD_InfoNeighbourServedNRCell_Information { + NRFreqInfo_t nRFreqInfo; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_InfoNeighbourServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoNeighbourServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoNeighbourServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_TDD_InfoNeighbourServedNRCell_Information_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TDD_InfoNeighbourServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c new file mode 100644 index 0000000..3f1a0dc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TDD-InfoServedNRCell-Information.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information, nRFreqInfo), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRFreqInfo, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRFreqInfo" + }, + { ATF_NOFLAGS, 0, offsetof(struct TDD_InfoServedNRCell_Information, nR_TxBW), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NR_TxBW, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nR-TxBW" + }, + { ATF_POINTER, 1, offsetof(struct TDD_InfoServedNRCell_Information, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P95, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TDD_InfoServedNRCell_Information_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_TDD_InfoServedNRCell_Information_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TDD_InfoServedNRCell_Information_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRFreqInfo */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nR-TxBW */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_specs_1 = { + sizeof(struct TDD_InfoServedNRCell_Information), + offsetof(struct TDD_InfoServedNRCell_Information, _asn_ctx), + asn_MAP_TDD_InfoServedNRCell_Information_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TDD_InfoServedNRCell_Information_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information = { + "TDD-InfoServedNRCell-Information", + "TDD-InfoServedNRCell-Information", + &asn_OP_SEQUENCE, + asn_DEF_TDD_InfoServedNRCell_Information_tags_1, + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + asn_DEF_TDD_InfoServedNRCell_Information_tags_1, /* Same as above */ + sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1) + /sizeof(asn_DEF_TDD_InfoServedNRCell_Information_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TDD_InfoServedNRCell_Information_1, + 3, /* Elements count */ + &asn_SPC_TDD_InfoServedNRCell_Information_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h new file mode 100644 index 0000000..9d92f61 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TDD-InfoServedNRCell-Information.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TDD_InfoServedNRCell_Information_H_ +#define _TDD_InfoServedNRCell_Information_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NRFreqInfo.h" +#include "NR-TxBW.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TDD-InfoServedNRCell-Information */ +typedef struct TDD_InfoServedNRCell_Information { + NRFreqInfo_t nRFreqInfo; + NR_TxBW_t nR_TxBW; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TDD_InfoServedNRCell_Information_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TDD_InfoServedNRCell_Information; +extern asn_SEQUENCE_specifics_t asn_SPC_TDD_InfoServedNRCell_Information_specs_1; +extern asn_TYPE_member_t asn_MBR_TDD_InfoServedNRCell_Information_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TDD_InfoServedNRCell_Information_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargetCellInUTRAN.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargetCellInUTRAN.c new file mode 100644 index 0000000..a83ba2a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargetCellInUTRAN.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TargetCellInUTRAN.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_TargetCellInUTRAN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TargetCellInUTRAN = { + "TargetCellInUTRAN", + "TargetCellInUTRAN", + &asn_OP_OCTET_STRING, + asn_DEF_TargetCellInUTRAN_tags_1, + sizeof(asn_DEF_TargetCellInUTRAN_tags_1) + /sizeof(asn_DEF_TargetCellInUTRAN_tags_1[0]), /* 1 */ + asn_DEF_TargetCellInUTRAN_tags_1, /* Same as above */ + sizeof(asn_DEF_TargetCellInUTRAN_tags_1) + /sizeof(asn_DEF_TargetCellInUTRAN_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargetCellInUTRAN.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargetCellInUTRAN.h new file mode 100644 index 0000000..32076c3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargetCellInUTRAN.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TargetCellInUTRAN_H_ +#define _TargetCellInUTRAN_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TargetCellInUTRAN */ +typedef OCTET_STRING_t TargetCellInUTRAN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TargetCellInUTRAN; +asn_struct_free_f TargetCellInUTRAN_free; +asn_struct_print_f TargetCellInUTRAN_print; +asn_constr_check_f TargetCellInUTRAN_constraint; +ber_type_decoder_f TargetCellInUTRAN_decode_ber; +der_type_encoder_f TargetCellInUTRAN_encode_der; +xer_type_decoder_f TargetCellInUTRAN_decode_xer; +xer_type_encoder_f TargetCellInUTRAN_encode_xer; +per_type_decoder_f TargetCellInUTRAN_decode_uper; +per_type_encoder_f TargetCellInUTRAN_encode_uper; +per_type_decoder_f TargetCellInUTRAN_decode_aper; +per_type_encoder_f TargetCellInUTRAN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TargetCellInUTRAN_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c new file mode 100644 index 0000000..a456064 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TargeteNBtoSource-eNBTransparentContainer.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer = { + "TargeteNBtoSource-eNBTransparentContainer", + "TargeteNBtoSource-eNBTransparentContainer", + &asn_OP_OCTET_STRING, + asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1, + sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1) + /sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1[0]), /* 1 */ + asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1, /* Same as above */ + sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1) + /sizeof(asn_DEF_TargeteNBtoSource_eNBTransparentContainer_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h new file mode 100644 index 0000000..6bb51f0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TargeteNBtoSource-eNBTransparentContainer.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TargeteNBtoSource_eNBTransparentContainer_H_ +#define _TargeteNBtoSource_eNBTransparentContainer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TargeteNBtoSource-eNBTransparentContainer */ +typedef OCTET_STRING_t TargeteNBtoSource_eNBTransparentContainer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TargeteNBtoSource_eNBTransparentContainer; +asn_struct_free_f TargeteNBtoSource_eNBTransparentContainer_free; +asn_struct_print_f TargeteNBtoSource_eNBTransparentContainer_print; +asn_constr_check_f TargeteNBtoSource_eNBTransparentContainer_constraint; +ber_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_ber; +der_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_der; +xer_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_xer; +xer_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_xer; +per_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_uper; +per_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_uper; +per_type_decoder_f TargeteNBtoSource_eNBTransparentContainer_decode_aper; +per_type_encoder_f TargeteNBtoSource_eNBTransparentContainer_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TargeteNBtoSource_eNBTransparentContainer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRP.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRP.c new file mode 100644 index 0000000..2b782f7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRP.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Threshold-RSRP.h" + +int +Threshold_RSRP_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 97)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Threshold_RSRP_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 97 } /* (0..97) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Threshold_RSRP_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Threshold_RSRP = { + "Threshold-RSRP", + "Threshold-RSRP", + &asn_OP_NativeInteger, + asn_DEF_Threshold_RSRP_tags_1, + sizeof(asn_DEF_Threshold_RSRP_tags_1) + /sizeof(asn_DEF_Threshold_RSRP_tags_1[0]), /* 1 */ + asn_DEF_Threshold_RSRP_tags_1, /* Same as above */ + sizeof(asn_DEF_Threshold_RSRP_tags_1) + /sizeof(asn_DEF_Threshold_RSRP_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Threshold_RSRP_constr_1, Threshold_RSRP_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRP.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRP.h new file mode 100644 index 0000000..6204dfc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRP.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Threshold_RSRP_H_ +#define _Threshold_RSRP_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Threshold-RSRP */ +typedef long Threshold_RSRP_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Threshold_RSRP_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Threshold_RSRP; +asn_struct_free_f Threshold_RSRP_free; +asn_struct_print_f Threshold_RSRP_print; +asn_constr_check_f Threshold_RSRP_constraint; +ber_type_decoder_f Threshold_RSRP_decode_ber; +der_type_encoder_f Threshold_RSRP_encode_der; +xer_type_decoder_f Threshold_RSRP_decode_xer; +xer_type_encoder_f Threshold_RSRP_encode_xer; +per_type_decoder_f Threshold_RSRP_decode_uper; +per_type_encoder_f Threshold_RSRP_encode_uper; +per_type_decoder_f Threshold_RSRP_decode_aper; +per_type_encoder_f Threshold_RSRP_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Threshold_RSRP_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRQ.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRQ.c new file mode 100644 index 0000000..bcec8a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRQ.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Threshold-RSRQ.h" + +int +Threshold_RSRQ_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 34)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Threshold_RSRQ_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 6, 6, 0, 34 } /* (0..34) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Threshold_RSRQ_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Threshold_RSRQ = { + "Threshold-RSRQ", + "Threshold-RSRQ", + &asn_OP_NativeInteger, + asn_DEF_Threshold_RSRQ_tags_1, + sizeof(asn_DEF_Threshold_RSRQ_tags_1) + /sizeof(asn_DEF_Threshold_RSRQ_tags_1[0]), /* 1 */ + asn_DEF_Threshold_RSRQ_tags_1, /* Same as above */ + sizeof(asn_DEF_Threshold_RSRQ_tags_1) + /sizeof(asn_DEF_Threshold_RSRQ_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Threshold_RSRQ_constr_1, Threshold_RSRQ_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRQ.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRQ.h new file mode 100644 index 0000000..b8e3bfd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Threshold-RSRQ.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Threshold_RSRQ_H_ +#define _Threshold_RSRQ_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Threshold-RSRQ */ +typedef long Threshold_RSRQ_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Threshold_RSRQ_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Threshold_RSRQ; +asn_struct_free_f Threshold_RSRQ_free; +asn_struct_print_f Threshold_RSRQ_print; +asn_constr_check_f Threshold_RSRQ_constraint; +ber_type_decoder_f Threshold_RSRQ_decode_ber; +der_type_encoder_f Threshold_RSRQ_encode_der; +xer_type_decoder_f Threshold_RSRQ_decode_xer; +xer_type_encoder_f Threshold_RSRQ_encode_xer; +per_type_decoder_f Threshold_RSRQ_decode_uper; +per_type_encoder_f Threshold_RSRQ_encode_uper; +per_type_decoder_f Threshold_RSRQ_decode_aper; +per_type_encoder_f Threshold_RSRQ_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Threshold_RSRQ_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c new file mode 100644 index 0000000..2dceb89 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Time-UE-StayedInCell-EnhancedGranularity.h" + +int +Time_UE_StayedInCell_EnhancedGranularity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 40950)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_EnhancedGranularity_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 40950 } /* (0..40950) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell_EnhancedGranularity = { + "Time-UE-StayedInCell-EnhancedGranularity", + "Time-UE-StayedInCell-EnhancedGranularity", + &asn_OP_NativeInteger, + asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1, + sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */ + asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1, /* Same as above */ + sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_EnhancedGranularity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Time_UE_StayedInCell_EnhancedGranularity_constr_1, Time_UE_StayedInCell_EnhancedGranularity_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h new file mode 100644 index 0000000..e4ac85b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell-EnhancedGranularity.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Time_UE_StayedInCell_EnhancedGranularity_H_ +#define _Time_UE_StayedInCell_EnhancedGranularity_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Time-UE-StayedInCell-EnhancedGranularity */ +typedef long Time_UE_StayedInCell_EnhancedGranularity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_EnhancedGranularity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell_EnhancedGranularity; +asn_struct_free_f Time_UE_StayedInCell_EnhancedGranularity_free; +asn_struct_print_f Time_UE_StayedInCell_EnhancedGranularity_print; +asn_constr_check_f Time_UE_StayedInCell_EnhancedGranularity_constraint; +ber_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_ber; +der_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_der; +xer_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_xer; +xer_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_xer; +per_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_uper; +per_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_uper; +per_type_decoder_f Time_UE_StayedInCell_EnhancedGranularity_decode_aper; +per_type_encoder_f Time_UE_StayedInCell_EnhancedGranularity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Time_UE_StayedInCell_EnhancedGranularity_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell.c new file mode 100644 index 0000000..8828ca9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Time-UE-StayedInCell.h" + +int +Time_UE_StayedInCell_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_Time_UE_StayedInCell_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell = { + "Time-UE-StayedInCell", + "Time-UE-StayedInCell", + &asn_OP_NativeInteger, + asn_DEF_Time_UE_StayedInCell_tags_1, + sizeof(asn_DEF_Time_UE_StayedInCell_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_tags_1[0]), /* 1 */ + asn_DEF_Time_UE_StayedInCell_tags_1, /* Same as above */ + sizeof(asn_DEF_Time_UE_StayedInCell_tags_1) + /sizeof(asn_DEF_Time_UE_StayedInCell_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Time_UE_StayedInCell_constr_1, Time_UE_StayedInCell_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell.h new file mode 100644 index 0000000..6078c15 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Time-UE-StayedInCell.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Time_UE_StayedInCell_H_ +#define _Time_UE_StayedInCell_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Time-UE-StayedInCell */ +typedef long Time_UE_StayedInCell_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Time_UE_StayedInCell_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Time_UE_StayedInCell; +asn_struct_free_f Time_UE_StayedInCell_free; +asn_struct_print_f Time_UE_StayedInCell_print; +asn_constr_check_f Time_UE_StayedInCell_constraint; +ber_type_decoder_f Time_UE_StayedInCell_decode_ber; +der_type_encoder_f Time_UE_StayedInCell_encode_der; +xer_type_decoder_f Time_UE_StayedInCell_decode_xer; +xer_type_encoder_f Time_UE_StayedInCell_encode_xer; +per_type_decoder_f Time_UE_StayedInCell_decode_uper; +per_type_encoder_f Time_UE_StayedInCell_encode_uper; +per_type_decoder_f Time_UE_StayedInCell_decode_aper; +per_type_encoder_f Time_UE_StayedInCell_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Time_UE_StayedInCell_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeStamp.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeStamp.c new file mode 100644 index 0000000..65baa0a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeStamp.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TimeStamp.h" + +int +TimeStamp_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TimeStamp_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 8, 8 } /* (SIZE(8..8)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TimeStamp_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeStamp = { + "TimeStamp", + "TimeStamp", + &asn_OP_OCTET_STRING, + asn_DEF_TimeStamp_tags_1, + sizeof(asn_DEF_TimeStamp_tags_1) + /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */ + asn_DEF_TimeStamp_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeStamp_tags_1) + /sizeof(asn_DEF_TimeStamp_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TimeStamp_constr_1, TimeStamp_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeStamp.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeStamp.h new file mode 100644 index 0000000..c8ebf8d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeStamp.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TimeStamp_H_ +#define _TimeStamp_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TimeStamp */ +typedef OCTET_STRING_t TimeStamp_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeStamp_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeStamp; +asn_struct_free_f TimeStamp_free; +asn_struct_print_f TimeStamp_print; +asn_constr_check_f TimeStamp_constraint; +ber_type_decoder_f TimeStamp_decode_ber; +der_type_encoder_f TimeStamp_encode_der; +xer_type_decoder_f TimeStamp_decode_xer; +xer_type_encoder_f TimeStamp_encode_xer; +per_type_decoder_f TimeStamp_decode_uper; +per_type_encoder_f TimeStamp_encode_uper; +per_type_decoder_f TimeStamp_decode_aper; +per_type_encoder_f TimeStamp_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeStamp_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeToWait.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeToWait.c new file mode 100644 index 0000000..7331479 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeToWait.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { + { 0, 3, "v1s" }, + { 1, 3, "v2s" }, + { 2, 3, "v5s" }, + { 3, 4, "v10s" }, + { 4, 4, "v20s" }, + { 5, 4, "v60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { + 3, /* v10s(3) */ + 0, /* v1s(0) */ + 4, /* v20s(4) */ + 1, /* v2s(1) */ + 2, /* v5s(2) */ + 5 /* v60s(5) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { + asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeToWait = { + "TimeToWait", + "TimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_TimeToWait_tags_1, + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + asn_DEF_TimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeToWait.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeToWait.h new file mode 100644 index 0000000..e674add --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TimeToWait.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TimeToWait_H_ +#define _TimeToWait_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TimeToWait { + TimeToWait_v1s = 0, + TimeToWait_v2s = 1, + TimeToWait_v5s = 2, + TimeToWait_v10s = 3, + TimeToWait_v20s = 4, + TimeToWait_v60s = 5 + /* + * Enumeration is extensible + */ +} e_TimeToWait; + +/* TimeToWait */ +typedef long TimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1; +asn_struct_free_f TimeToWait_free; +asn_struct_print_f TimeToWait_print; +asn_constr_check_f TimeToWait_constraint; +ber_type_decoder_f TimeToWait_decode_ber; +der_type_encoder_f TimeToWait_encode_der; +xer_type_decoder_f TimeToWait_decode_xer; +xer_type_encoder_f TimeToWait_encode_xer; +per_type_decoder_f TimeToWait_decode_uper; +per_type_encoder_f TimeToWait_encode_uper; +per_type_decoder_f TimeToWait_decode_aper; +per_type_encoder_f TimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeToWait_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceActivation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceActivation.c new file mode 100644 index 0000000..127a975 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceActivation.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TraceActivation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TraceActivation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, eUTRANTraceID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EUTRANTraceID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eUTRANTraceID" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, interfacesToTrace), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InterfacesToTrace, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "interfacesToTrace" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, traceDepth), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TraceDepth, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "traceDepth" + }, + { ATF_NOFLAGS, 0, offsetof(struct TraceActivation, traceCollectionEntityIPAddress), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TraceCollectionEntityIPAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "traceCollectionEntityIPAddress" + }, + { ATF_POINTER, 1, offsetof(struct TraceActivation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P207, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TraceActivation_oms_1[] = { 4 }; +static const ber_tlv_tag_t asn_DEF_TraceActivation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TraceActivation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eUTRANTraceID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interfacesToTrace */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* traceDepth */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* traceCollectionEntityIPAddress */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_specs_1 = { + sizeof(struct TraceActivation), + offsetof(struct TraceActivation, _asn_ctx), + asn_MAP_TraceActivation_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_TraceActivation_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TraceActivation = { + "TraceActivation", + "TraceActivation", + &asn_OP_SEQUENCE, + asn_DEF_TraceActivation_tags_1, + sizeof(asn_DEF_TraceActivation_tags_1) + /sizeof(asn_DEF_TraceActivation_tags_1[0]), /* 1 */ + asn_DEF_TraceActivation_tags_1, /* Same as above */ + sizeof(asn_DEF_TraceActivation_tags_1) + /sizeof(asn_DEF_TraceActivation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TraceActivation_1, + 5, /* Elements count */ + &asn_SPC_TraceActivation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceActivation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceActivation.h new file mode 100644 index 0000000..26e5b71 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceActivation.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TraceActivation_H_ +#define _TraceActivation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EUTRANTraceID.h" +#include "InterfacesToTrace.h" +#include "TraceDepth.h" +#include "TraceCollectionEntityIPAddress.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TraceActivation */ +typedef struct TraceActivation { + EUTRANTraceID_t eUTRANTraceID; + InterfacesToTrace_t interfacesToTrace; + TraceDepth_t traceDepth; + TraceCollectionEntityIPAddress_t traceCollectionEntityIPAddress; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TraceActivation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TraceActivation; +extern asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_specs_1; +extern asn_TYPE_member_t asn_MBR_TraceActivation_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TraceActivation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c new file mode 100644 index 0000000..98e91ef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TraceCollectionEntityIPAddress.h" + +int +TraceCollectionEntityIPAddress_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TraceCollectionEntityIPAddress_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TraceCollectionEntityIPAddress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TraceCollectionEntityIPAddress = { + "TraceCollectionEntityIPAddress", + "TraceCollectionEntityIPAddress", + &asn_OP_BIT_STRING, + asn_DEF_TraceCollectionEntityIPAddress_tags_1, + sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1) + /sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1[0]), /* 1 */ + asn_DEF_TraceCollectionEntityIPAddress_tags_1, /* Same as above */ + sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1) + /sizeof(asn_DEF_TraceCollectionEntityIPAddress_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TraceCollectionEntityIPAddress_constr_1, TraceCollectionEntityIPAddress_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h new file mode 100644 index 0000000..772b759 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceCollectionEntityIPAddress.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TraceCollectionEntityIPAddress_H_ +#define _TraceCollectionEntityIPAddress_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TraceCollectionEntityIPAddress */ +typedef BIT_STRING_t TraceCollectionEntityIPAddress_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TraceCollectionEntityIPAddress_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TraceCollectionEntityIPAddress; +asn_struct_free_f TraceCollectionEntityIPAddress_free; +asn_struct_print_f TraceCollectionEntityIPAddress_print; +asn_constr_check_f TraceCollectionEntityIPAddress_constraint; +ber_type_decoder_f TraceCollectionEntityIPAddress_decode_ber; +der_type_encoder_f TraceCollectionEntityIPAddress_encode_der; +xer_type_decoder_f TraceCollectionEntityIPAddress_decode_xer; +xer_type_encoder_f TraceCollectionEntityIPAddress_encode_xer; +per_type_decoder_f TraceCollectionEntityIPAddress_decode_uper; +per_type_encoder_f TraceCollectionEntityIPAddress_encode_uper; +per_type_decoder_f TraceCollectionEntityIPAddress_decode_aper; +per_type_encoder_f TraceCollectionEntityIPAddress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TraceCollectionEntityIPAddress_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceDepth.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceDepth.c new file mode 100644 index 0000000..63523b8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceDepth.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TraceDepth.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TraceDepth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TraceDepth_value2enum_1[] = { + { 0, 7, "minimum" }, + { 1, 6, "medium" }, + { 2, 7, "maximum" }, + { 3, 37, "minimumWithoutVendorSpecificExtension" }, + { 4, 36, "mediumWithoutVendorSpecificExtension" }, + { 5, 37, "maximumWithoutVendorSpecificExtension" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TraceDepth_enum2value_1[] = { + 2, /* maximum(2) */ + 5, /* maximumWithoutVendorSpecificExtension(5) */ + 1, /* medium(1) */ + 4, /* mediumWithoutVendorSpecificExtension(4) */ + 0, /* minimum(0) */ + 3 /* minimumWithoutVendorSpecificExtension(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TraceDepth_specs_1 = { + asn_MAP_TraceDepth_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TraceDepth_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TraceDepth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TraceDepth = { + "TraceDepth", + "TraceDepth", + &asn_OP_NativeEnumerated, + asn_DEF_TraceDepth_tags_1, + sizeof(asn_DEF_TraceDepth_tags_1) + /sizeof(asn_DEF_TraceDepth_tags_1[0]), /* 1 */ + asn_DEF_TraceDepth_tags_1, /* Same as above */ + sizeof(asn_DEF_TraceDepth_tags_1) + /sizeof(asn_DEF_TraceDepth_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TraceDepth_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TraceDepth_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceDepth.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceDepth.h new file mode 100644 index 0000000..c244930 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TraceDepth.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TraceDepth_H_ +#define _TraceDepth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TraceDepth { + TraceDepth_minimum = 0, + TraceDepth_medium = 1, + TraceDepth_maximum = 2, + TraceDepth_minimumWithoutVendorSpecificExtension = 3, + TraceDepth_mediumWithoutVendorSpecificExtension = 4, + TraceDepth_maximumWithoutVendorSpecificExtension = 5 + /* + * Enumeration is extensible + */ +} e_TraceDepth; + +/* TraceDepth */ +typedef long TraceDepth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TraceDepth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TraceDepth; +extern const asn_INTEGER_specifics_t asn_SPC_TraceDepth_specs_1; +asn_struct_free_f TraceDepth_free; +asn_struct_print_f TraceDepth_print; +asn_constr_check_f TraceDepth_constraint; +ber_type_decoder_f TraceDepth_decode_ber; +der_type_encoder_f TraceDepth_encode_der; +xer_type_decoder_f TraceDepth_decode_xer; +xer_type_encoder_f TraceDepth_encode_xer; +per_type_decoder_f TraceDepth_decode_uper; +per_type_encoder_f TraceDepth_encode_uper; +per_type_decoder_f TraceDepth_decode_aper; +per_type_encoder_f TraceDepth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TraceDepth_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Transmission-Bandwidth.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Transmission-Bandwidth.c new file mode 100644 index 0000000..abe3402 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Transmission-Bandwidth.c @@ -0,0 +1,88 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "Transmission-Bandwidth.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Transmission_Bandwidth_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Transmission_Bandwidth_value2enum_1[] = { + { 0, 3, "bw6" }, + { 1, 4, "bw15" }, + { 2, 4, "bw25" }, + { 3, 4, "bw50" }, + { 4, 4, "bw75" }, + { 5, 5, "bw100" }, + { 6, 3, "bw1" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_Transmission_Bandwidth_enum2value_1[] = { + 6, /* bw1(6) */ + 5, /* bw100(5) */ + 1, /* bw15(1) */ + 2, /* bw25(2) */ + 3, /* bw50(3) */ + 0, /* bw6(0) */ + 4 /* bw75(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_Transmission_Bandwidth_specs_1 = { + asn_MAP_Transmission_Bandwidth_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Transmission_Bandwidth_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Transmission_Bandwidth_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Transmission_Bandwidth = { + "Transmission-Bandwidth", + "Transmission-Bandwidth", + &asn_OP_NativeEnumerated, + asn_DEF_Transmission_Bandwidth_tags_1, + sizeof(asn_DEF_Transmission_Bandwidth_tags_1) + /sizeof(asn_DEF_Transmission_Bandwidth_tags_1[0]), /* 1 */ + asn_DEF_Transmission_Bandwidth_tags_1, /* Same as above */ + sizeof(asn_DEF_Transmission_Bandwidth_tags_1) + /sizeof(asn_DEF_Transmission_Bandwidth_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Transmission_Bandwidth_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Transmission_Bandwidth_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Transmission-Bandwidth.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Transmission-Bandwidth.h new file mode 100644 index 0000000..bf8858b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/Transmission-Bandwidth.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _Transmission_Bandwidth_H_ +#define _Transmission_Bandwidth_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Transmission_Bandwidth { + Transmission_Bandwidth_bw6 = 0, + Transmission_Bandwidth_bw15 = 1, + Transmission_Bandwidth_bw25 = 2, + Transmission_Bandwidth_bw50 = 3, + Transmission_Bandwidth_bw75 = 4, + Transmission_Bandwidth_bw100 = 5, + /* + * Enumeration is extensible + */ + Transmission_Bandwidth_bw1 = 6 +} e_Transmission_Bandwidth; + +/* Transmission-Bandwidth */ +typedef long Transmission_Bandwidth_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Transmission_Bandwidth_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Transmission_Bandwidth; +extern const asn_INTEGER_specifics_t asn_SPC_Transmission_Bandwidth_specs_1; +asn_struct_free_f Transmission_Bandwidth_free; +asn_struct_print_f Transmission_Bandwidth_print; +asn_constr_check_f Transmission_Bandwidth_constraint; +ber_type_decoder_f Transmission_Bandwidth_decode_ber; +der_type_encoder_f Transmission_Bandwidth_encode_der; +xer_type_decoder_f Transmission_Bandwidth_decode_xer; +xer_type_encoder_f Transmission_Bandwidth_encode_xer; +per_type_decoder_f Transmission_Bandwidth_decode_uper; +per_type_encoder_f Transmission_Bandwidth_encode_uper; +per_type_decoder_f Transmission_Bandwidth_decode_aper; +per_type_encoder_f Transmission_Bandwidth_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Transmission_Bandwidth_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TransportLayerAddress.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TransportLayerAddress.c new file mode 100644 index 0000000..1118567 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TransportLayerAddress.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TransportLayerAddress.h" + +int +TransportLayerAddress_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 160)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TransportLayerAddress_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 8, 8, 1, 160 } /* (SIZE(1..160,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_TransportLayerAddress_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress = { + "TransportLayerAddress", + "TransportLayerAddress", + &asn_OP_BIT_STRING, + asn_DEF_TransportLayerAddress_tags_1, + sizeof(asn_DEF_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */ + asn_DEF_TransportLayerAddress_tags_1, /* Same as above */ + sizeof(asn_DEF_TransportLayerAddress_tags_1) + /sizeof(asn_DEF_TransportLayerAddress_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TransportLayerAddress_constr_1, TransportLayerAddress_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TransportLayerAddress.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TransportLayerAddress.h new file mode 100644 index 0000000..374473c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TransportLayerAddress.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TransportLayerAddress_H_ +#define _TransportLayerAddress_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* TransportLayerAddress */ +typedef BIT_STRING_t TransportLayerAddress_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TransportLayerAddress_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TransportLayerAddress; +asn_struct_free_f TransportLayerAddress_free; +asn_struct_print_f TransportLayerAddress_print; +asn_constr_check_f TransportLayerAddress_constraint; +ber_type_decoder_f TransportLayerAddress_decode_ber; +der_type_encoder_f TransportLayerAddress_encode_der; +xer_type_decoder_f TransportLayerAddress_decode_xer; +xer_type_encoder_f TransportLayerAddress_encode_xer; +per_type_decoder_f TransportLayerAddress_decode_uper; +per_type_encoder_f TransportLayerAddress_encode_uper; +per_type_decoder_f TransportLayerAddress_decode_aper; +per_type_encoder_f TransportLayerAddress_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TransportLayerAddress_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TriggeringMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TriggeringMessage.c new file mode 100644 index 0000000..f609e65 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TriggeringMessage.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TriggeringMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 20, "unsuccessful-outcome" } +}; +static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessful-outcome(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { + asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TriggeringMessage_tags_1, + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TriggeringMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TriggeringMessage.h new file mode 100644 index 0000000..fb3d218 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TriggeringMessage.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-CommonDataTypes" + * found in "../../asnFiles/X2AP-CommonDataTypes.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TriggeringMessage_H_ +#define _TriggeringMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TriggeringMessage { + TriggeringMessage_initiating_message = 0, + TriggeringMessage_successful_outcome = 1, + TriggeringMessage_unsuccessful_outcome = 2 +} e_TriggeringMessage; + +/* TriggeringMessage */ +typedef long TriggeringMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TriggeringMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TunnelInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TunnelInformation.c new file mode 100644 index 0000000..328bde6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TunnelInformation.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TunnelInformation.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_TunnelInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct TunnelInformation, transportLayerAddress), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TransportLayerAddress, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transportLayerAddress" + }, + { ATF_POINTER, 2, offsetof(struct TunnelInformation, uDP_Port_Number), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Port_Number, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uDP-Port-Number" + }, + { ATF_POINTER, 1, offsetof(struct TunnelInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P208, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_TunnelInformation_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_TunnelInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_TunnelInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transportLayerAddress */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uDP-Port-Number */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_TunnelInformation_specs_1 = { + sizeof(struct TunnelInformation), + offsetof(struct TunnelInformation, _asn_ctx), + asn_MAP_TunnelInformation_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_TunnelInformation_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_TunnelInformation = { + "TunnelInformation", + "TunnelInformation", + &asn_OP_SEQUENCE, + asn_DEF_TunnelInformation_tags_1, + sizeof(asn_DEF_TunnelInformation_tags_1) + /sizeof(asn_DEF_TunnelInformation_tags_1[0]), /* 1 */ + asn_DEF_TunnelInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_TunnelInformation_tags_1) + /sizeof(asn_DEF_TunnelInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_TunnelInformation_1, + 3, /* Elements count */ + &asn_SPC_TunnelInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TunnelInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TunnelInformation.h new file mode 100644 index 0000000..8b71818 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TunnelInformation.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TunnelInformation_H_ +#define _TunnelInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "TransportLayerAddress.h" +#include "Port-Number.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* TunnelInformation */ +typedef struct TunnelInformation { + TransportLayerAddress_t transportLayerAddress; + Port_Number_t *uDP_Port_Number; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} TunnelInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TunnelInformation; +extern asn_SEQUENCE_specifics_t asn_SPC_TunnelInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_TunnelInformation_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _TunnelInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfError.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfError.c new file mode 100644 index 0000000..6bb4966 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfError.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TypeOfError.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { + asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfError = { + "TypeOfError", + "TypeOfError", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfError_tags_1, + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfError.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfError.h new file mode 100644 index 0000000..5b872f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfError.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TypeOfError_H_ +#define _TypeOfError_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfError { + TypeOfError_not_understood = 0, + TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_TypeOfError; + +/* TypeOfError */ +typedef long TypeOfError_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfError_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfMessage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfMessage.c new file mode 100644 index 0000000..6b4b8a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfMessage.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "TypeOfMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TypeOfMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 3 } /* (0..3) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfMessage_value2enum_1[] = { + { 0, 7, "nothing" }, + { 1, 18, "initiating-message" }, + { 2, 18, "successful-outcome" }, + { 3, 20, "unsuccessful-outcome" } +}; +static const unsigned int asn_MAP_TypeOfMessage_enum2value_1[] = { + 1, /* initiating-message(1) */ + 0, /* nothing(0) */ + 2, /* successful-outcome(2) */ + 3 /* unsuccessful-outcome(3) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfMessage_specs_1 = { + asn_MAP_TypeOfMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfMessage_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TypeOfMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfMessage = { + "TypeOfMessage", + "TypeOfMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfMessage_tags_1, + sizeof(asn_DEF_TypeOfMessage_tags_1) + /sizeof(asn_DEF_TypeOfMessage_tags_1[0]), /* 1 */ + asn_DEF_TypeOfMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfMessage_tags_1) + /sizeof(asn_DEF_TypeOfMessage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TypeOfMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfMessage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfMessage.h new file mode 100644 index 0000000..d4899ec --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/TypeOfMessage.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-gNB-X2-IEs" + * found in "../../asnFiles/e2sm-gNB-X2-release-1-v041.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _TypeOfMessage_H_ +#define _TypeOfMessage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfMessage { + TypeOfMessage_nothing = 0, + TypeOfMessage_initiating_message = 1, + TypeOfMessage_successful_outcome = 2, + TypeOfMessage_unsuccessful_outcome = 3 +} e_TypeOfMessage; + +/* TypeOfMessage */ +typedef long TypeOfMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfMessage_specs_1; +asn_struct_free_f TypeOfMessage_free; +asn_struct_print_f TypeOfMessage_print; +asn_constr_check_f TypeOfMessage_constraint; +ber_type_decoder_f TypeOfMessage_decode_ber; +der_type_encoder_f TypeOfMessage_encode_der; +xer_type_decoder_f TypeOfMessage_decode_xer; +xer_type_encoder_f TypeOfMessage_encode_xer; +per_type_decoder_f TypeOfMessage_decode_uper; +per_type_encoder_f TypeOfMessage_encode_uper; +per_type_decoder_f TypeOfMessage_decode_aper; +per_type_encoder_f TypeOfMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfMessage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c new file mode 100644 index 0000000..5c0adc2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.c @@ -0,0 +1,141 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformation-SgNBModReq.h" + +#include "NRUESecurityCapabilities.h" +#include "UEAggregateMaximumBitRate.h" +#include "E-RABs-ToBeAdded-SgNBModReq-List.h" +#include "E-RABs-ToBeModified-SgNBModReq-List.h" +#include "E-RABs-ToBeReleased-SgNBModReq-List.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformation_SgNBModReq_1[] = { + { ATF_POINTER, 7, offsetof(struct UE_ContextInformation_SgNBModReq, nRUE_SecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NRUESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "nRUE-SecurityCapabilities" + }, + { ATF_POINTER, 6, offsetof(struct UE_ContextInformation_SgNBModReq, sgNB_SecurityKey), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SgNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-SecurityKey" + }, + { ATF_POINTER, 5, offsetof(struct UE_ContextInformation_SgNBModReq, sgNBUEAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNBUEAggregateMaximumBitRate" + }, + { ATF_POINTER, 4, offsetof(struct UE_ContextInformation_SgNBModReq, e_RABs_ToBeAdded), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_SgNBModReq_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeAdded" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformation_SgNBModReq, e_RABs_ToBeModified), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_SgNBModReq_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeModified" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformation_SgNBModReq, e_RABs_ToBeReleased), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_SgNBModReq_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeReleased" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformation_SgNBModReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P52, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformation_SgNBModReq_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformation_SgNBModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformation_SgNBModReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nRUE-SecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-SecurityKey */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sgNBUEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RABs-ToBeAdded */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e-RABs-ToBeModified */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeReleased */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_SgNBModReq_specs_1 = { + sizeof(struct UE_ContextInformation_SgNBModReq), + offsetof(struct UE_ContextInformation_SgNBModReq, _asn_ctx), + asn_MAP_UE_ContextInformation_SgNBModReq_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_UE_ContextInformation_SgNBModReq_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_SgNBModReq = { + "UE-ContextInformation-SgNBModReq", + "UE-ContextInformation-SgNBModReq", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformation_SgNBModReq_tags_1, + sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformation_SgNBModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_SgNBModReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformation_SgNBModReq_1, + 7, /* Elements count */ + &asn_SPC_UE_ContextInformation_SgNBModReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h new file mode 100644 index 0000000..84d9316 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation-SgNBModReq.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformation_SgNBModReq_H_ +#define _UE_ContextInformation_SgNBModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SgNBSecurityKey.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct NRUESecurityCapabilities; +struct UEAggregateMaximumBitRate; +struct E_RABs_ToBeAdded_SgNBModReq_List; +struct E_RABs_ToBeModified_SgNBModReq_List; +struct E_RABs_ToBeReleased_SgNBModReq_List; +struct ProtocolExtensionContainer; + +/* UE-ContextInformation-SgNBModReq */ +typedef struct UE_ContextInformation_SgNBModReq { + struct NRUESecurityCapabilities *nRUE_SecurityCapabilities; /* OPTIONAL */ + SgNBSecurityKey_t *sgNB_SecurityKey; /* OPTIONAL */ + struct UEAggregateMaximumBitRate *sgNBUEAggregateMaximumBitRate; /* OPTIONAL */ + struct E_RABs_ToBeAdded_SgNBModReq_List *e_RABs_ToBeAdded; /* OPTIONAL */ + struct E_RABs_ToBeModified_SgNBModReq_List *e_RABs_ToBeModified; /* OPTIONAL */ + struct E_RABs_ToBeReleased_SgNBModReq_List *e_RABs_ToBeReleased; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformation_SgNBModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation_SgNBModReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformation_SgNBModReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation.c new file mode 100644 index 0000000..9f1c9dc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation.c @@ -0,0 +1,168 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformation.h" + +#include "HandoverRestrictionList.h" +#include "LocationReportingInformation.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformation_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, uESecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, aS_SecurityInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AS_SecurityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "aS-SecurityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, uEaggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformation, subscriberProfileIDforRFP), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, e_RABs_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeSetup_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeSetup-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformation, rRC_Context), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRC_Context, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rRC-Context" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformation, handoverRestrictionList), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "handoverRestrictionList" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformation, locationReportingInformation), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LocationReportingInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "locationReportingInformation" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformation, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformation_oms_1[] = { 4, 7, 8, 9 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uESecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aS-SecurityInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uEaggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* subscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeSetup-List */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rRC-Context */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* handoverRestrictionList */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* locationReportingInformation */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformation_specs_1 = { + sizeof(struct UE_ContextInformation), + offsetof(struct UE_ContextInformation, _asn_ctx), + asn_MAP_UE_ContextInformation_tag2el_1, + 10, /* Count of tags in the map */ + asn_MAP_UE_ContextInformation_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 10, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation = { + "UE-ContextInformation", + "UE-ContextInformation", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformation_tags_1, + sizeof(asn_DEF_UE_ContextInformation_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformation_tags_1) + /sizeof(asn_DEF_UE_ContextInformation_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformation_1, + 10, /* Elements count */ + &asn_SPC_UE_ContextInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation.h new file mode 100644 index 0000000..6c3fb4b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformation.h @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformation_H_ +#define _UE_ContextInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UE-S1AP-ID.h" +#include "UESecurityCapabilities.h" +#include "AS-SecurityInformation.h" +#include "UEAggregateMaximumBitRate.h" +#include "SubscriberProfileIDforRFP.h" +#include "E-RABs-ToBeSetup-List.h" +#include "RRC-Context.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HandoverRestrictionList; +struct LocationReportingInformation; +struct ProtocolExtensionContainer; + +/* UE-ContextInformation */ +typedef struct UE_ContextInformation { + UE_S1AP_ID_t mME_UE_S1AP_ID; + UESecurityCapabilities_t uESecurityCapabilities; + AS_SecurityInformation_t aS_SecurityInformation; + UEAggregateMaximumBitRate_t uEaggregateMaximumBitRate; + SubscriberProfileIDforRFP_t *subscriberProfileIDforRFP; /* OPTIONAL */ + E_RABs_ToBeSetup_List_t e_RABs_ToBeSetup_List; + RRC_Context_t rRC_Context; + struct HandoverRestrictionList *handoverRestrictionList; /* OPTIONAL */ + struct LocationReportingInformation *locationReportingInformation; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformation; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c new file mode 100644 index 0000000..bcdd955 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.c @@ -0,0 +1,189 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformationRetrieve.h" + +#include "HandoverRestrictionList.h" +#include "LocationReportingInformation.h" +#include "MDTPLMNList.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformationRetrieve_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, mME_UE_S1AP_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_S1AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "mME-UE-S1AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, uESecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESecurityCapabilities" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, aS_SecurityInformation), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_AS_SecurityInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "aS-SecurityInformation" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, uEaggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformationRetrieve, subscriberProfileIDforRFP), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SubscriberProfileIDforRFP, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "subscriberProfileIDforRFP" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, e_RABs_ToBeSetup_ListRetrieve), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeSetup_ListRetrieve, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeSetup-ListRetrieve" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextInformationRetrieve, rRC_Context), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRC_Context, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "rRC-Context" + }, + { ATF_POINTER, 5, offsetof(struct UE_ContextInformationRetrieve, handoverRestrictionList), + (ASN_TAG_CLASS_CONTEXT | (7 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HandoverRestrictionList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "handoverRestrictionList" + }, + { ATF_POINTER, 4, offsetof(struct UE_ContextInformationRetrieve, locationReportingInformation), + (ASN_TAG_CLASS_CONTEXT | (8 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_LocationReportingInformation, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "locationReportingInformation" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformationRetrieve, managBasedMDTallowed), + (ASN_TAG_CLASS_CONTEXT | (9 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ManagementBasedMDTallowed, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "managBasedMDTallowed" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformationRetrieve, managBasedMDTPLMNList), + (ASN_TAG_CLASS_CONTEXT | (10 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_MDTPLMNList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "managBasedMDTPLMNList" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformationRetrieve, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (11 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformationRetrieve_oms_1[] = { 4, 7, 8, 9, 10, 11 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationRetrieve_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationRetrieve_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mME-UE-S1AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uESecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aS-SecurityInformation */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* uEaggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* subscriberProfileIDforRFP */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeSetup-ListRetrieve */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rRC-Context */ + { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* handoverRestrictionList */ + { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* locationReportingInformation */ + { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* managBasedMDTallowed */ + { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* managBasedMDTPLMNList */ + { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationRetrieve_specs_1 = { + sizeof(struct UE_ContextInformationRetrieve), + offsetof(struct UE_ContextInformationRetrieve, _asn_ctx), + asn_MAP_UE_ContextInformationRetrieve_tag2el_1, + 12, /* Count of tags in the map */ + asn_MAP_UE_ContextInformationRetrieve_oms_1, /* Optional members */ + 6, 0, /* Root/Additions */ + 12, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve = { + "UE-ContextInformationRetrieve", + "UE-ContextInformationRetrieve", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationRetrieve_tags_1, + sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformationRetrieve_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1) + /sizeof(asn_DEF_UE_ContextInformationRetrieve_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationRetrieve_1, + 12, /* Elements count */ + &asn_SPC_UE_ContextInformationRetrieve_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h new file mode 100644 index 0000000..84320be --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationRetrieve.h @@ -0,0 +1,89 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformationRetrieve_H_ +#define _UE_ContextInformationRetrieve_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UE-S1AP-ID.h" +#include "UESecurityCapabilities.h" +#include "AS-SecurityInformation.h" +#include "UEAggregateMaximumBitRate.h" +#include "SubscriberProfileIDforRFP.h" +#include "E-RABs-ToBeSetup-ListRetrieve.h" +#include "RRC-Context.h" +#include "ManagementBasedMDTallowed.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct HandoverRestrictionList; +struct LocationReportingInformation; +struct MDTPLMNList; +struct ProtocolExtensionContainer; + +/* UE-ContextInformationRetrieve */ +typedef struct UE_ContextInformationRetrieve { + UE_S1AP_ID_t mME_UE_S1AP_ID; + UESecurityCapabilities_t uESecurityCapabilities; + AS_SecurityInformation_t aS_SecurityInformation; + UEAggregateMaximumBitRate_t uEaggregateMaximumBitRate; + SubscriberProfileIDforRFP_t *subscriberProfileIDforRFP; /* OPTIONAL */ + E_RABs_ToBeSetup_ListRetrieve_t e_RABs_ToBeSetup_ListRetrieve; + RRC_Context_t rRC_Context; + struct HandoverRestrictionList *handoverRestrictionList; /* OPTIONAL */ + struct LocationReportingInformation *locationReportingInformation; /* OPTIONAL */ + ManagementBasedMDTallowed_t *managBasedMDTallowed; /* OPTIONAL */ + struct MDTPLMNList *managBasedMDTPLMNList; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationRetrieve_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationRetrieve; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformationRetrieve_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c new file mode 100644 index 0000000..2b64165 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.c @@ -0,0 +1,141 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextInformationSeNBModReq.h" + +#include "UESecurityCapabilities.h" +#include "UEAggregateMaximumBitRate.h" +#include "E-RABs-ToBeAdded-List-ModReq.h" +#include "E-RABs-ToBeModified-List-ModReq.h" +#include "E-RABs-ToBeReleased-List-ModReq.h" +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextInformationSeNBModReq_1[] = { + { ATF_POINTER, 7, offsetof(struct UE_ContextInformationSeNBModReq, uE_SecurityCapabilities), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UESecurityCapabilities, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uE-SecurityCapabilities" + }, + { ATF_POINTER, 6, offsetof(struct UE_ContextInformationSeNBModReq, seNB_SecurityKey), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SeNBSecurityKey, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-SecurityKey" + }, + { ATF_POINTER, 5, offsetof(struct UE_ContextInformationSeNBModReq, seNBUEAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UEAggregateMaximumBitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNBUEAggregateMaximumBitRate" + }, + { ATF_POINTER, 4, offsetof(struct UE_ContextInformationSeNBModReq, e_RABs_ToBeAdded), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeAdded_List_ModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeAdded" + }, + { ATF_POINTER, 3, offsetof(struct UE_ContextInformationSeNBModReq, e_RABs_ToBeModified), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeModified_List_ModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeModified" + }, + { ATF_POINTER, 2, offsetof(struct UE_ContextInformationSeNBModReq, e_RABs_ToBeReleased), + (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E_RABs_ToBeReleased_List_ModReq, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "e-RABs-ToBeReleased" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextInformationSeNBModReq, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (6 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P23, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextInformationSeNBModReq_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextInformationSeNBModReq_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextInformationSeNBModReq_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uE-SecurityCapabilities */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-SecurityKey */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* seNBUEAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* e-RABs-ToBeAdded */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* e-RABs-ToBeModified */ + { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* e-RABs-ToBeReleased */ + { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextInformationSeNBModReq_specs_1 = { + sizeof(struct UE_ContextInformationSeNBModReq), + offsetof(struct UE_ContextInformationSeNBModReq, _asn_ctx), + asn_MAP_UE_ContextInformationSeNBModReq_tag2el_1, + 7, /* Count of tags in the map */ + asn_MAP_UE_ContextInformationSeNBModReq_oms_1, /* Optional members */ + 7, 0, /* Root/Additions */ + 7, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReq = { + "UE-ContextInformationSeNBModReq", + "UE-ContextInformationSeNBModReq", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextInformationSeNBModReq_tags_1, + sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextInformationSeNBModReq_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1) + /sizeof(asn_DEF_UE_ContextInformationSeNBModReq_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextInformationSeNBModReq_1, + 7, /* Elements count */ + &asn_SPC_UE_ContextInformationSeNBModReq_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h new file mode 100644 index 0000000..4ca87fa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextInformationSeNBModReq.h @@ -0,0 +1,79 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextInformationSeNBModReq_H_ +#define _UE_ContextInformationSeNBModReq_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "SeNBSecurityKey.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UESecurityCapabilities; +struct UEAggregateMaximumBitRate; +struct E_RABs_ToBeAdded_List_ModReq; +struct E_RABs_ToBeModified_List_ModReq; +struct E_RABs_ToBeReleased_List_ModReq; +struct ProtocolExtensionContainer; + +/* UE-ContextInformationSeNBModReq */ +typedef struct UE_ContextInformationSeNBModReq { + struct UESecurityCapabilities *uE_SecurityCapabilities; /* OPTIONAL */ + SeNBSecurityKey_t *seNB_SecurityKey; /* OPTIONAL */ + struct UEAggregateMaximumBitRate *seNBUEAggregateMaximumBitRate; /* OPTIONAL */ + struct E_RABs_ToBeAdded_List_ModReq *e_RABs_ToBeAdded; /* OPTIONAL */ + struct E_RABs_ToBeModified_List_ModReq *e_RABs_ToBeModified; /* OPTIONAL */ + struct E_RABs_ToBeReleased_List_ModReq *e_RABs_ToBeReleased; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextInformationSeNBModReq_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextInformationSeNBModReq; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextInformationSeNBModReq_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c new file mode 100644 index 0000000..4db54d0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextKeptIndicator.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextKeptIndicator.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_ContextKeptIndicator_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UE_ContextKeptIndicator_value2enum_1[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UE_ContextKeptIndicator_enum2value_1[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UE_ContextKeptIndicator_specs_1 = { + asn_MAP_UE_ContextKeptIndicator_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UE_ContextKeptIndicator_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_UE_ContextKeptIndicator_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextKeptIndicator = { + "UE-ContextKeptIndicator", + "UE-ContextKeptIndicator", + &asn_OP_NativeEnumerated, + asn_DEF_UE_ContextKeptIndicator_tags_1, + sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1) + /sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextKeptIndicator_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1) + /sizeof(asn_DEF_UE_ContextKeptIndicator_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_ContextKeptIndicator_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UE_ContextKeptIndicator_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h new file mode 100644 index 0000000..76f3c69 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextKeptIndicator.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextKeptIndicator_H_ +#define _UE_ContextKeptIndicator_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UE_ContextKeptIndicator { + UE_ContextKeptIndicator_true = 0 + /* + * Enumeration is extensible + */ +} e_UE_ContextKeptIndicator; + +/* UE-ContextKeptIndicator */ +typedef long UE_ContextKeptIndicator_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_ContextKeptIndicator_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextKeptIndicator; +extern const asn_INTEGER_specifics_t asn_SPC_UE_ContextKeptIndicator_specs_1; +asn_struct_free_f UE_ContextKeptIndicator_free; +asn_struct_print_f UE_ContextKeptIndicator_print; +asn_constr_check_f UE_ContextKeptIndicator_constraint; +ber_type_decoder_f UE_ContextKeptIndicator_decode_ber; +der_type_encoder_f UE_ContextKeptIndicator_encode_der; +xer_type_decoder_f UE_ContextKeptIndicator_decode_xer; +xer_type_encoder_f UE_ContextKeptIndicator_encode_xer; +per_type_decoder_f UE_ContextKeptIndicator_decode_uper; +per_type_encoder_f UE_ContextKeptIndicator_encode_uper; +per_type_decoder_f UE_ContextKeptIndicator_decode_aper; +per_type_encoder_f UE_ContextKeptIndicator_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextKeptIndicator_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c new file mode 100644 index 0000000..156fc9a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextReferenceAtSeNB.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSeNB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB, source_GlobalSeNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "source-GlobalSeNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB, seNB_UE_X2AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-UE-X2AP-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSeNB, seNB_UE_X2AP_ID_Extension), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "seNB-UE-X2AP-ID-Extension" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextReferenceAtSeNB, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextReferenceAtSeNB_oms_1[] = { 3 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSeNB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSeNB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* source-GlobalSeNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* seNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* seNB-UE-X2AP-ID-Extension */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSeNB_specs_1 = { + sizeof(struct UE_ContextReferenceAtSeNB), + offsetof(struct UE_ContextReferenceAtSeNB, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSeNB_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_UE_ContextReferenceAtSeNB_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB = { + "UE-ContextReferenceAtSeNB", + "UE-ContextReferenceAtSeNB", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSeNB_tags_1, + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSeNB_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSeNB_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSeNB_1, + 4, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSeNB_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h new file mode 100644 index 0000000..f8c3d04 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSeNB.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextReferenceAtSeNB_H_ +#define _UE_ContextReferenceAtSeNB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalENB-ID.h" +#include "UE-X2AP-ID.h" +#include "UE-X2AP-ID-Extension.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UE-ContextReferenceAtSeNB */ +typedef struct UE_ContextReferenceAtSeNB { + GlobalENB_ID_t source_GlobalSeNB_ID; + UE_X2AP_ID_t seNB_UE_X2AP_ID; + UE_X2AP_ID_Extension_t seNB_UE_X2AP_ID_Extension; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtSeNB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSeNB; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextReferenceAtSeNB_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c new file mode 100644 index 0000000..1c19473 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextReferenceAtSgNB.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtSgNB_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB, source_GlobalSgNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "source-GlobalSgNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtSgNB, sgNB_UE_X2AP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-UE-X2AP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextReferenceAtSgNB, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextReferenceAtSgNB_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtSgNB_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtSgNB_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* source-GlobalSgNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sgNB-UE-X2AP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtSgNB_specs_1 = { + sizeof(struct UE_ContextReferenceAtSgNB), + offsetof(struct UE_ContextReferenceAtSgNB, _asn_ctx), + asn_MAP_UE_ContextReferenceAtSgNB_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UE_ContextReferenceAtSgNB_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB = { + "UE-ContextReferenceAtSgNB", + "UE-ContextReferenceAtSgNB", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtSgNB_tags_1, + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtSgNB_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtSgNB_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtSgNB_1, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtSgNB_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h new file mode 100644 index 0000000..e3db89a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtSgNB.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextReferenceAtSgNB_H_ +#define _UE_ContextReferenceAtSgNB_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "GlobalGNB-ID.h" +#include "SgNB-UE-X2AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UE-ContextReferenceAtSgNB */ +typedef struct UE_ContextReferenceAtSgNB { + GlobalGNB_ID_t source_GlobalSgNB_ID; + SgNB_UE_X2AP_ID_t sgNB_UE_X2AP_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtSgNB_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtSgNB; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextReferenceAtSgNB_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c new file mode 100644 index 0000000..a68e135 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-ContextReferenceAtWT.h" + +#include "ProtocolExtensionContainer.h" +static asn_TYPE_member_t asn_MBR_UE_ContextReferenceAtWT_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT, wTID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_WTID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wTID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UE_ContextReferenceAtWT, wT_UE_XwAP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WT_UE_XwAP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wT-UE-XwAP-ID" + }, + { ATF_POINTER, 1, offsetof(struct UE_ContextReferenceAtWT, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UE_ContextReferenceAtWT_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UE_ContextReferenceAtWT_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UE_ContextReferenceAtWT_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wTID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* wT-UE-XwAP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UE_ContextReferenceAtWT_specs_1 = { + sizeof(struct UE_ContextReferenceAtWT), + offsetof(struct UE_ContextReferenceAtWT, _asn_ctx), + asn_MAP_UE_ContextReferenceAtWT_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UE_ContextReferenceAtWT_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT = { + "UE-ContextReferenceAtWT", + "UE-ContextReferenceAtWT", + &asn_OP_SEQUENCE, + asn_DEF_UE_ContextReferenceAtWT_tags_1, + sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1[0]), /* 1 */ + asn_DEF_UE_ContextReferenceAtWT_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1) + /sizeof(asn_DEF_UE_ContextReferenceAtWT_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UE_ContextReferenceAtWT_1, + 3, /* Elements count */ + &asn_SPC_UE_ContextReferenceAtWT_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h new file mode 100644 index 0000000..b2815aa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-ContextReferenceAtWT.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_ContextReferenceAtWT_H_ +#define _UE_ContextReferenceAtWT_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WTID.h" +#include "WT-UE-XwAP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UE-ContextReferenceAtWT */ +typedef struct UE_ContextReferenceAtWT { + WTID_t wTID; + WT_UE_XwAP_ID_t wT_UE_XwAP_ID; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_ContextReferenceAtWT_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_ContextReferenceAtWT; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_ContextReferenceAtWT_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformation.c new file mode 100644 index 0000000..ea1cdef --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformation.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-HistoryInformation.h" + +#include "LastVisitedCell-Item.h" +asn_per_constraints_t asn_PER_type_UE_HistoryInformation_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UE_HistoryInformation_1[] = { + { ATF_POINTER, 0, 0, + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_LastVisitedCell_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UE_HistoryInformation_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UE_HistoryInformation_specs_1 = { + sizeof(struct UE_HistoryInformation), + offsetof(struct UE_HistoryInformation, _asn_ctx), + 2, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformation = { + "UE-HistoryInformation", + "UE-HistoryInformation", + &asn_OP_SEQUENCE_OF, + asn_DEF_UE_HistoryInformation_tags_1, + sizeof(asn_DEF_UE_HistoryInformation_tags_1) + /sizeof(asn_DEF_UE_HistoryInformation_tags_1[0]), /* 1 */ + asn_DEF_UE_HistoryInformation_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_HistoryInformation_tags_1) + /sizeof(asn_DEF_UE_HistoryInformation_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_HistoryInformation_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UE_HistoryInformation_1, + 1, /* Single element */ + &asn_SPC_UE_HistoryInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformation.h new file mode 100644 index 0000000..0650786 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformation.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_HistoryInformation_H_ +#define _UE_HistoryInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct LastVisitedCell_Item; + +/* UE-HistoryInformation */ +typedef struct UE_HistoryInformation { + A_SEQUENCE_OF(struct LastVisitedCell_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UE_HistoryInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformation; +extern asn_SET_OF_specifics_t asn_SPC_UE_HistoryInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_UE_HistoryInformation_1[1]; +extern asn_per_constraints_t asn_PER_type_UE_HistoryInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_HistoryInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c new file mode 100644 index 0000000..778b0f5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-HistoryInformationFromTheUE.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UE_HistoryInformationFromTheUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformationFromTheUE = { + "UE-HistoryInformationFromTheUE", + "UE-HistoryInformationFromTheUE", + &asn_OP_OCTET_STRING, + asn_DEF_UE_HistoryInformationFromTheUE_tags_1, + sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1) + /sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1[0]), /* 1 */ + asn_DEF_UE_HistoryInformationFromTheUE_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1) + /sizeof(asn_DEF_UE_HistoryInformationFromTheUE_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h new file mode 100644 index 0000000..56ab1fc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-HistoryInformationFromTheUE.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_HistoryInformationFromTheUE_H_ +#define _UE_HistoryInformationFromTheUE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-HistoryInformationFromTheUE */ +typedef OCTET_STRING_t UE_HistoryInformationFromTheUE_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_HistoryInformationFromTheUE; +asn_struct_free_f UE_HistoryInformationFromTheUE_free; +asn_struct_print_f UE_HistoryInformationFromTheUE_print; +asn_constr_check_f UE_HistoryInformationFromTheUE_constraint; +ber_type_decoder_f UE_HistoryInformationFromTheUE_decode_ber; +der_type_encoder_f UE_HistoryInformationFromTheUE_encode_der; +xer_type_decoder_f UE_HistoryInformationFromTheUE_decode_xer; +xer_type_encoder_f UE_HistoryInformationFromTheUE_encode_xer; +per_type_decoder_f UE_HistoryInformationFromTheUE_decode_uper; +per_type_encoder_f UE_HistoryInformationFromTheUE_encode_uper; +per_type_decoder_f UE_HistoryInformationFromTheUE_decode_aper; +per_type_encoder_f UE_HistoryInformationFromTheUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_HistoryInformationFromTheUE_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c new file mode 100644 index 0000000..f0ef63f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-RLF-Report-Container-for-extended-bands.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container_for_extended_bands = { + "UE-RLF-Report-Container-for-extended-bands", + "UE-RLF-Report-Container-for-extended-bands", + &asn_OP_OCTET_STRING, + asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1, + sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1[0]), /* 1 */ + asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_for_extended_bands_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h new file mode 100644 index 0000000..615a8e9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container-for-extended-bands.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_RLF_Report_Container_for_extended_bands_H_ +#define _UE_RLF_Report_Container_for_extended_bands_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-RLF-Report-Container-for-extended-bands */ +typedef OCTET_STRING_t UE_RLF_Report_Container_for_extended_bands_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container_for_extended_bands; +asn_struct_free_f UE_RLF_Report_Container_for_extended_bands_free; +asn_struct_print_f UE_RLF_Report_Container_for_extended_bands_print; +asn_constr_check_f UE_RLF_Report_Container_for_extended_bands_constraint; +ber_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_ber; +der_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_der; +xer_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_xer; +xer_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_xer; +per_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_uper; +per_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_uper; +per_type_decoder_f UE_RLF_Report_Container_for_extended_bands_decode_aper; +per_type_encoder_f UE_RLF_Report_Container_for_extended_bands_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_RLF_Report_Container_for_extended_bands_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container.c new file mode 100644 index 0000000..c474dd1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-RLF-Report-Container.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_UE_RLF_Report_Container_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container = { + "UE-RLF-Report-Container", + "UE-RLF-Report-Container", + &asn_OP_OCTET_STRING, + asn_DEF_UE_RLF_Report_Container_tags_1, + sizeof(asn_DEF_UE_RLF_Report_Container_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_tags_1[0]), /* 1 */ + asn_DEF_UE_RLF_Report_Container_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_RLF_Report_Container_tags_1) + /sizeof(asn_DEF_UE_RLF_Report_Container_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container.h new file mode 100644 index 0000000..e0dea88 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-RLF-Report-Container.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_RLF_Report_Container_H_ +#define _UE_RLF_Report_Container_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-RLF-Report-Container */ +typedef OCTET_STRING_t UE_RLF_Report_Container_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UE_RLF_Report_Container; +asn_struct_free_f UE_RLF_Report_Container_free; +asn_struct_print_f UE_RLF_Report_Container_print; +asn_constr_check_f UE_RLF_Report_Container_constraint; +ber_type_decoder_f UE_RLF_Report_Container_decode_ber; +der_type_encoder_f UE_RLF_Report_Container_encode_der; +xer_type_decoder_f UE_RLF_Report_Container_decode_xer; +xer_type_encoder_f UE_RLF_Report_Container_encode_xer; +per_type_decoder_f UE_RLF_Report_Container_decode_uper; +per_type_encoder_f UE_RLF_Report_Container_encode_uper; +per_type_decoder_f UE_RLF_Report_Container_decode_aper; +per_type_encoder_f UE_RLF_Report_Container_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_RLF_Report_Container_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-S1AP-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-S1AP-ID.c new file mode 100644 index 0000000..2f2e0f7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-S1AP-ID.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-S1AP-ID.h" + +int +UE_S1AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + /* Constraint check succeeded */ + return 0; +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_S1AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 32, -1, 0, 4294967295 } /* (0..4294967295) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +const asn_INTEGER_specifics_t asn_SPC_UE_S1AP_ID_specs_1 = { + 0, 0, 0, 0, 0, + 0, /* Native long size */ + 1 /* Unsigned representation */ +}; +static const ber_tlv_tag_t asn_DEF_UE_S1AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_S1AP_ID = { + "UE-S1AP-ID", + "UE-S1AP-ID", + &asn_OP_NativeInteger, + asn_DEF_UE_S1AP_ID_tags_1, + sizeof(asn_DEF_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_UE_S1AP_ID_tags_1[0]), /* 1 */ + asn_DEF_UE_S1AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_S1AP_ID_tags_1) + /sizeof(asn_DEF_UE_S1AP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_S1AP_ID_constr_1, UE_S1AP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_UE_S1AP_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-S1AP-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-S1AP-ID.h new file mode 100644 index 0000000..94f54a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-S1AP-ID.h @@ -0,0 +1,68 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_S1AP_ID_H_ +#define _UE_S1AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-S1AP-ID */ +typedef unsigned long UE_S1AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_S1AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_S1AP_ID; +extern const asn_INTEGER_specifics_t asn_SPC_UE_S1AP_ID_specs_1; +asn_struct_free_f UE_S1AP_ID_free; +asn_struct_print_f UE_S1AP_ID_print; +asn_constr_check_f UE_S1AP_ID_constraint; +ber_type_decoder_f UE_S1AP_ID_decode_ber; +der_type_encoder_f UE_S1AP_ID_encode_der; +xer_type_decoder_f UE_S1AP_ID_decode_xer; +xer_type_encoder_f UE_S1AP_ID_encode_xer; +per_type_decoder_f UE_S1AP_ID_decode_uper; +per_type_encoder_f UE_S1AP_ID_encode_uper; +per_type_decoder_f UE_S1AP_ID_decode_aper; +per_type_encoder_f UE_S1AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_S1AP_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c new file mode 100644 index 0000000..6487077 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-X2AP-ID-Extension.h" + +int +UE_X2AP_ID_Extension_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_X2AP_ID_Extension_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 12, 12, 0, 4095 } /* (0..4095,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UE_X2AP_ID_Extension_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID_Extension = { + "UE-X2AP-ID-Extension", + "UE-X2AP-ID-Extension", + &asn_OP_NativeInteger, + asn_DEF_UE_X2AP_ID_Extension_tags_1, + sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */ + asn_DEF_UE_X2AP_ID_Extension_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_Extension_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_X2AP_ID_Extension_constr_1, UE_X2AP_ID_Extension_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h new file mode 100644 index 0000000..d93eeeb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID-Extension.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_X2AP_ID_Extension_H_ +#define _UE_X2AP_ID_Extension_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-X2AP-ID-Extension */ +typedef long UE_X2AP_ID_Extension_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_X2AP_ID_Extension_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID_Extension; +asn_struct_free_f UE_X2AP_ID_Extension_free; +asn_struct_print_f UE_X2AP_ID_Extension_print; +asn_constr_check_f UE_X2AP_ID_Extension_constraint; +ber_type_decoder_f UE_X2AP_ID_Extension_decode_ber; +der_type_encoder_f UE_X2AP_ID_Extension_encode_der; +xer_type_decoder_f UE_X2AP_ID_Extension_decode_xer; +xer_type_encoder_f UE_X2AP_ID_Extension_encode_xer; +per_type_decoder_f UE_X2AP_ID_Extension_decode_uper; +per_type_encoder_f UE_X2AP_ID_Extension_encode_uper; +per_type_decoder_f UE_X2AP_ID_Extension_decode_aper; +per_type_encoder_f UE_X2AP_ID_Extension_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_X2AP_ID_Extension_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID.c new file mode 100644 index 0000000..8d9c3ee --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UE-X2AP-ID.h" + +int +UE_X2AP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UE_X2AP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UE_X2AP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID = { + "UE-X2AP-ID", + "UE-X2AP-ID", + &asn_OP_NativeInteger, + asn_DEF_UE_X2AP_ID_tags_1, + sizeof(asn_DEF_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_tags_1[0]), /* 1 */ + asn_DEF_UE_X2AP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_UE_X2AP_ID_tags_1) + /sizeof(asn_DEF_UE_X2AP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UE_X2AP_ID_constr_1, UE_X2AP_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID.h new file mode 100644 index 0000000..1c7d725 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UE-X2AP-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UE_X2AP_ID_H_ +#define _UE_X2AP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UE-X2AP-ID */ +typedef long UE_X2AP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UE_X2AP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UE_X2AP_ID; +asn_struct_free_f UE_X2AP_ID_free; +asn_struct_print_f UE_X2AP_ID_print; +asn_constr_check_f UE_X2AP_ID_constraint; +ber_type_decoder_f UE_X2AP_ID_decode_ber; +der_type_encoder_f UE_X2AP_ID_encode_der; +xer_type_decoder_f UE_X2AP_ID_decode_xer; +xer_type_encoder_f UE_X2AP_ID_encode_xer; +per_type_decoder_f UE_X2AP_ID_decode_uper; +per_type_encoder_f UE_X2AP_ID_encode_uper; +per_type_decoder_f UE_X2AP_ID_decode_aper; +per_type_encoder_f UE_X2AP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UE_X2AP_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c new file mode 100644 index 0000000..726cd80 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEAggregateMaximumBitRate.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UEAggregateMaximumBitRate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAggregateMaximumBitRate, uEaggregateMaximumBitRateDownlink), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRateDownlink" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAggregateMaximumBitRate, uEaggregateMaximumBitRateUplink), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uEaggregateMaximumBitRateUplink" + }, + { ATF_POINTER, 1, offsetof(struct UEAggregateMaximumBitRate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P209, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UEAggregateMaximumBitRate_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UEAggregateMaximumBitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAggregateMaximumBitRate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uEaggregateMaximumBitRateDownlink */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uEaggregateMaximumBitRateUplink */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAggregateMaximumBitRate_specs_1 = { + sizeof(struct UEAggregateMaximumBitRate), + offsetof(struct UEAggregateMaximumBitRate, _asn_ctx), + asn_MAP_UEAggregateMaximumBitRate_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UEAggregateMaximumBitRate_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAggregateMaximumBitRate = { + "UEAggregateMaximumBitRate", + "UEAggregateMaximumBitRate", + &asn_OP_SEQUENCE, + asn_DEF_UEAggregateMaximumBitRate_tags_1, + sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1[0]), /* 1 */ + asn_DEF_UEAggregateMaximumBitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UEAggregateMaximumBitRate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAggregateMaximumBitRate_1, + 3, /* Elements count */ + &asn_SPC_UEAggregateMaximumBitRate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h new file mode 100644 index 0000000..21127f6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAggregateMaximumBitRate.h @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEAggregateMaximumBitRate_H_ +#define _UEAggregateMaximumBitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BitRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UEAggregateMaximumBitRate */ +typedef struct UEAggregateMaximumBitRate { + BitRate_t uEaggregateMaximumBitRateDownlink; + BitRate_t uEaggregateMaximumBitRateUplink; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEAggregateMaximumBitRate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEAggregateMaximumBitRate; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAggregateMaximumBitRate_specs_1; +extern asn_TYPE_member_t asn_MBR_UEAggregateMaximumBitRate_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEAggregateMaximumBitRate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c new file mode 100644 index 0000000..ca5f888 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAppLayerMeasConfig.c @@ -0,0 +1,127 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEAppLayerMeasConfig.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_containerForAppLayerMeasConfig_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 1000)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_containerForAppLayerMeasConfig_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 10, 10, 1, 1000 } /* (SIZE(1..1000)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig, containerForAppLayerMeasConfig), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_OCTET_STRING, + 0, + { 0, &asn_PER_memb_containerForAppLayerMeasConfig_constr_2, memb_containerForAppLayerMeasConfig_constraint_1 }, + 0, 0, /* No default value */ + "containerForAppLayerMeasConfig" + }, + { ATF_NOFLAGS, 0, offsetof(struct UEAppLayerMeasConfig, areaScopeOfQMC), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_AreaScopeOfQMC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "areaScopeOfQMC" + }, + { ATF_POINTER, 1, offsetof(struct UEAppLayerMeasConfig, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P210, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UEAppLayerMeasConfig_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UEAppLayerMeasConfig_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEAppLayerMeasConfig_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* containerForAppLayerMeasConfig */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* areaScopeOfQMC */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_specs_1 = { + sizeof(struct UEAppLayerMeasConfig), + offsetof(struct UEAppLayerMeasConfig, _asn_ctx), + asn_MAP_UEAppLayerMeasConfig_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UEAppLayerMeasConfig_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig = { + "UEAppLayerMeasConfig", + "UEAppLayerMeasConfig", + &asn_OP_SEQUENCE, + asn_DEF_UEAppLayerMeasConfig_tags_1, + sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1) + /sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1[0]), /* 1 */ + asn_DEF_UEAppLayerMeasConfig_tags_1, /* Same as above */ + sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1) + /sizeof(asn_DEF_UEAppLayerMeasConfig_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEAppLayerMeasConfig_1, + 3, /* Elements count */ + &asn_SPC_UEAppLayerMeasConfig_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h new file mode 100644 index 0000000..3e8b2f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEAppLayerMeasConfig.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEAppLayerMeasConfig_H_ +#define _UEAppLayerMeasConfig_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" +#include "AreaScopeOfQMC.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UEAppLayerMeasConfig */ +typedef struct UEAppLayerMeasConfig { + OCTET_STRING_t containerForAppLayerMeasConfig; + AreaScopeOfQMC_t areaScopeOfQMC; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEAppLayerMeasConfig_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig; +extern asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_specs_1; +extern asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEAppLayerMeasConfig_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEContextRelease.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEContextRelease.c new file mode 100644 index 0000000..cae01e5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEContextRelease.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEContextRelease.h" + +static asn_TYPE_member_t asn_MBR_UEContextRelease_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEContextRelease, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEContextRelease_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEContextRelease_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_UEContextRelease_specs_1 = { + sizeof(struct UEContextRelease), + offsetof(struct UEContextRelease, _asn_ctx), + asn_MAP_UEContextRelease_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEContextRelease = { + "UEContextRelease", + "UEContextRelease", + &asn_OP_SEQUENCE, + asn_DEF_UEContextRelease_tags_1, + sizeof(asn_DEF_UEContextRelease_tags_1) + /sizeof(asn_DEF_UEContextRelease_tags_1[0]), /* 1 */ + asn_DEF_UEContextRelease_tags_1, /* Same as above */ + sizeof(asn_DEF_UEContextRelease_tags_1) + /sizeof(asn_DEF_UEContextRelease_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEContextRelease_1, + 1, /* Elements count */ + &asn_SPC_UEContextRelease_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEContextRelease.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEContextRelease.h new file mode 100644 index 0000000..d865377 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEContextRelease.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEContextRelease_H_ +#define _UEContextRelease_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEContextRelease */ +typedef struct UEContextRelease { + ProtocolIE_Container_119P19_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEContextRelease_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEContextRelease; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEContextRelease_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEID.c new file mode 100644 index 0000000..7c2dcc5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEID.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEID.h" + +int +UEID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 16)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UEID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 16, 16 } /* (SIZE(16..16)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UEID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UEID = { + "UEID", + "UEID", + &asn_OP_BIT_STRING, + asn_DEF_UEID_tags_1, + sizeof(asn_DEF_UEID_tags_1) + /sizeof(asn_DEF_UEID_tags_1[0]), /* 1 */ + asn_DEF_UEID_tags_1, /* Same as above */ + sizeof(asn_DEF_UEID_tags_1) + /sizeof(asn_DEF_UEID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UEID_constr_1, UEID_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEID.h new file mode 100644 index 0000000..b3518a0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEID_H_ +#define _UEID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UEID */ +typedef BIT_STRING_t UEID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UEID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UEID; +asn_struct_free_f UEID_free; +asn_struct_print_f UEID_print; +asn_constr_check_f UEID_constraint; +ber_type_decoder_f UEID_decode_ber; +der_type_encoder_f UEID_encode_der; +xer_type_decoder_f UEID_decode_xer; +xer_type_encoder_f UEID_encode_xer; +per_type_decoder_f UEID_decode_uper; +per_type_encoder_f UEID_encode_uper; +per_type_decoder_f UEID_decode_aper; +per_type_encoder_f UEID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UENRMeasurement.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UENRMeasurement.c new file mode 100644 index 0000000..cc7a633 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UENRMeasurement.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UENRMeasurement.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UENRMeasurement_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UENRMeasurement, uENRMeasurements), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RRCContainer, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uENRMeasurements" + }, + { ATF_POINTER, 1, offsetof(struct UENRMeasurement, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P171, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UENRMeasurement_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UENRMeasurement_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UENRMeasurement_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uENRMeasurements */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_specs_1 = { + sizeof(struct UENRMeasurement), + offsetof(struct UENRMeasurement, _asn_ctx), + asn_MAP_UENRMeasurement_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UENRMeasurement_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UENRMeasurement = { + "UENRMeasurement", + "UENRMeasurement", + &asn_OP_SEQUENCE, + asn_DEF_UENRMeasurement_tags_1, + sizeof(asn_DEF_UENRMeasurement_tags_1) + /sizeof(asn_DEF_UENRMeasurement_tags_1[0]), /* 1 */ + asn_DEF_UENRMeasurement_tags_1, /* Same as above */ + sizeof(asn_DEF_UENRMeasurement_tags_1) + /sizeof(asn_DEF_UENRMeasurement_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UENRMeasurement_1, + 2, /* Elements count */ + &asn_SPC_UENRMeasurement_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UENRMeasurement.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UENRMeasurement.h new file mode 100644 index 0000000..ce43bba --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UENRMeasurement.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UENRMeasurement_H_ +#define _UENRMeasurement_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "RRCContainer.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UENRMeasurement */ +typedef struct UENRMeasurement { + RRCContainer_t uENRMeasurements; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UENRMeasurement_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UENRMeasurement; +extern asn_SEQUENCE_specifics_t asn_SPC_UENRMeasurement_specs_1; +extern asn_TYPE_member_t asn_MBR_UENRMeasurement_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UENRMeasurement_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESecurityCapabilities.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESecurityCapabilities.c new file mode 100644 index 0000000..8357048 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESecurityCapabilities.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UESecurityCapabilities.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UESecurityCapabilities_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities, encryptionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_EncryptionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "encryptionAlgorithms" + }, + { ATF_NOFLAGS, 0, offsetof(struct UESecurityCapabilities, integrityProtectionAlgorithms), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_IntegrityProtectionAlgorithms, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "integrityProtectionAlgorithms" + }, + { ATF_POINTER, 1, offsetof(struct UESecurityCapabilities, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P211, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UESecurityCapabilities_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UESecurityCapabilities_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UESecurityCapabilities_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* encryptionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* integrityProtectionAlgorithms */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_specs_1 = { + sizeof(struct UESecurityCapabilities), + offsetof(struct UESecurityCapabilities, _asn_ctx), + asn_MAP_UESecurityCapabilities_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UESecurityCapabilities_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities = { + "UESecurityCapabilities", + "UESecurityCapabilities", + &asn_OP_SEQUENCE, + asn_DEF_UESecurityCapabilities_tags_1, + sizeof(asn_DEF_UESecurityCapabilities_tags_1) + /sizeof(asn_DEF_UESecurityCapabilities_tags_1[0]), /* 1 */ + asn_DEF_UESecurityCapabilities_tags_1, /* Same as above */ + sizeof(asn_DEF_UESecurityCapabilities_tags_1) + /sizeof(asn_DEF_UESecurityCapabilities_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UESecurityCapabilities_1, + 3, /* Elements count */ + &asn_SPC_UESecurityCapabilities_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESecurityCapabilities.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESecurityCapabilities.h new file mode 100644 index 0000000..ddd1f09 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESecurityCapabilities.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UESecurityCapabilities_H_ +#define _UESecurityCapabilities_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "EncryptionAlgorithms.h" +#include "IntegrityProtectionAlgorithms.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UESecurityCapabilities */ +typedef struct UESecurityCapabilities { + EncryptionAlgorithms_t encryptionAlgorithms; + IntegrityProtectionAlgorithms_t integrityProtectionAlgorithms; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UESecurityCapabilities_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities; +extern asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_specs_1; +extern asn_TYPE_member_t asn_MBR_UESecurityCapabilities_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UESecurityCapabilities_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c new file mode 100644 index 0000000..cf17b55 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UESidelinkAggregateMaximumBitRate.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UESidelinkAggregateMaximumBitRate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UESidelinkAggregateMaximumBitRate, uESidelinkAggregateMaximumBitRate), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BitRate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uESidelinkAggregateMaximumBitRate" + }, + { ATF_POINTER, 1, offsetof(struct UESidelinkAggregateMaximumBitRate, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P212, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UESidelinkAggregateMaximumBitRate_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UESidelinkAggregateMaximumBitRate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uESidelinkAggregateMaximumBitRate */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UESidelinkAggregateMaximumBitRate_specs_1 = { + sizeof(struct UESidelinkAggregateMaximumBitRate), + offsetof(struct UESidelinkAggregateMaximumBitRate, _asn_ctx), + asn_MAP_UESidelinkAggregateMaximumBitRate_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UESidelinkAggregateMaximumBitRate_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UESidelinkAggregateMaximumBitRate = { + "UESidelinkAggregateMaximumBitRate", + "UESidelinkAggregateMaximumBitRate", + &asn_OP_SEQUENCE, + asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1, + sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1[0]), /* 1 */ + asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1, /* Same as above */ + sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1) + /sizeof(asn_DEF_UESidelinkAggregateMaximumBitRate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UESidelinkAggregateMaximumBitRate_1, + 2, /* Elements count */ + &asn_SPC_UESidelinkAggregateMaximumBitRate_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h new file mode 100644 index 0000000..2efac23 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UESidelinkAggregateMaximumBitRate.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UESidelinkAggregateMaximumBitRate_H_ +#define _UESidelinkAggregateMaximumBitRate_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BitRate.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UESidelinkAggregateMaximumBitRate */ +typedef struct UESidelinkAggregateMaximumBitRate { + BitRate_t uESidelinkAggregateMaximumBitRate; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UESidelinkAggregateMaximumBitRate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UESidelinkAggregateMaximumBitRate; +extern asn_SEQUENCE_specifics_t asn_SPC_UESidelinkAggregateMaximumBitRate_specs_1; +extern asn_TYPE_member_t asn_MBR_UESidelinkAggregateMaximumBitRate_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UESidelinkAggregateMaximumBitRate_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList-Item.c new file mode 100644 index 0000000..8f34e47 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList-Item.c @@ -0,0 +1,106 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEsToBeResetList-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UEsToBeResetList_Item, meNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-ID" + }, + { ATF_POINTER, 3, offsetof(struct UEsToBeResetList_Item, meNB_ID_ext), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UE_X2AP_ID_Extension, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "meNB-ID-ext" + }, + { ATF_POINTER, 2, offsetof(struct UEsToBeResetList_Item, sgNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SgNB_UE_X2AP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "sgNB-ID" + }, + { ATF_POINTER, 1, offsetof(struct UEsToBeResetList_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P213, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UEsToBeResetList_Item_oms_1[] = { 1, 2, 3 }; +static const ber_tlv_tag_t asn_DEF_UEsToBeResetList_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UEsToBeResetList_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* meNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* meNB-ID-ext */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sgNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_specs_1 = { + sizeof(struct UEsToBeResetList_Item), + offsetof(struct UEsToBeResetList_Item, _asn_ctx), + asn_MAP_UEsToBeResetList_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_UEsToBeResetList_Item_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item = { + "UEsToBeResetList-Item", + "UEsToBeResetList-Item", + &asn_OP_SEQUENCE, + asn_DEF_UEsToBeResetList_Item_tags_1, + sizeof(asn_DEF_UEsToBeResetList_Item_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_Item_tags_1[0]), /* 1 */ + asn_DEF_UEsToBeResetList_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UEsToBeResetList_Item_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UEsToBeResetList_Item_1, + 4, /* Elements count */ + &asn_SPC_UEsToBeResetList_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList-Item.h new file mode 100644 index 0000000..76c2b27 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList-Item.h @@ -0,0 +1,75 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEsToBeResetList_Item_H_ +#define _UEsToBeResetList_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UE-X2AP-ID.h" +#include "UE-X2AP-ID-Extension.h" +#include "SgNB-UE-X2AP-ID.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UEsToBeResetList-Item */ +typedef struct UEsToBeResetList_Item { + UE_X2AP_ID_t meNB_ID; + UE_X2AP_ID_Extension_t *meNB_ID_ext; /* OPTIONAL */ + SgNB_UE_X2AP_ID_t *sgNB_ID; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEsToBeResetList_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_UEsToBeResetList_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_UEsToBeResetList_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEsToBeResetList_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList.c new file mode 100644 index 0000000..4fca112 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UEsToBeResetList.h" + +#include "UEsToBeResetList-Item.h" +asn_per_constraints_t asn_PER_type_UEsToBeResetList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 13, 13, 1, 8192 } /* (SIZE(1..8192)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UEsToBeResetList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UEsToBeResetList_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UEsToBeResetList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UEsToBeResetList_specs_1 = { + sizeof(struct UEsToBeResetList), + offsetof(struct UEsToBeResetList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList = { + "UEsToBeResetList", + "UEsToBeResetList", + &asn_OP_SEQUENCE_OF, + asn_DEF_UEsToBeResetList_tags_1, + sizeof(asn_DEF_UEsToBeResetList_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_tags_1[0]), /* 1 */ + asn_DEF_UEsToBeResetList_tags_1, /* Same as above */ + sizeof(asn_DEF_UEsToBeResetList_tags_1) + /sizeof(asn_DEF_UEsToBeResetList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UEsToBeResetList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UEsToBeResetList_1, + 1, /* Single element */ + &asn_SPC_UEsToBeResetList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList.h new file mode 100644 index 0000000..a8c9ea0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UEsToBeResetList.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UEsToBeResetList_H_ +#define _UEsToBeResetList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UEsToBeResetList_Item; + +/* UEsToBeResetList */ +typedef struct UEsToBeResetList { + A_SEQUENCE_OF(struct UEsToBeResetList_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UEsToBeResetList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UEsToBeResetList; +extern asn_SET_OF_specifics_t asn_SPC_UEsToBeResetList_specs_1; +extern asn_TYPE_member_t asn_MBR_UEsToBeResetList_1[1]; +extern asn_per_constraints_t asn_PER_type_UEsToBeResetList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UEsToBeResetList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c new file mode 100644 index 0000000..bf1f51c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-GBR-PRB-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-GBR-PRB-usage.h" + +int +UL_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_GBR_PRB_usage = { + "UL-GBR-PRB-usage", + "UL-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_GBR_PRB_usage_constr_1, UL_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h new file mode 100644 index 0000000..5037aa4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-GBR-PRB-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_GBR_PRB_usage_H_ +#define _UL_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-GBR-PRB-usage */ +typedef long UL_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_GBR_PRB_usage; +asn_struct_free_f UL_GBR_PRB_usage_free; +asn_struct_print_f UL_GBR_PRB_usage_print; +asn_constr_check_f UL_GBR_PRB_usage_constraint; +ber_type_decoder_f UL_GBR_PRB_usage_decode_ber; +der_type_encoder_f UL_GBR_PRB_usage_encode_der; +xer_type_decoder_f UL_GBR_PRB_usage_decode_xer; +xer_type_encoder_f UL_GBR_PRB_usage_encode_xer; +per_type_decoder_f UL_GBR_PRB_usage_decode_uper; +per_type_encoder_f UL_GBR_PRB_usage_encode_uper; +per_type_decoder_f UL_GBR_PRB_usage_decode_aper; +per_type_encoder_f UL_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c new file mode 100644 index 0000000..71a9da7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndication.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-HighInterferenceIndication.h" + +int +UL_HighInterferenceIndication_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 110)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndication_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 110 } /* (SIZE(1..110,...)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndication = { + "UL-HighInterferenceIndication", + "UL-HighInterferenceIndication", + &asn_OP_BIT_STRING, + asn_DEF_UL_HighInterferenceIndication_tags_1, + sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_HighInterferenceIndication_constr_1, UL_HighInterferenceIndication_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h new file mode 100644 index 0000000..4ef4e28 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndication.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_HighInterferenceIndication_H_ +#define _UL_HighInterferenceIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-HighInterferenceIndication */ +typedef BIT_STRING_t UL_HighInterferenceIndication_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndication_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndication; +asn_struct_free_f UL_HighInterferenceIndication_free; +asn_struct_print_f UL_HighInterferenceIndication_print; +asn_constr_check_f UL_HighInterferenceIndication_constraint; +ber_type_decoder_f UL_HighInterferenceIndication_decode_ber; +der_type_encoder_f UL_HighInterferenceIndication_encode_der; +xer_type_decoder_f UL_HighInterferenceIndication_decode_xer; +xer_type_encoder_f UL_HighInterferenceIndication_encode_xer; +per_type_decoder_f UL_HighInterferenceIndication_decode_uper; +per_type_encoder_f UL_HighInterferenceIndication_encode_uper; +per_type_decoder_f UL_HighInterferenceIndication_decode_aper; +per_type_encoder_f UL_HighInterferenceIndication_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_HighInterferenceIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c new file mode 100644 index 0000000..c2be971 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-HighInterferenceIndicationInfo-Item.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item, target_Cell_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ECGI, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "target-Cell-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct UL_HighInterferenceIndicationInfo_Item, ul_interferenceindication), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_HighInterferenceIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ul-interferenceindication" + }, + { ATF_POINTER, 1, offsetof(struct UL_HighInterferenceIndicationInfo_Item, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P216, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UL_HighInterferenceIndicationInfo_Item_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UL_HighInterferenceIndicationInfo_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* target-Cell-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ul-interferenceindication */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_specs_1 = { + sizeof(struct UL_HighInterferenceIndicationInfo_Item), + offsetof(struct UL_HighInterferenceIndicationInfo_Item, _asn_ctx), + asn_MAP_UL_HighInterferenceIndicationInfo_Item_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_UL_HighInterferenceIndicationInfo_Item_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item = { + "UL-HighInterferenceIndicationInfo-Item", + "UL-HighInterferenceIndicationInfo-Item", + &asn_OP_SEQUENCE, + asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1, + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UL_HighInterferenceIndicationInfo_Item_1, + 3, /* Elements count */ + &asn_SPC_UL_HighInterferenceIndicationInfo_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h new file mode 100644 index 0000000..6df422e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo-Item.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_HighInterferenceIndicationInfo_Item_H_ +#define _UL_HighInterferenceIndicationInfo_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ECGI.h" +#include "UL-HighInterferenceIndication.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UL-HighInterferenceIndicationInfo-Item */ +typedef struct UL_HighInterferenceIndicationInfo_Item { + ECGI_t target_Cell_ID; + UL_HighInterferenceIndication_t ul_interferenceindication; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_HighInterferenceIndicationInfo_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_HighInterferenceIndicationInfo_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c new file mode 100644 index 0000000..a1470a8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-HighInterferenceIndicationInfo.h" + +#include "UL-HighInterferenceIndicationInfo-Item.h" +asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_UL_HighInterferenceIndicationInfo_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UL_HighInterferenceIndicationInfo_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_specs_1 = { + sizeof(struct UL_HighInterferenceIndicationInfo), + offsetof(struct UL_HighInterferenceIndicationInfo, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo = { + "UL-HighInterferenceIndicationInfo", + "UL-HighInterferenceIndicationInfo", + &asn_OP_SEQUENCE_OF, + asn_DEF_UL_HighInterferenceIndicationInfo_tags_1, + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1[0]), /* 1 */ + asn_DEF_UL_HighInterferenceIndicationInfo_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1) + /sizeof(asn_DEF_UL_HighInterferenceIndicationInfo_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UL_HighInterferenceIndicationInfo_1, + 1, /* Single element */ + &asn_SPC_UL_HighInterferenceIndicationInfo_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h new file mode 100644 index 0000000..1650d5e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-HighInterferenceIndicationInfo.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_HighInterferenceIndicationInfo_H_ +#define _UL_HighInterferenceIndicationInfo_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct UL_HighInterferenceIndicationInfo_Item; + +/* UL-HighInterferenceIndicationInfo */ +typedef struct UL_HighInterferenceIndicationInfo { + A_SEQUENCE_OF(struct UL_HighInterferenceIndicationInfo_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_HighInterferenceIndicationInfo_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UL_HighInterferenceIndicationInfo; +extern asn_SET_OF_specifics_t asn_SPC_UL_HighInterferenceIndicationInfo_specs_1; +extern asn_TYPE_member_t asn_MBR_UL_HighInterferenceIndicationInfo_1[1]; +extern asn_per_constraints_t asn_PER_type_UL_HighInterferenceIndicationInfo_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_HighInterferenceIndicationInfo_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c new file mode 100644 index 0000000..9cebb8f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-InterferenceOverloadIndication-Item.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_Item_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UL_InterferenceOverloadIndication_Item_value2enum_1[] = { + { 0, 17, "high-interference" }, + { 1, 19, "medium-interference" }, + { 2, 16, "low-interference" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UL_InterferenceOverloadIndication_Item_enum2value_1[] = { + 0, /* high-interference(0) */ + 2, /* low-interference(2) */ + 1 /* medium-interference(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UL_InterferenceOverloadIndication_Item_specs_1 = { + asn_MAP_UL_InterferenceOverloadIndication_Item_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UL_InterferenceOverloadIndication_Item_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication_Item = { + "UL-InterferenceOverloadIndication-Item", + "UL-InterferenceOverloadIndication-Item", + &asn_OP_NativeEnumerated, + asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1, + sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1[0]), /* 1 */ + asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_Item_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_InterferenceOverloadIndication_Item_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UL_InterferenceOverloadIndication_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h new file mode 100644 index 0000000..09fe272 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication-Item.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_InterferenceOverloadIndication_Item_H_ +#define _UL_InterferenceOverloadIndication_Item_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UL_InterferenceOverloadIndication_Item { + UL_InterferenceOverloadIndication_Item_high_interference = 0, + UL_InterferenceOverloadIndication_Item_medium_interference = 1, + UL_InterferenceOverloadIndication_Item_low_interference = 2 + /* + * Enumeration is extensible + */ +} e_UL_InterferenceOverloadIndication_Item; + +/* UL-InterferenceOverloadIndication-Item */ +typedef long UL_InterferenceOverloadIndication_Item_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_Item_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication_Item; +extern const asn_INTEGER_specifics_t asn_SPC_UL_InterferenceOverloadIndication_Item_specs_1; +asn_struct_free_f UL_InterferenceOverloadIndication_Item_free; +asn_struct_print_f UL_InterferenceOverloadIndication_Item_print; +asn_constr_check_f UL_InterferenceOverloadIndication_Item_constraint; +ber_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_ber; +der_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_der; +xer_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_xer; +xer_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_xer; +per_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_uper; +per_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_uper; +per_type_decoder_f UL_InterferenceOverloadIndication_Item_decode_aper; +per_type_encoder_f UL_InterferenceOverloadIndication_Item_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_InterferenceOverloadIndication_Item_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c new file mode 100644 index 0000000..1b3c30d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-InterferenceOverloadIndication.h" + +asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 7, 7, 1, 110 } /* (SIZE(1..110)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UL_InterferenceOverloadIndication_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_UL_InterferenceOverloadIndication_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_UL_InterferenceOverloadIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_UL_InterferenceOverloadIndication_specs_1 = { + sizeof(struct UL_InterferenceOverloadIndication), + offsetof(struct UL_InterferenceOverloadIndication, _asn_ctx), + 1, /* XER encoding is XMLValueList */ +}; +asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication = { + "UL-InterferenceOverloadIndication", + "UL-InterferenceOverloadIndication", + &asn_OP_SEQUENCE_OF, + asn_DEF_UL_InterferenceOverloadIndication_tags_1, + sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1[0]), /* 1 */ + asn_DEF_UL_InterferenceOverloadIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1) + /sizeof(asn_DEF_UL_InterferenceOverloadIndication_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_InterferenceOverloadIndication_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_UL_InterferenceOverloadIndication_1, + 1, /* Single element */ + &asn_SPC_UL_InterferenceOverloadIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h new file mode 100644 index 0000000..0216cad --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-InterferenceOverloadIndication.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_InterferenceOverloadIndication_H_ +#define _UL_InterferenceOverloadIndication_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UL-InterferenceOverloadIndication-Item.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-InterferenceOverloadIndication */ +typedef struct UL_InterferenceOverloadIndication { + A_SEQUENCE_OF(UL_InterferenceOverloadIndication_Item_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UL_InterferenceOverloadIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UL_InterferenceOverloadIndication; +extern asn_SET_OF_specifics_t asn_SPC_UL_InterferenceOverloadIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_UL_InterferenceOverloadIndication_1[1]; +extern asn_per_constraints_t asn_PER_type_UL_InterferenceOverloadIndication_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_InterferenceOverloadIndication_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-Total-PRB-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-Total-PRB-usage.c new file mode 100644 index 0000000..0e97aaa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-Total-PRB-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-Total-PRB-usage.h" + +int +UL_Total_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_Total_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_Total_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_Total_PRB_usage = { + "UL-Total-PRB-usage", + "UL-Total-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_Total_PRB_usage_tags_1, + sizeof(asn_DEF_UL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_Total_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_Total_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_Total_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_Total_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_Total_PRB_usage_constr_1, UL_Total_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-Total-PRB-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-Total-PRB-usage.h new file mode 100644 index 0000000..a65eb09 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-Total-PRB-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_Total_PRB_usage_H_ +#define _UL_Total_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-Total-PRB-usage */ +typedef long UL_Total_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_Total_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_Total_PRB_usage; +asn_struct_free_f UL_Total_PRB_usage_free; +asn_struct_print_f UL_Total_PRB_usage_print; +asn_constr_check_f UL_Total_PRB_usage_constraint; +ber_type_decoder_f UL_Total_PRB_usage_decode_ber; +der_type_encoder_f UL_Total_PRB_usage_encode_der; +xer_type_decoder_f UL_Total_PRB_usage_decode_xer; +xer_type_encoder_f UL_Total_PRB_usage_encode_xer; +per_type_decoder_f UL_Total_PRB_usage_decode_uper; +per_type_encoder_f UL_Total_PRB_usage_encode_uper; +per_type_decoder_f UL_Total_PRB_usage_decode_aper; +per_type_encoder_f UL_Total_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_Total_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-UE-Configuration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-UE-Configuration.c new file mode 100644 index 0000000..ae0ee87 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-UE-Configuration.c @@ -0,0 +1,80 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-UE-Configuration.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_UE_Configuration_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UL_UE_Configuration_value2enum_1[] = { + { 0, 7, "no-data" }, + { 1, 6, "shared" }, + { 2, 4, "only" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UL_UE_Configuration_enum2value_1[] = { + 0, /* no-data(0) */ + 2, /* only(2) */ + 1 /* shared(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UL_UE_Configuration_specs_1 = { + asn_MAP_UL_UE_Configuration_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UL_UE_Configuration_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_UL_UE_Configuration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_UE_Configuration = { + "UL-UE-Configuration", + "UL-UE-Configuration", + &asn_OP_NativeEnumerated, + asn_DEF_UL_UE_Configuration_tags_1, + sizeof(asn_DEF_UL_UE_Configuration_tags_1) + /sizeof(asn_DEF_UL_UE_Configuration_tags_1[0]), /* 1 */ + asn_DEF_UL_UE_Configuration_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_UE_Configuration_tags_1) + /sizeof(asn_DEF_UL_UE_Configuration_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_UE_Configuration_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UL_UE_Configuration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-UE-Configuration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-UE-Configuration.h new file mode 100644 index 0000000..b639a50 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-UE-Configuration.h @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_UE_Configuration_H_ +#define _UL_UE_Configuration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UL_UE_Configuration { + UL_UE_Configuration_no_data = 0, + UL_UE_Configuration_shared = 1, + UL_UE_Configuration_only = 2 + /* + * Enumeration is extensible + */ +} e_UL_UE_Configuration; + +/* UL-UE-Configuration */ +typedef long UL_UE_Configuration_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_UE_Configuration_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_UE_Configuration; +extern const asn_INTEGER_specifics_t asn_SPC_UL_UE_Configuration_specs_1; +asn_struct_free_f UL_UE_Configuration_free; +asn_struct_print_f UL_UE_Configuration_print; +asn_constr_check_f UL_UE_Configuration_constraint; +ber_type_decoder_f UL_UE_Configuration_decode_ber; +der_type_encoder_f UL_UE_Configuration_encode_der; +xer_type_decoder_f UL_UE_Configuration_decode_xer; +xer_type_encoder_f UL_UE_Configuration_encode_xer; +per_type_decoder_f UL_UE_Configuration_decode_uper; +per_type_encoder_f UL_UE_Configuration_encode_uper; +per_type_decoder_f UL_UE_Configuration_decode_aper; +per_type_encoder_f UL_UE_Configuration_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_UE_Configuration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c new file mode 100644 index 0000000..2c86fb7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-non-GBR-PRB-usage.h" + +int +UL_non_GBR_PRB_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_non_GBR_PRB_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_non_GBR_PRB_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_non_GBR_PRB_usage = { + "UL-non-GBR-PRB-usage", + "UL-non-GBR-PRB-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_non_GBR_PRB_usage_tags_1, + sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_non_GBR_PRB_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1) + /sizeof(asn_DEF_UL_non_GBR_PRB_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_non_GBR_PRB_usage_constr_1, UL_non_GBR_PRB_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h new file mode 100644 index 0000000..eeb4aa0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-non-GBR-PRB-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_non_GBR_PRB_usage_H_ +#define _UL_non_GBR_PRB_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-non-GBR-PRB-usage */ +typedef long UL_non_GBR_PRB_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_non_GBR_PRB_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_non_GBR_PRB_usage; +asn_struct_free_f UL_non_GBR_PRB_usage_free; +asn_struct_print_f UL_non_GBR_PRB_usage_print; +asn_constr_check_f UL_non_GBR_PRB_usage_constraint; +ber_type_decoder_f UL_non_GBR_PRB_usage_decode_ber; +der_type_encoder_f UL_non_GBR_PRB_usage_encode_der; +xer_type_decoder_f UL_non_GBR_PRB_usage_decode_xer; +xer_type_encoder_f UL_non_GBR_PRB_usage_encode_xer; +per_type_decoder_f UL_non_GBR_PRB_usage_decode_uper; +per_type_encoder_f UL_non_GBR_PRB_usage_encode_uper; +per_type_decoder_f UL_non_GBR_PRB_usage_decode_aper; +per_type_encoder_f UL_non_GBR_PRB_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_non_GBR_PRB_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c new file mode 100644 index 0000000..b131c4d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UL-scheduling-PDCCH-CCE-usage.h" + +int +UL_scheduling_PDCCH_CCE_usage_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 100)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UL_scheduling_PDCCH_CCE_usage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 7, 7, 0, 100 } /* (0..100) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UL_scheduling_PDCCH_CCE_usage = { + "UL-scheduling-PDCCH-CCE-usage", + "UL-scheduling-PDCCH-CCE-usage", + &asn_OP_NativeInteger, + asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1, + sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1, /* Same as above */ + sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1) + /sizeof(asn_DEF_UL_scheduling_PDCCH_CCE_usage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UL_scheduling_PDCCH_CCE_usage_constr_1, UL_scheduling_PDCCH_CCE_usage_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h new file mode 100644 index 0000000..19139b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UL-scheduling-PDCCH-CCE-usage.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UL_scheduling_PDCCH_CCE_usage_H_ +#define _UL_scheduling_PDCCH_CCE_usage_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* UL-scheduling-PDCCH-CCE-usage */ +typedef long UL_scheduling_PDCCH_CCE_usage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UL_scheduling_PDCCH_CCE_usage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UL_scheduling_PDCCH_CCE_usage; +asn_struct_free_f UL_scheduling_PDCCH_CCE_usage_free; +asn_struct_print_f UL_scheduling_PDCCH_CCE_usage_print; +asn_constr_check_f UL_scheduling_PDCCH_CCE_usage_constraint; +ber_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_ber; +der_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_der; +xer_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_xer; +xer_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_xer; +per_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_uper; +per_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_uper; +per_type_decoder_f UL_scheduling_PDCCH_CCE_usage_decode_aper; +per_type_encoder_f UL_scheduling_PDCCH_CCE_usage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UL_scheduling_PDCCH_CCE_usage_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULConfiguration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULConfiguration.c new file mode 100644 index 0000000..3d4438c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULConfiguration.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULConfiguration.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ULConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULConfiguration, uL_PDCP), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UL_UE_Configuration, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uL-PDCP" + }, + { ATF_POINTER, 1, offsetof(struct ULConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P215, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ULConfiguration_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ULConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uL-PDCP */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_specs_1 = { + sizeof(struct ULConfiguration), + offsetof(struct ULConfiguration, _asn_ctx), + asn_MAP_ULConfiguration_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ULConfiguration_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULConfiguration = { + "ULConfiguration", + "ULConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_ULConfiguration_tags_1, + sizeof(asn_DEF_ULConfiguration_tags_1) + /sizeof(asn_DEF_ULConfiguration_tags_1[0]), /* 1 */ + asn_DEF_ULConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_ULConfiguration_tags_1) + /sizeof(asn_DEF_ULConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULConfiguration_1, + 2, /* Elements count */ + &asn_SPC_ULConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULConfiguration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULConfiguration.h new file mode 100644 index 0000000..1e73af1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULConfiguration.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULConfiguration_H_ +#define _ULConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "UL-UE-Configuration.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ULConfiguration */ +typedef struct ULConfiguration { + UL_UE_Configuration_t uL_PDCP; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULConfiguration_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_ULConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_ULConfiguration_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULConfiguration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULOnlySharing.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULOnlySharing.c new file mode 100644 index 0000000..ae2739e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULOnlySharing.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULOnlySharing.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ULOnlySharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULOnlySharing, uLResourceBitmapULOnlySharing), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_DataTrafficResources, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLResourceBitmapULOnlySharing" + }, + { ATF_POINTER, 1, offsetof(struct ULOnlySharing, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P217, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ULOnlySharing_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_ULOnlySharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULOnlySharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uLResourceBitmapULOnlySharing */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_specs_1 = { + sizeof(struct ULOnlySharing), + offsetof(struct ULOnlySharing, _asn_ctx), + asn_MAP_ULOnlySharing_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_ULOnlySharing_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULOnlySharing = { + "ULOnlySharing", + "ULOnlySharing", + &asn_OP_SEQUENCE, + asn_DEF_ULOnlySharing_tags_1, + sizeof(asn_DEF_ULOnlySharing_tags_1) + /sizeof(asn_DEF_ULOnlySharing_tags_1[0]), /* 1 */ + asn_DEF_ULOnlySharing_tags_1, /* Same as above */ + sizeof(asn_DEF_ULOnlySharing_tags_1) + /sizeof(asn_DEF_ULOnlySharing_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULOnlySharing_1, + 2, /* Elements count */ + &asn_SPC_ULOnlySharing_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULOnlySharing.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULOnlySharing.h new file mode 100644 index 0000000..caa6004 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULOnlySharing.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULOnlySharing_H_ +#define _ULOnlySharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DataTrafficResources.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ULOnlySharing */ +typedef struct ULOnlySharing { + DataTrafficResources_t uLResourceBitmapULOnlySharing; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULOnlySharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULOnlySharing; +extern asn_SEQUENCE_specifics_t asn_SPC_ULOnlySharing_specs_1; +extern asn_TYPE_member_t asn_MBR_ULOnlySharing_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULOnlySharing_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c new file mode 100644 index 0000000..a694987 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULResourceBitmapULandDLSharing.h" + +int +ULResourceBitmapULandDLSharing_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const DataTrafficResources_t *st = (const DataTrafficResources_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 6 && size <= 17600)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using DataTrafficResources, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ULResourceBitmapULandDLSharing_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 15, 15, 6, 17600 } /* (SIZE(6..17600)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ULResourceBitmapULandDLSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ULResourceBitmapULandDLSharing = { + "ULResourceBitmapULandDLSharing", + "ULResourceBitmapULandDLSharing", + &asn_OP_BIT_STRING, + asn_DEF_ULResourceBitmapULandDLSharing_tags_1, + sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + asn_DEF_ULResourceBitmapULandDLSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1) + /sizeof(asn_DEF_ULResourceBitmapULandDLSharing_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ULResourceBitmapULandDLSharing_constr_1, ULResourceBitmapULandDLSharing_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h new file mode 100644 index 0000000..da39e81 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourceBitmapULandDLSharing.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULResourceBitmapULandDLSharing_H_ +#define _ULResourceBitmapULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "DataTrafficResources.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ULResourceBitmapULandDLSharing */ +typedef DataTrafficResources_t ULResourceBitmapULandDLSharing_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ULResourceBitmapULandDLSharing_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ULResourceBitmapULandDLSharing; +asn_struct_free_f ULResourceBitmapULandDLSharing_free; +asn_struct_print_f ULResourceBitmapULandDLSharing_print; +asn_constr_check_f ULResourceBitmapULandDLSharing_constraint; +ber_type_decoder_f ULResourceBitmapULandDLSharing_decode_ber; +der_type_encoder_f ULResourceBitmapULandDLSharing_encode_der; +xer_type_decoder_f ULResourceBitmapULandDLSharing_decode_xer; +xer_type_encoder_f ULResourceBitmapULandDLSharing_encode_xer; +per_type_decoder_f ULResourceBitmapULandDLSharing_decode_uper; +per_type_encoder_f ULResourceBitmapULandDLSharing_encode_uper; +per_type_decoder_f ULResourceBitmapULandDLSharing_decode_aper; +per_type_encoder_f ULResourceBitmapULandDLSharing_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULResourceBitmapULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c new file mode 100644 index 0000000..e10860b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourcesULandDLSharing.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULResourcesULandDLSharing.h" + +asn_per_constraints_t asn_PER_type_ULResourcesULandDLSharing_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ULResourcesULandDLSharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULResourcesULandDLSharing, choice.unchanged), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NULL, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unchanged" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULResourcesULandDLSharing, choice.changed), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ULResourceBitmapULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "changed" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ULResourcesULandDLSharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* unchanged */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* changed */ +}; +asn_CHOICE_specifics_t asn_SPC_ULResourcesULandDLSharing_specs_1 = { + sizeof(struct ULResourcesULandDLSharing), + offsetof(struct ULResourcesULandDLSharing, _asn_ctx), + offsetof(struct ULResourcesULandDLSharing, present), + sizeof(((struct ULResourcesULandDLSharing *)0)->present), + asn_MAP_ULResourcesULandDLSharing_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ULResourcesULandDLSharing = { + "ULResourcesULandDLSharing", + "ULResourcesULandDLSharing", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ULResourcesULandDLSharing_constr_1, CHOICE_constraint }, + asn_MBR_ULResourcesULandDLSharing_1, + 2, /* Elements count */ + &asn_SPC_ULResourcesULandDLSharing_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h new file mode 100644 index 0000000..01407f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULResourcesULandDLSharing.h @@ -0,0 +1,82 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULResourcesULandDLSharing_H_ +#define _ULResourcesULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NULL.h" +#include "ULResourceBitmapULandDLSharing.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ULResourcesULandDLSharing_PR { + ULResourcesULandDLSharing_PR_NOTHING, /* No components present */ + ULResourcesULandDLSharing_PR_unchanged, + ULResourcesULandDLSharing_PR_changed + /* Extensions may appear below */ + +} ULResourcesULandDLSharing_PR; + +/* ULResourcesULandDLSharing */ +typedef struct ULResourcesULandDLSharing { + ULResourcesULandDLSharing_PR present; + union ULResourcesULandDLSharing_u { + NULL_t unchanged; + ULResourceBitmapULandDLSharing_t changed; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULResourcesULandDLSharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULResourcesULandDLSharing; +extern asn_CHOICE_specifics_t asn_SPC_ULResourcesULandDLSharing_specs_1; +extern asn_TYPE_member_t asn_MBR_ULResourcesULandDLSharing_1[2]; +extern asn_per_constraints_t asn_PER_type_ULResourcesULandDLSharing_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULResourcesULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULandDLSharing.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULandDLSharing.c new file mode 100644 index 0000000..2baa518 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULandDLSharing.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "ULandDLSharing.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_ULandDLSharing_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing, uLResourcesULandDLSharing), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ULResourcesULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "uLResourcesULandDLSharing" + }, + { ATF_NOFLAGS, 0, offsetof(struct ULandDLSharing, dLResourcesULandDLSharing), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_DLResourcesULandDLSharing, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "dLResourcesULandDLSharing" + }, + { ATF_POINTER, 1, offsetof(struct ULandDLSharing, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P214, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_ULandDLSharing_oms_1[] = { 2 }; +static const ber_tlv_tag_t asn_DEF_ULandDLSharing_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ULandDLSharing_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uLResourcesULandDLSharing */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dLResourcesULandDLSharing */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_specs_1 = { + sizeof(struct ULandDLSharing), + offsetof(struct ULandDLSharing, _asn_ctx), + asn_MAP_ULandDLSharing_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_ULandDLSharing_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ULandDLSharing = { + "ULandDLSharing", + "ULandDLSharing", + &asn_OP_SEQUENCE, + asn_DEF_ULandDLSharing_tags_1, + sizeof(asn_DEF_ULandDLSharing_tags_1) + /sizeof(asn_DEF_ULandDLSharing_tags_1[0]), /* 1 */ + asn_DEF_ULandDLSharing_tags_1, /* Same as above */ + sizeof(asn_DEF_ULandDLSharing_tags_1) + /sizeof(asn_DEF_ULandDLSharing_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ULandDLSharing_1, + 3, /* Elements count */ + &asn_SPC_ULandDLSharing_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULandDLSharing.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULandDLSharing.h new file mode 100644 index 0000000..929d2df --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ULandDLSharing.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _ULandDLSharing_H_ +#define _ULandDLSharing_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ULResourcesULandDLSharing.h" +#include "DLResourcesULandDLSharing.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* ULandDLSharing */ +typedef struct ULandDLSharing { + ULResourcesULandDLSharing_t uLResourcesULandDLSharing; + DLResourcesULandDLSharing_t dLResourcesULandDLSharing; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ULandDLSharing_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ULandDLSharing; +extern asn_SEQUENCE_specifics_t asn_SPC_ULandDLSharing_specs_1; +extern asn_TYPE_member_t asn_MBR_ULandDLSharing_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ULandDLSharing_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UnsuccessfulOutcome.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UnsuccessfulOutcome.c new file mode 100644 index 0000000..9127dae --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UnsuccessfulOutcome.c @@ -0,0 +1,461 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UnsuccessfulOutcome.h" + +static const long asn_VAL_1_id_ricSubscription = 201; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_ricSubscriptionDelete = 202; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_ricServiceUpdate = 203; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_ricControl = 204; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_x2Setup = 6; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_endcX2Setup = 36; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_resourceStatusReportingInitiation = 9; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_8_id_eNBConfigurationUpdate = 8; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_9_id_endcConfigurationUpdate = 37; +static const long asn_VAL_9_reject = 0; +static const long asn_VAL_10_id_reset = 7; +static const long asn_VAL_10_reject = 0; +static const long asn_VAL_11_id_ricIndication = 205; +static const long asn_VAL_11_ignore = 1; +static const long asn_VAL_12_id_ricServiceQuery = 206; +static const long asn_VAL_12_ignore = 1; +static const long asn_VAL_13_id_loadIndication = 2; +static const long asn_VAL_13_ignore = 1; +static const long asn_VAL_14_id_gNBStatusIndication = 45; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_15_id_resourceStatusReporting = 10; +static const long asn_VAL_15_ignore = 1; +static const long asn_VAL_16_id_errorIndication = 3; +static const long asn_VAL_16_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_ricSubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_ricSubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_ricServiceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_ricControl }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_X2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_X2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_X2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_x2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCX2SetupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCX2SetupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_endcX2Setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ResourceStatusFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_resourceStatusReportingInitiation }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENBConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENBConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_eNBConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ENDCConfigurationUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_ENDCConfigurationUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_endcConfigurationUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_10_id_reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_11_id_ricIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_12_id_ricServiceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_LoadInformation }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_13_id_loadIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_GNBStatusIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_14_id_gNBStatusIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResourceStatusUpdate }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_15_id_resourceStatusReporting }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_16_id_errorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 16, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 2; /* &UnsuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.X2SetupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_X2SetupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "X2SetupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ENDCX2SetupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCX2SetupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCX2SetupFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ResourceStatusFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResourceStatusFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResourceStatusFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ENBConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENBConfigurationUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENBConfigurationUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.ENDCConfigurationUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ENDCConfigurationUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ENDCConfigurationUpdateFailure" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 8 }, /* RICsubscriptionFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 7 }, /* RICsubscriptionDeleteFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 6 }, /* RICserviceUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 5 }, /* RICcontrolFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 4 }, /* X2SetupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 3 }, /* ENDCX2SetupFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 2 }, /* ResourceStatusFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 1 }, /* ENBConfigurationUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 0 } /* ENDCConfigurationUpdateFailure */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct UnsuccessfulOutcome__value), + offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), + offsetof(struct UnsuccessfulOutcome__value, present), + sizeof(((struct UnsuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 9, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 9, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UnsuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_UnsuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { + sizeof(struct UnsuccessfulOutcome), + offsetof(struct UnsuccessfulOutcome, _asn_ctx), + asn_MAP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UnsuccessfulOutcome.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UnsuccessfulOutcome.h new file mode 100644 index 0000000..f7b4777 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UnsuccessfulOutcome.h @@ -0,0 +1,135 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "../../asnFiles/e2ap-v031.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UnsuccessfulOutcome_H_ +#define _UnsuccessfulOutcome_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include "ANY.h" +#include "asn_ioc.h" +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "X2SetupRequest.h" +#include "X2SetupResponse.h" +#include "X2SetupFailure.h" +#include "ENDCX2SetupRequest.h" +#include "ENDCX2SetupResponse.h" +#include "ENDCX2SetupFailure.h" +#include "ResourceStatusRequest.h" +#include "ResourceStatusResponse.h" +#include "ResourceStatusFailure.h" +#include "ENBConfigurationUpdate.h" +#include "ENBConfigurationUpdateAcknowledge.h" +#include "ENBConfigurationUpdateFailure.h" +#include "ENDCConfigurationUpdate.h" +#include "ENDCConfigurationUpdateAcknowledge.h" +#include "ENDCConfigurationUpdateFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "LoadInformation.h" +#include "GNBStatusIndication.h" +#include "ResourceStatusUpdate.h" +#include "ErrorIndication.h" +#include "OPEN_TYPE.h" +#include "constr_CHOICE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnsuccessfulOutcome__value_PR { + UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ + UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, + UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, + UnsuccessfulOutcome__value_PR_RICcontrolFailure, + UnsuccessfulOutcome__value_PR_X2SetupFailure, + UnsuccessfulOutcome__value_PR_ENDCX2SetupFailure, + UnsuccessfulOutcome__value_PR_ResourceStatusFailure, + UnsuccessfulOutcome__value_PR_ENBConfigurationUpdateFailure, + UnsuccessfulOutcome__value_PR_ENDCConfigurationUpdateFailure +} UnsuccessfulOutcome__value_PR; + +/* UnsuccessfulOutcome */ +typedef struct UnsuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct UnsuccessfulOutcome__value { + UnsuccessfulOutcome__value_PR present; + union UnsuccessfulOutcome__value_u { + RICsubscriptionFailure_t RICsubscriptionFailure; + RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; + RICserviceUpdateFailure_t RICserviceUpdateFailure; + RICcontrolFailure_t RICcontrolFailure; + X2SetupFailure_t X2SetupFailure; + ENDCX2SetupFailure_t ENDCX2SetupFailure; + ResourceStatusFailure_t ResourceStatusFailure; + ENBConfigurationUpdateFailure_t ENBConfigurationUpdateFailure; + ENDCConfigurationUpdateFailure_t ENDCConfigurationUpdateFailure; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsuccessfulOutcome_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformation.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformation.c new file mode 100644 index 0000000..6f2c66b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformation.c @@ -0,0 +1,87 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UsableABSInformation.h" + +#include "UsableABSInformationFDD.h" +#include "UsableABSInformationTDD.h" +asn_per_constraints_t asn_PER_type_UsableABSInformation_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UsableABSInformation_1[] = { + { ATF_POINTER, 0, offsetof(struct UsableABSInformation, choice.fdd), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UsableABSInformationFDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "fdd" + }, + { ATF_POINTER, 0, offsetof(struct UsableABSInformation, choice.tdd), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UsableABSInformationTDD, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "tdd" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformation_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fdd */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tdd */ +}; +asn_CHOICE_specifics_t asn_SPC_UsableABSInformation_specs_1 = { + sizeof(struct UsableABSInformation), + offsetof(struct UsableABSInformation, _asn_ctx), + offsetof(struct UsableABSInformation, present), + sizeof(((struct UsableABSInformation *)0)->present), + asn_MAP_UsableABSInformation_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformation = { + "UsableABSInformation", + "UsableABSInformation", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_UsableABSInformation_constr_1, CHOICE_constraint }, + asn_MBR_UsableABSInformation_1, + 2, /* Elements count */ + &asn_SPC_UsableABSInformation_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformation.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformation.h new file mode 100644 index 0000000..8ff8503 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformation.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UsableABSInformation_H_ +#define _UsableABSInformation_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UsableABSInformation_PR { + UsableABSInformation_PR_NOTHING, /* No components present */ + UsableABSInformation_PR_fdd, + UsableABSInformation_PR_tdd + /* Extensions may appear below */ + +} UsableABSInformation_PR; + +/* Forward declarations */ +struct UsableABSInformationFDD; +struct UsableABSInformationTDD; + +/* UsableABSInformation */ +typedef struct UsableABSInformation { + UsableABSInformation_PR present; + union UsableABSInformation_u { + struct UsableABSInformationFDD *fdd; + struct UsableABSInformationTDD *tdd; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformation_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformation; +extern asn_CHOICE_specifics_t asn_SPC_UsableABSInformation_specs_1; +extern asn_TYPE_member_t asn_MBR_UsableABSInformation_1[2]; +extern asn_per_constraints_t asn_PER_type_UsableABSInformation_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _UsableABSInformation_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationFDD.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationFDD.c new file mode 100644 index 0000000..df17b9d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationFDD.c @@ -0,0 +1,122 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UsableABSInformationFDD.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_usable_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 40)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_usable_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 40, 40 } /* (SIZE(40..40)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationFDD, usable_abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_usable_abs_pattern_info_constr_2, memb_usable_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "usable-abs-pattern-info" + }, + { ATF_POINTER, 1, offsetof(struct UsableABSInformationFDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P218, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UsableABSInformationFDD_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationFDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationFDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* usable-abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_specs_1 = { + sizeof(struct UsableABSInformationFDD), + offsetof(struct UsableABSInformationFDD, _asn_ctx), + asn_MAP_UsableABSInformationFDD_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UsableABSInformationFDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD = { + "UsableABSInformationFDD", + "UsableABSInformationFDD", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationFDD_tags_1, + sizeof(asn_DEF_UsableABSInformationFDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationFDD_tags_1[0]), /* 1 */ + asn_DEF_UsableABSInformationFDD_tags_1, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationFDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationFDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationFDD_1, + 2, /* Elements count */ + &asn_SPC_UsableABSInformationFDD_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationFDD.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationFDD.h new file mode 100644 index 0000000..3acce42 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationFDD.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UsableABSInformationFDD_H_ +#define _UsableABSInformationFDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UsableABSInformationFDD */ +typedef struct UsableABSInformationFDD { + BIT_STRING_t usable_abs_pattern_info; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformationFDD_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationFDD; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationFDD_specs_1; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationFDD_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UsableABSInformationFDD_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationTDD.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationTDD.c new file mode 100644 index 0000000..ad108b4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationTDD.c @@ -0,0 +1,122 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UsableABSInformationTDD.h" + +#include "ProtocolExtensionContainer.h" +static int +memb_usaable_abs_pattern_info_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 1 && size <= 70)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_usaable_abs_pattern_info_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED | APC_EXTENSIBLE, 7, 7, 1, 70 } /* (SIZE(1..70,...)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UsableABSInformationTDD, usaable_abs_pattern_info), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_usaable_abs_pattern_info_constr_2, memb_usaable_abs_pattern_info_constraint_1 }, + 0, 0, /* No default value */ + "usaable-abs-pattern-info" + }, + { ATF_POINTER, 1, offsetof(struct UsableABSInformationTDD, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P219, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_UsableABSInformationTDD_oms_1[] = { 1 }; +static const ber_tlv_tag_t asn_DEF_UsableABSInformationTDD_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UsableABSInformationTDD_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* usaable-abs-pattern-info */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_specs_1 = { + sizeof(struct UsableABSInformationTDD), + offsetof(struct UsableABSInformationTDD, _asn_ctx), + asn_MAP_UsableABSInformationTDD_tag2el_1, + 2, /* Count of tags in the map */ + asn_MAP_UsableABSInformationTDD_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD = { + "UsableABSInformationTDD", + "UsableABSInformationTDD", + &asn_OP_SEQUENCE, + asn_DEF_UsableABSInformationTDD_tags_1, + sizeof(asn_DEF_UsableABSInformationTDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationTDD_tags_1[0]), /* 1 */ + asn_DEF_UsableABSInformationTDD_tags_1, /* Same as above */ + sizeof(asn_DEF_UsableABSInformationTDD_tags_1) + /sizeof(asn_DEF_UsableABSInformationTDD_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UsableABSInformationTDD_1, + 2, /* Elements count */ + &asn_SPC_UsableABSInformationTDD_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationTDD.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationTDD.h new file mode 100644 index 0000000..bbbbac0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UsableABSInformationTDD.h @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UsableABSInformationTDD_H_ +#define _UsableABSInformationTDD_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* UsableABSInformationTDD */ +typedef struct UsableABSInformationTDD { + BIT_STRING_t usaable_abs_pattern_info; + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UsableABSInformationTDD_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UsableABSInformationTDD; +extern asn_SEQUENCE_specifics_t asn_SPC_UsableABSInformationTDD_specs_1; +extern asn_TYPE_member_t asn_MBR_UsableABSInformationTDD_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UsableABSInformationTDD_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c new file mode 100644 index 0000000..24fb8b3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "UserPlaneTrafficActivityReport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_UserPlaneTrafficActivityReport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_UserPlaneTrafficActivityReport_value2enum_1[] = { + { 0, 8, "inactive" }, + { 1, 12, "re-activated" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_UserPlaneTrafficActivityReport_enum2value_1[] = { + 0, /* inactive(0) */ + 1 /* re-activated(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_UserPlaneTrafficActivityReport_specs_1 = { + asn_MAP_UserPlaneTrafficActivityReport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_UserPlaneTrafficActivityReport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_UserPlaneTrafficActivityReport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_UserPlaneTrafficActivityReport = { + "UserPlaneTrafficActivityReport", + "UserPlaneTrafficActivityReport", + &asn_OP_NativeEnumerated, + asn_DEF_UserPlaneTrafficActivityReport_tags_1, + sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1) + /sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1[0]), /* 1 */ + asn_DEF_UserPlaneTrafficActivityReport_tags_1, /* Same as above */ + sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1) + /sizeof(asn_DEF_UserPlaneTrafficActivityReport_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_UserPlaneTrafficActivityReport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_UserPlaneTrafficActivityReport_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h new file mode 100644 index 0000000..40e5569 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/UserPlaneTrafficActivityReport.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _UserPlaneTrafficActivityReport_H_ +#define _UserPlaneTrafficActivityReport_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UserPlaneTrafficActivityReport { + UserPlaneTrafficActivityReport_inactive = 0, + UserPlaneTrafficActivityReport_re_activated = 1 + /* + * Enumeration is extensible + */ +} e_UserPlaneTrafficActivityReport; + +/* UserPlaneTrafficActivityReport */ +typedef long UserPlaneTrafficActivityReport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_UserPlaneTrafficActivityReport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_UserPlaneTrafficActivityReport; +extern const asn_INTEGER_specifics_t asn_SPC_UserPlaneTrafficActivityReport_specs_1; +asn_struct_free_f UserPlaneTrafficActivityReport_free; +asn_struct_print_f UserPlaneTrafficActivityReport_print; +asn_constr_check_f UserPlaneTrafficActivityReport_constraint; +ber_type_decoder_f UserPlaneTrafficActivityReport_decode_ber; +der_type_encoder_f UserPlaneTrafficActivityReport_encode_der; +xer_type_decoder_f UserPlaneTrafficActivityReport_decode_xer; +xer_type_encoder_f UserPlaneTrafficActivityReport_encode_xer; +per_type_decoder_f UserPlaneTrafficActivityReport_decode_uper; +per_type_encoder_f UserPlaneTrafficActivityReport_encode_uper; +per_type_decoder_f UserPlaneTrafficActivityReport_decode_aper; +per_type_encoder_f UserPlaneTrafficActivityReport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _UserPlaneTrafficActivityReport_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/V2XServicesAuthorized.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/V2XServicesAuthorized.c new file mode 100644 index 0000000..54c13d3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/V2XServicesAuthorized.c @@ -0,0 +1,96 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "V2XServicesAuthorized.h" + +#include "ProtocolExtensionContainer.h" +asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_1[] = { + { ATF_POINTER, 3, offsetof(struct V2XServicesAuthorized, vehicleUE), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_VehicleUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "vehicleUE" + }, + { ATF_POINTER, 2, offsetof(struct V2XServicesAuthorized, pedestrianUE), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PedestrianUE, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pedestrianUE" + }, + { ATF_POINTER, 1, offsetof(struct V2XServicesAuthorized, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P220, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_V2XServicesAuthorized_oms_1[] = { 0, 1, 2 }; +static const ber_tlv_tag_t asn_DEF_V2XServicesAuthorized_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_V2XServicesAuthorized_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* vehicleUE */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pedestrianUE */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_specs_1 = { + sizeof(struct V2XServicesAuthorized), + offsetof(struct V2XServicesAuthorized, _asn_ctx), + asn_MAP_V2XServicesAuthorized_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_V2XServicesAuthorized_oms_1, /* Optional members */ + 3, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized = { + "V2XServicesAuthorized", + "V2XServicesAuthorized", + &asn_OP_SEQUENCE, + asn_DEF_V2XServicesAuthorized_tags_1, + sizeof(asn_DEF_V2XServicesAuthorized_tags_1) + /sizeof(asn_DEF_V2XServicesAuthorized_tags_1[0]), /* 1 */ + asn_DEF_V2XServicesAuthorized_tags_1, /* Same as above */ + sizeof(asn_DEF_V2XServicesAuthorized_tags_1) + /sizeof(asn_DEF_V2XServicesAuthorized_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_V2XServicesAuthorized_1, + 3, /* Elements count */ + &asn_SPC_V2XServicesAuthorized_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/V2XServicesAuthorized.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/V2XServicesAuthorized.h new file mode 100644 index 0000000..f4a8c11 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/V2XServicesAuthorized.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _V2XServicesAuthorized_H_ +#define _V2XServicesAuthorized_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "VehicleUE.h" +#include "PedestrianUE.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolExtensionContainer; + +/* V2XServicesAuthorized */ +typedef struct V2XServicesAuthorized { + VehicleUE_t *vehicleUE; /* OPTIONAL */ + PedestrianUE_t *pedestrianUE; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} V2XServicesAuthorized_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized; +extern asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_specs_1; +extern asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _V2XServicesAuthorized_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/VehicleUE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/VehicleUE.c new file mode 100644 index 0000000..88558d8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/VehicleUE.c @@ -0,0 +1,78 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "VehicleUE.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_VehicleUE_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_VehicleUE_value2enum_1[] = { + { 0, 10, "authorized" }, + { 1, 14, "not-authorized" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_VehicleUE_enum2value_1[] = { + 0, /* authorized(0) */ + 1 /* not-authorized(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_VehicleUE_specs_1 = { + asn_MAP_VehicleUE_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_VehicleUE_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_VehicleUE_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_VehicleUE = { + "VehicleUE", + "VehicleUE", + &asn_OP_NativeEnumerated, + asn_DEF_VehicleUE_tags_1, + sizeof(asn_DEF_VehicleUE_tags_1) + /sizeof(asn_DEF_VehicleUE_tags_1[0]), /* 1 */ + asn_DEF_VehicleUE_tags_1, /* Same as above */ + sizeof(asn_DEF_VehicleUE_tags_1) + /sizeof(asn_DEF_VehicleUE_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_VehicleUE_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_VehicleUE_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/VehicleUE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/VehicleUE.h new file mode 100644 index 0000000..8b53ad9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/VehicleUE.h @@ -0,0 +1,77 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _VehicleUE_H_ +#define _VehicleUE_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum VehicleUE { + VehicleUE_authorized = 0, + VehicleUE_not_authorized = 1 + /* + * Enumeration is extensible + */ +} e_VehicleUE; + +/* VehicleUE */ +typedef long VehicleUE_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_VehicleUE_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_VehicleUE; +extern const asn_INTEGER_specifics_t asn_SPC_VehicleUE_specs_1; +asn_struct_free_f VehicleUE_free; +asn_struct_print_f VehicleUE_print; +asn_constr_check_f VehicleUE_constraint; +ber_type_decoder_f VehicleUE_decode_ber; +der_type_encoder_f VehicleUE_encode_der; +xer_type_decoder_f VehicleUE_decode_xer; +xer_type_encoder_f VehicleUE_encode_xer; +per_type_decoder_f VehicleUE_decode_uper; +per_type_encoder_f VehicleUE_encode_uper; +per_type_decoder_f VehicleUE_decode_aper; +per_type_encoder_f VehicleUE_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _VehicleUE_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfig.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfig.c new file mode 100644 index 0000000..715b6b5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfig.c @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANMeasConfig.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WLANMeasConfig_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_WLANMeasConfig_value2enum_1[] = { + { 0, 5, "setup" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_WLANMeasConfig_enum2value_1[] = { + 0 /* setup(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_WLANMeasConfig_specs_1 = { + asn_MAP_WLANMeasConfig_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_WLANMeasConfig_enum2value_1, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_WLANMeasConfig_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasConfig = { + "WLANMeasConfig", + "WLANMeasConfig", + &asn_OP_NativeEnumerated, + asn_DEF_WLANMeasConfig_tags_1, + sizeof(asn_DEF_WLANMeasConfig_tags_1) + /sizeof(asn_DEF_WLANMeasConfig_tags_1[0]), /* 1 */ + asn_DEF_WLANMeasConfig_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANMeasConfig_tags_1) + /sizeof(asn_DEF_WLANMeasConfig_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WLANMeasConfig_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_WLANMeasConfig_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfig.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfig.h new file mode 100644 index 0000000..52282f2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfig.h @@ -0,0 +1,76 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANMeasConfig_H_ +#define _WLANMeasConfig_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeEnumerated.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WLANMeasConfig { + WLANMeasConfig_setup = 0 + /* + * Enumeration is extensible + */ +} e_WLANMeasConfig; + +/* WLANMeasConfig */ +typedef long WLANMeasConfig_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WLANMeasConfig_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasConfig; +extern const asn_INTEGER_specifics_t asn_SPC_WLANMeasConfig_specs_1; +asn_struct_free_f WLANMeasConfig_free; +asn_struct_print_f WLANMeasConfig_print; +asn_constr_check_f WLANMeasConfig_constraint; +ber_type_decoder_f WLANMeasConfig_decode_ber; +der_type_encoder_f WLANMeasConfig_encode_der; +xer_type_decoder_f WLANMeasConfig_decode_xer; +xer_type_encoder_f WLANMeasConfig_encode_xer; +per_type_decoder_f WLANMeasConfig_decode_uper; +per_type_encoder_f WLANMeasConfig_encode_uper; +per_type_decoder_f WLANMeasConfig_decode_aper; +per_type_encoder_f WLANMeasConfig_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANMeasConfig_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfigNameList.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfigNameList.c new file mode 100644 index 0000000..387343c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfigNameList.c @@ -0,0 +1,72 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANMeasConfigNameList.h" + +asn_per_constraints_t asn_PER_type_WLANMeasConfigNameList_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 2, 2, 1, 4 } /* (SIZE(1..4)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WLANMeasConfigNameList_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_WLANName, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_WLANMeasConfigNameList_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_WLANMeasConfigNameList_specs_1 = { + sizeof(struct WLANMeasConfigNameList), + offsetof(struct WLANMeasConfigNameList, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasConfigNameList = { + "WLANMeasConfigNameList", + "WLANMeasConfigNameList", + &asn_OP_SEQUENCE_OF, + asn_DEF_WLANMeasConfigNameList_tags_1, + sizeof(asn_DEF_WLANMeasConfigNameList_tags_1) + /sizeof(asn_DEF_WLANMeasConfigNameList_tags_1[0]), /* 1 */ + asn_DEF_WLANMeasConfigNameList_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANMeasConfigNameList_tags_1) + /sizeof(asn_DEF_WLANMeasConfigNameList_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WLANMeasConfigNameList_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_WLANMeasConfigNameList_1, + 1, /* Single element */ + &asn_SPC_WLANMeasConfigNameList_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfigNameList.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfigNameList.h new file mode 100644 index 0000000..fcbfa10 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasConfigNameList.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANMeasConfigNameList_H_ +#define _WLANMeasConfigNameList_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WLANName.h" +#include "asn_SEQUENCE_OF.h" +#include "constr_SEQUENCE_OF.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WLANMeasConfigNameList */ +typedef struct WLANMeasConfigNameList { + A_SEQUENCE_OF(WLANName_t) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WLANMeasConfigNameList_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasConfigNameList; +extern asn_SET_OF_specifics_t asn_SPC_WLANMeasConfigNameList_specs_1; +extern asn_TYPE_member_t asn_MBR_WLANMeasConfigNameList_1[1]; +extern asn_per_constraints_t asn_PER_type_WLANMeasConfigNameList_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANMeasConfigNameList_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c new file mode 100644 index 0000000..0a35bf9 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasurementConfiguration.c @@ -0,0 +1,209 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANMeasurementConfiguration.h" + +#include "WLANMeasConfigNameList.h" +#include "ProtocolExtensionContainer.h" +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_wlan_rssi_constr_4 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_type_wlan_rtt_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_wlan_rssi_value2enum_4[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_wlan_rssi_enum2value_4[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_wlan_rssi_specs_4 = { + asn_MAP_wlan_rssi_value2enum_4, /* "tag" => N; sorted by tag */ + asn_MAP_wlan_rssi_enum2value_4, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_wlan_rssi_tags_4[] = { + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_wlan_rssi_4 = { + "wlan-rssi", + "wlan-rssi", + &asn_OP_NativeEnumerated, + asn_DEF_wlan_rssi_tags_4, + sizeof(asn_DEF_wlan_rssi_tags_4) + /sizeof(asn_DEF_wlan_rssi_tags_4[0]) - 1, /* 1 */ + asn_DEF_wlan_rssi_tags_4, /* Same as above */ + sizeof(asn_DEF_wlan_rssi_tags_4) + /sizeof(asn_DEF_wlan_rssi_tags_4[0]), /* 2 */ + { 0, &asn_PER_type_wlan_rssi_constr_4, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_wlan_rssi_specs_4 /* Additional specs */ +}; + +static const asn_INTEGER_enum_map_t asn_MAP_wlan_rtt_value2enum_7[] = { + { 0, 4, "true" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_wlan_rtt_enum2value_7[] = { + 0 /* true(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_wlan_rtt_specs_7 = { + asn_MAP_wlan_rtt_value2enum_7, /* "tag" => N; sorted by tag */ + asn_MAP_wlan_rtt_enum2value_7, /* N => "tag"; sorted by N */ + 1, /* Number of elements in the maps */ + 2, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_wlan_rtt_tags_7[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_wlan_rtt_7 = { + "wlan-rtt", + "wlan-rtt", + &asn_OP_NativeEnumerated, + asn_DEF_wlan_rtt_tags_7, + sizeof(asn_DEF_wlan_rtt_tags_7) + /sizeof(asn_DEF_wlan_rtt_tags_7[0]) - 1, /* 1 */ + asn_DEF_wlan_rtt_tags_7, /* Same as above */ + sizeof(asn_DEF_wlan_rtt_tags_7) + /sizeof(asn_DEF_wlan_rtt_tags_7[0]), /* 2 */ + { 0, &asn_PER_type_wlan_rtt_constr_7, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_wlan_rtt_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WLANMeasurementConfiguration, wlanMeasConfig), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WLANMeasConfig, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlanMeasConfig" + }, + { ATF_POINTER, 4, offsetof(struct WLANMeasurementConfiguration, wlanMeasConfigNameList), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WLANMeasConfigNameList, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlanMeasConfigNameList" + }, + { ATF_POINTER, 3, offsetof(struct WLANMeasurementConfiguration, wlan_rssi), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_wlan_rssi_4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlan-rssi" + }, + { ATF_POINTER, 2, offsetof(struct WLANMeasurementConfiguration, wlan_rtt), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_wlan_rtt_7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wlan-rtt" + }, + { ATF_POINTER, 1, offsetof(struct WLANMeasurementConfiguration, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P222, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_WLANMeasurementConfiguration_oms_1[] = { 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_WLANMeasurementConfiguration_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WLANMeasurementConfiguration_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wlanMeasConfig */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* wlanMeasConfigNameList */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* wlan-rssi */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* wlan-rtt */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_specs_1 = { + sizeof(struct WLANMeasurementConfiguration), + offsetof(struct WLANMeasurementConfiguration, _asn_ctx), + asn_MAP_WLANMeasurementConfiguration_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_WLANMeasurementConfiguration_oms_1, /* Optional members */ + 4, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration = { + "WLANMeasurementConfiguration", + "WLANMeasurementConfiguration", + &asn_OP_SEQUENCE, + asn_DEF_WLANMeasurementConfiguration_tags_1, + sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1[0]), /* 1 */ + asn_DEF_WLANMeasurementConfiguration_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1) + /sizeof(asn_DEF_WLANMeasurementConfiguration_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WLANMeasurementConfiguration_1, + 5, /* Elements count */ + &asn_SPC_WLANMeasurementConfiguration_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h new file mode 100644 index 0000000..728dd20 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANMeasurementConfiguration.h @@ -0,0 +1,92 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANMeasurementConfiguration_H_ +#define _WLANMeasurementConfiguration_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WLANMeasConfig.h" +#include "NativeEnumerated.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WLANMeasurementConfiguration__wlan_rssi { + WLANMeasurementConfiguration__wlan_rssi_true = 0 + /* + * Enumeration is extensible + */ +} e_WLANMeasurementConfiguration__wlan_rssi; +typedef enum WLANMeasurementConfiguration__wlan_rtt { + WLANMeasurementConfiguration__wlan_rtt_true = 0 + /* + * Enumeration is extensible + */ +} e_WLANMeasurementConfiguration__wlan_rtt; + +/* Forward declarations */ +struct WLANMeasConfigNameList; +struct ProtocolExtensionContainer; + +/* WLANMeasurementConfiguration */ +typedef struct WLANMeasurementConfiguration { + WLANMeasConfig_t wlanMeasConfig; + struct WLANMeasConfigNameList *wlanMeasConfigNameList; /* OPTIONAL */ + long *wlan_rssi; /* OPTIONAL */ + long *wlan_rtt; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WLANMeasurementConfiguration_t; + +/* Implementation */ +/* extern asn_TYPE_descriptor_t asn_DEF_wlan_rssi_4; // (Use -fall-defs-global to expose) */ +/* extern asn_TYPE_descriptor_t asn_DEF_wlan_rtt_7; // (Use -fall-defs-global to expose) */ +extern asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration; +extern asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_specs_1; +extern asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_1[5]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANMeasurementConfiguration_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANName.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANName.c new file mode 100644 index 0000000..f3e44a5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANName.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WLANName.h" + +int +WLANName_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size >= 1 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WLANName_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 1, 32 } /* (SIZE(1..32)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_WLANName_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WLANName = { + "WLANName", + "WLANName", + &asn_OP_OCTET_STRING, + asn_DEF_WLANName_tags_1, + sizeof(asn_DEF_WLANName_tags_1) + /sizeof(asn_DEF_WLANName_tags_1[0]), /* 1 */ + asn_DEF_WLANName_tags_1, /* Same as above */ + sizeof(asn_DEF_WLANName_tags_1) + /sizeof(asn_DEF_WLANName_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WLANName_constr_1, WLANName_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANName.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANName.h new file mode 100644 index 0000000..4ab5d56 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WLANName.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WLANName_H_ +#define _WLANName_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WLANName */ +typedef OCTET_STRING_t WLANName_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WLANName_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WLANName; +asn_struct_free_f WLANName_free; +asn_struct_print_f WLANName_print; +asn_constr_check_f WLANName_constraint; +ber_type_decoder_f WLANName_decode_ber; +der_type_encoder_f WLANName_encode_der; +xer_type_decoder_f WLANName_decode_xer; +xer_type_encoder_f WLANName_encode_xer; +per_type_decoder_f WLANName_decode_uper; +per_type_encoder_f WLANName_encode_uper; +per_type_decoder_f WLANName_decode_aper; +per_type_encoder_f WLANName_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WLANName_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c new file mode 100644 index 0000000..655a7d7 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WT-UE-XwAP-ID.c @@ -0,0 +1,85 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WT-UE-XwAP-ID.h" + +int +WT_UE_XwAP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WT_UE_XwAP_ID_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_WT_UE_XwAP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WT_UE_XwAP_ID = { + "WT-UE-XwAP-ID", + "WT-UE-XwAP-ID", + &asn_OP_OCTET_STRING, + asn_DEF_WT_UE_XwAP_ID_tags_1, + sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1) + /sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1[0]), /* 1 */ + asn_DEF_WT_UE_XwAP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1) + /sizeof(asn_DEF_WT_UE_XwAP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WT_UE_XwAP_ID_constr_1, WT_UE_XwAP_ID_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h new file mode 100644 index 0000000..a80c967 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WT-UE-XwAP-ID.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WT_UE_XwAP_ID_H_ +#define _WT_UE_XwAP_ID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WT-UE-XwAP-ID */ +typedef OCTET_STRING_t WT_UE_XwAP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WT_UE_XwAP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WT_UE_XwAP_ID; +asn_struct_free_f WT_UE_XwAP_ID_free; +asn_struct_print_f WT_UE_XwAP_ID_print; +asn_constr_check_f WT_UE_XwAP_ID_constraint; +ber_type_decoder_f WT_UE_XwAP_ID_decode_ber; +der_type_encoder_f WT_UE_XwAP_ID_encode_der; +xer_type_decoder_f WT_UE_XwAP_ID_decode_xer; +xer_type_encoder_f WT_UE_XwAP_ID_encode_xer; +per_type_decoder_f WT_UE_XwAP_ID_decode_uper; +per_type_encoder_f WT_UE_XwAP_ID_encode_uper; +per_type_decoder_f WT_UE_XwAP_ID_decode_aper; +per_type_encoder_f WT_UE_XwAP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WT_UE_XwAP_ID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Long-Type2.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Long-Type2.c new file mode 100644 index 0000000..cf08390 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Long-Type2.c @@ -0,0 +1,90 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WTID-Long-Type2.h" + +int +WTID_Long_Type2_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 48)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using BIT_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_WTID_Long_Type2_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 48, 48 } /* (SIZE(48..48)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_WTID_Long_Type2_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_WTID_Long_Type2 = { + "WTID-Long-Type2", + "WTID-Long-Type2", + &asn_OP_BIT_STRING, + asn_DEF_WTID_Long_Type2_tags_1, + sizeof(asn_DEF_WTID_Long_Type2_tags_1) + /sizeof(asn_DEF_WTID_Long_Type2_tags_1[0]), /* 1 */ + asn_DEF_WTID_Long_Type2_tags_1, /* Same as above */ + sizeof(asn_DEF_WTID_Long_Type2_tags_1) + /sizeof(asn_DEF_WTID_Long_Type2_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_WTID_Long_Type2_constr_1, WTID_Long_Type2_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Long-Type2.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Long-Type2.h new file mode 100644 index 0000000..90b3659 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Long-Type2.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WTID_Long_Type2_H_ +#define _WTID_Long_Type2_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "BIT_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WTID-Long-Type2 */ +typedef BIT_STRING_t WTID_Long_Type2_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_WTID_Long_Type2_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_WTID_Long_Type2; +asn_struct_free_f WTID_Long_Type2_free; +asn_struct_print_f WTID_Long_Type2_print; +asn_constr_check_f WTID_Long_Type2_constraint; +ber_type_decoder_f WTID_Long_Type2_decode_ber; +der_type_encoder_f WTID_Long_Type2_encode_der; +xer_type_decoder_f WTID_Long_Type2_decode_xer; +xer_type_encoder_f WTID_Long_Type2_encode_xer; +per_type_decoder_f WTID_Long_Type2_decode_uper; +per_type_encoder_f WTID_Long_Type2_encode_uper; +per_type_decoder_f WTID_Long_Type2_decode_aper; +per_type_encoder_f WTID_Long_Type2_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _WTID_Long_Type2_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Type1.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Type1.c new file mode 100644 index 0000000..5936b66 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Type1.c @@ -0,0 +1,119 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WTID-Type1.h" + +static int +memb_shortWTID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 24)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_shortWTID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 24, 24 } /* (SIZE(24..24)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WTID_Type1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WTID_Type1, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct WTID_Type1, shortWTID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_shortWTID_constr_3, memb_shortWTID_constraint_1 }, + 0, 0, /* No default value */ + "shortWTID" + }, +}; +static const ber_tlv_tag_t asn_DEF_WTID_Type1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WTID_Type1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* shortWTID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WTID_Type1_specs_1 = { + sizeof(struct WTID_Type1), + offsetof(struct WTID_Type1, _asn_ctx), + asn_MAP_WTID_Type1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WTID_Type1 = { + "WTID-Type1", + "WTID-Type1", + &asn_OP_SEQUENCE, + asn_DEF_WTID_Type1_tags_1, + sizeof(asn_DEF_WTID_Type1_tags_1) + /sizeof(asn_DEF_WTID_Type1_tags_1[0]), /* 1 */ + asn_DEF_WTID_Type1_tags_1, /* Same as above */ + sizeof(asn_DEF_WTID_Type1_tags_1) + /sizeof(asn_DEF_WTID_Type1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WTID_Type1_1, + 2, /* Elements count */ + &asn_SPC_WTID_Type1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Type1.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Type1.h new file mode 100644 index 0000000..bfd45cf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID-Type1.h @@ -0,0 +1,69 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WTID_Type1_H_ +#define _WTID_Type1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "BIT_STRING.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* WTID-Type1 */ +typedef struct WTID_Type1 { + PLMN_Identity_t pLMN_Identity; + BIT_STRING_t shortWTID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WTID_Type1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WTID_Type1; +extern asn_SEQUENCE_specifics_t asn_SPC_WTID_Type1_specs_1; +extern asn_TYPE_member_t asn_MBR_WTID_Type1_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WTID_Type1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID.c new file mode 100644 index 0000000..eb1d7bd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID.c @@ -0,0 +1,86 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WTID.h" + +#include "WTID-Type1.h" +asn_per_constraints_t asn_PER_type_WTID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WTID_1[] = { + { ATF_POINTER, 0, offsetof(struct WTID, choice.wTID_Type1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WTID_Type1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wTID-Type1" + }, + { ATF_NOFLAGS, 0, offsetof(struct WTID, choice.wTID_Type2), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_WTID_Long_Type2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "wTID-Type2" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_WTID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* wTID-Type1 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* wTID-Type2 */ +}; +asn_CHOICE_specifics_t asn_SPC_WTID_specs_1 = { + sizeof(struct WTID), + offsetof(struct WTID, _asn_ctx), + offsetof(struct WTID, present), + sizeof(((struct WTID *)0)->present), + asn_MAP_WTID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_WTID = { + "WTID", + "WTID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_WTID_constr_1, CHOICE_constraint }, + asn_MBR_WTID_1, + 2, /* Elements count */ + &asn_SPC_WTID_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID.h new file mode 100644 index 0000000..694e681 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WTID.h @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WTID_H_ +#define _WTID_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "WTID-Long-Type2.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WTID_PR { + WTID_PR_NOTHING, /* No components present */ + WTID_PR_wTID_Type1, + WTID_PR_wTID_Type2 + /* Extensions may appear below */ + +} WTID_PR; + +/* Forward declarations */ +struct WTID_Type1; + +/* WTID */ +typedef struct WTID { + WTID_PR present; + union WTID_u { + struct WTID_Type1 *wTID_Type1; + WTID_Long_Type2_t wTID_Type2; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WTID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WTID; +extern asn_CHOICE_specifics_t asn_SPC_WTID_specs_1; +extern asn_TYPE_member_t asn_MBR_WTID_1[2]; +extern asn_per_constraints_t asn_PER_type_WTID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WTID_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQI.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQI.c new file mode 100644 index 0000000..c6151e0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQI.c @@ -0,0 +1,127 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WidebandCQI.h" + +#include "WidebandCQICodeword1.h" +#include "ProtocolExtensionContainer.h" +static int +memb_widebandCQICodeword0_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_widebandCQICodeword0_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WidebandCQI_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQI, widebandCQICodeword0), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_widebandCQICodeword0_constr_2, memb_widebandCQICodeword0_constraint_1 }, + 0, 0, /* No default value */ + "widebandCQICodeword0" + }, + { ATF_POINTER, 2, offsetof(struct WidebandCQI, widebandCQICodeword1), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_WidebandCQICodeword1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "widebandCQICodeword1" + }, + { ATF_POINTER, 1, offsetof(struct WidebandCQI, iE_Extensions), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolExtensionContainer_170P221, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-Extensions" + }, +}; +static const int asn_MAP_WidebandCQI_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_WidebandCQI_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_WidebandCQI_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* widebandCQICodeword0 */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* widebandCQICodeword1 */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* iE-Extensions */ +}; +asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_specs_1 = { + sizeof(struct WidebandCQI), + offsetof(struct WidebandCQI, _asn_ctx), + asn_MAP_WidebandCQI_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_WidebandCQI_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_WidebandCQI = { + "WidebandCQI", + "WidebandCQI", + &asn_OP_SEQUENCE, + asn_DEF_WidebandCQI_tags_1, + sizeof(asn_DEF_WidebandCQI_tags_1) + /sizeof(asn_DEF_WidebandCQI_tags_1[0]), /* 1 */ + asn_DEF_WidebandCQI_tags_1, /* Same as above */ + sizeof(asn_DEF_WidebandCQI_tags_1) + /sizeof(asn_DEF_WidebandCQI_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_WidebandCQI_1, + 3, /* Elements count */ + &asn_SPC_WidebandCQI_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQI.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQI.h new file mode 100644 index 0000000..89bd0b5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQI.h @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WidebandCQI_H_ +#define _WidebandCQI_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct WidebandCQICodeword1; +struct ProtocolExtensionContainer; + +/* WidebandCQI */ +typedef struct WidebandCQI { + long widebandCQICodeword0; + struct WidebandCQICodeword1 *widebandCQICodeword1; /* OPTIONAL */ + struct ProtocolExtensionContainer *iE_Extensions; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WidebandCQI_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WidebandCQI; +extern asn_SEQUENCE_specifics_t asn_SPC_WidebandCQI_specs_1; +extern asn_TYPE_member_t asn_MBR_WidebandCQI_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _WidebandCQI_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQICodeword1.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQICodeword1.c new file mode 100644 index 0000000..f6df33c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQICodeword1.c @@ -0,0 +1,145 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "WidebandCQICodeword1.h" + +static int +memb_four_bitCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 15)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_three_bitSpatialDifferentialCQI_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 7)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_four_bitCQI_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 15 } /* (0..15,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 7 } /* (0..7,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_WidebandCQICodeword1_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_WidebandCQICodeword1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQICodeword1, choice.four_bitCQI), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_four_bitCQI_constr_2, memb_four_bitCQI_constraint_1 }, + 0, 0, /* No default value */ + "four-bitCQI" + }, + { ATF_NOFLAGS, 0, offsetof(struct WidebandCQICodeword1, choice.three_bitSpatialDifferentialCQI), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_three_bitSpatialDifferentialCQI_constr_3, memb_three_bitSpatialDifferentialCQI_constraint_1 }, + 0, 0, /* No default value */ + "three-bitSpatialDifferentialCQI" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_WidebandCQICodeword1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* four-bitCQI */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* three-bitSpatialDifferentialCQI */ +}; +asn_CHOICE_specifics_t asn_SPC_WidebandCQICodeword1_specs_1 = { + sizeof(struct WidebandCQICodeword1), + offsetof(struct WidebandCQICodeword1, _asn_ctx), + offsetof(struct WidebandCQICodeword1, present), + sizeof(((struct WidebandCQICodeword1 *)0)->present), + asn_MAP_WidebandCQICodeword1_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_WidebandCQICodeword1 = { + "WidebandCQICodeword1", + "WidebandCQICodeword1", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_WidebandCQICodeword1_constr_1, CHOICE_constraint }, + asn_MBR_WidebandCQICodeword1_1, + 2, /* Elements count */ + &asn_SPC_WidebandCQICodeword1_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQICodeword1.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQICodeword1.h new file mode 100644 index 0000000..8ec0fd0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/WidebandCQICodeword1.h @@ -0,0 +1,81 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _WidebandCQICodeword1_H_ +#define _WidebandCQICodeword1_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" +#include "constr_CHOICE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum WidebandCQICodeword1_PR { + WidebandCQICodeword1_PR_NOTHING, /* No components present */ + WidebandCQICodeword1_PR_four_bitCQI, + WidebandCQICodeword1_PR_three_bitSpatialDifferentialCQI + /* Extensions may appear below */ + +} WidebandCQICodeword1_PR; + +/* WidebandCQICodeword1 */ +typedef struct WidebandCQICodeword1 { + WidebandCQICodeword1_PR present; + union WidebandCQICodeword1_u { + long four_bitCQI; + long three_bitSpatialDifferentialCQI; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} WidebandCQICodeword1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_WidebandCQICodeword1; +extern asn_CHOICE_specifics_t asn_SPC_WidebandCQICodeword1_specs_1; +extern asn_TYPE_member_t asn_MBR_WidebandCQICodeword1_1[2]; +extern asn_per_constraints_t asn_PER_type_WidebandCQICodeword1_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _WidebandCQICodeword1_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2AP-Message.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2AP-Message.c new file mode 100644 index 0000000..e364d0e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2AP-Message.c @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2AP-Message.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_X2AP_Message_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_X2AP_Message = { + "X2AP-Message", + "X2AP-Message", + &asn_OP_OCTET_STRING, + asn_DEF_X2AP_Message_tags_1, + sizeof(asn_DEF_X2AP_Message_tags_1) + /sizeof(asn_DEF_X2AP_Message_tags_1[0]), /* 1 */ + asn_DEF_X2AP_Message_tags_1, /* Same as above */ + sizeof(asn_DEF_X2AP_Message_tags_1) + /sizeof(asn_DEF_X2AP_Message_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2AP-Message.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2AP-Message.h new file mode 100644 index 0000000..cc4919d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2AP-Message.h @@ -0,0 +1,66 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2AP_Message_H_ +#define _X2AP_Message_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "OCTET_STRING.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2AP-Message */ +typedef OCTET_STRING_t X2AP_Message_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2AP_Message; +asn_struct_free_f X2AP_Message_free; +asn_struct_print_f X2AP_Message_print; +asn_constr_check_f X2AP_Message_constraint; +ber_type_decoder_f X2AP_Message_decode_ber; +der_type_encoder_f X2AP_Message_encode_der; +xer_type_decoder_f X2AP_Message_decode_xer; +xer_type_encoder_f X2AP_Message_encode_xer; +per_type_decoder_f X2AP_Message_decode_uper; +per_type_encoder_f X2AP_Message_encode_uper; +per_type_decoder_f X2AP_Message_decode_aper; +per_type_encoder_f X2AP_Message_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2AP_Message_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2APMessageTransfer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2APMessageTransfer.c new file mode 100644 index 0000000..839872f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2APMessageTransfer.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2APMessageTransfer.h" + +static asn_TYPE_member_t asn_MBR_X2APMessageTransfer_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2APMessageTransfer, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P43, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2APMessageTransfer_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2APMessageTransfer_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2APMessageTransfer_specs_1 = { + sizeof(struct X2APMessageTransfer), + offsetof(struct X2APMessageTransfer, _asn_ctx), + asn_MAP_X2APMessageTransfer_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer = { + "X2APMessageTransfer", + "X2APMessageTransfer", + &asn_OP_SEQUENCE, + asn_DEF_X2APMessageTransfer_tags_1, + sizeof(asn_DEF_X2APMessageTransfer_tags_1) + /sizeof(asn_DEF_X2APMessageTransfer_tags_1[0]), /* 1 */ + asn_DEF_X2APMessageTransfer_tags_1, /* Same as above */ + sizeof(asn_DEF_X2APMessageTransfer_tags_1) + /sizeof(asn_DEF_X2APMessageTransfer_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2APMessageTransfer_1, + 1, /* Elements count */ + &asn_SPC_X2APMessageTransfer_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2APMessageTransfer.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2APMessageTransfer.h new file mode 100644 index 0000000..1f0d039 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2APMessageTransfer.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2APMessageTransfer_H_ +#define _X2APMessageTransfer_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2APMessageTransfer */ +typedef struct X2APMessageTransfer { + ProtocolIE_Container_119P43_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2APMessageTransfer_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2APMessageTransfer; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2APMessageTransfer_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2BenefitValue.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2BenefitValue.c new file mode 100644 index 0000000..1cde79b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2BenefitValue.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2BenefitValue.h" + +int +X2BenefitValue_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 1 && value <= 8)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_X2BenefitValue_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 1, 8 } /* (1..8,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_X2BenefitValue_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_X2BenefitValue = { + "X2BenefitValue", + "X2BenefitValue", + &asn_OP_NativeInteger, + asn_DEF_X2BenefitValue_tags_1, + sizeof(asn_DEF_X2BenefitValue_tags_1) + /sizeof(asn_DEF_X2BenefitValue_tags_1[0]), /* 1 */ + asn_DEF_X2BenefitValue_tags_1, /* Same as above */ + sizeof(asn_DEF_X2BenefitValue_tags_1) + /sizeof(asn_DEF_X2BenefitValue_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_X2BenefitValue_constr_1, X2BenefitValue_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2BenefitValue.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2BenefitValue.h new file mode 100644 index 0000000..3ea73bd --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2BenefitValue.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-IEs" + * found in "../../asnFiles/X2AP-IEs.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2BenefitValue_H_ +#define _X2BenefitValue_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "NativeInteger.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2BenefitValue */ +typedef long X2BenefitValue_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_X2BenefitValue_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_X2BenefitValue; +asn_struct_free_f X2BenefitValue_free; +asn_struct_print_f X2BenefitValue_print; +asn_constr_check_f X2BenefitValue_constraint; +ber_type_decoder_f X2BenefitValue_decode_ber; +der_type_encoder_f X2BenefitValue_encode_der; +xer_type_decoder_f X2BenefitValue_decode_xer; +xer_type_encoder_f X2BenefitValue_encode_xer; +per_type_decoder_f X2BenefitValue_decode_uper; +per_type_encoder_f X2BenefitValue_encode_uper; +per_type_decoder_f X2BenefitValue_decode_aper; +per_type_encoder_f X2BenefitValue_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2BenefitValue_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2Release.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2Release.c new file mode 100644 index 0000000..91c330f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2Release.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2Release.h" + +static asn_TYPE_member_t asn_MBR_X2Release_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2Release, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P42, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2Release_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2Release_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2Release_specs_1 = { + sizeof(struct X2Release), + offsetof(struct X2Release, _asn_ctx), + asn_MAP_X2Release_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2Release = { + "X2Release", + "X2Release", + &asn_OP_SEQUENCE, + asn_DEF_X2Release_tags_1, + sizeof(asn_DEF_X2Release_tags_1) + /sizeof(asn_DEF_X2Release_tags_1[0]), /* 1 */ + asn_DEF_X2Release_tags_1, /* Same as above */ + sizeof(asn_DEF_X2Release_tags_1) + /sizeof(asn_DEF_X2Release_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2Release_1, + 1, /* Elements count */ + &asn_SPC_X2Release_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2Release.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2Release.h new file mode 100644 index 0000000..1a3df2e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2Release.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2Release_H_ +#define _X2Release_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2Release */ +typedef struct X2Release { + ProtocolIE_Container_119P42_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2Release_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2Release; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2Release_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalFailure.c new file mode 100644 index 0000000..d0bffbb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2RemovalFailure.h" + +static asn_TYPE_member_t asn_MBR_X2RemovalFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P60, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2RemovalFailure_specs_1 = { + sizeof(struct X2RemovalFailure), + offsetof(struct X2RemovalFailure, _asn_ctx), + asn_MAP_X2RemovalFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure = { + "X2RemovalFailure", + "X2RemovalFailure", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalFailure_tags_1, + sizeof(asn_DEF_X2RemovalFailure_tags_1) + /sizeof(asn_DEF_X2RemovalFailure_tags_1[0]), /* 1 */ + asn_DEF_X2RemovalFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_X2RemovalFailure_tags_1) + /sizeof(asn_DEF_X2RemovalFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalFailure_1, + 1, /* Elements count */ + &asn_SPC_X2RemovalFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalFailure.h new file mode 100644 index 0000000..6a39bfa --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalFailure.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2RemovalFailure_H_ +#define _X2RemovalFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2RemovalFailure */ +typedef struct X2RemovalFailure { + ProtocolIE_Container_119P60_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalFailure; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2RemovalFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalRequest.c new file mode 100644 index 0000000..641f4c3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2RemovalRequest.h" + +static asn_TYPE_member_t asn_MBR_X2RemovalRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P58, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2RemovalRequest_specs_1 = { + sizeof(struct X2RemovalRequest), + offsetof(struct X2RemovalRequest, _asn_ctx), + asn_MAP_X2RemovalRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest = { + "X2RemovalRequest", + "X2RemovalRequest", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalRequest_tags_1, + sizeof(asn_DEF_X2RemovalRequest_tags_1) + /sizeof(asn_DEF_X2RemovalRequest_tags_1[0]), /* 1 */ + asn_DEF_X2RemovalRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_X2RemovalRequest_tags_1) + /sizeof(asn_DEF_X2RemovalRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalRequest_1, + 1, /* Elements count */ + &asn_SPC_X2RemovalRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalRequest.h new file mode 100644 index 0000000..cce825d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalRequest.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2RemovalRequest_H_ +#define _X2RemovalRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2RemovalRequest */ +typedef struct X2RemovalRequest { + ProtocolIE_Container_119P58_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalRequest; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2RemovalRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalResponse.c new file mode 100644 index 0000000..5d411ed --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2RemovalResponse.h" + +static asn_TYPE_member_t asn_MBR_X2RemovalResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2RemovalResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P59, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2RemovalResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2RemovalResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_X2RemovalResponse_specs_1 = { + sizeof(struct X2RemovalResponse), + offsetof(struct X2RemovalResponse, _asn_ctx), + asn_MAP_X2RemovalResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse = { + "X2RemovalResponse", + "X2RemovalResponse", + &asn_OP_SEQUENCE, + asn_DEF_X2RemovalResponse_tags_1, + sizeof(asn_DEF_X2RemovalResponse_tags_1) + /sizeof(asn_DEF_X2RemovalResponse_tags_1[0]), /* 1 */ + asn_DEF_X2RemovalResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_X2RemovalResponse_tags_1) + /sizeof(asn_DEF_X2RemovalResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2RemovalResponse_1, + 1, /* Elements count */ + &asn_SPC_X2RemovalResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalResponse.h new file mode 100644 index 0000000..8ee30b6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2RemovalResponse.h @@ -0,0 +1,65 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2RemovalResponse_H_ +#define _X2RemovalResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2RemovalResponse */ +typedef struct X2RemovalResponse { + ProtocolIE_Container_119P59_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2RemovalResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2RemovalResponse; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2RemovalResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupFailure.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupFailure.c new file mode 100644 index 0000000..a6488f3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupFailure.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2SetupFailure.h" + +asn_TYPE_member_t asn_MBR_X2SetupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P26, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_specs_1 = { + sizeof(struct X2SetupFailure), + offsetof(struct X2SetupFailure, _asn_ctx), + asn_MAP_X2SetupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupFailure = { + "X2SetupFailure", + "X2SetupFailure", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupFailure_tags_1, + sizeof(asn_DEF_X2SetupFailure_tags_1) + /sizeof(asn_DEF_X2SetupFailure_tags_1[0]), /* 1 */ + asn_DEF_X2SetupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_X2SetupFailure_tags_1) + /sizeof(asn_DEF_X2SetupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupFailure_1, + 1, /* Elements count */ + &asn_SPC_X2SetupFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupFailure.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupFailure.h new file mode 100644 index 0000000..672d355 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupFailure.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2SetupFailure_H_ +#define _X2SetupFailure_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2SetupFailure */ +typedef struct X2SetupFailure { + ProtocolIE_Container_119P26_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2SetupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_X2SetupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2SetupFailure_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupRequest.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupRequest.c new file mode 100644 index 0000000..db6eb02 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupRequest.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2SetupRequest.h" + +asn_TYPE_member_t asn_MBR_X2SetupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P24, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_specs_1 = { + sizeof(struct X2SetupRequest), + offsetof(struct X2SetupRequest, _asn_ctx), + asn_MAP_X2SetupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupRequest = { + "X2SetupRequest", + "X2SetupRequest", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupRequest_tags_1, + sizeof(asn_DEF_X2SetupRequest_tags_1) + /sizeof(asn_DEF_X2SetupRequest_tags_1[0]), /* 1 */ + asn_DEF_X2SetupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_X2SetupRequest_tags_1) + /sizeof(asn_DEF_X2SetupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupRequest_1, + 1, /* Elements count */ + &asn_SPC_X2SetupRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupRequest.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupRequest.h new file mode 100644 index 0000000..24875b1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupRequest.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2SetupRequest_H_ +#define _X2SetupRequest_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2SetupRequest */ +typedef struct X2SetupRequest { + ProtocolIE_Container_119P24_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2SetupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_X2SetupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2SetupRequest_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupResponse.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupResponse.c new file mode 100644 index 0000000..b665781 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupResponse.c @@ -0,0 +1,73 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#include "X2SetupResponse.h" + +asn_TYPE_member_t asn_MBR_X2SetupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct X2SetupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_119P25, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_X2SetupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_X2SetupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_specs_1 = { + sizeof(struct X2SetupResponse), + offsetof(struct X2SetupResponse, _asn_ctx), + asn_MAP_X2SetupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_X2SetupResponse = { + "X2SetupResponse", + "X2SetupResponse", + &asn_OP_SEQUENCE, + asn_DEF_X2SetupResponse_tags_1, + sizeof(asn_DEF_X2SetupResponse_tags_1) + /sizeof(asn_DEF_X2SetupResponse_tags_1[0]), /* 1 */ + asn_DEF_X2SetupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_X2SetupResponse_tags_1) + /sizeof(asn_DEF_X2SetupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_X2SetupResponse_1, + 1, /* Elements count */ + &asn_SPC_X2SetupResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupResponse.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupResponse.h new file mode 100644 index 0000000..deff78f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/X2SetupResponse.h @@ -0,0 +1,67 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "X2AP-PDU-Contents" + * found in "../../asnFiles/X2AP-PDU-Contents.asn" + * `asn1c -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D.` + */ + +#ifndef _X2SetupResponse_H_ +#define _X2SetupResponse_H_ + + +#include "asn_application.h" + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include "constr_SEQUENCE.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* X2SetupResponse */ +typedef struct X2SetupResponse { + ProtocolIE_Container_119P25_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} X2SetupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_X2SetupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_X2SetupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _X2SetupResponse_H_ */ +#include "asn_internal.h" diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c new file mode 100644 index 0000000..4a47bc1 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SEQUENCE_OF.c @@ -0,0 +1,42 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h new file mode 100644 index 0000000..8c532d3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SEQUENCE_OF.h @@ -0,0 +1,53 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SET_OF.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SET_OF.c new file mode 100644 index 0000000..b28f735 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SET_OF.c @@ -0,0 +1,89 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SET_OF.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SET_OF.h new file mode 100644 index 0000000..88b3bcc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_SET_OF.h @@ -0,0 +1,73 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_application.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_application.c new file mode 100644 index 0000000..9ad1f4e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_application.c @@ -0,0 +1,482 @@ + +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; + +#ifdef ASN_DISABLE_OER_SUPPORT + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_OER_SUPPORT */ + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifdef ASN_DISABLE_PER_SUPPORT + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_PER_SUPPORT */ + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_PER_SUPPORT */ + + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; + + case ATS_DER: + case ATS_BER: + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#ifdef ASN_DISABLE_OER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); + } +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_application.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_application.h new file mode 100644 index 0000000..c4af0e5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_application.h @@ -0,0 +1,172 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_bit_data.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_bit_data.c new file mode 100644 index 0000000..29b7b10 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_bit_data.c @@ -0,0 +1,334 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_bit_data.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_bit_data.h new file mode 100644 index 0000000..e834084 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_bit_data.h @@ -0,0 +1,84 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs.h new file mode 100644 index 0000000..0c9a049 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs.h @@ -0,0 +1,109 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs_prim.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs_prim.c new file mode 100644 index 0000000..68caef2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs_prim.c @@ -0,0 +1,318 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (const char *)chunk_buf + lead_wsp_size; + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs_prim.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs_prim.h new file mode 100644 index 0000000..e6e6c4f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_codecs_prim.h @@ -0,0 +1,52 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; + +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_constant.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_constant.h new file mode 100644 index 0000000..17fb963 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_constant.h @@ -0,0 +1,92 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define maxofRANfunctionID (256) +#define maxofRICactionID (16) +#define maxEARFCN (65535) +#define maxEARFCNPlusOne (65536) +#define newmaxEARFCN (262143) +#define maxInterfaces (16) +#define maxCellineNB (256) +#define maxnoofBands (16) +#define maxnoofBearers (256) +#define maxNrOfErrors (256) +#define maxnoofPDCP_SN (16) +#define maxnoofEPLMNs (15) +#define maxnoofEPLMNsPlusOne (16) +#define maxnoofForbLACs (4096) +#define maxnoofForbTACs (4096) +#define maxnoofBPLMNs (6) +#define maxnoofNeighbours (512) +#define maxnoofPRBs (110) +#define maxPools (16) +#define maxnoofCells (16) +#define maxnoofMBSFN (8) +#define maxFailedMeasObjects (32) +#define maxnoofCellIDforMDT (32) +#define maxnoofTAforMDT (8) +#define maxnoofMBMSServiceAreaIdentities (256) +#define maxnoofMDTPLMNs (16) +#define maxnoofCoMPHypothesisSet (256) +#define maxnoofCoMPCells (32) +#define maxUEReport (128) +#define maxCellReport (9) +#define maxnoofPA (3) +#define maxCSIProcess (4) +#define maxCSIReport (2) +#define maxSubband (14) +#define maxofNRNeighbours (1024) +#define maxCellinengNB (16384) +#define maxnooftimeperiods (2) +#define maxnoofCellIDforQMC (32) +#define maxnoofTAforQMC (8) +#define maxnoofPLMNforQMC (16) +#define maxUEsinengNBDU (8192) +#define maxnoofProtectedResourcePatterns (16) +#define maxnoNRcellsSpectrumSharingWithE_UTRA (64) +#define maxnoofNrCellBands (32) +#define maxnoofBluetoothName (4) +#define maxnoofWLANName (4) +#define maxPrivateIEs (65535) +#define maxProtocolExtensions (65535) +#define maxProtocolIEs (65535) +#define maxofInterfaceProtocolIE (15) +#define maxofActionParameters (255) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_internal.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_internal.c new file mode 100644 index 0000000..ed823cf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_internal.c @@ -0,0 +1,71 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + va_end(args); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_internal.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_internal.h new file mode 100644 index 0000000..18108dc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_internal.h @@ -0,0 +1,160 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#define __EXTENSIONS__ /* for Sun */ + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if !defined(BELL_LABS) /* Bell Labs */ + //#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#if defined(BELL_LABS) /* Bell Labs version */ +extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); +#define ASN_DEBUG(fmt, args...) do { \ + (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ + } while(0) +#else +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#endif /* BELL_LABS */ +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_ioc.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_ioc.h new file mode 100644 index 0000000..afd0fac --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_ioc.h @@ -0,0 +1,52 @@ + +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_random_fill.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_random_fill.c new file mode 100644 index 0000000..356f82c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_random_fill.c @@ -0,0 +1,57 @@ + +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; + value = (value << 24) | (random() % 0xffffff); + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_random_fill.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_random_fill.h new file mode 100644 index 0000000..64bd0ce --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_random_fill.h @@ -0,0 +1,52 @@ + +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_system.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_system.h new file mode 100644 index 0000000..fc3586a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/asn_system.h @@ -0,0 +1,151 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef _WIN32 + +#include +#define snprintf _snprintf +#define vsnprintf _vsnprintf + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_decoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_decoder.c new file mode 100644 index 0000000..24bca93 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_decoder.c @@ -0,0 +1,284 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_decoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_decoder.h new file mode 100644 index 0000000..7c2f5a5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_decoder.h @@ -0,0 +1,67 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_length.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_length.c new file mode 100644 index 0000000..6721489 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_length.c @@ -0,0 +1,169 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_length.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_length.h new file mode 100644 index 0000000..e2fd625 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_length.h @@ -0,0 +1,51 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_tag.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_tag.c new file mode 100644 index 0000000..0c39e50 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_tag.c @@ -0,0 +1,145 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_tag.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_tag.h new file mode 100644 index 0000000..86ad5d6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/ber_tlv_tag.h @@ -0,0 +1,61 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_CHOICE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_CHOICE.c new file mode 100644 index 0000000..790bb51 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_CHOICE.c @@ -0,0 +1,1534 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * See the definitions. + */ +static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, + unsigned size); +static void _set_present_idx(void *sptr, unsigned offset, unsigned size, + unsigned pres); +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Substracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb?"Encoding":"Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + const asn_per_constraint_t *ext_ct = NULL; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) { + ext_ct = ct; + ct = 0; /* Not restricted */ + } + } + + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = aper_get_nsnnwn(pd, ext_ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct = NULL; + const asn_per_constraint_t *ext_ct = NULL; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = NULL; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && (ct->range_bits >= 0)) { + // Value is not within the range of the primary values ? + if(present < ct->lower_bound || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + // X691/23.5 Extension marker = 1 + if(per_put_few_bits(po, 1, 1)) { + ASN__ENCODE_FAILED; + } + } else { + ASN__ENCODE_FAILED; + } + // no more need of constraint. + ext_ct = ct; + ct = NULL; + } + } + + if(ct && (ct->flags & APC_EXTENSIBLE)) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present, ct->lower_bound, ct->upper_bound); + // X691.23.5 Extension marker = 0 + if(per_put_few_bits(po, 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && (ct->range_bits >= 0)) { + // By construction (ct != 0), the alternative value is a non extended one. + // X691/23.7 X691/23.6 alternative value encoded as a range_bits bits value. + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + // X691/23.8 normally encoded as a small non negative whole number + + if(ext_ct && aper_put_nsnnwn(po, ext_ct->range_bits, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +static unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +static void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} + + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} + + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, + CHOICE_print, + CHOICE_compare, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + CHOICE_decode_oer, + CHOICE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + CHOICE_random_fill, + CHOICE_outmost_tag +}; diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_CHOICE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_CHOICE.h new file mode 100644 index 0000000..1a27f91 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_CHOICE.h @@ -0,0 +1,81 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; +asn_struct_print_f CHOICE_print; +asn_struct_compare_f CHOICE_compare; +asn_constr_check_f CHOICE_constraint; +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +asn_outmost_tag_f CHOICE_outmost_tag; +asn_random_fill_f CHOICE_random_fill; +extern asn_TYPE_operation_t asn_OP_CHOICE; + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE.c new file mode 100644 index 0000000..4bff1f6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE.c @@ -0,0 +1,2060 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional + ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 + && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} + + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%ld is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%ld) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %ld not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_compare, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE.h new file mode 100644 index 0000000..16cd907 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE.h @@ -0,0 +1,69 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; +asn_struct_print_f SEQUENCE_print; +asn_struct_compare_f SEQUENCE_compare; +asn_constr_check_f SEQUENCE_constraint; +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +asn_random_fill_f SEQUENCE_random_fill; +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c new file mode 100644 index 0000000..9abbea5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE_OF.c @@ -0,0 +1,359 @@ + +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", + ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, list->count - seq); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_compare, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h new file mode 100644 index 0000000..99fcd9e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SEQUENCE_OF.h @@ -0,0 +1,42 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +asn_struct_compare_f SEQUENCE_OF_compare; +der_type_encoder_f SEQUENCE_OF_encode_der; +xer_type_encoder_f SEQUENCE_OF_encode_xer; +per_type_encoder_f SEQUENCE_OF_encode_uper; +per_type_encoder_f SEQUENCE_OF_encode_aper; +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#define SEQUENCE_OF_free SET_OF_free +#define SEQUENCE_OF_print SET_OF_print +#define SEQUENCE_OF_constraint SET_OF_constraint +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +#define SEQUENCE_OF_random_fill SET_OF_random_fill + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SET_OF.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SET_OF.c new file mode 100644 index 0000000..f4dfa2b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SET_OF.c @@ -0,0 +1,1442 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +static void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ +}; + +static struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + + + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, + ct ? ct->effective_bits : -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, + SET_OF_print, + SET_OF_compare, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SET_OF_decode_oer, + SET_OF_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SET_OF_decode_uper, + SET_OF_encode_uper, + SET_OF_decode_aper, + 0, /* SET_OF_encode_aper */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + SET_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SET_OF.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SET_OF.h new file mode 100644 index 0000000..ab9c894 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_SET_OF.h @@ -0,0 +1,50 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; +asn_struct_print_f SET_OF_print; +asn_struct_compare_f SET_OF_compare; +asn_constr_check_f SET_OF_constraint; +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +asn_random_fill_f SET_OF_random_fill; +extern asn_TYPE_operation_t asn_OP_SET_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_TYPE.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_TYPE.c new file mode 100644 index 0000000..7f7cd6c --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_TYPE.c @@ -0,0 +1,81 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_TYPE.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_TYPE.h new file mode 100644 index 0000000..2f5b27e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constr_TYPE.h @@ -0,0 +1,263 @@ + +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#include /* Subtype constraints support */ +#include /* Random structures support */ + +#ifdef ASN_DISABLE_OER_SUPPORT +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +typedef void asn_oer_constraints_t; +#else +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#endif + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { + const struct asn_oer_constraints_s *oer_constraints; + const struct asn_per_constraints_s *per_constraints; + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurence of the el_tag, relative */ + int toff_last; /* Last occurence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constraints.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constraints.c new file mode 100644 index 0000000..b6ac8b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constraints.c @@ -0,0 +1,116 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constraints.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constraints.h new file mode 100644 index 0000000..9e7ffc8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/constraints.h @@ -0,0 +1,63 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/converter-example.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/converter-example.c new file mode 100644 index 0000000..8dcb274 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/converter-example.c @@ -0,0 +1,1033 @@ + +/* + * Generic converter template for a selected ASN.1 type. + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * + * To compile with your own ASN.1 type, redefine the PDU as shown: + * + * cc -DPDU=MyCustomType -o myDecoder.o -c converter-example.c + */ +#ifdef HAVE_CONFIG_H +#include +#endif +#define __EXTENSIONS__ +#include +#include +#include /* for atoi(3) */ +#include /* for getopt(3) */ +#include /* for strerror(3) */ +#include /* for EX_* exit codes */ +#include /* for errno */ +#include /* for isatty(3) */ +#include +#include /* for ASN__DEFAULT_STACK_MAX */ + +/* Convert "Type" defined by -DPDU into "asn_DEF_Type" */ +#ifdef PDU +#define ASN_DEF_PDU(t) asn_DEF_ ## t +#define DEF_PDU_Type(t) ASN_DEF_PDU(t) +#define PDU_Type DEF_PDU_Type(PDU) +extern asn_TYPE_descriptor_t PDU_Type; /* ASN.1 type to be decoded */ +#define PDU_Type_Ptr (&PDU_Type) +#else /* !PDU */ +#define PDU_Type_Ptr NULL +#endif /* PDU */ + +#ifdef ASN_PDU_COLLECTION /* Generated by asn1c -pdu=... */ +extern asn_TYPE_descriptor_t *asn_pdu_collection[]; +#endif + +#ifndef NO_ASN_PDU +#if !defined(PDU) && !defined(ASN_PDU_COLLECTION) +#error Define -DPDU to compile this example converter. +#error `asn1c -pdu=...` adds necessary flags automatically. +#endif +#endif + +/* + * Open file and parse its contens. + */ +static void *data_decode_from_file(enum asn_transfer_syntax, + asn_TYPE_descriptor_t *asnTypeOfPDU, + FILE *file, const char *name, + ssize_t suggested_bufsize, int first_pdu); +static int write_out(const void *buffer, size_t size, void *key); +static FILE *argument_to_file(char *av[], int idx); +static char *argument_to_name(char *av[], int idx); + + int opt_debug; /* -d (or -dd) */ +static int opt_check; /* -c (constraints checking) */ +static int opt_stack; /* -s (maximum stack size) */ +static int opt_nopad; /* -per-nopad (PER input is not padded between msgs) */ +static int opt_onepdu; /* -1 (decode single PDU) */ + +#ifdef JUNKTEST /* Enable -J */ +#define JUNKOPT "J:" +static double opt_jprob; /* Junk bit probability */ +static int junk_failures; +static void junk_bytes_with_probability(uint8_t *, size_t, double prob); + +#define RANDOPT "R:" +static ssize_t random_max_size = 0; /* Size of the random data */ + +#if !defined(__FreeBSD__) && !(defined(__APPLE__) && defined(__MACH__)) +static void +srandomdev(void) { + FILE *f = fopen("/dev/urandom", "rb"); + unsigned seed; + if(f) { + if(fread(&seed, 1, sizeof(seed), f) != sizeof(seed)) { + seed = time(NULL); + } + fclose(f); + } else { + seed = time(NULL); + } + srandom(seed); +} +#endif + +#else /* !JUNKTEST */ +#define JUNKOPT +#define RANDOPT +#endif /* JUNKTEST */ + +/* Debug output function */ +static void CC_PRINTFLIKE(1, 2) +DEBUG(const char *fmt, ...) { + va_list ap; + if(!opt_debug) return; + fprintf(stderr, "AD: "); + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fprintf(stderr, "\n"); +} + +static const char * +ats_simple_name(enum asn_transfer_syntax syntax) { + switch(syntax) { + case ATS_INVALID: + return "/dev/null"; + case ATS_NONSTANDARD_PLAINTEXT: + return "plaintext"; + case ATS_BER: + return "BER"; + case ATS_DER: + return "DER"; + case ATS_CER: + return "CER"; + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + return "OER"; + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return "XER"; + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + return "PER"; + default: + return ""; + } +} + +#define CODEC_OFFSET(fname) ((ptrdiff_t)&(((asn_TYPE_operation_t *)0)->fname)) +typedef struct { + const char *name; + enum asn_transfer_syntax syntax; + ptrdiff_t codec_offset; + const char *full_name; +} syntax_selector; + +static syntax_selector input_encodings[] = { + {"ber", ATS_BER, CODEC_OFFSET(ber_decoder), + "Input is in BER (Basic Encoding Rules) or DER"}, + {"oer", ATS_BASIC_OER, CODEC_OFFSET(oer_decoder), + "Input is in OER (Octet Encoding Rules)"}, + {"per", ATS_UNALIGNED_BASIC_PER, CODEC_OFFSET(uper_decoder), + "Input is in Unaligned PER (Packed Encoding Rules)"}, + {"aper", ATS_ALIGNED_BASIC_PER, CODEC_OFFSET(aper_decoder), + "Input is in Aligned PER (Packed Encoding Rules)"}, + {"xer", ATS_BASIC_XER, CODEC_OFFSET(xer_decoder), + "Input is in XER (XML Encoding Rules)"}, + {0, ATS_INVALID, 0, 0}}; + +static syntax_selector output_encodings[] = { + {"der", ATS_DER, CODEC_OFFSET(der_encoder), + "Output as DER (Distinguished Encoding Rules)"}, + {"oer", ATS_CANONICAL_OER, CODEC_OFFSET(oer_encoder), + "Output as Canonical OER (Octet Encoding Rules)"}, + {"per", ATS_UNALIGNED_CANONICAL_PER, CODEC_OFFSET(uper_encoder), + "Output as Unaligned PER (Packed Encoding Rules)"}, + {"aper", ATS_ALIGNED_CANONICAL_PER, CODEC_OFFSET(aper_encoder), + "Output as Aligned PER (Packed Encoding Rules)"}, + {"xer", ATS_BASIC_XER, CODEC_OFFSET(xer_encoder), + "Output as XER (XML Encoding Rules)"}, + {"text", ATS_NONSTANDARD_PLAINTEXT, CODEC_OFFSET(print_struct), + "Output as plain semi-structured text"}, + {"null", ATS_INVALID, CODEC_OFFSET(print_struct), + "Verify (decode) input, but do not output"}, + {0, ATS_INVALID, 0, 0}}; + +static int +has_codec_defined(const asn_TYPE_descriptor_t *td, + const syntax_selector *element) { + return *(const void *const *)(const void *)((const char *)td->op + + element->codec_offset) != 0; +} + +/* + * Select ASN.1 Transfer Enocoding Syntax by command line name. + */ +static const syntax_selector * +ats_by_name(const char *name, const asn_TYPE_descriptor_t *td, + const syntax_selector *first_element) { + const syntax_selector *element; + for(element = first_element; element->name; element++) { + if(strcmp(element->name, name) == 0) { + if(td && td->op && has_codec_defined(td, element)) { + return element; + } + } + } + return NULL; +} + +int +main(int ac, char *av[]) { + FILE *binary_out; + asn_TYPE_descriptor_t *pduType = PDU_Type_Ptr; + asn_TYPE_descriptor_t *anyPduType = PDU_Type_Ptr; + ssize_t suggested_bufsize = 8192; /* close or equal to stdio buffer */ + int number_of_iterations = 1; + int num; + int ch; + const syntax_selector *sel; + enum asn_transfer_syntax isyntax = ATS_INVALID; + enum asn_transfer_syntax osyntax = ATS_BASIC_XER; + + if(!anyPduType) { +#ifdef ASN_PDU_COLLECTION + anyPduType = asn_pdu_collection[0]; + if(!anyPduType) { + fprintf(stderr, + "Empty PDU collection, no reference PDU to choose from.\n"); + exit(EX_SOFTWARE); + } +#else + fprintf(stderr, "Either asn1c -pdu=... or cc -DPDU should be used.\n"); + exit(EX_SOFTWARE); +#endif + } + + /* Figure out if a specialty decoder needs to be default */ +#ifndef ASN_DISABLE_OER_SUPPORT + isyntax = ATS_BASIC_OER; +#endif +#ifndef ASN_DISABLE_PER_SUPPORT + isyntax = ATS_UNALIGNED_BASIC_PER; +#endif + + /* + * Pocess the command-line argments. + */ + while((ch = getopt(ac, av, "i:o:1b:cdn:p:hs:" JUNKOPT RANDOPT)) != -1) + switch(ch) { + case 'i': + sel = ats_by_name(optarg, anyPduType, input_encodings); + if(sel) { + isyntax = sel->syntax; + } else { + fprintf(stderr, "-i: '%s': improper format selector\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'o': + sel = ats_by_name(optarg, anyPduType, output_encodings); + if(sel) { + osyntax = sel->syntax; + } else { + fprintf(stderr, "-o: '%s': improper format selector\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case '1': + opt_onepdu = 1; + break; + case 'b': + suggested_bufsize = atoi(optarg); + if(suggested_bufsize < 1 + || suggested_bufsize > 16 * 1024 * 1024) { + fprintf(stderr, + "-b %s: Improper buffer size (1..16M)\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'c': + opt_check = 1; + break; + case 'd': + opt_debug++; /* Double -dd means ASN.1 debug */ + break; + case 'n': + number_of_iterations = atoi(optarg); + if(number_of_iterations < 1) { + fprintf(stderr, + "-n %s: Improper iterations count\n", optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'p': + if(strcmp(optarg, "er-nopad") == 0) { + opt_nopad = 1; + break; + } +#ifdef ASN_PDU_COLLECTION + if(strcmp(optarg, "list") == 0) { + asn_TYPE_descriptor_t **pdu = asn_pdu_collection; + fprintf(stderr, "Available PDU types:\n"); + for(; *pdu; pdu++) printf("%s\n", (*pdu)->name); + exit(0); + } else if(optarg[0] >= 'A' && optarg[0] <= 'Z') { + asn_TYPE_descriptor_t **pdu = asn_pdu_collection; + while(*pdu && strcmp((*pdu)->name, optarg)) pdu++; + if(*pdu) { pduType = *pdu; break; } + fprintf(stderr, "-p %s: Unrecognized PDU. Try '-p list'.\n", + optarg); + exit(EX_USAGE); + } +#else /* Without -pdu=auto there's just a single type */ + if(strcmp(optarg, "list") == 0) { + fprintf(stderr, "Available PDU types:\n"); + if(pduType) { + printf("%s\n", pduType->name); + } + exit(0); + } else if(optarg[0] >= 'A' && optarg[0] <= 'Z') { + if(pduType && strcmp(optarg, pduType->name) == 0) { + break; + } + fprintf(stderr, "-p %s: Unrecognized PDU. Try '-p list'.\n", + optarg); + exit(EX_USAGE); + } +#endif /* ASN_PDU_COLLECTION */ + fprintf(stderr, "-p %s: Unrecognized option\n", optarg); + exit(EX_UNAVAILABLE); + case 's': + opt_stack = atoi(optarg); + if(opt_stack < 0) { + fprintf(stderr, + "-s %s: Non-negative value expected\n", + optarg); + exit(EX_UNAVAILABLE); + } + break; +#ifdef JUNKTEST + case 'J': + opt_jprob = strtod(optarg, 0); + if(opt_jprob <= 0.0 || opt_jprob > 1.0) { + fprintf(stderr, + "-J %s: Probability range 0..1 expected \n", + optarg); + exit(EX_UNAVAILABLE); + } + break; + case 'R': + isyntax = ATS_RANDOM; + random_max_size = atoi(optarg); + if(random_max_size < 0) { + fprintf(stderr, + "-R %s: Non-negative value expected\n", + optarg); + exit(EX_UNAVAILABLE); + } + srandomdev(); + break; +#endif /* JUNKTEST */ + case 'h': + default: +#ifdef ASN_CONVERTER_TITLE +#define _AXS(x) #x +#define _ASX(x) _AXS(x) + fprintf(stderr, "%s\n", _ASX(ASN_CONVERTER_TITLE)); +#endif + fprintf(stderr, "Usage: %s [options] ...\n", av[0]); + fprintf(stderr, "Where options are:\n"); + for(sel = input_encodings; sel->name; sel++) { + if(ats_by_name(sel->name, anyPduType, sel)) { + fprintf(stderr, " -i%s %s%s\n", sel->name, + sel->full_name, + (sel->syntax == isyntax) ? " (DEFAULT)" : ""); + } + } + for(sel = output_encodings; sel->name; sel++) { + if(ats_by_name(sel->name, anyPduType, sel)) { + fprintf(stderr, " -o%s%s %s%s\n", sel->name, + strlen(sel->name) > 3 ? "" : " ", + sel->full_name, + (sel->syntax == osyntax) ? " (DEFAULT)" : ""); + } + } + if(anyPduType->op->uper_decoder) { + fprintf(stderr, + " -per-nopad Assume PER PDUs are not padded (-iper)\n"); + } +#ifdef ASN_PDU_COLLECTION + fprintf(stderr, + " -p Specify PDU type to decode\n" + " -p list List available PDUs\n"); +#endif /* ASN_PDU_COLLECTION */ + fprintf(stderr, + " -1 Decode only the first PDU in file\n" + " -b Set the i/o buffer size (default is %ld)\n" + " -c Check ASN.1 constraints after decoding\n" + " -d Enable debugging (-dd is even better)\n" + " -n Process files times\n" + " -s Set the stack usage limit (default is %d)\n" +#ifdef JUNKTEST + " -J Set random junk test bit garbaging probability\n" + " -R Generate a random value of roughly the given size,\n" + " instead of parsing the value from file.\n" +#endif + , (long)suggested_bufsize, ASN__DEFAULT_STACK_MAX); + exit(EX_USAGE); + } + + ac -= optind; + av += optind; + + if(!pduType) { +#ifdef NO_ASN_PDU + fprintf(stderr, "No -DPDU defined during compilation.\n"); + exit(0); +#else + fprintf(stderr, "Use '-p ' or '-p list' to select ASN.1 type.\n"); + exit(EX_USAGE); +#endif /* NO_ASN_PDU */ + } + + if(ac < 1 && isyntax != ATS_RANDOM) { + fprintf(stderr, "%s: No input files specified. " + "Try '-h' for more information\n", + av[-optind]); + exit(EX_USAGE); + } + + if(isatty(1)) { + const int is_text_output = osyntax == ATS_NONSTANDARD_PLAINTEXT + || osyntax == ATS_BASIC_XER + || osyntax == ATS_CANONICAL_XER; + if(is_text_output) { + binary_out = stdout; + } else { + fprintf(stderr, "(Suppressing binary output to a terminal.)\n"); + binary_out = fopen("/dev/null", "wb"); + if(!binary_out) { + fprintf(stderr, "Can't open /dev/null: %s\n", strerror(errno)); + exit(EX_OSERR); + } + } + } else { + binary_out = stdout; + } + setvbuf(stdout, 0, _IOLBF, 0); + + for(num = 0; num < number_of_iterations; num++) { + int ac_i; + /* + * Process all files in turn. + */ + for(ac_i = (isyntax == ATS_RANDOM) ? -1 : 0; ac_i < ac; ac_i++) { + asn_enc_rval_t erv = {0,0,0}; + void *structure; /* Decoded structure */ + FILE *file; + char *name; + int first_pdu; + + if(ac_i == -1) { + file = NULL; + name = ""; + opt_onepdu = 1; + } else { + file = argument_to_file(av, ac_i); + name = argument_to_name(av, ac_i); + } + + for(first_pdu = 1; (first_pdu || !opt_onepdu); first_pdu = 0) { + /* + * Decode the encoded structure from file. + */ +#ifdef JUNKTEST + if(isyntax == ATS_RANDOM) { + structure = NULL; + if(asn_random_fill(pduType, &structure, random_max_size) != 0) { + fprintf(stderr, "Cannot generate a random value.\n"); + assert(structure == NULL); + errno = EINVAL; + } + } else { +#endif + structure = data_decode_from_file(isyntax, pduType, file, name, + suggested_bufsize, first_pdu); +#ifdef JUNKTEST + } +#endif + if(!structure) { + if(errno) { + /* Error message is already printed */ + exit(EX_DATAERR); + } else { + /* EOF */ + break; + } + } + + /* Check ASN.1 constraints */ + if(opt_check) { + char errbuf[128]; + size_t errlen = sizeof(errbuf); + if(asn_check_constraints(pduType, structure, errbuf, &errlen)) { + fprintf(stderr, + "%s: ASN.1 constraint " + "check failed: %s\n", + name, errbuf); + exit(EX_DATAERR); + } + } + + if(osyntax == ATS_INVALID) { +#ifdef JUNKTEST + if(opt_jprob == 0.0) { + fprintf(stderr, "%s: decoded successfully\n", name); + } +#else + fprintf(stderr, "%s: decoded successfully\n", name); +#endif + } else { + erv = asn_encode(NULL, osyntax, pduType, structure, write_out, + binary_out); + + if(erv.encoded == -1) { + fprintf(stderr, "%s: Cannot convert %s into %s\n", name, + pduType->name, ats_simple_name(osyntax)); + DEBUG("Conversion failed for %s:\n", pduType->name); + asn_fprint(stderr, pduType, structure); + exit(EX_UNAVAILABLE); + } + DEBUG("Encoded in %" ASN_PRI_SSIZE " bytes of %s", erv.encoded, + ats_simple_name(osyntax)); + } + + ASN_STRUCT_FREE(*pduType, structure); + } + + if(file && file != stdin) { + fclose(file); + } + } + } + +#ifdef JUNKTEST + if(opt_jprob > 0.0) { + fprintf(stderr, "Junked %f OK (%d/%d)\n", + opt_jprob, junk_failures, number_of_iterations); + } +#endif /* JUNKTEST */ + + return 0; +} + +static struct dynamic_buffer { + uint8_t *data; /* Pointer to the data bytes */ + size_t offset; /* Offset from the start */ + size_t length; /* Length of meaningful contents */ + size_t unbits; /* Unused bits in the last byte */ + size_t allocated; /* Allocated memory for data */ + int nreallocs; /* Number of data reallocations */ + off_t bytes_shifted; /* Number of bytes ever shifted */ +} DynamicBuffer; + +static void +buffer_dump() { + uint8_t *p = DynamicBuffer.data + DynamicBuffer.offset; + uint8_t *e = p + DynamicBuffer.length - (DynamicBuffer.unbits ? 1 : 0); + if(!opt_debug) return; + DEBUG("Buffer: { d=%p, o=%" ASN_PRI_SIZE ", l=%" ASN_PRI_SIZE + ", u=%" ASN_PRI_SIZE ", a=%" ASN_PRI_SIZE ", s=%" ASN_PRI_SIZE " }", + (const void *)DynamicBuffer.data, + DynamicBuffer.offset, + DynamicBuffer.length, + DynamicBuffer.unbits, + DynamicBuffer.allocated, + (size_t)DynamicBuffer.bytes_shifted); + for(; p < e; p++) { + fprintf(stderr, " %c%c%c%c%c%c%c%c", + ((*p >> 7) & 1) ? '1' : '0', + ((*p >> 6) & 1) ? '1' : '0', + ((*p >> 5) & 1) ? '1' : '0', + ((*p >> 4) & 1) ? '1' : '0', + ((*p >> 3) & 1) ? '1' : '0', + ((*p >> 2) & 1) ? '1' : '0', + ((*p >> 1) & 1) ? '1' : '0', + ((*p >> 0) & 1) ? '1' : '0'); + } + if(DynamicBuffer.unbits) { + unsigned int shift; + fprintf(stderr, " "); + for(shift = 7; shift >= DynamicBuffer.unbits; shift--) + fprintf(stderr, "%c", ((*p >> shift) & 1) ? '1' : '0'); + fprintf(stderr, " %" ASN_PRI_SSIZE ":%" ASN_PRI_SSIZE "\n", + (ssize_t)DynamicBuffer.length - 1, + (ssize_t)8 - DynamicBuffer.unbits); + } else { + fprintf(stderr, " %ld\n", (long)DynamicBuffer.length); + } +} + +/* + * Move the buffer content left N bits, possibly joining it with + * preceeding content. + */ +static void +buffer_shift_left(size_t offset, int bits) { + uint8_t *ptr = DynamicBuffer.data + DynamicBuffer.offset + offset; + uint8_t *end = DynamicBuffer.data + DynamicBuffer.offset + + DynamicBuffer.length - 1; + + if(!bits) return; + + DEBUG("Shifting left %d bits off %ld (o=%ld, u=%ld, l=%ld)", + bits, (long)offset, + (long)DynamicBuffer.offset, + (long)DynamicBuffer.unbits, + (long)DynamicBuffer.length); + + if(offset) { + int right; + right = ptr[0] >> (8 - bits); + + DEBUG("oleft: %c%c%c%c%c%c%c%c", + ((ptr[-1] >> 7) & 1) ? '1' : '0', + ((ptr[-1] >> 6) & 1) ? '1' : '0', + ((ptr[-1] >> 5) & 1) ? '1' : '0', + ((ptr[-1] >> 4) & 1) ? '1' : '0', + ((ptr[-1] >> 3) & 1) ? '1' : '0', + ((ptr[-1] >> 2) & 1) ? '1' : '0', + ((ptr[-1] >> 1) & 1) ? '1' : '0', + ((ptr[-1] >> 0) & 1) ? '1' : '0'); + + DEBUG("oriht: %c%c%c%c%c%c%c%c", + ((ptr[0] >> 7) & 1) ? '1' : '0', + ((ptr[0] >> 6) & 1) ? '1' : '0', + ((ptr[0] >> 5) & 1) ? '1' : '0', + ((ptr[0] >> 4) & 1) ? '1' : '0', + ((ptr[0] >> 3) & 1) ? '1' : '0', + ((ptr[0] >> 2) & 1) ? '1' : '0', + ((ptr[0] >> 1) & 1) ? '1' : '0', + ((ptr[0] >> 0) & 1) ? '1' : '0'); + + DEBUG("mriht: %c%c%c%c%c%c%c%c", + ((right >> 7) & 1) ? '1' : '0', + ((right >> 6) & 1) ? '1' : '0', + ((right >> 5) & 1) ? '1' : '0', + ((right >> 4) & 1) ? '1' : '0', + ((right >> 3) & 1) ? '1' : '0', + ((right >> 2) & 1) ? '1' : '0', + ((right >> 1) & 1) ? '1' : '0', + ((right >> 0) & 1) ? '1' : '0'); + + ptr[-1] = (ptr[-1] & (0xff << bits)) | right; + + DEBUG("after: %c%c%c%c%c%c%c%c", + ((ptr[-1] >> 7) & 1) ? '1' : '0', + ((ptr[-1] >> 6) & 1) ? '1' : '0', + ((ptr[-1] >> 5) & 1) ? '1' : '0', + ((ptr[-1] >> 4) & 1) ? '1' : '0', + ((ptr[-1] >> 3) & 1) ? '1' : '0', + ((ptr[-1] >> 2) & 1) ? '1' : '0', + ((ptr[-1] >> 1) & 1) ? '1' : '0', + ((ptr[-1] >> 0) & 1) ? '1' : '0'); + } + + buffer_dump(); + + for(; ptr < end; ptr++) { + int right = ptr[1] >> (8 - bits); + *ptr = (*ptr << bits) | right; + } + *ptr <<= bits; + + DEBUG("Unbits [%" ASN_PRI_SIZE "=>", DynamicBuffer.unbits); + if(DynamicBuffer.unbits == 0) { + DynamicBuffer.unbits += bits; + } else { + DynamicBuffer.unbits += bits; + if(DynamicBuffer.unbits > 7) { + DynamicBuffer.unbits -= 8; + DynamicBuffer.length--; + DynamicBuffer.bytes_shifted++; + } + } + DEBUG("Unbits =>%" ASN_PRI_SIZE "]", DynamicBuffer.unbits); + + buffer_dump(); + + DEBUG("Shifted. Now (o=%" ASN_PRI_SIZE ", u=%" ASN_PRI_SIZE + " l=%" ASN_PRI_SIZE ")", + DynamicBuffer.offset, + DynamicBuffer.unbits, + DynamicBuffer.length); +} + +/* + * Ensure that the buffer contains at least this amount of free space. + */ +static void add_bytes_to_buffer(const void *data2add, size_t bytes) { + + if(bytes == 0) return; + + DEBUG("=> add_bytes(%" ASN_PRI_SIZE ") { o=%" ASN_PRI_SIZE + " l=%" ASN_PRI_SIZE " u=%" ASN_PRI_SIZE ", s=%" ASN_PRI_SIZE " }", + bytes, + DynamicBuffer.offset, + DynamicBuffer.length, + DynamicBuffer.unbits, + DynamicBuffer.allocated); + + if(DynamicBuffer.allocated + >= (DynamicBuffer.offset + DynamicBuffer.length + bytes)) { + DEBUG("\tNo buffer reallocation is necessary"); + } else if(bytes <= DynamicBuffer.offset) { + DEBUG("\tContents shifted by %ld", DynamicBuffer.offset); + + /* Shift the buffer contents */ + memmove(DynamicBuffer.data, + DynamicBuffer.data + DynamicBuffer.offset, + DynamicBuffer.length); + DynamicBuffer.bytes_shifted += DynamicBuffer.offset; + DynamicBuffer.offset = 0; + } else { + size_t newsize = (DynamicBuffer.allocated << 2) + bytes; + void *p = MALLOC(newsize); + if(!p) { + perror("malloc()"); + exit(EX_OSERR); + } + if (DynamicBuffer.length) { + memcpy(p, + DynamicBuffer.data + DynamicBuffer.offset, + DynamicBuffer.length); + } + FREEMEM(DynamicBuffer.data); + DynamicBuffer.data = (uint8_t *)p; + DynamicBuffer.offset = 0; + DynamicBuffer.allocated = newsize; + DynamicBuffer.nreallocs++; + DEBUG("\tBuffer reallocated to %ld (%d time)", + newsize, DynamicBuffer.nreallocs); + } + + memcpy(DynamicBuffer.data + + DynamicBuffer.offset + DynamicBuffer.length, + data2add, bytes); + DynamicBuffer.length += bytes; + if(DynamicBuffer.unbits) { + int bits = DynamicBuffer.unbits; + DynamicBuffer.unbits = 0; + buffer_shift_left(DynamicBuffer.length - bytes, bits); + } + + DEBUG("<= add_bytes(%" ASN_PRI_SIZE ") { o=%" ASN_PRI_SIZE + " l=%" ASN_PRI_SIZE " u=%" ASN_PRI_SIZE ", s=%" ASN_PRI_SIZE " }", + bytes, + DynamicBuffer.offset, + DynamicBuffer.length, + DynamicBuffer.unbits, + DynamicBuffer.allocated); +} + +static int +is_syntax_PER(enum asn_transfer_syntax syntax) { + return (syntax == ATS_UNALIGNED_BASIC_PER + || syntax == ATS_UNALIGNED_CANONICAL_PER + || syntax == ATS_ALIGNED_BASIC_PER + || syntax == ATS_ALIGNED_CANONICAL_PER); +} + +static int +restartability_supported(enum asn_transfer_syntax syntax) { + return !is_syntax_PER(syntax); +} + +static void * +data_decode_from_file(enum asn_transfer_syntax isyntax, asn_TYPE_descriptor_t *pduType, FILE *file, const char *name, ssize_t suggested_bufsize, int on_first_pdu) { + static uint8_t *fbuf; + static ssize_t fbuf_size; + static asn_codec_ctx_t s_codec_ctx; + asn_codec_ctx_t *opt_codec_ctx = 0; + void *structure = 0; + asn_dec_rval_t rval; + size_t old_offset; + size_t new_offset; + int tolerate_eof; + size_t rd; + + if(!file) { + fprintf(stderr, "%s: %s\n", name, strerror(errno)); + errno = EINVAL; + return 0; + } + + if(opt_stack) { + s_codec_ctx.max_stack_size = opt_stack; + opt_codec_ctx = &s_codec_ctx; + } + + DEBUG("Processing %s", name); + + /* prepare the file buffer */ + if(fbuf_size != suggested_bufsize) { + fbuf = (uint8_t *)REALLOC(fbuf, suggested_bufsize); + if(!fbuf) { + perror("realloc()"); + exit(EX_OSERR); + } + fbuf_size = suggested_bufsize; + } + + if(on_first_pdu) { + DynamicBuffer.offset = 0; + DynamicBuffer.length = 0; + DynamicBuffer.unbits = 0; + DynamicBuffer.allocated = 0; + DynamicBuffer.bytes_shifted = 0; + DynamicBuffer.nreallocs = 0; + } + + old_offset = DynamicBuffer.bytes_shifted + DynamicBuffer.offset; + + /* Pretend immediate EOF */ + rval.code = RC_WMORE; + rval.consumed = 0; + + for(tolerate_eof = 1; /* Allow EOF first time buffer is non-empty */ + (rd = fread(fbuf, 1, fbuf_size, file)) + || feof(file) == 0 + || (tolerate_eof && DynamicBuffer.length) + ;) { + int ecbits = 0; /* Extra consumed bits in case of PER */ + uint8_t *i_bptr; + size_t i_size; + + /* + * Copy the data over, or use the original buffer. + */ + if(DynamicBuffer.allocated) { + /* Append new data into the existing dynamic buffer */ + add_bytes_to_buffer(fbuf, rd); + i_bptr = DynamicBuffer.data + DynamicBuffer.offset; + i_size = DynamicBuffer.length; + } else { + i_bptr = fbuf; + i_size = rd; + } + + DEBUG("Decoding %" ASN_PRI_SIZE " bytes", i_size); + +#ifdef JUNKTEST + junk_bytes_with_probability(i_bptr, i_size, opt_jprob); +#endif + + if(is_syntax_PER(isyntax) && opt_nopad) { +#ifdef ASN_DISABLE_PER_SUPPORT + rval.code = RC_FAIL; + rval.consumed = 0; +#else + if(isyntax == ATS_UNALIGNED_BASIC_PER) + rval = uper_decode(opt_codec_ctx, pduType, (void **)&structure, + i_bptr, i_size, 0, DynamicBuffer.unbits); + else + rval = aper_decode(opt_codec_ctx, pduType, (void **)&structure, + i_bptr, i_size, 0, DynamicBuffer.unbits); + /* uper_decode() returns bits! */ + ecbits = rval.consumed % 8; /* Bits consumed from the last byte */ + rval.consumed >>= 3; /* Convert bits into bytes. */ +#endif + /* Non-padded PER decoder */ + } else { + rval = asn_decode(opt_codec_ctx, isyntax, pduType, + (void **)&structure, i_bptr, i_size); + } + if(rval.code == RC_WMORE && !restartability_supported(isyntax)) { + /* PER does not support restartability */ + ASN_STRUCT_FREE(*pduType, structure); + structure = 0; + rval.consumed = 0; + /* Continue accumulating data */ + } + + DEBUG("decode(%" ASN_PRI_SIZE ") consumed %" ASN_PRI_SIZE + "+%db (%" ASN_PRI_SIZE "), code %d", + DynamicBuffer.length, rval.consumed, ecbits, i_size, rval.code); + + if(DynamicBuffer.allocated == 0) { + /* + * Flush remainder into the intermediate buffer. + */ + if(rval.code != RC_FAIL && rval.consumed < rd) { + add_bytes_to_buffer(fbuf + rval.consumed, + rd - rval.consumed); + buffer_shift_left(0, ecbits); + DynamicBuffer.bytes_shifted = rval.consumed; + rval.consumed = 0; + ecbits = 0; + } + } + + /* + * Adjust position inside the source buffer. + */ + if(DynamicBuffer.allocated) { + DynamicBuffer.offset += rval.consumed; + DynamicBuffer.length -= rval.consumed; + } else { + DynamicBuffer.bytes_shifted += rval.consumed; + } + + switch(rval.code) { + case RC_OK: + if(ecbits) buffer_shift_left(0, ecbits); + DEBUG("RC_OK, finishing up with %ld+%d", + (long)rval.consumed, ecbits); + return structure; + case RC_WMORE: + DEBUG("RC_WMORE, continuing read=%ld, cons=%ld " + " with %ld..%ld-%ld..%ld", + (long)rd, + (long)rval.consumed, + (long)DynamicBuffer.offset, + (long)DynamicBuffer.length, + (long)DynamicBuffer.unbits, + (long)DynamicBuffer.allocated); + if(!rd) tolerate_eof--; + continue; + case RC_FAIL: + break; + } + break; + } + + DEBUG("Clean up partially decoded %s", pduType->name); + ASN_STRUCT_FREE(*pduType, structure); + + new_offset = DynamicBuffer.bytes_shifted + DynamicBuffer.offset; + + /* + * Print a message and return failure only if not EOF, + * unless this is our first PDU (empty file). + */ + if(on_first_pdu + || DynamicBuffer.length + || new_offset - old_offset > ((isyntax == ATS_BASIC_XER)?sizeof("\r\n")-1:0) + ) { + +#ifdef JUNKTEST + /* + * Nothing's wrong with being unable to decode junk. + * Simulate EOF. + */ + if(opt_jprob != 0.0) { + junk_failures++; + errno = 0; + return 0; + } +#endif + + DEBUG("ofp %d, no=%ld, oo=%ld, dbl=%ld", + on_first_pdu, (long)new_offset, (long)old_offset, + (long)DynamicBuffer.length); + fprintf(stderr, "%s: " + "Decode failed past byte %ld: %s\n", + name, (long)new_offset, + (rval.code == RC_WMORE) + ? "Unexpected end of input" + : "Input processing error"); +#ifndef ENOMSG +#define ENOMSG EINVAL +#endif +#ifndef EBADMSG +#define EBADMSG EINVAL +#endif + errno = (rval.code == RC_WMORE) ? ENOMSG : EBADMSG; + } else { + /* Got EOF after a few successful PDUs */ + errno = 0; + } + + return 0; +} + +/* Dump the buffer out to the specified FILE */ +static int write_out(const void *buffer, size_t size, void *key) { + FILE *fp = (FILE *)key; + return (fwrite(buffer, 1, size, fp) == size) ? 0 : -1; +} + +static int argument_is_stdin(char *av[], int idx) { + if(strcmp(av[idx], "-")) { + return 0; /* Certainly not */ + } else { + /* This might be , unless `./program -- -` */ + if(strcmp(av[-1], "--")) + return 1; + else + return 0; + } +} + +static FILE *argument_to_file(char *av[], int idx) { + return argument_is_stdin(av, idx) ? stdin : fopen(av[idx], "rb"); +} + +static char *argument_to_name(char *av[], int idx) { + return argument_is_stdin(av, idx) ? "standard input" : av[idx]; +} + +#ifdef JUNKTEST +/* + * Fill bytes with some garbage with specified probability (more or less). + */ +static void +junk_bytes_with_probability(uint8_t *buf, size_t size, double prob) { + static int junkmode; + uint8_t *ptr; + uint8_t *end; + if(opt_jprob <= 0.0) return; + for(ptr = buf, end = ptr + size; ptr < end; ptr++) { + int byte = *ptr; + if(junkmode++ & 1) { + if((((double)random() / RAND_MAX) < prob)) + byte = random() & 0xff; + } else { +#define BPROB(b) ((((double)random() / RAND_MAX) < prob) ? b : 0) + byte ^= BPROB(0x80); + byte ^= BPROB(0x40); + byte ^= BPROB(0x20); + byte ^= BPROB(0x10); + byte ^= BPROB(0x08); + byte ^= BPROB(0x04); + byte ^= BPROB(0x02); + byte ^= BPROB(0x01); + } + if(byte != *ptr) { + *ptr = byte; + } + } +} +#endif /* JUNKTEST */ + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/converter-example.mk b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/converter-example.mk new file mode 100644 index 0000000..60809f6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/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 -fcompound-names -fincludes-quoted -fno-include-deps -findirect-choice -gen-PER -no-gen-OER -D. ../../asnFiles/e2ap-v031.asn ../../asnFiles/X2AP-PDU-Contents.asn ../../asnFiles/X2AP-Constants.asn ../../asnFiles/X2AP-Containers.asn ../../asnFiles/X2AP-IEs.asn ../../asnFiles/X2AP-CommonDataTypes.asn ../../asnFiles/e2sm-gNB-X2-release-1-v041.asn + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/der_encoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/der_encoder.c new file mode 100644 index 0000000..9903865 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/der_encoder.c @@ -0,0 +1,195 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/der_encoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/der_encoder.h new file mode 100644 index 0000000..a79aad3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/der_encoder.h @@ -0,0 +1,69 @@ + +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/pdu_collection.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/pdu_collection.c new file mode 100644 index 0000000..a7027da --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/pdu_collection.c @@ -0,0 +1,194 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +extern struct asn_TYPE_descriptor_s asn_DEF_E2AP_PDU; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverPreparationFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverReport; +extern struct asn_TYPE_descriptor_s asn_DEF_SNStatusTransfer; +extern struct asn_TYPE_descriptor_s asn_DEF_UEContextRelease; +extern struct asn_TYPE_descriptor_s asn_DEF_HandoverCancel; +extern struct asn_TYPE_descriptor_s asn_DEF_PrivateMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_MobilityChangeRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_MobilityChangeAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_MobilityChangeFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_RLFIndication; +extern struct asn_TYPE_descriptor_s asn_DEF_CellActivationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_CellActivationResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_CellActivationFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_X2Release; +extern struct asn_TYPE_descriptor_s asn_DEF_X2APMessageTransfer; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBAdditionRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBAdditionRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBAdditionRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReconfigurationComplete; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBModificationRefuse; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReleaseRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReleaseRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBReleaseConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SeNBCounterCheckRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_X2RemovalRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_X2RemovalResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_X2RemovalFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_RetrieveUEContextRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_RetrieveUEContextResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_RetrieveUEContextFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBAdditionRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBAdditionRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBAdditionRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReconfigurationComplete; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBModificationRefuse; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequestAcknowledge; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequestReject; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBReleaseConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBCounterCheckRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBChangeRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBChangeConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_RRCTransfer; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBChangeRefuse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCCellActivationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCCellActivationResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCCellActivationFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_SecondaryRATDataUsageReport; +extern struct asn_TYPE_descriptor_s asn_DEF_SgNBActivityNotification; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCPartialResetRequired; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCPartialResetConfirm; +extern struct asn_TYPE_descriptor_s asn_DEF_EUTRANRCellResourceCoordinationRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_EUTRANRCellResourceCoordinationResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCX2RemovalRequest; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCX2RemovalResponse; +extern struct asn_TYPE_descriptor_s asn_DEF_ENDCX2RemovalFailure; +extern struct asn_TYPE_descriptor_s asn_DEF_DataForwardingAddressIndication; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_eventTriggerDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_actionDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_indicationHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_indicationMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_callProcessID; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_controlHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_gNB_X2_controlMessage; + + +struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { + /* From module E2AP-PDU-Descriptions in ../../asnFiles/e2ap-v031.asn */ + &asn_DEF_E2AP_PDU, + /* From module X2AP-PDU-Contents in ../../asnFiles/X2AP-PDU-Contents.asn */ + &asn_DEF_HandoverRequest, + &asn_DEF_HandoverRequestAcknowledge, + &asn_DEF_HandoverPreparationFailure, + &asn_DEF_HandoverReport, + &asn_DEF_SNStatusTransfer, + &asn_DEF_UEContextRelease, + &asn_DEF_HandoverCancel, + &asn_DEF_PrivateMessage, + &asn_DEF_MobilityChangeRequest, + &asn_DEF_MobilityChangeAcknowledge, + &asn_DEF_MobilityChangeFailure, + &asn_DEF_RLFIndication, + &asn_DEF_CellActivationRequest, + &asn_DEF_CellActivationResponse, + &asn_DEF_CellActivationFailure, + &asn_DEF_X2Release, + &asn_DEF_X2APMessageTransfer, + &asn_DEF_SeNBAdditionRequest, + &asn_DEF_SeNBAdditionRequestAcknowledge, + &asn_DEF_SeNBAdditionRequestReject, + &asn_DEF_SeNBReconfigurationComplete, + &asn_DEF_SeNBModificationRequest, + &asn_DEF_SeNBModificationRequestAcknowledge, + &asn_DEF_SeNBModificationRequestReject, + &asn_DEF_SeNBModificationRequired, + &asn_DEF_SeNBModificationConfirm, + &asn_DEF_SeNBModificationRefuse, + &asn_DEF_SeNBReleaseRequest, + &asn_DEF_SeNBReleaseRequired, + &asn_DEF_SeNBReleaseConfirm, + &asn_DEF_SeNBCounterCheckRequest, + &asn_DEF_X2RemovalRequest, + &asn_DEF_X2RemovalResponse, + &asn_DEF_X2RemovalFailure, + &asn_DEF_RetrieveUEContextRequest, + &asn_DEF_RetrieveUEContextResponse, + &asn_DEF_RetrieveUEContextFailure, + &asn_DEF_SgNBAdditionRequest, + &asn_DEF_SgNBAdditionRequestAcknowledge, + &asn_DEF_SgNBAdditionRequestReject, + &asn_DEF_SgNBReconfigurationComplete, + &asn_DEF_SgNBModificationRequest, + &asn_DEF_SgNBModificationRequestAcknowledge, + &asn_DEF_SgNBModificationRequestReject, + &asn_DEF_SgNBModificationRequired, + &asn_DEF_SgNBModificationConfirm, + &asn_DEF_SgNBModificationRefuse, + &asn_DEF_SgNBReleaseRequest, + &asn_DEF_SgNBReleaseRequestAcknowledge, + &asn_DEF_SgNBReleaseRequestReject, + &asn_DEF_SgNBReleaseRequired, + &asn_DEF_SgNBReleaseConfirm, + &asn_DEF_SgNBCounterCheckRequest, + &asn_DEF_SgNBChangeRequired, + &asn_DEF_SgNBChangeConfirm, + &asn_DEF_RRCTransfer, + &asn_DEF_SgNBChangeRefuse, + &asn_DEF_ENDCCellActivationRequest, + &asn_DEF_ENDCCellActivationResponse, + &asn_DEF_ENDCCellActivationFailure, + &asn_DEF_SecondaryRATDataUsageReport, + &asn_DEF_SgNBActivityNotification, + &asn_DEF_ENDCPartialResetRequired, + &asn_DEF_ENDCPartialResetConfirm, + &asn_DEF_EUTRANRCellResourceCoordinationRequest, + &asn_DEF_EUTRANRCellResourceCoordinationResponse, + &asn_DEF_ENDCX2RemovalRequest, + &asn_DEF_ENDCX2RemovalResponse, + &asn_DEF_ENDCX2RemovalFailure, + &asn_DEF_DataForwardingAddressIndication, + /* From module E2SM-gNB-X2-IEs in ../../asnFiles/e2sm-gNB-X2-release-1-v041.asn */ + &asn_DEF_E2SM_gNB_X2_eventTriggerDefinition, + &asn_DEF_E2SM_gNB_X2_actionDefinition, + &asn_DEF_E2SM_gNB_X2_indicationHeader, + &asn_DEF_E2SM_gNB_X2_indicationMessage, + &asn_DEF_E2SM_gNB_X2_callProcessID, + &asn_DEF_E2SM_gNB_X2_controlHeader, + &asn_DEF_E2SM_gNB_X2_controlMessage, + 0 +}; + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_decoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_decoder.c new file mode 100644 index 0000000..2527bcf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_decoder.c @@ -0,0 +1,208 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_decoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_decoder.h new file mode 100644 index 0000000..e404016 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_decoder.h @@ -0,0 +1,83 @@ + +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_encoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_encoder.c new file mode 100644 index 0000000..55896bc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_encoder.c @@ -0,0 +1,287 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +static int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +static int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_encoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_encoder.h new file mode 100644 index 0000000..b36257a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_encoder.h @@ -0,0 +1,94 @@ + +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_opentype.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_opentype.c new file mode 100644 index 0000000..65c6f5d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_opentype.c @@ -0,0 +1,534 @@ + +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); +static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = aper_put_length(po, -1, toGo); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_opentype.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_opentype.h new file mode 100644 index 0000000..d729877 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_opentype.h @@ -0,0 +1,45 @@ + +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_support.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_support.c new file mode 100644 index 0000000..af70584 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_support.c @@ -0,0 +1,490 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { + unsigned long lhalf; /* Lower half of the number*/ + long half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__long_range(long lb, long ub, unsigned long *range_r) { + unsigned long bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { + unsigned long range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { + unsigned long range; + + if(per__long_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= LONG_MAX) { + *outp = (long)inp + lb; + } else { + *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); + } + + return 0; +} + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + if (range <= 65536 && range >= 0) + return aper_get_nsnnwn(pd, range); + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #10.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #10.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #10.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%ld", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + return -1; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, int range, size_t length) { + + ASN_DEBUG("APER put length %zu with range %d", length, range); + + /* 10.9 X.691 Note 2 */ + if (range <= 65536 && range >= 0) + return aper_put_nsnnwn(po, range, length); + + if (aper_put_align(po) < 0) + return -1; + + if(length <= 127) /* #10.9.3.6 */{ + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } + else if(length < 16384) /* #10.9.3.7 */ + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + + length >>= 14; + if(length > 4) length = 4; + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + bytes = 1; + } else if(range <= 65536) { + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_support.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_support.h new file mode 100644 index 0000000..c2c07ff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/per_support.h @@ -0,0 +1,128 @@ + +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + long lower_bound; /* "lb" value */ + long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +ssize_t aper_get_length(asn_per_data_t *pd, int range, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); + + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_decoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_decoder.c new file mode 100644 index 0000000..ab89250 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_decoder.c @@ -0,0 +1,370 @@ + +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_decoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_decoder.h new file mode 100644 index 0000000..e874abc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_decoder.h @@ -0,0 +1,107 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_encoder.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_encoder.c new file mode 100644 index 0000000..204ec0b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_encoder.c @@ -0,0 +1,238 @@ + +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_encoder.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_encoder.h new file mode 100644 index 0000000..df702f5 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_encoder.h @@ -0,0 +1,84 @@ + +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_support.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_support.c new file mode 100644 index 0000000..754fdd6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_support.c @@ -0,0 +1,228 @@ + +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_support.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_support.h new file mode 100644 index 0000000..42f1a8a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/e2ap_engine/xer_support.h @@ -0,0 +1,56 @@ + +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaninful data is found. + * This function returns number of bytes consumed from the bufer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/asn1codec_utils.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/asn1codec_utils.h new file mode 100644 index 0000000..5e85c79 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/asn1codec_utils.h @@ -0,0 +1,68 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#ifndef INC_ASN1CODEC_UTILS_H_ +#define INC_ASN1CODEC_UTILS_H_ + +#ifndef ASN_DISABLE_OER_SUPPORT +#define ASN_DISABLE_OER_SUPPORT +#endif + +#ifndef ASN_PDU_COLLECTION +#define ASN_PDU_COLLECTION +#endif + +#include +#include +#include +#include +#include +#include + +#define pLMN_Identity_size 3 +#define shortMacro_eNB_ID_size 18 +#define macro_eNB_ID_size 20 +#define longMacro_eNB_ID_size 21 +#define home_eNB_ID_size 28 +#define eUTRANcellIdentifier_size 28 + +#ifdef __cplusplus +extern "C" +{ +#endif + +bool asn1_pdu_printer(const E2AP_PDU_t *pdu, size_t obufsz, char *buf); +bool asn1_pdu_xer_printer(const E2AP_PDU_t *pdu, size_t obufsz, char *buf); +bool per_unpack_pdu(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); +bool per_pack_pdu(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); +bool unpack_pdu_aux(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax); +bool pack_pdu_aux(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax); + +E2AP_PDU_t *new_pdu(size_t sz); +void delete_pdu(E2AP_PDU_t *pdu); + +#ifdef __cplusplus +} +#endif + +#endif /* INC_ASN1CODEC_UTILS_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/configuration_update_wrapper.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/configuration_update_wrapper.h new file mode 100644 index 0000000..fa0fe36 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/configuration_update_wrapper.h @@ -0,0 +1,44 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include + +#ifndef INC_CONFIGURATION_UPDATE_WRAPPER_H_ +#define INC_CONFIGURATION_UPDATE_WRAPPER_H_ + +#ifdef __cplusplus +extern "C" +{ +#endif +bool build_pack_x2enb_configuration_update_ack(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +bool build_pack_x2enb_configuration_update_failure(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +bool build_pack_endc_configuration_update_ack(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +bool build_pack_endc_configuration_update_failure(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf); +#ifdef __cplusplus +} +#endif + +#endif /* INC_CONFIGURATION_UPDATE_WRAPPER_H_ */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/load_information_wrapper.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/load_information_wrapper.h new file mode 100644 index 0000000..df605b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/load_information_wrapper.h @@ -0,0 +1,54 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#ifndef INC_LOAD_INFORMATION_WRAPPER_H +#define INC_LOAD_INFORMATION_WRAPPER_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#ifdef __cplusplus +extern "C" +{ +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* INC_LOAD_INFORMATION_WRAPPER_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2reset_request_wrapper.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2reset_request_wrapper.h new file mode 100644 index 0000000..711ac11 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2reset_request_wrapper.h @@ -0,0 +1,46 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include +#include + +#ifndef INC_X2RESET_REQUEST_WRAPPER_H +#define INC_X2RESET_REQUEST_WRAPPER_H + +#ifdef __cplusplus +extern "C" +{ +#endif +bool +build_pack_x2reset_request(enum Cause_PR cause_group, int cause_value, size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); +bool +build_pack_x2reset_request_aux(enum Cause_PR cause_group, int cause_value, size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax); +#ifdef __cplusplus +} +#endif + +#endif /* INC_RESET_REQUEST_WRAPPER_H */ + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2reset_response_wrapper.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2reset_response_wrapper.h new file mode 100644 index 0000000..9875d5a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2reset_response_wrapper.h @@ -0,0 +1,44 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include +#include + +#ifndef INC_X2RESET_RESPONSE_WRAPPER_H +#define INC_X2RESET_RESPONSE_WRAPPER_H + +#ifdef __cplusplus +extern "C" +{ +#endif +bool +build_pack_x2reset_response(size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); +#ifdef __cplusplus +} +#endif + +#endif /* INC_X2RESET_RESPONSE_WRAPPER_H */ + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2setup_request_wrapper.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2setup_request_wrapper.h new file mode 100644 index 0000000..5c8dfff --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2setup_request_wrapper.h @@ -0,0 +1,62 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include +#include + +#ifndef INC_X2SETUP_REQUEST_WRAPPER_H +#define INC_X2SETUP_REQUEST_WRAPPER_H + +#ifdef __cplusplus +extern "C" +{ +#endif +bool +build_pack_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/,uint8_t const* ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf); + +bool +build_pack_endc_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf +); +bool +build_pack_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/,uint8_t const* ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf, enum asn_transfer_syntax syntax); + +bool +build_pack_endc_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf, enum asn_transfer_syntax syntax); + +#ifdef __cplusplus +} +#endif + +#endif /* INC_X2SETUP_REQUEST_WRAPPER_H */ + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2setup_response_wrapper.h b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2setup_response_wrapper.h new file mode 100644 index 0000000..da88b85 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/inc/x2setup_response_wrapper.h @@ -0,0 +1,55 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#ifndef INC_X2SETUP_RESPONSE_WRAPPER_H +#define INC_X2SETUP_RESPONSE_WRAPPER_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + + +#ifdef __cplusplus +} +#endif + +#endif /* INC_X2SETUP_REQUEST_WRAPPER_H */ diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/asn1codec_utils.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/asn1codec_utils.c new file mode 100644 index 0000000..0a69ec8 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/asn1codec_utils.c @@ -0,0 +1,223 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#include +#undef NDEBUG +#include +#include +#include +#include + +/* + * Printer for the e2ap pdu. + * The string representation of the pdu stored in buf. + * + * Input: + * pdu - the pdu to print. + * buf_size - the size of the storage buffer. + * buf - hold the string representation of the pdu. + */ +bool +asn1_pdu_printer(E2AP_PDU_t const *pdu, size_t buf_size, char *buf) +{ + bool rc = true; + char *bufloc = 0; + size_t sizeloc = 0; + buf[0] = 0; + FILE *stream = open_memstream(&bufloc, &sizeloc); + + errno = 0; + if (asn_fprint(stream, &asn_DEF_E2AP_PDU, pdu)){ + snprintf(buf, buf_size, "#%s.%s - Failed to print %s, error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, errno); + strerror_r(errno, buf+strlen(buf), buf_size - strlen(buf)); + rc = false; + } else { + buf_size = buf_size > sizeloc ? sizeloc: buf_size -1; + memcpy(buf, bufloc, buf_size); + buf[buf_size] = 0; + } + + fclose(stream); + free(bufloc); + return rc; +} + + +/* + * XML Printer for the e2ap pdu. + * The string representation of the pdu stored in buf. + * + * Input: + * pdu - the pdu to print. + * buf_size - the size of the storage buffer. + * buf - hold the string representation of the pdu. + */ +bool +asn1_pdu_xer_printer(E2AP_PDU_t const *pdu, size_t buf_size, char *buf) +{ + bool rc = true; + char *bufloc = 0; + size_t sizeloc = 0; + buf[0] = 0; + FILE *stream = open_memstream(&bufloc, &sizeloc); + + errno = 0; + if (xer_fprint(stream, &asn_DEF_E2AP_PDU, pdu)){ + snprintf(buf, buf_size, "#%s.%s - Failed to print %s, error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, errno); + strerror_r(errno, buf+strlen(buf), buf_size - strlen(buf)); + rc = false; + } else { + buf_size = buf_size > sizeloc ? sizeloc: buf_size -1; + memcpy(buf, bufloc, buf_size); + buf[buf_size] = 0; + } + + fclose(stream); + free(bufloc); + return rc; +} + +/* + * Unpack the pdu from ASN.1 PER encoding. + * + * Input: + * pdu - storage for unpacked pdu. + * packed_buf_size - size of the encoded data. + * packed_buf - storage of the packed pdu + * err_buf_size - size of the err_buf which may hold the error string in case of + * an error. err_buf - storage for the error string + * + * Return: true in case of success, false in case of failure. + */ +bool +per_unpack_pdu(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf) +{ + return unpack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,ATS_ALIGNED_BASIC_PER); +} + +bool +unpack_pdu_aux(E2AP_PDU_t *pdu, size_t packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax) +{ + char spec[256]; + size_t err_msg_size = err_buf_size; + + //ATS_BASIC_XER ATS_ALIGNED_BASIC_PER, ATS_UNALIGNED_BASIC_PER,ATS_ALIGNED_CANONICAL_PER + errno = 0; + asn_dec_rval_t rval = + asn_decode(0,syntax , &asn_DEF_E2AP_PDU, (void **)&pdu, packed_buf, packed_buf_size); + switch(rval.code) { + case RC_OK: + if (asn_check_constraints(&asn_DEF_E2AP_PDU, pdu,err_buf, &err_msg_size)){ + snprintf(spec, sizeof(spec), "#%s.%s - Constraint check failed: ", __FILE__, __func__); + size_t spec_actual_size = strlen(spec); + if (spec_actual_size + err_msg_size < err_buf_size){ + memmove(err_buf + spec_actual_size, err_buf, err_msg_size + 1); + memcpy(err_buf, spec, spec_actual_size); + } + return false; + } + return true; + + break; + case RC_WMORE: + case RC_FAIL: + default: + break; + } + + snprintf(err_buf, err_buf_size, "#%s.%s - Failed to decode %s (consumed %zu), error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, rval.consumed, errno); + strerror_r(errno, err_buf+strlen(err_buf), err_buf_size - strlen(err_buf)); + return false; +} + +/* + * Pack the pdu using ASN.1 PER encoding. + * + * Input: + * pdu - the pdu to pack. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + * packed_buf - storage for the packed pdu + * err_buf_size - size of the err_buf which may hold the error string in case of + * an error. err_buf - storage for the error string + * + * Return: true in case of success, false in case of failure. + */ +bool +per_pack_pdu(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf) +{ + return pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,ATS_ALIGNED_BASIC_PER); +} + +bool +pack_pdu_aux(E2AP_PDU_t *pdu, size_t *packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax) +{ + char spec[256]; + size_t err_msg_size = err_buf_size; + + if (asn_check_constraints(&asn_DEF_E2AP_PDU, pdu,err_buf, &err_msg_size)){ + snprintf(spec, sizeof(spec), "#%s.%s - Constraint check failed: ", __FILE__, __func__); + size_t spec_actual_size = strlen(spec); + if (spec_actual_size + err_msg_size < err_buf_size){ + memmove(err_buf + spec_actual_size, err_buf, err_msg_size + 1); + memcpy(err_buf, spec, spec_actual_size); + } + return false; + } + + errno = 0; +asn_enc_rval_t res = + asn_encode_to_buffer(0, syntax, &asn_DEF_E2AP_PDU, pdu, packed_buf, *packed_buf_size); + if(res.encoded == -1) { + snprintf(err_buf, err_buf_size, "#%s.%s - Failed to encode %s, error = %d ", __FILE__, __func__, asn_DEF_E2AP_PDU.name, errno); + strerror_r(errno, err_buf+strlen(err_buf), err_buf_size - strlen(err_buf)); + return false; + } else { + /* Encoded successfully. */ + if (*packed_buf_size < res.encoded){ + snprintf(err_buf, err_buf_size, "#%s.%s - Encoded output of %s, is too big:%zu", __FILE__, __func__, asn_DEF_E2AP_PDU.name,res.encoded); + return false; + } else { + *packed_buf_size = res.encoded; + } + } + return true; +} + +/* + * Create a new pdu. + * Abort the process on allocation failure. + */ +E2AP_PDU_t *new_pdu(size_t sz /*ignored (may be used for a custom allocator)*/) +{ + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + assert(pdu != 0); + return pdu; +} + +void delete_pdu(E2AP_PDU_t *pdu) +{ + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/configuration_update_wrapper.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/configuration_update_wrapper.c new file mode 100644 index 0000000..431f8f4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/configuration_update_wrapper.c @@ -0,0 +1,215 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#undef NDEBUG +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Build and pack ENB Configuration Update Acknowledge (successful outcome response). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_x2enb_configuration_update_ack( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t)); + ENBConfigurationUpdateAcknowledge_t *enbConfigurationUpdateAcknowledge; + ENBConfigurationUpdateAcknowledge_IEs_t *enbConfigurationUpdateAcknowledge_IEs = calloc(1, sizeof(ENBConfigurationUpdateAcknowledge_IEs_t)); + + assert(pdu != 0); + assert(successfulOutcome != 0); + assert(enbConfigurationUpdateAcknowledge_IEs != 0); + + pdu->present = E2AP_PDU_PR_successfulOutcome; + pdu->choice.successfulOutcome = successfulOutcome; + + successfulOutcome->procedureCode = ProcedureCode_id_eNBConfigurationUpdate; + successfulOutcome->criticality = Criticality_reject; + successfulOutcome->value.present = SuccessfulOutcome__value_PR_ENBConfigurationUpdateAcknowledge; + enbConfigurationUpdateAcknowledge = &successfulOutcome->value.choice.ENBConfigurationUpdateAcknowledge; + + enbConfigurationUpdateAcknowledge_IEs->id = ProtocolIE_ID_id_CriticalityDiagnostics; + enbConfigurationUpdateAcknowledge_IEs->criticality = Criticality_ignore; + enbConfigurationUpdateAcknowledge_IEs->value.present = ENBConfigurationUpdateAcknowledge_IEs__value_PR_CriticalityDiagnostics; + + ASN_SEQUENCE_ADD(&enbConfigurationUpdateAcknowledge->protocolIEs, enbConfigurationUpdateAcknowledge_IEs); + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +/* + * Build and pack ENB Configuration Update Failure (unsuccessful outcome message). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_x2enb_configuration_update_failure( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + UnsuccessfulOutcome_t *unsuccessfulOutcome = calloc(1, sizeof(UnsuccessfulOutcome_t)); + ENBConfigurationUpdateFailure_t *enbConfigurationUpdateFailure; + ENBConfigurationUpdateFailure_IEs_t *enbConfigurationUpdateFailure_IEs = calloc(1, sizeof(ENBConfigurationUpdateFailure_IEs_t)); + + assert(pdu != 0); + assert(unsuccessfulOutcome != 0); + assert(enbConfigurationUpdateFailure_IEs != 0); + + + pdu->present = E2AP_PDU_PR_unsuccessfulOutcome; + pdu->choice.unsuccessfulOutcome = unsuccessfulOutcome; + + unsuccessfulOutcome->procedureCode = ProcedureCode_id_eNBConfigurationUpdate; + unsuccessfulOutcome->criticality = Criticality_reject; + unsuccessfulOutcome->value.present = UnsuccessfulOutcome__value_PR_ENBConfigurationUpdateFailure; + enbConfigurationUpdateFailure = &unsuccessfulOutcome->value.choice.ENBConfigurationUpdateFailure; + + enbConfigurationUpdateFailure_IEs->id = ProtocolIE_ID_id_Cause; + enbConfigurationUpdateFailure_IEs->criticality = Criticality_ignore; + enbConfigurationUpdateFailure_IEs->value.present = ENBConfigurationUpdateFailure_IEs__value_PR_Cause; + enbConfigurationUpdateFailure_IEs->value.choice.Cause.present = Cause_PR_protocol; + enbConfigurationUpdateFailure_IEs->value.choice.Cause.choice.protocol= CauseProtocol_abstract_syntax_error_reject; + ASN_SEQUENCE_ADD(&enbConfigurationUpdateFailure->protocolIEs, enbConfigurationUpdateFailure_IEs); + + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +/* + * Build and pack ENDC Configuration Update Acknowledge (successful outcome response). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_endc_configuration_update_ack( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t)); + ENDCConfigurationUpdateAcknowledge_t *endcConfigurationUpdateAcknowledge; + ENDCConfigurationUpdateAcknowledge_IEs_t *endcConfigurationUpdateAcknowledge_IEs = calloc(1, sizeof(ENDCConfigurationUpdateAcknowledge_IEs_t)); + + assert(pdu != 0); + assert(successfulOutcome != 0); + assert(endcConfigurationUpdateAcknowledge_IEs != 0); + + pdu->present = E2AP_PDU_PR_successfulOutcome; + pdu->choice.successfulOutcome = successfulOutcome; + + successfulOutcome->procedureCode = ProcedureCode_id_endcConfigurationUpdate; + successfulOutcome->criticality = Criticality_reject; + successfulOutcome->value.present = SuccessfulOutcome__value_PR_ENDCConfigurationUpdateAcknowledge; + endcConfigurationUpdateAcknowledge = &successfulOutcome->value.choice.ENDCConfigurationUpdateAcknowledge; + ASN_SEQUENCE_ADD(&endcConfigurationUpdateAcknowledge->protocolIEs, endcConfigurationUpdateAcknowledge_IEs); + + endcConfigurationUpdateAcknowledge_IEs->id = ProtocolIE_ID_id_RespondingNodeType_EndcConfigUpdate; + endcConfigurationUpdateAcknowledge_IEs->criticality = Criticality_reject; + endcConfigurationUpdateAcknowledge_IEs->value.present = ENDCConfigurationUpdateAcknowledge_IEs__value_PR_RespondingNodeType_EndcConfigUpdate; + endcConfigurationUpdateAcknowledge_IEs->value.choice.RespondingNodeType_EndcConfigUpdate.present = RespondingNodeType_EndcConfigUpdate_PR_respond_eNB; + + ProtocolIE_Container_119P95_t *enb_ENDCConfigUpdateAckIEs_Container = calloc(1, sizeof(ProtocolIE_Container_119P95_t)); + assert(enb_ENDCConfigUpdateAckIEs_Container != 0); + endcConfigurationUpdateAcknowledge_IEs->value.choice.RespondingNodeType_EndcConfigUpdate.choice.respond_eNB = (struct ProtocolIE_Container*)enb_ENDCConfigUpdateAckIEs_Container; + + //Leave the respond_eNB container empty (ENB_ENDCConfigUpdateAckIEs_t is an empty element). + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +/* + * Build and pack ENDC Configuration Update Failure (unsuccessful outcome message). + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_endc_configuration_update_failure( + size_t* packed_buf_size, + unsigned char* packed_buf, + size_t err_buf_size, + char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + UnsuccessfulOutcome_t *unsuccessfulOutcome = calloc(1, sizeof(UnsuccessfulOutcome_t)); + ENDCConfigurationUpdateFailure_t *endcConfigurationUpdateFailure; + ENDCConfigurationUpdateFailure_IEs_t *endcConfigurationUpdateFailure_IEs = calloc(1, sizeof(ENDCConfigurationUpdateFailure_IEs_t)); + + assert(pdu != 0); + assert(unsuccessfulOutcome != 0); + assert(endcConfigurationUpdateFailure_IEs != 0); + + + pdu->present = E2AP_PDU_PR_unsuccessfulOutcome; + pdu->choice.unsuccessfulOutcome = unsuccessfulOutcome; + + unsuccessfulOutcome->procedureCode = ProcedureCode_id_endcConfigurationUpdate; + unsuccessfulOutcome->criticality = Criticality_reject; + unsuccessfulOutcome->value.present = UnsuccessfulOutcome__value_PR_ENDCConfigurationUpdateFailure; + endcConfigurationUpdateFailure = &unsuccessfulOutcome->value.choice.ENDCConfigurationUpdateFailure; + + endcConfigurationUpdateFailure_IEs->id = ProtocolIE_ID_id_Cause; + endcConfigurationUpdateFailure_IEs->criticality = Criticality_ignore; + endcConfigurationUpdateFailure_IEs->value.present = ENDCConfigurationUpdateFailure_IEs__value_PR_Cause; + endcConfigurationUpdateFailure_IEs->value.choice.Cause.present = Cause_PR_protocol; + endcConfigurationUpdateFailure_IEs->value.choice.Cause.choice.protocol= CauseProtocol_abstract_syntax_error_reject; + ASN_SEQUENCE_ADD(&endcConfigurationUpdateFailure->protocolIEs, endcConfigurationUpdateFailure_IEs); + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/configuration_update_wrapper_test.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/configuration_update_wrapper_test.c new file mode 100644 index 0000000..bb4e9c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/configuration_update_wrapper_test.c @@ -0,0 +1,114 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#include +#include + +void test_build_pack_x2enb_configuration_update_ack(); +void test_build_pack_x2enb_configuration_update_failure(); +void test_build_pack_endc_configuration_update_ack(); +void test_build_pack_endc_configuration_update_failure(); +int +main(int argc, char* argv[]) +{ + test_build_pack_x2enb_configuration_update_ack(); + test_build_pack_x2enb_configuration_update_failure(); + test_build_pack_endc_configuration_update_ack(); + test_build_pack_endc_configuration_update_failure(); + exit(0); +} + +void test_build_pack_x2enb_configuration_update_ack(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_x2enb_configuration_update_ack(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_x2enb_configuration_update_ack failed. Packing error %s\n", responseErrorBuf); + return; + } + printf("x2enb configuration update acknowledge packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} + +void test_build_pack_x2enb_configuration_update_failure(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_x2enb_configuration_update_failure(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_x2enb_configuration_update_failure. Packing error %s\n", responseErrorBuf); + return; + } + printf("x2enb configuration update failure packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} + +void test_build_pack_endc_configuration_update_ack(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_endc_configuration_update_ack(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_endc_configuration_update_ack. Packing error %s\n", responseErrorBuf); + return; + } + printf("endc configuration update acknowledge packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + +} + +void test_build_pack_endc_configuration_update_failure(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_endc_configuration_update_failure(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#test_build_pack_endc_configuration_update_failure. Packing error %s\n", responseErrorBuf); + return; + } + printf("endc configuration update failure packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_base.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_base.xml new file mode 100644 index 0000000..0445498 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_base.xml @@ -0,0 +1,34 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc001.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc001.xml new file mode 100644 index 0000000..8bff01e --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc001.xml @@ -0,0 +1,37 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc002.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc002.xml new file mode 100644 index 0000000..6d9672b --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc002.xml @@ -0,0 +1,50 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc003.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc003.xml new file mode 100644 index 0000000..5b8aacc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc003.xml @@ -0,0 +1,50 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc004.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc004.xml new file mode 100644 index 0000000..abb66c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc004.xml @@ -0,0 +1,85 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc005.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc005.xml new file mode 100644 index 0000000..c3bafeb --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc005.xml @@ -0,0 +1,94 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc006.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc006.xml new file mode 100644 index 0000000..9bf926a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc006.xml @@ -0,0 +1,103 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc007.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc007.xml new file mode 100644 index 0000000..331ba0d --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc007.xml @@ -0,0 +1,117 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc008.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc008.xml new file mode 100644 index 0000000..da099a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc008.xml @@ -0,0 +1,173 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 108 + + + + + + + + + 02 F8 31 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 32 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc009.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc009.xml new file mode 100644 index 0000000..72ce0d0 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc009.xml @@ -0,0 +1,136 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc010.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc010.xml new file mode 100644 index 0000000..38135e3 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc010.xml @@ -0,0 +1,192 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + 108 + + + + + + + + + 02 F8 31 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 32 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc011.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc011.xml new file mode 100644 index 0000000..4c3f98a --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc011.xml @@ -0,0 +1,364 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + 108 + + + + + + + + + 02 F8 31 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 32 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + 7 + + + + + 02 F9 10 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 10 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + 108 + + + + + + + + + 02 F8 11 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 12 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc012.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc012.xml new file mode 100644 index 0000000..e6f5524 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc012.xml @@ -0,0 +1,217 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + 148 + + + + + 1010101000111 + + + + + + + 51 + + + 9 + + + + + + + + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + 108 + + + + + + + + + 02 F8 31 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 32 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc013.xml b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc013.xml new file mode 100644 index 0000000..70ddaaf --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/load_information_xer_files/xer_tc013.xml @@ -0,0 +1,388 @@ + + + 2 + + + + + + 6 + + + + + 7 + + + + + 02 F8 29 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 30 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + 148 + + + + + 1010101000111 + + + + + + + 51 + + + 9 + + + + + + + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + 108 + + + + + + + + + 02 F8 31 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 32 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + 7 + + + + + 02 F9 10 + + 0000000000000111101010110101 + + + + + + + + + 02 F8 10 + + 0000000000000111101010110101 + + + + 1010101010101010 + + + + + + + 11001100 + + + + + + + + 2 + 1 + + + + 61 + + + + + + 0000011111000001111100000111110000011111 + + + + + + 1000001111100000111110000011110000001111 + + + + + + + 62 + + + + + + + + + 99 + + + + + + + + + 100 + + + + + 11001 + + + + + + + + + 106 + + + + + + 11001101 + + + 0 + + + + + + + + + + 108 + + + + + + + + + 02 F8 11 + + 0000000000000111101010110101 + + + + 1110000000000111101010110101 + + + + + -99 + + + + + + + 02 F8 12 + + 0000000001100111101010110101 + + + + 1110001100000111101010110101 + + + + + 30 + + + + + + + 50 + + + 3 + + + + + + + + + + + + + + + + + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/unpack_xer.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/unpack_xer.c new file mode 100644 index 0000000..b416d4f --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/unpack_xer.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +#include +#include +#include +#include +#include + +int +main(int argc, char* argv[]) +{ + char responseErrorBuf[1<< 16]; + uint8_t buf[1 << 16]; + size_t count = fread(buf, 1, sizeof(buf), stdin); + if (count == sizeof(buf)) { + printf("#%s failed. Input is too big\n", __func__); + exit(-1); + } + if (!feof(stdin)){ + printf("#%s failed. Error while reading input: %s\n", __func__, strerror(errno)); + exit(-1); + } + + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, count, buf ,sizeof(responseErrorBuf), responseErrorBuf,ATS_BASIC_XER)){ + printf("#%s failed. Unpacking error %s\n", __func__, responseErrorBuf); + exit(-1); + } + + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + + { + size_t per_packed_buf_size; + uint8_t per_packed_buf[1 << 16]; + + responseErrorBuf[0] = 0; + per_packed_buf_size = sizeof(per_packed_buf); + + if (!pack_pdu_aux(pdu,&per_packed_buf_size, per_packed_buf,sizeof(responseErrorBuf), responseErrorBuf, ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + exit(-1); + } + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + printf("#%s packed size:%zu\nPayload:\n", __func__, per_packed_buf_size); + for (size_t i= 0; i < per_packed_buf_size; i++) + printf("%02x",per_packed_buf[i]); + printf("\n"); + + pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, per_packed_buf_size, per_packed_buf ,sizeof(responseErrorBuf), responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + printf("#%s: %s\n", __func__, responseErrorBuf); + } + exit(0); +} + + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2reset_request_wrapper_test.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2reset_request_wrapper_test.c new file mode 100644 index 0000000..d25dbd6 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2reset_request_wrapper_test.c @@ -0,0 +1,70 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include +#include + +void test_build_pack_x2reset_request(); +void test_unpack(void); + +int +main(int argc, char* argv[]) +{ + test_build_pack_x2reset_request(); + exit(0); +} + +void test_build_pack_x2reset_request(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result; + E2AP_PDU_t *pdu; + /**********************************************************************************/ + + packed_buf_size = 4096; + result = build_pack_x2reset_request(Cause_PR_radioNetwork,CauseRadioNetwork_time_critical_handover, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2reset_response_wrapper_test.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2reset_response_wrapper_test.c new file mode 100644 index 0000000..87b6697 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2reset_response_wrapper_test.c @@ -0,0 +1,56 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + + #include + #include + #include + #include + + void test_build_pack_x2reset_response(); + void test_unpack(void); + + int + main(int argc, char* argv[]) + { + test_build_pack_x2reset_response(); + exit(0); + } + + void test_build_pack_x2reset_response(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + bool result = build_pack_x2reset_response(&packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + + if (!result) { + printf("#test_build_pack_x2reset_response failed. Packing error %s\n", responseErrorBuf); + return; + } + printf("x2reset response packed size:%lu\nPayload:\n", packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + } + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2setup_request_wrapper_test.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2setup_request_wrapper_test.c new file mode 100644 index 0000000..0fba578 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/tests/x2setup_request_wrapper_test.c @@ -0,0 +1,153 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + + +#include +#include +#include +#include + +void test_build_pack_x2setup_request(); +void test_build_pack_endc_x2setup_request(); +void test_unpack(void); + +int +main(int argc, char* argv[]) +{ + test_build_pack_x2setup_request(); + test_build_pack_endc_x2setup_request(); + test_unpack(); + exit(0); +} + +void test_build_pack_x2setup_request(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + char responseErrorBuf[error_buf_size]; + uint8_t pLMN_Identity[] = {0xa,0xb,0xc}; + uint8_t ric_flag[] = {0xa,0xd,0xe}; + uint8_t eNBId[] = {0xab, 0xcd, 0x7/*0xf,0x7,0x2*/}; + bool result; + E2AP_PDU_t *pdu; + unsigned int bitqty = 21; + /**********************************************************************************/ + + printf("\n----- ATS_ALIGNED_BASIC_PER ----\n"); + packed_buf_size = 4096; + result = build_pack_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty , ric_flag, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER); + if (!result) { + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: 21%s\n", __func__, responseErrorBuf); + + printf("\n----- ATS_UNALIGNED_BASIC_PER ----\n"); + packed_buf_size = 4096; + result = build_pack_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty , ric_flag, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf,ATS_UNALIGNED_BASIC_PER); + if (!result) { + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); + + pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, packed_buf_size, responseDataBuf,error_buf_size, responseErrorBuf,ATS_UNALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: 21%s\n", __func__, responseErrorBuf); +} + +void test_build_pack_endc_x2setup_request(){ + size_t error_buf_size = 8192; + size_t packed_buf_size = 4096; + unsigned char responseDataBuf[packed_buf_size]; + uint8_t pLMN_Identity[] = {0xa,0xb,0xc}; + uint8_t ric_flag[] = {0xa,0xd,0xe}; + uint8_t eNBId[] = {0xf,0x7,0x2}; + unsigned int bitqty=18; + + char responseErrorBuf[error_buf_size]; + bool result = build_pack_endc_x2setup_request( + pLMN_Identity, eNBId, bitqty , ric_flag, + &packed_buf_size, responseDataBuf, error_buf_size, responseErrorBuf); + if (!result) { + printf("#%s. Packing error %s\n", __func__, responseErrorBuf); + return; + } + printf("#%s packed size:%lu\nPayload:\n", __func__, packed_buf_size); + for (size_t i = 0; i < packed_buf_size; ++i) + printf("%02x",responseDataBuf[i]); + printf("\n"); +} + +void test_unpack(void) +{ + return; // No need for now. + char responseErrorBuf[8192]; + printf("\n--------------- case #1\n\n"); + { + uint8_t buf[] = {0x00,0x24,0x00,0x32,0x00,0x00,0x01,0x00,0xf4,0x00,0x2b,0x00,0x00,0x02,0x00,0x15,0x00,0x09,0x00,0xbb,0xbc,0xcc,0x80,0x03,0xab,0xcd,0x80,0x00,0xfa,0x00,0x17,0x00,0x00,0x01,0xf7,0x00,0xbb,0xbc,0xcc,0xab,0xcd,0x80,0x00,0x00,0x00,0xbb,0xbc,0xcc,0x00,0x00,0x00,0x00,0x00,0x01}; + E2AP_PDU_t *pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, sizeof(buf), buf ,sizeof(responseErrorBuf), responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + } + + printf("\n--------------- case #2\n\n"); + { + uint8_t buf[] = {0x00,0x06,0x00,0x2b,0x00,0x00,0x02,0x00,0x15,0x00,0x09,0x00,0x0a,0x0b,0x0c,0x81,0x03,0xab,0xcd,0xc0,0x00,0x14,0x00,0x17,0x00,0x00,0x01,0xf7,0x00,0x0a,0x0b,0x0c,0xab,0xcd,0xc0,0x00,0x00,0x00,0x0a,0x0d,0x0e,0x00,0x00,0x00,0x00,0x00,0x01}; + E2AP_PDU_t *pdu =calloc(1, sizeof(E2AP_PDU_t)); + if (!unpack_pdu_aux(pdu, sizeof(buf), buf ,sizeof(responseErrorBuf), responseErrorBuf,ATS_ALIGNED_BASIC_PER)){ + printf("#%s failed. Packing error %s\n", __func__, responseErrorBuf); + } + + responseErrorBuf[0] = 0; + asn1_pdu_printer(pdu, sizeof(responseErrorBuf), responseErrorBuf); + printf("#%s: %s\n", __func__, responseErrorBuf); + } +} diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2reset_request_wrapper.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2reset_request_wrapper.c new file mode 100644 index 0000000..11874cc --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2reset_request_wrapper.c @@ -0,0 +1,98 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#undef NDEBUG +#include +#include +#include +#include +#include + +/* + * Build and pack a reset request. + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ + +bool +build_pack_x2reset_request(enum Cause_PR cause_group, int cause_value, size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf) +{ + return build_pack_x2reset_request_aux(cause_group, cause_value, packed_buf_size, packed_buf,err_buf_size,err_buf,ATS_ALIGNED_BASIC_PER); + +} + +bool +build_pack_x2reset_request_aux(enum Cause_PR cause_group, int cause_value, size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + InitiatingMessage_t *initiatingMessage = calloc(1, sizeof(InitiatingMessage_t)); + ResetRequest_t *resetRequest; + + assert(pdu != 0); + assert(initiatingMessage != 0); + + + pdu->present = E2AP_PDU_PR_initiatingMessage; + pdu->choice.initiatingMessage = initiatingMessage; + + initiatingMessage->procedureCode = ProcedureCode_id_reset; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_ResetRequest; + resetRequest = &initiatingMessage->value.choice.ResetRequest; + + ResetRequest_IEs_t *cause_ie = calloc(1, sizeof(ResetRequest_IEs_t)); + assert(cause_ie != 0); + ASN_SEQUENCE_ADD(&resetRequest->protocolIEs, cause_ie); + + cause_ie->id = ProtocolIE_ID_id_Cause; + cause_ie->criticality = Criticality_ignore; + cause_ie->value.present = ResetRequest_IEs__value_PR_Cause; + Cause_t *cause = &cause_ie->value.choice.Cause; + cause->present = cause_group; + switch (cause->present) { + case Cause_PR_radioNetwork: + cause->choice.radioNetwork = cause_value; + break; + case Cause_PR_transport: + cause->choice.transport = cause_value; + break; + case Cause_PR_protocol: + cause->choice.protocol = cause_value; + break; + case Cause_PR_misc: + cause->choice.misc = cause_value; + break; + default: + cause->choice.misc = CauseMisc_om_intervention; + break; + } + + rc = pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,syntax); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2reset_response_wrapper.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2reset_response_wrapper.c new file mode 100644 index 0000000..b4cd969 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2reset_response_wrapper.c @@ -0,0 +1,84 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#undef NDEBUG +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Build and pack a reset response. + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ + +bool +build_pack_x2reset_response(size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + + ResetResponse_t *resetResponse; + SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t)); + ResetResponse_IEs_t *resetResponse_ie = calloc(1, sizeof(ResetResponse_IEs_t)); + + assert(pdu != 0); + assert(successfulOutcome != 0); + assert(resetResponse_ie != 0); + + pdu->present = E2AP_PDU_PR_successfulOutcome; + pdu->choice.successfulOutcome = successfulOutcome; + + successfulOutcome->procedureCode = ProcedureCode_id_reset; + successfulOutcome->criticality = Criticality_reject; + successfulOutcome->value.present = SuccessfulOutcome__value_PR_ResetResponse; + resetResponse = &successfulOutcome->value.choice.ResetResponse; + + resetResponse_ie->id = ProtocolIE_ID_id_CriticalityDiagnostics; + resetResponse_ie->criticality = Criticality_ignore; + resetResponse_ie->value.present = ResetResponse_IEs__value_PR_CriticalityDiagnostics; + + ASN_SEQUENCE_ADD(&resetResponse->protocolIEs, resetResponse_ie); + + CriticalityDiagnostics_IE_List_t *critList = calloc(1, sizeof(CriticalityDiagnostics_IE_List_t)); + assert(critList != 0); + + CriticalityDiagnostics_IE_List__Member *member= calloc(1, sizeof(CriticalityDiagnostics_IE_List__Member)); + assert(member != 0); + + ASN_SEQUENCE_ADD(critList ,member); + ASN_SEQUENCE_ADD(resetResponse_ie->value.choice.CriticalityDiagnostics.iEsCriticalityDiagnostics, critList); + + rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + + return rc; +} + diff --git a/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2setup_request_wrapper.c b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2setup_request_wrapper.c new file mode 100644 index 0000000..e8ff475 --- /dev/null +++ b/setup/e2mgr/E2Manager/3rdparty/asn1codec/src/x2setup_request_wrapper.c @@ -0,0 +1,308 @@ +/* + * Copyright 2019 AT&T Intellectual Property + * Copyright 2019 Nokia + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + +#include +#include +#undef NDEBUG +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static void assignPLMN_Identity (PLMN_Identity_t *pLMN_Identity, uint8_t const* pLMNId); +static void assignENB_ID(GlobalENB_ID_t *globalENB_ID,uint8_t const* eNBId, unsigned int bitqty); +static void assignServedCell_Information(ServedCell_Information_t *servedCell_Information,uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty,uint8_t const *ric_flag); + +/* + * Build and pack X2 setup request. + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ + +bool +build_pack_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf +) +{ + return build_pack_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty, ric_flag, + packed_buf_size, packed_buf,err_buf_size,err_buf,ATS_ALIGNED_BASIC_PER); + +} + +bool +build_pack_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax +) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + InitiatingMessage_t *initiatingMessage = calloc(1, sizeof(InitiatingMessage_t)); + X2SetupRequest_t *x2SetupRequest; + + assert(pdu != 0); + assert(initiatingMessage != 0); + + + pdu->present = E2AP_PDU_PR_initiatingMessage; + pdu->choice.initiatingMessage = initiatingMessage; + + initiatingMessage->procedureCode = ProcedureCode_id_x2Setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_X2SetupRequest; + x2SetupRequest = &initiatingMessage->value.choice.X2SetupRequest; + + X2SetupRequest_IEs_t *globalENB_ID_ie = calloc(1, sizeof(X2SetupRequest_IEs_t)); + assert(globalENB_ID_ie != 0); + ASN_SEQUENCE_ADD(&x2SetupRequest->protocolIEs, globalENB_ID_ie); + + globalENB_ID_ie->id = ProtocolIE_ID_id_GlobalENB_ID; + globalENB_ID_ie->criticality = Criticality_reject; + globalENB_ID_ie->value.present = X2SetupRequest_IEs__value_PR_GlobalENB_ID; + GlobalENB_ID_t *globalENB_ID = &globalENB_ID_ie->value.choice.GlobalENB_ID; + + assignPLMN_Identity(&globalENB_ID->pLMN_Identity, pLMN_Identity); + assignENB_ID(globalENB_ID, eNBId, bitqty); + + X2SetupRequest_IEs_t *servedCells_ie = calloc(1, sizeof(X2SetupRequest_IEs_t)); + assert(servedCells_ie != 0); + ASN_SEQUENCE_ADD(&x2SetupRequest->protocolIEs, servedCells_ie); + + servedCells_ie->id = ProtocolIE_ID_id_ServedCells; + servedCells_ie->criticality = Criticality_reject; + servedCells_ie->value.present = X2SetupRequest_IEs__value_PR_ServedCells; + + ServedCells__Member *servedCells__Member = calloc(1,sizeof(ServedCells__Member)); + assert(servedCells__Member !=0); + ASN_SEQUENCE_ADD(&servedCells_ie->value.choice.ServedCells, servedCells__Member); + + assignServedCell_Information(&servedCells__Member->servedCellInfo, pLMN_Identity,eNBId, bitqty,ric_flag); + + rc = pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf,syntax); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} + +static void assignPLMN_Identity (PLMN_Identity_t *pLMN_Identity, uint8_t const* pLMNId) +{ + pLMN_Identity->size = pLMN_Identity_size; + pLMN_Identity->buf = calloc(1,pLMN_Identity->size); + assert(pLMN_Identity->buf != 0); + memcpy(pLMN_Identity->buf, pLMNId, pLMN_Identity->size); +} + +/* + * Calculate and assign the value of ENB_ID. + * Abort the process on allocation failure. + */ +static void assignENB_ID(GlobalENB_ID_t *globalENB_ID,uint8_t const* eNBId, unsigned int bitqty) +{ + size_t size_in_bytes = (bitqty / 8) + ((bitqty % 8) > 0); + int unused_bits = 8 - (bitqty % 8); + uint8_t *tbuf; + switch (bitqty){ + case shortMacro_eNB_ID_size: + globalENB_ID->eNB_ID.present = ENB_ID_PR_short_Macro_eNB_ID; + globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.bits_unused = unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.buf = calloc(1, size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.short_Macro_eNB_ID.buf,eNBId, size_in_bytes) ; + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + case macro_eNB_ID_size: + globalENB_ID->eNB_ID.present =ENB_ID_PR_macro_eNB_ID; + globalENB_ID->eNB_ID.choice.macro_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.macro_eNB_ID.bits_unused = unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.macro_eNB_ID.buf = calloc(1, size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.macro_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.macro_eNB_ID.buf,eNBId,size_in_bytes); + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + case longMacro_eNB_ID_size: + globalENB_ID->eNB_ID.present =ENB_ID_PR_long_Macro_eNB_ID; + globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.bits_unused = unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.buf = calloc(1, size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.long_Macro_eNB_ID.buf,eNBId,size_in_bytes); + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + case home_eNB_ID_size: + globalENB_ID->eNB_ID.present = ENB_ID_PR_home_eNB_ID; + globalENB_ID->eNB_ID.choice.home_eNB_ID.size = size_in_bytes; + globalENB_ID->eNB_ID.choice.home_eNB_ID.bits_unused =unused_bits; + tbuf = globalENB_ID->eNB_ID.choice.home_eNB_ID.buf = calloc(1,size_in_bytes); + assert(globalENB_ID->eNB_ID.choice.home_eNB_ID.buf != 0); + memcpy(globalENB_ID->eNB_ID.choice.home_eNB_ID.buf,eNBId,size_in_bytes); + tbuf[size_in_bytes - 1] <<= unused_bits; + break; + default: + break; + } + +} + +/* + * Calculate and assign the value of ServedCell_Information. + * Abort the process on allocation failure. + */ +static void assignServedCell_Information( + ServedCell_Information_t *servedCell_Information, + uint8_t const* pLMN_Identity, + uint8_t const* eNBId, + unsigned int bitqty, + uint8_t const *ric_flag) +{ + size_t size_in_bytes = (eUTRANcellIdentifier_size / 8) + ((eUTRANcellIdentifier_size % 8) > 0); + int unused_bits = 8 - (eUTRANcellIdentifier_size % 8); + size_t bitqty_size_in_bytes = (bitqty / 8) + ((bitqty % 8) > 0); + int bitqty_unused_bits = 8 - (bitqty % 8); + + servedCell_Information->pCI = 503; + assignPLMN_Identity(&servedCell_Information->cellId.pLMN_Identity, pLMN_Identity); + + servedCell_Information->cellId.eUTRANcellIdentifier.size = size_in_bytes; + servedCell_Information->cellId.eUTRANcellIdentifier.bits_unused = unused_bits; + servedCell_Information->cellId.eUTRANcellIdentifier.buf = calloc(1,servedCell_Information->cellId.eUTRANcellIdentifier.size); + assert(servedCell_Information->cellId.eUTRANcellIdentifier.buf != 0); + memcpy(servedCell_Information->cellId.eUTRANcellIdentifier.buf, eNBId, bitqty_size_in_bytes); + if (bitqty < eUTRANcellIdentifier_size) { + servedCell_Information->cellId.eUTRANcellIdentifier.buf[bitqty_size_in_bytes - 1] <<= bitqty_unused_bits; + } else { + servedCell_Information->cellId.eUTRANcellIdentifier.buf[size_in_bytes - 1] <<= unused_bits; + } + + servedCell_Information->tAC.size = 2; + servedCell_Information->tAC.buf = calloc(1,servedCell_Information->tAC.size); + assert(servedCell_Information->tAC.buf != 0); + + + PLMN_Identity_t *broadcastPLMN_Identity = calloc(1, sizeof(PLMN_Identity_t)); + assert(broadcastPLMN_Identity != 0); + ASN_SEQUENCE_ADD(&servedCell_Information->broadcastPLMNs, broadcastPLMN_Identity); + + assignPLMN_Identity(broadcastPLMN_Identity, pLMN_Identity); //ric_flag: disabled because a real eNB rejects the message + + servedCell_Information->eUTRA_Mode_Info.present= EUTRA_Mode_Info_PR_fDD; + servedCell_Information->eUTRA_Mode_Info.choice.fDD = calloc(1, sizeof(FDD_Info_t)); + assert(servedCell_Information->eUTRA_Mode_Info.choice.fDD != 0); + servedCell_Information->eUTRA_Mode_Info.choice.fDD->uL_EARFCN = 0; + servedCell_Information->eUTRA_Mode_Info.choice.fDD->dL_EARFCN = 0; + servedCell_Information->eUTRA_Mode_Info.choice.fDD->uL_Transmission_Bandwidth = Transmission_Bandwidth_bw6; + servedCell_Information->eUTRA_Mode_Info.choice.fDD->dL_Transmission_Bandwidth = Transmission_Bandwidth_bw15; +} + +/* Build and pack X2 setup request. + * Abort the process on allocation failure. + * packed_buf_size - in: size of packed_buf; out: number of chars used. + */ +bool +build_pack_endc_x2setup_request( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf +) +{ + return build_pack_endc_x2setup_request_aux( + pLMN_Identity, eNBId, bitqty, ric_flag, + packed_buf_size, packed_buf,err_buf_size, err_buf,ATS_ALIGNED_BASIC_PER + ); +} + +bool +build_pack_endc_x2setup_request_aux( + uint8_t const* pLMN_Identity, uint8_t const* eNBId, unsigned int bitqty /*18, 20, 21, 28*/, uint8_t const *ric_flag, + size_t* packed_buf_size, unsigned char* packed_buf,size_t err_buf_size, char* err_buf,enum asn_transfer_syntax syntax +) +{ + bool rc = true; + E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); + InitiatingMessage_t *initiatingMessage = calloc(1, sizeof(InitiatingMessage_t)); + ENDCX2SetupRequest_t *endcX2SetupRequest; + + assert(pdu != 0); + assert(initiatingMessage != 0); + + pdu->present = E2AP_PDU_PR_initiatingMessage; + pdu->choice.initiatingMessage = initiatingMessage; + + initiatingMessage->procedureCode = ProcedureCode_id_endcX2Setup; + initiatingMessage->criticality = Criticality_reject; + initiatingMessage->value.present = InitiatingMessage__value_PR_ENDCX2SetupRequest; + endcX2SetupRequest = &initiatingMessage->value.choice.ENDCX2SetupRequest; + ENDCX2SetupRequest_IEs_t *endcX2SetupRequest_IEs = calloc(1, sizeof(ENDCX2SetupRequest_IEs_t)); + assert(endcX2SetupRequest_IEs != 0); + ASN_SEQUENCE_ADD(&endcX2SetupRequest->protocolIEs, endcX2SetupRequest_IEs); + endcX2SetupRequest_IEs->id = ProtocolIE_ID_id_InitiatingNodeType_EndcX2Setup; + endcX2SetupRequest_IEs->criticality = Criticality_reject; + endcX2SetupRequest_IEs->value.present = ENDCX2SetupRequest_IEs__value_PR_InitiatingNodeType_EndcX2Setup; + endcX2SetupRequest_IEs->value.choice.InitiatingNodeType_EndcX2Setup.present = InitiatingNodeType_EndcX2Setup_PR_init_eNB; + + ProtocolIE_Container_119P85_t *enb_ENDCX2SetupReqIE_Container = calloc(1, sizeof(ProtocolIE_Container_119P85_t)); + assert(enb_ENDCX2SetupReqIE_Container != 0); + endcX2SetupRequest_IEs->value.choice.InitiatingNodeType_EndcX2Setup.choice.init_eNB = (struct ProtocolIE_Container*)enb_ENDCX2SetupReqIE_Container; + ENB_ENDCX2SetupReqIEs_t *globalENB_ID_ie = calloc(1, sizeof(ENB_ENDCX2SetupReqIEs_t)); + assert(globalENB_ID_ie != 0); + ASN_SEQUENCE_ADD(enb_ENDCX2SetupReqIE_Container,globalENB_ID_ie); + globalENB_ID_ie->id = ProtocolIE_ID_id_GlobalENB_ID; + globalENB_ID_ie->criticality = Criticality_reject; + globalENB_ID_ie->value.present = ENB_ENDCX2SetupReqIEs__value_PR_GlobalENB_ID; + + GlobalENB_ID_t *globalENB_ID = &globalENB_ID_ie->value.choice.GlobalENB_ID; + assignPLMN_Identity(&globalENB_ID->pLMN_Identity, pLMN_Identity); + assignENB_ID(globalENB_ID, eNBId, bitqty); + + + ENB_ENDCX2SetupReqIEs_t *ServedEUTRAcellsENDCX2ManagementList_ie = calloc(1, sizeof(ENB_ENDCX2SetupReqIEs_t)); + assert(ServedEUTRAcellsENDCX2ManagementList_ie != 0); + ASN_SEQUENCE_ADD(enb_ENDCX2SetupReqIE_Container, ServedEUTRAcellsENDCX2ManagementList_ie); + + ServedEUTRAcellsENDCX2ManagementList_ie->id = ProtocolIE_ID_id_ServedEUTRAcellsENDCX2ManagementList; + ServedEUTRAcellsENDCX2ManagementList_ie->criticality = Criticality_reject; + ServedEUTRAcellsENDCX2ManagementList_ie->value.present = ENB_ENDCX2SetupReqIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList; + + + ServedEUTRAcellsENDCX2ManagementList__Member *servedEUTRAcellsENDCX2ManagementList__Member = calloc(1, sizeof(ServedEUTRAcellsENDCX2ManagementList__Member)); + assert(servedEUTRAcellsENDCX2ManagementList__Member != 0); + ASN_SEQUENCE_ADD(&ServedEUTRAcellsENDCX2ManagementList_ie->value.choice.ServedEUTRAcellsENDCX2ManagementList, servedEUTRAcellsENDCX2ManagementList__Member); + + assignServedCell_Information(&servedEUTRAcellsENDCX2ManagementList__Member->servedEUTRACellInfo, pLMN_Identity, eNBId, bitqty,ric_flag); + + rc = pack_pdu_aux(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf, syntax); + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); + return rc; +} diff --git a/setup/e2mgr/E2Manager/Dockerfile b/setup/e2mgr/E2Manager/Dockerfile new file mode 100755 index 0000000..b9ad7eb --- /dev/null +++ b/setup/e2mgr/E2Manager/Dockerfile @@ -0,0 +1,57 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:9-u18.04 as ubuntu + +WORKDIR /opt/E2Manager +COPY . . + +# Install dependencies, compile and test the module +RUN apt-get update \ + && apt-get install -y sudo \ + && apt-get --allow-releaseinfo-change update \ + && apt upgrade -y +RUN bash build-e2mgr-ubuntu.sh + +# Build deployable container +FROM ubuntu:18.04 + +RUN apt-get update && apt-get install -y \ + net-tools \ + iputils-ping \ + curl \ + tcpdump \ + jq \ + && rm -rf /var/lib/apt/lists/* + +COPY --from=ubuntu /opt/E2Manager/router.txt /opt/E2Manager/main /opt/E2Manager/ +COPY --from=ubuntu /opt/E2Manager/resources/configuration.yaml /opt/E2Manager/resources/configuration.yaml +COPY --from=ubuntu /opt/E2Manager/resources/rmr.verbose /tmp/rmr.verbose +COPY --from=ubuntu /usr/local/lib/librmr_si.so.4 /usr/local/lib/librmr_si.so.4 + +WORKDIR /opt/E2Manager +ENV LD_LIBRARY_PATH=/usr/local/lib \ + port=3800 +ENV RMR_SEED_RT=router.txt +ENV RMR_VCTL_FILE=/tmp/rmr.verbose +EXPOSE 3800 +CMD ["sh", "-c", "./main -port=$port"] diff --git a/setup/e2mgr/E2Manager/app/main.go b/setup/e2mgr/E2Manager/app/main.go new file mode 100644 index 0000000..d5e16a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/app/main.go @@ -0,0 +1,85 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package main + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/controllers" + "e2mgr/httpserver" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/managers/notificationmanager" + "e2mgr/providers/httpmsghandlerprovider" + "e2mgr/providers/rmrmsghandlerprovider" + "e2mgr/rNibWriter" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrreceiver" + "e2mgr/services/rmrsender" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "gerrit.o-ran-sc.org/r/ric-plt/sdlgo" + "os" + "strconv" +) + +func main() { + config := configuration.ParseConfiguration() + logLevel, _ := logger.LogLevelTokenToLevel(config.Logging.LogLevel) + logger, err := logger.InitLogger(logLevel) + if err != nil { + fmt.Printf("#app.main - failed to initialize logger, error: %s", err) + os.Exit(1) + } + logger.Infof("#app.main - Configuration %s", config) + db := sdlgo.NewDatabase() + sdl := sdlgo.NewSdlInstance("e2Manager", db) + defer sdl.Close() + rnibDataService := services.NewRnibDataService(logger, config, reader.GetRNibReader(sdl), rNibWriter.GetRNibWriter(sdl)) + var msgImpl *rmrCgo.Context + rmrMessenger := msgImpl.Init("tcp:"+strconv.Itoa(config.Rmr.Port), config.Rmr.MaxMsgSize, 0, logger) + rmrSender := rmrsender.NewRmrSender(logger, rmrMessenger) + kubernetes := managers.NewKubernetesManager(logger, config) + ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) + routingManagerClient := clients.NewRoutingManagerClient(logger, config, clients.NewHttpClient()) + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + e2tShutdownManager := managers.NewE2TShutdownManager(logger, config, rnibDataService, e2tInstancesManager, e2tAssociationManager, kubernetes) + e2tKeepAliveWorker := managers.NewE2TKeepAliveWorker(logger, rmrSender, e2tInstancesManager, e2tShutdownManager, config) + rmrNotificationHandlerProvider := rmrmsghandlerprovider.NewNotificationHandlerProvider() + rmrNotificationHandlerProvider.Init(logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager) + + notificationManager := notificationmanager.NewNotificationManager(logger, rmrNotificationHandlerProvider) + rmrReceiver := rmrreceiver.NewRmrReceiver(logger, rmrMessenger, notificationManager) + + e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() + + defer rmrMessenger.Close() + + go rmrReceiver.ListenAndHandle() + go e2tKeepAliveWorker.Execute() + + httpMsgHandlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(logger, rmrSender, config, rnibDataService, ranSetupManager, e2tInstancesManager, e2tAssociationManager, routingManagerClient) + rootController := controllers.NewRootController(rnibDataService) + nodebController := controllers.NewNodebController(logger, httpMsgHandlerProvider) + e2tController := controllers.NewE2TController(logger, httpMsgHandlerProvider) + _ = httpserver.Run(logger, config.Http.Port, rootController, nodebController, e2tController) +} diff --git a/setup/e2mgr/E2Manager/build-e2mgr-ubuntu.sh b/setup/e2mgr/E2Manager/build-e2mgr-ubuntu.sh new file mode 100755 index 0000000..a95cbaf --- /dev/null +++ b/setup/e2mgr/E2Manager/build-e2mgr-ubuntu.sh @@ -0,0 +1,85 @@ +#!/bin/bash +############################################################################## +# +# Copyright (c) 2020 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +# Installs libraries and builds E2 manager +# Prerequisites: +# Debian distro; e.g., Ubuntu +# NNG shared library +# golang (go); tested with version 1.12 +# current working directory is E2Manager +# running with sudo privs, which is default in Docker + +# Stop at first error and be verbose +set -eux + +echo "--> e2mgr-build-ubuntu.sh" + +# Install RMR from deb packages at packagecloud.io +rmr=rmr_4.0.2_amd64.deb +wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/$rmr/download.deb +#sudo +dpkg -i $rmr +rm $rmr +rmrdev=rmr-dev_4.0.2_amd64.deb +wget --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/$rmrdev/download.deb +#sudo +dpkg -i $rmrdev +rm $rmrdev + +# required to find nng and rmr libs +export LD_LIBRARY_PATH=/usr/local/lib + +# go installs tools like go-acc to $HOME/go/bin +# ubuntu minion path lacks go +export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin + +# install the go coverage tool helper +go get -v github.com/ory/go-acc + +cd 3rdparty/asn1codec \ + && make clobber \ + && make \ + && cd ../.. + +go build -v app/main.go + +# Execute UT and measure coverage +# cgocheck=2 enables expensive checks that should not miss any errors, +# but will cause your program to run slower. +# clobberfree=1 causes the garbage collector to clobber the memory content +# of an object with bad content when it frees the object. +# gcstoptheworld=1 disables concurrent garbage collection, making every +# garbage collection a stop-the-world event. +# Setting gcstoptheworld=2 also disables concurrent sweeping after the +# garbage collection finishes. +# Setting allocfreetrace=1 causes every allocation to be profiled and a +# stack trace printed on each object's allocation and free. +export GODEBUG=cgocheck=2,clobberfree=1,gcstoptheworld=2,allocfreetrace=0 +# Static route table is provided in git repo +export RMR_SEED_RT=$(pwd)/router_test.txt +# writes to coverage.txt by default +# SonarCloud accepts the text format +go-acc $(go list ./... | grep -vE '(/mocks|/tests|/e2managererrors|/enums)' ) + +# TODO: drop rewrite of path prefix when SonarScanner is extended +# rewrite the module name to a directory name in the coverage report +# https://jira.sonarsource.com/browse/SONARSLANG-450 +sed -i -e 's/^e2mgr/E2Manager/' coverage.txt + +echo "--> e2mgr-build-ubuntu.sh ends" diff --git a/setup/e2mgr/E2Manager/clients/http_client.go b/setup/e2mgr/E2Manager/clients/http_client.go new file mode 100644 index 0000000..e4e5005 --- /dev/null +++ b/setup/e2mgr/E2Manager/clients/http_client.go @@ -0,0 +1,47 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package clients + +import ( + "io" + "net/http" +) + +type IHttpClient interface { + Post(url, contentType string, body io.Reader) (resp *http.Response, err error) + Delete(url, contentType string, body io.Reader) (resp *http.Response, err error) +} + +type HttpClient struct { + *http.Client +} + +func NewHttpClient() *HttpClient { + return &HttpClient{ + &http.Client{}, + } +} + +func (c *HttpClient) Delete(url, contentType string, body io.Reader) (resp *http.Response, err error) { + req, _ := http.NewRequest(http.MethodDelete, url, body) + req.Header.Set("Content-Type", contentType) + return c.Do(req) +} + diff --git a/setup/e2mgr/E2Manager/clients/routing_manager_client.go b/setup/e2mgr/E2Manager/clients/routing_manager_client.go new file mode 100644 index 0000000..2625612 --- /dev/null +++ b/setup/e2mgr/E2Manager/clients/routing_manager_client.go @@ -0,0 +1,160 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package clients + +import ( + "bytes" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "encoding/json" + "net/http" +) + +const ( + AddE2TInstanceApiSuffix = "e2t" + AssociateRanToE2TInstanceApiSuffix = "associate-ran-to-e2t" + DissociateRanE2TInstanceApiSuffix = "dissociate-ran" + DeleteE2TInstanceApiSuffix = "e2t" +) + +type RoutingManagerClient struct { + logger *logger.Logger + config *configuration.Configuration + httpClient IHttpClient +} + +type IRoutingManagerClient interface { + AddE2TInstance(e2tAddress string) error + AssociateRanToE2TInstance(e2tAddress string, ranName string) error + DissociateRanE2TInstance(e2tAddress string, ranName string) error + DissociateAllRans(e2tAddresses []string) error + DeleteE2TInstance(e2tAddress string, ransToBeDissociated []string) error +} + +func NewRoutingManagerClient(logger *logger.Logger, config *configuration.Configuration, httpClient IHttpClient) *RoutingManagerClient { + return &RoutingManagerClient{ + logger: logger, + config: config, + httpClient: httpClient, + } +} + +func (c *RoutingManagerClient) AddE2TInstance(e2tAddress string) error { + + data := models.NewRoutingManagerE2TData(e2tAddress) + url := c.config.RoutingManager.BaseUrl + AddE2TInstanceApiSuffix + + return c.PostMessage(url, data) +} + +func (c *RoutingManagerClient) AssociateRanToE2TInstance(e2tAddress string, ranName string) error { + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(e2tAddress, ranName)} + url := c.config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix + + return c.PostMessage(url, data) +} + +func (c *RoutingManagerClient) DissociateRanE2TInstance(e2tAddress string, ranName string) error { + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(e2tAddress, ranName)} + url := c.config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix + + return c.PostMessage(url, data) +} + +func (c *RoutingManagerClient) DissociateAllRans(e2tAddresses []string) error { + + data := mapE2TAddressesToE2DataList(e2tAddresses) + url := c.config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix + + return c.PostMessage(url, data) +} + +func (c *RoutingManagerClient) DeleteE2TInstance(e2tAddress string, ransTobeDissociated []string) error { + data := models.NewRoutingManagerDeleteRequestModel(e2tAddress, ransTobeDissociated, nil) + url := c.config.RoutingManager.BaseUrl + DeleteE2TInstanceApiSuffix + return c.DeleteMessage(url, data) +} + +func (c *RoutingManagerClient) sendMessage(method string, url string, data interface{}) error { + marshaled, err := json.Marshal(data) + + if err != nil { + return e2managererrors.NewRoutingManagerError() + } + + body := bytes.NewBuffer(marshaled) + c.logger.Infof("[E2 Manager -> Routing Manager] #RoutingManagerClient.sendMessage - %s url: %s, request body: %+v", method, url, body) + + var resp *http.Response + + if method == http.MethodPost { + resp, err = c.httpClient.Post(url, "application/json", body) + } else if method == http.MethodDelete { + resp, err = c.httpClient.Delete(url, "application/json", body) + } + + if err != nil { + c.logger.Errorf("#RoutingManagerClient.sendMessage - failed sending request. error: %s", err) + return e2managererrors.NewRoutingManagerError() + } + + defer resp.Body.Close() + + if resp.StatusCode >= http.StatusOK && resp.StatusCode < http.StatusMultipleChoices { + c.logger.Infof("[Routing Manager -> E2 Manager] #RoutingManagerClient.sendMessage - success. http status code: %d", resp.StatusCode) + return nil + } + + c.logger.Errorf("[Routing Manager -> E2 Manager] #RoutingManagerClient.sendMessage - failure. http status code: %d", resp.StatusCode) + return e2managererrors.NewRoutingManagerError() +} + +func (c *RoutingManagerClient) DeleteMessage(url string, data interface{}) error { + return c.sendMessage(http.MethodDelete, url, data) +} + +func (c *RoutingManagerClient) PostMessage(url string, data interface{}) error { + return c.sendMessage(http.MethodPost, url, data) +} + +func mapE2TAddressesToE2DataList(e2tAddresses []string) models.RoutingManagerE2TDataList { + e2tDataList := make(models.RoutingManagerE2TDataList, len(e2tAddresses)) + + for i, v := range e2tAddresses { + e2tDataList[i] = models.NewRoutingManagerE2TData(v) + } + + return e2tDataList +} + +func convertE2TToRansAssociationsMapToE2TDataList(e2tToRansAssociations map[string][]string) models.RoutingManagerE2TDataList { + e2tDataList := make(models.RoutingManagerE2TDataList, len(e2tToRansAssociations)) + i := 0 + for k, v := range e2tToRansAssociations { + e2tDataList[i] = models.NewRoutingManagerE2TData(k, v...) + i++ + } + + return e2tDataList +} diff --git a/setup/e2mgr/E2Manager/clients/routing_manager_client_test.go b/setup/e2mgr/E2Manager/clients/routing_manager_client_test.go new file mode 100644 index 0000000..bf5f82c --- /dev/null +++ b/setup/e2mgr/E2Manager/clients/routing_manager_client_test.go @@ -0,0 +1,218 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package clients + +import ( + "bytes" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "encoding/json" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "io/ioutil" + "net/http" + "testing" +) + +const E2TAddress = "10.0.2.15:38000" +const E2TAddress2 = "10.0.2.15:38001" +const RanName = "test1" + +func initRoutingManagerClientTest(t *testing.T) (*RoutingManagerClient, *mocks.HttpClientMock, *configuration.Configuration) { + logger := initLog(t) + config := &configuration.Configuration{} + config.RoutingManager.BaseUrl = "http://iltlv740.intl.att.com:8080/ric/v1/handles/" + httpClientMock := &mocks.HttpClientMock{} + rmClient := NewRoutingManagerClient(logger, config, httpClientMock) + return rmClient, httpClientMock, config +} + +func TestDeleteE2TInstanceSuccess(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + "e2t" + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusOK, Body: respBody}, nil) + err := rmClient.DeleteE2TInstance(E2TAddress, []string{"test1"}) + assert.Nil(t, err) +} + +func TestDeleteE2TInstanceFailure(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"},nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + "e2t" + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil) + err := rmClient.DeleteE2TInstance(E2TAddress, []string{"test1"}) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +func TestDeleteE2TInstanceDeleteFailure(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"},nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + "e2t" + httpClientMock.On("Delete", url, "application/json", body).Return(&http.Response{}, errors.New("error")) + err := rmClient.DeleteE2TInstance(E2TAddress, []string{"test1"}) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +func TestAddE2TInstanceSuccess(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.NewRoutingManagerE2TData(E2TAddress) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + "e2t" + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + err := rmClient.AddE2TInstance(E2TAddress) + assert.Nil(t, err) +} + +func TestAddE2TInstanceHttpPostFailure(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.NewRoutingManagerE2TData(E2TAddress) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + "e2t" + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error")) + err := rmClient.AddE2TInstance(E2TAddress) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +func TestAddE2TInstanceFailure(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.NewRoutingManagerE2TData(E2TAddress) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + "e2t" + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil) + err := rmClient.AddE2TInstance(E2TAddress) + assert.NotNil(t, err) +} + +func TestAssociateRanToE2TInstance_Success(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + err := rmClient.AssociateRanToE2TInstance(E2TAddress, RanName) + assert.Nil(t, err) +} + +func TestAssociateRanToE2TInstance_RoutingManagerError(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error")) + err := rmClient.AssociateRanToE2TInstance(E2TAddress, RanName) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +func TestAssociateRanToE2TInstance_RoutingManager_400(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + AssociateRanToE2TInstanceApiSuffix + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil) + err := rmClient.AssociateRanToE2TInstance(E2TAddress, RanName) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +func TestDissociateRanE2TInstance_Success(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + err := rmClient.DissociateRanE2TInstance(E2TAddress, RanName) + assert.Nil(t, err) +} + +func TestDissociateRanE2TInstance_RoutingManagerError(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{}, errors.New("error")) + err := rmClient.DissociateRanE2TInstance(E2TAddress, RanName) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +func TestDissociateRanE2TInstance_RoutingManager_400(t *testing.T) { + rmClient, httpClientMock, config := initRoutingManagerClientTest(t) + + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := config.RoutingManager.BaseUrl + DissociateRanE2TInstanceApiSuffix + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil) + err := rmClient.DissociateRanE2TInstance(E2TAddress, RanName) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) +} + +// TODO: extract to test_utils +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} + +//func TestAddE2TInstanceInteg(t *testing.T) { +// logger := initLog(t) +// config := configuration.ParseConfiguration() +// httpClient := &http.Client{} +// rmClient := NewRoutingManagerClient(logger, config, httpClient) +// err := rmClient.AddE2TInstance(E2TAddress) +// assert.Nil(t, err) +//} diff --git a/setup/e2mgr/E2Manager/configuration/configuration.go b/setup/e2mgr/E2Manager/configuration/configuration.go new file mode 100644 index 0000000..5e4c31e --- /dev/null +++ b/setup/e2mgr/E2Manager/configuration/configuration.go @@ -0,0 +1,154 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package configuration + +import ( + "fmt" + "github.com/spf13/viper" +) + +type Configuration struct { + Logging struct { + LogLevel string + } + Http struct { + Port int + } + Rmr struct { + Port int + MaxMsgSize int + } + RoutingManager struct { + BaseUrl string + } +/* Kubernetes struct { + ConfigPath string + KubeNamespace string + }*/ + NotificationResponseBuffer int + BigRedButtonTimeoutSec int + MaxRnibConnectionAttempts int + RnibRetryIntervalMs int + KeepAliveResponseTimeoutMs int + KeepAliveDelayMs int + E2TInstanceDeletionTimeoutMs int + GlobalRicId struct { + PlmnId string + RicNearRtId string + } +} + +func ParseConfiguration() *Configuration { + viper.SetConfigType("yaml") + viper.SetConfigName("configuration") + viper.AddConfigPath("E2Manager/resources/") + viper.AddConfigPath("./resources/") //For production + viper.AddConfigPath("../resources/") //For test under Docker + viper.AddConfigPath("../../resources/") //For test under Docker + err := viper.ReadInConfig() + if err != nil { + panic(fmt.Sprintf("#configuration.ParseConfiguration - failed to read configuration file: %s\n", err)) + } + + config := Configuration{} + config.populateRmrConfig(viper.Sub("rmr")) + config.populateHttpConfig(viper.Sub("http")) + config.populateLoggingConfig(viper.Sub("logging")) + config.populateRoutingManagerConfig(viper.Sub("routingManager")) + //config.populateKubernetesConfig(viper.Sub("kubernetes")) + config.NotificationResponseBuffer = viper.GetInt("notificationResponseBuffer") + config.BigRedButtonTimeoutSec = viper.GetInt("bigRedButtonTimeoutSec") + config.MaxRnibConnectionAttempts = viper.GetInt("maxRnibConnectionAttempts") + config.RnibRetryIntervalMs = viper.GetInt("rnibRetryIntervalMs") + config.KeepAliveResponseTimeoutMs = viper.GetInt("keepAliveResponseTimeoutMs") + config.KeepAliveDelayMs = viper.GetInt("KeepAliveDelayMs") + config.E2TInstanceDeletionTimeoutMs = viper.GetInt("e2tInstanceDeletionTimeoutMs") + config.populateGlobalRicIdConfig(viper.Sub("globalRicId")) + return &config +} + +func (c *Configuration) populateLoggingConfig(logConfig *viper.Viper) { + if logConfig == nil { + panic(fmt.Sprintf("#configuration.populateLoggingConfig - failed to populate logging configuration: The entry 'logging' not found\n")) + } + c.Logging.LogLevel = logConfig.GetString("logLevel") +} + +func (c *Configuration) populateHttpConfig(httpConfig *viper.Viper) { + if httpConfig == nil { + panic(fmt.Sprintf("#configuration.populateHttpConfig - failed to populate HTTP configuration: The entry 'http' not found\n")) + } + c.Http.Port = httpConfig.GetInt("port") +} + +func (c *Configuration) populateRmrConfig(rmrConfig *viper.Viper) { + if rmrConfig == nil { + panic(fmt.Sprintf("#configuration.populateRmrConfig - failed to populate RMR configuration: The entry 'rmr' not found\n")) + } + c.Rmr.Port = rmrConfig.GetInt("port") + c.Rmr.MaxMsgSize = rmrConfig.GetInt("maxMsgSize") +} + +func (c *Configuration) populateRoutingManagerConfig(rmConfig *viper.Viper) { + if rmConfig == nil { + panic(fmt.Sprintf("#configuration.populateRoutingManagerConfig - failed to populate Routing Manager configuration: The entry 'routingManager' not found\n")) + } + c.RoutingManager.BaseUrl = rmConfig.GetString("baseUrl") +} + +/*func (c *Configuration) populateKubernetesConfig(rmConfig *viper.Viper) { + if rmConfig == nil { + panic(fmt.Sprintf("#configuration.populateKubernetesConfig - failed to populate Kubernetes configuration: The entry 'kubernetes' not found\n")) + } + c.Kubernetes.ConfigPath = rmConfig.GetString("configPath") + c.Kubernetes.KubeNamespace = rmConfig.GetString("kubeNamespace") +}*/ + +func (c *Configuration) populateGlobalRicIdConfig(globalRicIdConfig *viper.Viper) { + if globalRicIdConfig == nil { + panic(fmt.Sprintf("#configuration.populateGlobalRicIdConfig - failed to populate Global RicId configuration: The entry 'globalRicId' not found\n")) + } + c.GlobalRicId.PlmnId = globalRicIdConfig.GetString("plmnId") + c.GlobalRicId.RicNearRtId = globalRicIdConfig.GetString("ricNearRtId") +} + +func (c *Configuration) String() string { + return fmt.Sprintf("{logging.logLevel: %s, http.port: %d, rmr: { port: %d, maxMsgSize: %d}, routingManager.baseUrl: %s, "+ + "notificationResponseBuffer: %d, bigRedButtonTimeoutSec: %d, maxRnibConnectionAttempts: %d, "+ + "rnibRetryIntervalMs: %d, keepAliveResponseTimeoutMs: %d, keepAliveDelayMs: %d, e2tInstanceDeletionTimeoutMs: %d, "+ + "globalRicId: { plmnId: %s, ricNearRtId: %s}",//, kubernetes: {configPath: %s, kubeNamespace: %s}}", + c.Logging.LogLevel, + c.Http.Port, + c.Rmr.Port, + c.Rmr.MaxMsgSize, + c.RoutingManager.BaseUrl, + c.NotificationResponseBuffer, + c.BigRedButtonTimeoutSec, + c.MaxRnibConnectionAttempts, + c.RnibRetryIntervalMs, + c.KeepAliveResponseTimeoutMs, + c.KeepAliveDelayMs, + c.E2TInstanceDeletionTimeoutMs, + c.GlobalRicId.PlmnId, + c.GlobalRicId.RicNearRtId, +/* c.Kubernetes.ConfigPath, + c.Kubernetes.KubeNamespace,*/ + ) +} diff --git a/setup/e2mgr/E2Manager/configuration/configuration_test.go b/setup/e2mgr/E2Manager/configuration/configuration_test.go new file mode 100644 index 0000000..695ed9a --- /dev/null +++ b/setup/e2mgr/E2Manager/configuration/configuration_test.go @@ -0,0 +1,255 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package configuration + +import ( + "github.com/stretchr/testify/assert" + "gopkg.in/yaml.v2" + "io/ioutil" + "os" + "testing" +) + +func TestParseConfigurationSuccess(t *testing.T) { + config := ParseConfiguration() + assert.Equal(t, 3800, config.Http.Port) + assert.Equal(t, 3801, config.Rmr.Port) + assert.Equal(t, 65536, config.Rmr.MaxMsgSize) + assert.Equal(t, "info", config.Logging.LogLevel) + assert.Equal(t, 100, config.NotificationResponseBuffer) + assert.Equal(t, 5, config.BigRedButtonTimeoutSec) + assert.Equal(t, 4500, config.KeepAliveResponseTimeoutMs) + assert.Equal(t, 1500, config.KeepAliveDelayMs) + assert.Equal(t, 15000, config.E2TInstanceDeletionTimeoutMs) + assert.NotNil(t, config.GlobalRicId) + assert.NotEmpty(t, config.GlobalRicId.PlmnId) + assert.NotEmpty(t, config.GlobalRicId.RicNearRtId) +/* assert.NotEmpty(t, config.Kubernetes.KubeNamespace) + assert.NotEmpty(t, config.Kubernetes.ConfigPath)*/ +} + +func TestStringer(t *testing.T) { + config := ParseConfiguration().String() + assert.NotEmpty(t, config) +} + +func TestParseConfigurationFileNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + assert.Panics(t, func() { ParseConfiguration() }) +} + +func TestRmrConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestRmrConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestRmrConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "logging": map[string]interface{}{"logLevel": "info"}, + "http": map[string]interface{}{"port": 3800}, + "routingManager": map[string]interface{}{"baseUrl": "http://iltlv740.intl.att.com:8080/ric/v1/handles/"}, + "globalRicId": map[string]interface{}{"plmnId": "131014", "ricNearRtId": "556670"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestRmrConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestRmrConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.populateRmrConfig - failed to populate RMR configuration: The entry 'rmr' not found\n", func() { ParseConfiguration() }) +} + +func TestLoggingConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestLoggingConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestLoggingConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "http": map[string]interface{}{"port": 3800}, + "routingManager": map[string]interface{}{"baseUrl": "http://iltlv740.intl.att.com:8080/ric/v1/handles/"}, + "globalRicId": map[string]interface{}{"plmnId": "131014", "ricNearRtId": "556670"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestRmrConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestRmrConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.populateLoggingConfig - failed to populate logging configuration: The entry 'logging' not found\n", + func() { ParseConfiguration() }) +} + +func TestHttpConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "logging": map[string]interface{}{"logLevel": "info"}, + "routingManager": map[string]interface{}{"baseUrl": "http://iltlv740.intl.att.com:8080/ric/v1/handles/"}, + "globalRicId": map[string]interface{}{"plmnId": "131014", "ricNearRtId": "556670"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.populateHttpConfig - failed to populate HTTP configuration: The entry 'http' not found\n", + func() { ParseConfiguration() }) +} + +func TestRoutingManagerConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestRoutingManagerConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestRoutingManagerConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "logging": map[string]interface{}{"logLevel": "info"}, + "http": map[string]interface{}{"port": 3800}, + "globalRicId": map[string]interface{}{"plmnId": "131014", "ricNearRtId": "556670"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestRoutingManagerConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestRoutingManagerConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.populateRoutingManagerConfig - failed to populate Routing Manager configuration: The entry 'routingManager' not found\n", + func() { ParseConfiguration() }) +} + +func TestGlobalRicIdConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestGlobalRicIdConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestGlobalRicIdConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "logging": map[string]interface{}{"logLevel": "info"}, + "http": map[string]interface{}{"port": 3800}, + "routingManager": map[string]interface{}{"baseUrl": "http://iltlv740.intl.att.com:8080/ric/v1/handles/"}, + //"kubernetes": map[string]interface{}{"kubeNamespace": "test", "ConfigPath": "test"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestGlobalRicIdConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestGlobalRicIdConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.populateGlobalRicIdConfig - failed to populate Global RicId configuration: The entry 'globalRicId' not found\n", + func() { ParseConfiguration() }) +} + +/*func TestKubernetesConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestKubernetesConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestKubernetesConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{ + "rmr": map[string]interface{}{"port": 3801, "maxMsgSize": 4096}, + "logging": map[string]interface{}{"logLevel": "info"}, + "http": map[string]interface{}{"port": 3800}, + "routingManager": map[string]interface{}{"baseUrl": "http://iltlv740.intl.att.com:8080/ric/v1/handles/"}, + "globalRicId": map[string]interface{}{"plmnId": "131014", "ricNearRtId": "556670"}, + } + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestKubernetesConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestKubernetesConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.populateKubernetesConfig - failed to populate Kubernetes configuration: The entry 'kubernetes' not found\n", + func() { ParseConfiguration() }) +}*/ diff --git a/setup/e2mgr/E2Manager/container-tag.yaml b/setup/e2mgr/E2Manager/container-tag.yaml new file mode 100644 index 0000000..ccff1ff --- /dev/null +++ b/setup/e2mgr/E2Manager/container-tag.yaml @@ -0,0 +1,4 @@ +# The Jenkins job requires a tag to build the Docker image. +# Global-JJB script assumes this file is in the repo root. +--- +tag: 4.4.12 diff --git a/setup/e2mgr/E2Manager/controllers/e2t_controller.go b/setup/e2mgr/E2Manager/controllers/e2t_controller.go new file mode 100644 index 0000000..5b1b38d --- /dev/null +++ b/setup/e2mgr/E2Manager/controllers/e2t_controller.go @@ -0,0 +1,115 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package controllers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/providers/httpmsghandlerprovider" + "encoding/json" + "net/http" + "net/http/httputil" + "strings" +) + +type IE2TController interface { + GetE2TInstances(writer http.ResponseWriter, r *http.Request) +} + +type E2TController struct { + logger *logger.Logger + handlerProvider *httpmsghandlerprovider.IncomingRequestHandlerProvider +} + +func NewE2TController(logger *logger.Logger, handlerProvider *httpmsghandlerprovider.IncomingRequestHandlerProvider) *E2TController { + return &E2TController{ + logger: logger, + handlerProvider: handlerProvider, + } +} + +func (c *E2TController) GetE2TInstances(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #E2TController.GetE2TInstances - request: %v", c.prettifyRequest(r)) + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.GetE2TInstancesRequest, nil, false) +} + +func (c *E2TController) handleRequest(writer http.ResponseWriter, header *http.Header, requestName httpmsghandlerprovider.IncomingRequest, request models.Request, validateHeader bool) { + + handler, err := c.handlerProvider.GetHandler(requestName) + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + response, err := handler.Handle(request) + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + result, err := response.Marshal() + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + c.logger.Infof("[E2 Manager -> Client] #E2TController.handleRequest - response: %s", result) + writer.Header().Set("Content-Type", "application/json") + writer.Write(result) +} + +func (c *E2TController) handleErrorResponse(err error, writer http.ResponseWriter) { + + var errorResponseDetails models.ErrorResponse + var httpError int + + if err != nil { + switch err.(type) { + case *e2managererrors.RnibDbError: + e2Error, _ := err.(*e2managererrors.RnibDbError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusInternalServerError + default: + e2Error := e2managererrors.NewInternalError() + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusInternalServerError + } + } + + errorResponse, _ := json.Marshal(errorResponseDetails) + + c.logger.Errorf("[E2 Manager -> Client] #E2TController.handleErrorResponse - http status: %d, error response: %+v", httpError, errorResponseDetails) + + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(httpError) + _, err = writer.Write(errorResponse) +} + +func (c *E2TController) prettifyRequest(request *http.Request) string { + dump, _ := httputil.DumpRequest(request, true) + requestPrettyPrint := strings.Replace(string(dump), "\r\n", " ", -1) + return strings.Replace(requestPrettyPrint, "\n", "", -1) +} diff --git a/setup/e2mgr/E2Manager/controllers/e2t_controller_test.go b/setup/e2mgr/E2Manager/controllers/e2t_controller_test.go new file mode 100644 index 0000000..943b138 --- /dev/null +++ b/setup/e2mgr/E2Manager/controllers/e2t_controller_test.go @@ -0,0 +1,137 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +package controllers + +import ( + "e2mgr/configuration" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/providers/httpmsghandlerprovider" + "e2mgr/services" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/magiconair/properties/assert" + "github.com/pkg/errors" + "io/ioutil" + "net/http" + "net/http/httptest" + "testing" +) + +const E2TAddress string = "10.0.2.15:38000" +const E2TAddress2 string = "10.0.2.16:38001" + +type controllerE2TInstancesTestContext struct { + e2tAddresses []string + e2tInstances []*entities.E2TInstance + error error + expectedStatusCode int + expectedJsonResponse string +} + +func setupE2TControllerTest(t *testing.T) (*E2TController, *mocks.RnibReaderMock) { + log := initLog(t) + config := configuration.ParseConfiguration() + + readerMock := &mocks.RnibReaderMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) + handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, nil, config, rnibDataService, nil, e2tInstancesManager, &managers.E2TAssociationManager{}, nil) + controller := NewE2TController(log, handlerProvider) + return controller, readerMock +} + +func controllerGetE2TInstancesTestExecuter(t *testing.T, context *controllerE2TInstancesTestContext) { + controller, readerMock := setupE2TControllerTest(t) + writer := httptest.NewRecorder() + readerMock.On("GetE2TAddresses").Return(context.e2tAddresses, context.error) + + if context.e2tInstances != nil { + readerMock.On("GetE2TInstances", context.e2tAddresses).Return(context.e2tInstances, context.error) + } + + req, _ := http.NewRequest("GET", "/e2t/list", nil) + controller.GetE2TInstances(writer, req) + assert.Equal(t, context.expectedStatusCode, writer.Result().StatusCode) + bodyBytes, _ := ioutil.ReadAll(writer.Body) + assert.Equal(t, context.expectedJsonResponse, string(bodyBytes)) + readerMock.AssertExpectations(t) +} + +func TestControllerGetE2TInstancesSuccess(t *testing.T) { + ranNames1 := []string{"test1", "test2", "test3"} + e2tInstanceResponseModel1 := models.NewE2TInstanceResponseModel(E2TAddress, ranNames1) + e2tInstanceResponseModel2 := models.NewE2TInstanceResponseModel(E2TAddress2, []string{}) + e2tInstancesResponse := models.E2TInstancesResponse{e2tInstanceResponseModel1, e2tInstanceResponseModel2} + bytes, _ := json.Marshal(e2tInstancesResponse) + + context := controllerE2TInstancesTestContext{ + e2tAddresses: []string{E2TAddress, E2TAddress2}, + e2tInstances: []*entities.E2TInstance{{Address: E2TAddress, AssociatedRanList: ranNames1}, {Address: E2TAddress2, AssociatedRanList: []string{}}}, + error: nil, + expectedStatusCode: http.StatusOK, + expectedJsonResponse: string(bytes), + } + + controllerGetE2TInstancesTestExecuter(t, &context) +} + +func TestControllerGetE2TInstancesEmptySuccess(t *testing.T) { + e2tInstancesResponse := models.E2TInstancesResponse{} + bytes, _ := json.Marshal(e2tInstancesResponse) + + context := controllerE2TInstancesTestContext{ + e2tAddresses: []string{}, + e2tInstances: nil, + error: nil, + expectedStatusCode: http.StatusOK, + expectedJsonResponse: string(bytes), + } + + controllerGetE2TInstancesTestExecuter(t, &context) +} + +func TestControllerGetE2TInstancesInternal(t *testing.T) { + context := controllerE2TInstancesTestContext{ + e2tAddresses: nil, + e2tInstances: nil, + error: common.NewInternalError(errors.New("error")), + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: "{\"errorCode\":500,\"errorMessage\":\"RNIB error\"}", + } + + controllerGetE2TInstancesTestExecuter(t, &context) +} + +func TestInvalidRequestName(t *testing.T) { + controller, _ := setupE2TControllerTest(t) + + writer := httptest.NewRecorder() + + header := &http.Header{} + + controller.handleRequest(writer, header, "", nil, true) + + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, 501) +} diff --git a/setup/e2mgr/E2Manager/controllers/nodeb_controller.go b/setup/e2mgr/E2Manager/controllers/nodeb_controller.go new file mode 100644 index 0000000..90b9311 --- /dev/null +++ b/setup/e2mgr/E2Manager/controllers/nodeb_controller.go @@ -0,0 +1,293 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package controllers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/providers/httpmsghandlerprovider" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" + "github.com/gorilla/mux" + "io" + "io/ioutil" + "net/http" + "net/http/httputil" + "strings" +) + +const ( + ParamRanName = "ranName" + LimitRequest = 2000 +) + +type INodebController interface { + Shutdown(writer http.ResponseWriter, r *http.Request) + X2Reset(writer http.ResponseWriter, r *http.Request) + X2Setup(writer http.ResponseWriter, r *http.Request) + EndcSetup(writer http.ResponseWriter, r *http.Request) + GetNodeb(writer http.ResponseWriter, r *http.Request) + UpdateGnb(writer http.ResponseWriter, r *http.Request) + GetNodebIdList(writer http.ResponseWriter, r *http.Request) +} + +type NodebController struct { + logger *logger.Logger + handlerProvider *httpmsghandlerprovider.IncomingRequestHandlerProvider +} + +func NewNodebController(logger *logger.Logger, handlerProvider *httpmsghandlerprovider.IncomingRequestHandlerProvider) *NodebController { + return &NodebController{ + logger: logger, + handlerProvider: handlerProvider, + } +} + +func (c *NodebController) GetNodebIdList(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.GetNodebIdList - request: %v", c.prettifyRequest(r)) + + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.GetNodebIdListRequest, nil, false) +} + +func (c *NodebController) GetNodeb(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.GetNodeb - request: %v", c.prettifyRequest(r)) + vars := mux.Vars(r) + ranName := vars["ranName"] + request := models.GetNodebRequest{RanName: ranName} + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.GetNodebRequest, request, false) +} + +func (c *NodebController) UpdateGnb(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.UpdateGnb - request: %v", c.prettifyRequest(r)) + vars := mux.Vars(r) + ranName := vars[ParamRanName] + + request := models.UpdateGnbRequest{} + + gnb := entities.Gnb{} + + if !c.extractRequestBodyToProto(r, &gnb, writer) { + return + } + + request.Gnb = &gnb; + request.RanName = ranName + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.UpdateGnbRequest, request, true) +} + +func (c *NodebController) Shutdown(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.Shutdown - request: %v", c.prettifyRequest(r)) + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.ShutdownRequest, nil, false) +} + +func (c *NodebController) X2Reset(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.X2Reset - request: %v", c.prettifyRequest(r)) + request := models.ResetRequest{} + vars := mux.Vars(r) + ranName := vars[ParamRanName] + + if r.ContentLength > 0 && !c.extractJsonBody(r, &request, writer) { + return + } + request.RanName = ranName + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.ResetRequest, request, false) +} + +func (c *NodebController) X2Setup(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.X2Setup - request: %v", c.prettifyRequest(r)) + + request := models.SetupRequest{} + + if !c.extractJsonBody(r, &request, writer) { + return + } + + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.X2SetupRequest, request, true) +} + +func (c *NodebController) EndcSetup(writer http.ResponseWriter, r *http.Request) { + c.logger.Infof("[Client -> E2 Manager] #NodebController.EndcSetup - request: %v", c.prettifyRequest(r)) + + request := models.SetupRequest{} + + if !c.extractJsonBody(r, &request, writer) { + return + } + + c.handleRequest(writer, &r.Header, httpmsghandlerprovider.EndcSetupRequest, request, true) +} + +func (c *NodebController) extractRequestBodyToProto(r *http.Request, pb proto.Message , writer http.ResponseWriter) bool { + defer r.Body.Close() + + err := jsonpb.Unmarshal(r.Body, pb) + + if err != nil { + c.logger.Errorf("[Client -> E2 Manager] #NodebController.extractJsonBody - unable to extract json body - error: %s", err) + c.handleErrorResponse(e2managererrors.NewInvalidJsonError(), writer) + return false + } + + return true +} + +func (c *NodebController) extractJsonBody(r *http.Request, request models.Request, writer http.ResponseWriter) bool { + defer r.Body.Close() + body, err := ioutil.ReadAll(io.LimitReader(r.Body, LimitRequest)) + + if err != nil { + c.logger.Errorf("[Client -> E2 Manager] #NodebController.extractJsonBody - unable to extract json body - error: %s", err) + c.handleErrorResponse(e2managererrors.NewInvalidJsonError(), writer) + return false + } + + err = json.Unmarshal(body, &request) + if err != nil { + c.logger.Errorf("[Client -> E2 Manager] #NodebController.extractJsonBody - unable to extract json body - error: %s", err) + c.handleErrorResponse(e2managererrors.NewInvalidJsonError(), writer) + return false + } + + return true +} + +func (c *NodebController) handleRequest(writer http.ResponseWriter, header *http.Header, requestName httpmsghandlerprovider.IncomingRequest, request models.Request, validateRequestHeaders bool) { + + if validateRequestHeaders { + + err := c.validateRequestHeader(header) + if err != nil { + c.handleErrorResponse(err, writer) + return + } + } + + handler, err := c.handlerProvider.GetHandler(requestName) + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + response, err := handler.Handle(request) + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + if response == nil { + writer.WriteHeader(http.StatusNoContent) + c.logger.Infof("[E2 Manager -> Client] #NodebController.handleRequest - status response: %v", http.StatusNoContent) + return + } + + result, err := response.Marshal() + + if err != nil { + c.handleErrorResponse(err, writer) + return + } + + c.logger.Infof("[E2 Manager -> Client] #NodebController.handleRequest - response: %s", result) + writer.Header().Set("Content-Type", "application/json") + writer.Write(result) +} + +func (c *NodebController) validateRequestHeader(header *http.Header) error { + + if header.Get("Content-Type") != "application/json" { + c.logger.Errorf("#NodebController.validateRequestHeader - validation failure, incorrect content type") + + return e2managererrors.NewHeaderValidationError() + } + return nil +} + +func (c *NodebController) handleErrorResponse(err error, writer http.ResponseWriter) { + + var errorResponseDetails models.ErrorResponse + var httpError int + + if err != nil { + switch err.(type) { + case *e2managererrors.RnibDbError: + e2Error, _ := err.(*e2managererrors.RnibDbError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusInternalServerError + case *e2managererrors.CommandAlreadyInProgressError: + e2Error, _ := err.(*e2managererrors.CommandAlreadyInProgressError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusMethodNotAllowed + case *e2managererrors.HeaderValidationError: + e2Error, _ := err.(*e2managererrors.HeaderValidationError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusUnsupportedMediaType + case *e2managererrors.WrongStateError: + e2Error, _ := err.(*e2managererrors.WrongStateError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusBadRequest + case *e2managererrors.RequestValidationError: + e2Error, _ := err.(*e2managererrors.RequestValidationError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusBadRequest + case *e2managererrors.InvalidJsonError: + e2Error, _ := err.(*e2managererrors.InvalidJsonError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusBadRequest + case *e2managererrors.RmrError: + e2Error, _ := err.(*e2managererrors.RmrError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusInternalServerError + case *e2managererrors.ResourceNotFoundError: + e2Error, _ := err.(*e2managererrors.ResourceNotFoundError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusNotFound + case *e2managererrors.E2TInstanceAbsenceError: + e2Error, _ := err.(*e2managererrors.E2TInstanceAbsenceError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusServiceUnavailable + case *e2managererrors.RoutingManagerError: + e2Error, _ := err.(*e2managererrors.RoutingManagerError) + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusServiceUnavailable + default: + e2Error := e2managererrors.NewInternalError() + errorResponseDetails = models.ErrorResponse{Code: e2Error.Code, Message: e2Error.Message} + httpError = http.StatusInternalServerError + } + } + errorResponse, _ := json.Marshal(errorResponseDetails) + + c.logger.Errorf("[E2 Manager -> Client] #NodebController.handleErrorResponse - http status: %d, error response: %+v", httpError, errorResponseDetails) + + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(httpError) + _, err = writer.Write(errorResponse) +} + +func (c *NodebController) prettifyRequest(request *http.Request) string { + dump, _ := httputil.DumpRequest(request, true) + requestPrettyPrint := strings.Replace(string(dump), "\r\n", " ", -1) + return strings.Replace(requestPrettyPrint, "\n", "", -1) +} diff --git a/setup/e2mgr/E2Manager/controllers/nodeb_controller_test.go b/setup/e2mgr/E2Manager/controllers/nodeb_controller_test.go new file mode 100644 index 0000000..a9bccdc --- /dev/null +++ b/setup/e2mgr/E2Manager/controllers/nodeb_controller_test.go @@ -0,0 +1,960 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package controllers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/providers/httpmsghandlerprovider" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "encoding/json" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/jsonpb" + "github.com/gorilla/mux" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "io" + "io/ioutil" + "net/http" + "net/http/httptest" + "strings" + "testing" + "unsafe" +) + +const ( + RanName = "test" + AssociatedE2TInstanceAddress = "10.0.2.15:38000" + ValidationFailureJson = "{\"errorCode\":402,\"errorMessage\":\"Validation error\"}" + ResourceNotFoundJson = "{\"errorCode\":404,\"errorMessage\":\"Resource not found\"}" + RnibErrorJson = "{\"errorCode\":500,\"errorMessage\":\"RNIB error\"}" + InternalErrorJson = "{\"errorCode\":501,\"errorMessage\":\"Internal Server Error. Please try again later\"}" +) + +var ( + ServedNrCellInformationRequiredFields = []string{"cellId", "choiceNrMode", "nrMode", "nrPci", "servedPlmns"} + NrNeighbourInformationRequiredFields = []string{"nrCgi", "choiceNrMode", "nrMode", "nrPci"} +) + +type controllerGetNodebTestContext struct { + ranName string + nodebInfo *entities.NodebInfo + rnibError error + expectedStatusCode int + expectedJsonResponse string +} + +type controllerGetNodebIdListTestContext struct { + nodebIdList []*entities.NbIdentity + rnibError error + expectedStatusCode int + expectedJsonResponse string +} + +type getNodebInfoResult struct { + nodebInfo *entities.NodebInfo + rnibError error +} + +type updateGnbCellsParams struct { + err error +} + +type removeServedNrCellsParams struct { + servedNrCells []*entities.ServedNRCell + err error +} + +type controllerUpdateGnbTestContext struct { + getNodebInfoResult *getNodebInfoResult + removeServedNrCellsParams *removeServedNrCellsParams + updateGnbCellsParams *updateGnbCellsParams + requestBody map[string]interface{} + expectedStatusCode int + expectedJsonResponse string +} + +func generateServedNrCells(cellIds ...string) []*entities.ServedNRCell { + + servedNrCells := []*entities.ServedNRCell{} + + for _, v := range cellIds { + servedNrCells = append(servedNrCells, &entities.ServedNRCell{ServedNrCellInformation: &entities.ServedNRCellInformation{ + CellId: v, + ChoiceNrMode: &entities.ServedNRCellInformation_ChoiceNRMode{ + Fdd: &entities.ServedNRCellInformation_ChoiceNRMode_FddInfo{ + + }, + }, + NrMode: entities.Nr_FDD, + NrPci: 5, + ServedPlmns: []string{"whatever"}, + }}) + } + + return servedNrCells +} + +func buildNrNeighbourInformation(propToOmit string) map[string]interface{} { + ret := map[string]interface{}{ + "nrCgi": "whatever", + "choiceNrMode": map[string]interface{}{ + "tdd": map[string]interface{}{}, + }, + "nrMode": 1, + "nrPci": 1, + } + + if len(propToOmit) != 0 { + delete(ret, propToOmit) + } + + return ret +} + +func buildServedNrCellInformation(propToOmit string) map[string]interface{} { + ret := map[string]interface{}{ + "cellId": "whatever", + "choiceNrMode": map[string]interface{}{ + "fdd": map[string]interface{}{}, + }, + "nrMode": 1, + "nrPci": 1, + "servedPlmns": []interface{}{ + "whatever", + }, + } + + if len(propToOmit) != 0 { + delete(ret, propToOmit) + } + + return ret +} + +func setupControllerTest(t *testing.T) (*NodebController, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock) { + log := initLog(t) + config := configuration.ParseConfiguration() + + rmrMessengerMock := &mocks.RmrMessengerMock{} + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + rmrSender := getRmrSender(rmrMessengerMock, log) + ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService) + e2tInstancesManager := &mocks.E2TInstancesManagerMock{} + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient) + handlerProvider := httpmsghandlerprovider.NewIncomingRequestHandlerProvider(log, rmrSender, config, rnibDataService, ranSetupManager, e2tInstancesManager, e2tAssociationManager, rmClient) + controller := NewNodebController(log, handlerProvider) + return controller, readerMock, writerMock, rmrMessengerMock, e2tInstancesManager +} + +func TestX2SetupInvalidBody(t *testing.T) { + + controller, _, _, _, _ := setupControllerTest(t) + + header := http.Header{} + header.Set("Content-Type", "application/json") + httpRequest, _ := http.NewRequest("POST", "http://localhost:3800/v1/nodeb/x2-setup", strings.NewReader("{}{}")) + httpRequest.Header = header + + writer := httptest.NewRecorder() + controller.X2Setup(writer, httpRequest) + + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) + assert.Equal(t, e2managererrors.NewInvalidJsonError().Code, errorResponse.Code) +} + +func TestX2SetupSuccess(t *testing.T) { + + controller, readerMock, writerMock, rmrMessengerMock, _ := setupControllerTest(t) + + ranName := "test" + nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} + readerMock.On("GetNodeb", ranName).Return(nb, nil) + var nbUpdated = *nb + writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil) + + var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} + writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil) + + payload := e2pdus.PackedX2setupRequest + var xAction []byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) + + header := http.Header{} + header.Set("Content-Type", "application/json") + httpRequest := tests.GetHttpRequest() + httpRequest.Header = header + + writer := httptest.NewRecorder() + controller.X2Setup(writer, httpRequest) + + assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) +} + +func TestEndcSetupSuccess(t *testing.T) { + + controller, readerMock, writerMock, rmrMessengerMock, _ := setupControllerTest(t) + + ranName := "test" + nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} + readerMock.On("GetNodeb", ranName).Return(nb, nil) + var nbUpdated = *nb + writerMock.On("UpdateNodebInfo", &nbUpdated).Return(nil) + + var nbUpdated2 = &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, AssociatedE2TInstanceAddress: "10.0.2.15:8989"} + writerMock.On("UpdateNodebInfo", nbUpdated2).Return(nil) + + payload := e2pdus.PackedEndcX2setupRequest + var xAction []byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) + + header := http.Header{} + header.Set("Content-Type", "application/json") + httpRequest := tests.GetHttpRequest() + httpRequest.Header = header + + writer := httptest.NewRecorder() + controller.EndcSetup(writer, httpRequest) + + assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) +} + +func TestShutdownHandlerRnibError(t *testing.T) { + controller, _, _, _, e2tInstancesManagerMock := setupControllerTest(t) + e2tInstancesManagerMock.On("GetE2TAddresses").Return([]string{}, e2managererrors.NewRnibDbError()) + + writer := httptest.NewRecorder() + + controller.Shutdown(writer, tests.GetHttpRequest()) + + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, e2managererrors.NewRnibDbError().Code) +} + +func controllerGetNodebTestExecuter(t *testing.T, context *controllerGetNodebTestContext) { + controller, readerMock, _, _, _ := setupControllerTest(t) + writer := httptest.NewRecorder() + readerMock.On("GetNodeb", context.ranName).Return(context.nodebInfo, context.rnibError) + req, _ := http.NewRequest(http.MethodGet, "/nodeb", nil) + req = mux.SetURLVars(req, map[string]string{"ranName": context.ranName}) + controller.GetNodeb(writer, req) + assert.Equal(t, context.expectedStatusCode, writer.Result().StatusCode) + bodyBytes, _ := ioutil.ReadAll(writer.Body) + assert.Equal(t, context.expectedJsonResponse, string(bodyBytes)) +} + +func controllerGetNodebIdListTestExecuter(t *testing.T, context *controllerGetNodebIdListTestContext) { + controller, readerMock, _, _, _ := setupControllerTest(t) + writer := httptest.NewRecorder() + readerMock.On("GetListNodebIds").Return(context.nodebIdList, context.rnibError) + req, _ := http.NewRequest(http.MethodGet, "/nodeb/ids", nil) + controller.GetNodebIdList(writer, req) + assert.Equal(t, context.expectedStatusCode, writer.Result().StatusCode) + bodyBytes, _ := ioutil.ReadAll(writer.Body) + assert.Equal(t, context.expectedJsonResponse, string(bodyBytes)) +} + +func activateControllerUpdateGnbMocks(context *controllerUpdateGnbTestContext, readerMock *mocks.RnibReaderMock, writerMock *mocks.RnibWriterMock) { + if context.getNodebInfoResult != nil { + readerMock.On("GetNodeb", RanName).Return(context.getNodebInfoResult.nodebInfo, context.getNodebInfoResult.rnibError) + } + + if context.removeServedNrCellsParams != nil { + writerMock.On("RemoveServedNrCells", RanName, context.removeServedNrCellsParams.servedNrCells).Return(context.removeServedNrCellsParams.err) + } + + if context.updateGnbCellsParams != nil { + updatedNodebInfo := *context.getNodebInfoResult.nodebInfo + gnb := entities.Gnb{} + _ = jsonpb.Unmarshal(getJsonRequestAsBuffer(context.requestBody), &gnb) + updatedGnb := *updatedNodebInfo.GetGnb() + updatedGnb.ServedNrCells = gnb.ServedNrCells + writerMock.On("UpdateGnbCells", &updatedNodebInfo, gnb.ServedNrCells).Return(context.updateGnbCellsParams.err) + } +} + +func assertControllerUpdateGnb(t *testing.T, context *controllerUpdateGnbTestContext, writer *httptest.ResponseRecorder, readerMock *mocks.RnibReaderMock, writerMock *mocks.RnibWriterMock) { + assert.Equal(t, context.expectedStatusCode, writer.Result().StatusCode) + bodyBytes, _ := ioutil.ReadAll(writer.Body) + assert.Equal(t, context.expectedJsonResponse, string(bodyBytes)) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + + if context.getNodebInfoResult != nil { + readerMock.AssertNotCalled(t, "GetNodeb") + } + + if context.updateGnbCellsParams != nil { + writerMock.AssertNotCalled(t, "UpdateGnb") + } + + if context.removeServedNrCellsParams != nil { + writerMock.AssertNotCalled(t, "RemoveServedNrCells") + } +} + +func buildUpdateGnbRequest(context *controllerUpdateGnbTestContext) *http.Request { + updateGnbUrl := fmt.Sprintf("/nodeb/%s/update", RanName) + requestBody := getJsonRequestAsBuffer(context.requestBody) + req, _ := http.NewRequest(http.MethodGet, updateGnbUrl, requestBody) + req.Header.Set("Content-Type", "application/json") + req = mux.SetURLVars(req, map[string]string{"ranName": RanName}) + return req +} + +func controllerUpdateGnbTestExecuter(t *testing.T, context *controllerUpdateGnbTestContext) { + controller, readerMock, writerMock, _, _ := setupControllerTest(t) + writer := httptest.NewRecorder() + + activateControllerUpdateGnbMocks(context, readerMock, writerMock) + req := buildUpdateGnbRequest(context) + controller.UpdateGnb(writer, req) + assertControllerUpdateGnb(t, context, writer, readerMock, writerMock) +} + +func TestControllerUpdateGnbEmptyServedNrCells(t *testing.T) { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: nil, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + }, + }, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbMissingServedNrCellInformation(t *testing.T) { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: nil, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": nil, + }, + }, + }, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbMissingServedNrCellRequiredProp(t *testing.T) { + + for _, v := range ServedNrCellInformationRequiredFields { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: nil, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(v), + }, + }, + }, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerUpdateGnbTestExecuter(t, &context) + } +} + +func TestControllerUpdateGnbMissingServedNrCellFddOrTdd(t *testing.T) { + + servedNrCellInformation := buildServedNrCellInformation("") + servedNrCellInformation["choiceNrMode"] = map[string]interface{}{} + + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: nil, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": servedNrCellInformation, + }, + }, + }, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbMissingNeighbourInfoFddOrTdd(t *testing.T) { + + nrNeighbourInfo := buildNrNeighbourInformation("") + nrNeighbourInfo["choiceNrMode"] = map[string]interface{}{} + + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: nil, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + "nrNeighbourInfos": []interface{}{ + nrNeighbourInfo, + }, + }, + }, + }, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbMissingNrNeighbourInformationRequiredProp(t *testing.T) { + + for _, v := range NrNeighbourInformationRequiredFields { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: nil, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + "nrNeighbourInfos": []interface{}{ + buildNrNeighbourInformation(v), + }, + }, + }, + }, + expectedStatusCode: http.StatusBadRequest, + expectedJsonResponse: ValidationFailureJson, + } + + controllerUpdateGnbTestExecuter(t, &context) + } +} + +func TestControllerUpdateGnbValidServedNrCellInformationGetNodebNotFound(t *testing.T) { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: &getNodebInfoResult{ + nodebInfo: nil, + rnibError: common.NewResourceNotFoundError("#reader.GetNodeb - Not found Error"), + }, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + }, + }, + }, + expectedStatusCode: http.StatusNotFound, + expectedJsonResponse: ResourceNotFoundJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbValidServedNrCellInformationGetNodebInternalError(t *testing.T) { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: &getNodebInfoResult{ + nodebInfo: nil, + rnibError: common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error")), + }, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + }, + }, + }, + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: RnibErrorJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbGetNodebSuccessInvalidGnbConfiguration(t *testing.T) { + context := controllerUpdateGnbTestContext{ + getNodebInfoResult: &getNodebInfoResult{ + nodebInfo: &entities.NodebInfo{ + RanName: RanName, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress, + }, + rnibError: nil, + }, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + "nrNeighbourInfos": []interface{}{ + buildNrNeighbourInformation(""), + }, + }, + }, + }, + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: InternalErrorJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbGetNodebSuccessRemoveServedNrCellsFailure(t *testing.T) { + oldServedNrCells := generateServedNrCells("whatever1", "whatever2") + context := controllerUpdateGnbTestContext{ + removeServedNrCellsParams: &removeServedNrCellsParams{ + err: common.NewInternalError(errors.New("#writer.UpdateGnbCells - Internal Error")), + servedNrCells: oldServedNrCells, + }, + getNodebInfoResult: &getNodebInfoResult{ + nodebInfo: &entities.NodebInfo{ + RanName: RanName, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress, + Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{ServedNrCells: oldServedNrCells}}, + }, + rnibError: nil, + }, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + "nrNeighbourInfos": []interface{}{ + buildNrNeighbourInformation(""), + }, + }, + }, + }, + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: RnibErrorJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbGetNodebSuccessUpdateGnbCellsFailure(t *testing.T) { + oldServedNrCells := generateServedNrCells("whatever1", "whatever2") + context := controllerUpdateGnbTestContext{ + removeServedNrCellsParams: &removeServedNrCellsParams{ + err: nil, + servedNrCells: oldServedNrCells, + }, + updateGnbCellsParams: &updateGnbCellsParams{ + err: common.NewInternalError(errors.New("#writer.UpdateGnbCells - Internal Error")), + }, + getNodebInfoResult: &getNodebInfoResult{ + nodebInfo: &entities.NodebInfo{ + RanName: RanName, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress, + Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{ServedNrCells: oldServedNrCells}}, + }, + rnibError: nil, + }, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + "nrNeighbourInfos": []interface{}{ + buildNrNeighbourInformation(""), + }, + }, + }, + }, + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: RnibErrorJson, + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func TestControllerUpdateGnbSuccess(t *testing.T) { + context := controllerUpdateGnbTestContext{ + updateGnbCellsParams: &updateGnbCellsParams{ + err: nil, + }, + getNodebInfoResult: &getNodebInfoResult{ + nodebInfo: &entities.NodebInfo{ + RanName: RanName, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + AssociatedE2TInstanceAddress: AssociatedE2TInstanceAddress, + Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}}, + }, + rnibError: nil, + }, + requestBody: map[string]interface{}{ + "servedNrCells": []interface{}{ + map[string]interface{}{ + "servedNrCellInformation": buildServedNrCellInformation(""), + "nrNeighbourInfos": []interface{}{ + buildNrNeighbourInformation(""), + }, + }, + }, + }, + expectedStatusCode: http.StatusOK, + expectedJsonResponse: "{\"ranName\":\"test\",\"connectionStatus\":\"CONNECTED\",\"gnb\":{\"servedNrCells\":[{\"servedNrCellInformation\":{\"nrPci\":1,\"cellId\":\"whatever\",\"servedPlmns\":[\"whatever\"],\"nrMode\":\"FDD\",\"choiceNrMode\":{\"fdd\":{}}},\"nrNeighbourInfos\":[{\"nrPci\":1,\"nrCgi\":\"whatever\",\"nrMode\":\"FDD\",\"choiceNrMode\":{\"tdd\":{}}}]}]},\"associatedE2tInstanceAddress\":\"10.0.2.15:38000\"}", + } + + controllerUpdateGnbTestExecuter(t, &context) +} + +func getJsonRequestAsBuffer(requestJson map[string]interface{}) *bytes.Buffer { + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(requestJson) + return b +} + +func TestControllerGetNodebSuccess(t *testing.T) { + ranName := "test" + var rnibError error + context := controllerGetNodebTestContext{ + ranName: ranName, + nodebInfo: &entities.NodebInfo{RanName: ranName, Ip: "10.0.2.15", Port: 1234}, + rnibError: rnibError, + expectedStatusCode: http.StatusOK, + expectedJsonResponse: fmt.Sprintf("{\"ranName\":\"%s\",\"ip\":\"10.0.2.15\",\"port\":1234}", ranName), + } + + controllerGetNodebTestExecuter(t, &context) +} + +func TestControllerGetNodebNotFound(t *testing.T) { + + ranName := "test" + var nodebInfo *entities.NodebInfo + context := controllerGetNodebTestContext{ + ranName: ranName, + nodebInfo: nodebInfo, + rnibError: common.NewResourceNotFoundError("#reader.GetNodeb - Not found Error"), + expectedStatusCode: http.StatusNotFound, + expectedJsonResponse: ResourceNotFoundJson, + } + + controllerGetNodebTestExecuter(t, &context) +} + +func TestControllerGetNodebInternal(t *testing.T) { + ranName := "test" + var nodebInfo *entities.NodebInfo + context := controllerGetNodebTestContext{ + ranName: ranName, + nodebInfo: nodebInfo, + rnibError: common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error")), + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: RnibErrorJson, + } + + controllerGetNodebTestExecuter(t, &context) +} + +func TestControllerGetNodebIdListSuccess(t *testing.T) { + var rnibError error + nodebIdList := []*entities.NbIdentity{ + {InventoryName: "test1", GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId1", NbId: "nbId1"}}, + {InventoryName: "test2", GlobalNbId: &entities.GlobalNbId{PlmnId: "plmnId2", NbId: "nbId2"}}, + } + + context := controllerGetNodebIdListTestContext{ + nodebIdList: nodebIdList, + rnibError: rnibError, + expectedStatusCode: http.StatusOK, + expectedJsonResponse: "[{\"inventoryName\":\"test1\",\"globalNbId\":{\"plmnId\":\"plmnId1\",\"nbId\":\"nbId1\"}},{\"inventoryName\":\"test2\",\"globalNbId\":{\"plmnId\":\"plmnId2\",\"nbId\":\"nbId2\"}}]", + } + + controllerGetNodebIdListTestExecuter(t, &context) +} + +func TestControllerGetNodebIdListEmptySuccess(t *testing.T) { + var rnibError error + nodebIdList := []*entities.NbIdentity{} + + context := controllerGetNodebIdListTestContext{ + nodebIdList: nodebIdList, + rnibError: rnibError, + expectedStatusCode: http.StatusOK, + expectedJsonResponse: "[]", + } + + controllerGetNodebIdListTestExecuter(t, &context) +} + +func TestControllerGetNodebIdListInternal(t *testing.T) { + var nodebIdList []*entities.NbIdentity + context := controllerGetNodebIdListTestContext{ + nodebIdList: nodebIdList, + rnibError: common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error")), + expectedStatusCode: http.StatusInternalServerError, + expectedJsonResponse: RnibErrorJson, + } + + controllerGetNodebIdListTestExecuter(t, &context) +} + +func TestHeaderValidationFailed(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + + writer := httptest.NewRecorder() + + header := &http.Header{} + + controller.handleRequest(writer, header, httpmsghandlerprovider.ShutdownRequest, nil, true) + + var errorResponse = parseJsonRequest(t, writer.Body) + err := e2managererrors.NewHeaderValidationError() + + assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Code) + assert.Equal(t, errorResponse.Message, err.Message) +} + +func TestShutdownStatusNoContent(t *testing.T) { + controller, readerMock, _, _, e2tInstancesManagerMock := setupControllerTest(t) + e2tInstancesManagerMock.On("GetE2TAddresses").Return([]string{}, nil) + readerMock.On("GetListNodebIds").Return([]*entities.NbIdentity{}, nil) + + writer := httptest.NewRecorder() + controller.Shutdown(writer, tests.GetHttpRequest()) + + assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) +} + +func TestHandleInternalError(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + + writer := httptest.NewRecorder() + err := e2managererrors.NewInternalError() + + controller.handleErrorResponse(err, writer) + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Code) + assert.Equal(t, errorResponse.Message, err.Message) +} + +func TestHandleCommandAlreadyInProgressError(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + writer := httptest.NewRecorder() + err := e2managererrors.NewCommandAlreadyInProgressError() + + controller.handleErrorResponse(err, writer) + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusMethodNotAllowed, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Code) + assert.Equal(t, errorResponse.Message, err.Message) +} + +func TestHandleRoutingManagerError(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + writer := httptest.NewRecorder() + err := e2managererrors.NewRoutingManagerError() + + controller.handleErrorResponse(err, writer) + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusServiceUnavailable, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Code) + assert.Equal(t, errorResponse.Message, err.Message) +} + +func TestHandleE2TInstanceAbsenceError(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + + writer := httptest.NewRecorder() + err := e2managererrors.NewE2TInstanceAbsenceError() + + controller.handleErrorResponse(err, writer) + var errorResponse = parseJsonRequest(t, writer.Body) + + assert.Equal(t, http.StatusServiceUnavailable, writer.Result().StatusCode) + assert.Equal(t, errorResponse.Code, err.Code) + assert.Equal(t, errorResponse.Message, err.Message) +} + +func TestValidateHeaders(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + + header := http.Header{} + header.Set("Content-Type", "application/json") + result := controller.validateRequestHeader(&header) + + assert.Nil(t, result) +} + +func parseJsonRequest(t *testing.T, r io.Reader) models.ErrorResponse { + + var errorResponse models.ErrorResponse + body, err := ioutil.ReadAll(r) + if err != nil { + t.Errorf("Error cannot deserialize json request") + } + _ = json.Unmarshal(body, &errorResponse) + + return errorResponse +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} + +func TestX2ResetHandleSuccessfulRequestedCause(t *testing.T) { + controller, readerMock, _, rmrMessengerMock, _ := setupControllerTest(t) + + ranName := "test1" + payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x40} + var xAction []byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", msg, mock.Anything).Return(msg, nil) + + writer := httptest.NewRecorder() + + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + data4Req := map[string]interface{}{"cause": "protocol:transfer-syntax-error"} + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data4Req) + req, _ := http.NewRequest("PUT", "https://localhost:3800/nodeb-reset", b) + req = mux.SetURLVars(req, map[string]string{"ranName": ranName}) + + controller.X2Reset(writer, req) + assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) + +} + +func TestX2ResetHandleSuccessfulRequestedDefault(t *testing.T) { + controller, readerMock, _, rmrMessengerMock, _ := setupControllerTest(t) + + ranName := "test1" + // o&m intervention + payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64} + var xAction []byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", msg, true).Return(msg, nil) + + writer := httptest.NewRecorder() + + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + // no body + b := new(bytes.Buffer) + req, _ := http.NewRequest("PUT", "https://localhost:3800/nodeb-reset", b) + req = mux.SetURLVars(req, map[string]string{"ranName": ranName}) + + controller.X2Reset(writer, req) + assert.Equal(t, http.StatusNoContent, writer.Result().StatusCode) + +} + +func TestX2ResetHandleFailureInvalidBody(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + + ranName := "test1" + + writer := httptest.NewRecorder() + + // Invalid json: attribute name without quotes (should be "cause":). + b := strings.NewReader("{cause:\"protocol:transfer-syntax-error\"") + req, _ := http.NewRequest("PUT", "https://localhost:3800/nodeb-reset", b) + req = mux.SetURLVars(req, map[string]string{"ranName": ranName}) + + controller.X2Reset(writer, req) + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) + +} + +func TestHandleErrorResponse(t *testing.T) { + controller, _, _, _, _ := setupControllerTest(t) + + writer := httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewRnibDbError(), writer) + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewCommandAlreadyInProgressError(), writer) + assert.Equal(t, http.StatusMethodNotAllowed, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewHeaderValidationError(), writer) + assert.Equal(t, http.StatusUnsupportedMediaType, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewWrongStateError("", ""), writer) + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewRequestValidationError(), writer) + assert.Equal(t, http.StatusBadRequest, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewRmrError(), writer) + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(e2managererrors.NewResourceNotFoundError(), writer) + assert.Equal(t, http.StatusNotFound, writer.Result().StatusCode) + + writer = httptest.NewRecorder() + controller.handleErrorResponse(fmt.Errorf("ErrorError"), writer) + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) +} + +func getRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} diff --git a/setup/e2mgr/E2Manager/controllers/root_controller.go b/setup/e2mgr/E2Manager/controllers/root_controller.go new file mode 100644 index 0000000..0d8f92a --- /dev/null +++ b/setup/e2mgr/E2Manager/controllers/root_controller.go @@ -0,0 +1,50 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package controllers + +import ( + "e2mgr/services" + "net/http" +) + +type IRootController interface { + HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request) +} + +type RootController struct { + rnibDataService services.RNibDataService +} + +func NewRootController(rnibDataService services.RNibDataService) *RootController { + return &RootController{ + rnibDataService: rnibDataService, + } +} + +func (rc *RootController) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request) { + httpStatus := http.StatusOK + isOn := rc.rnibDataService.PingRnib() + if !isOn { + httpStatus = http.StatusInternalServerError + } + + writer.WriteHeader(httpStatus) +} diff --git a/setup/e2mgr/E2Manager/controllers/root_controller_test.go b/setup/e2mgr/E2Manager/controllers/root_controller_test.go new file mode 100644 index 0000000..42d0bdf --- /dev/null +++ b/setup/e2mgr/E2Manager/controllers/root_controller_test.go @@ -0,0 +1,94 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package controllers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "net" + "net/http" + "net/http/httptest" + "testing" +) + +func setupNodebControllerTest(t *testing.T) (services.RNibDataService, *mocks.RnibReaderMock){ + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + return rnibDataService, readerMock +} + +func TestNewRequestController(t *testing.T) { + rnibDataService, _ := setupNodebControllerTest(t) + assert.NotNil(t, NewRootController(rnibDataService)) +} + +func TestHandleHealthCheckRequestGood(t *testing.T) { + rnibDataService, rnibReaderMock := setupNodebControllerTest(t) + + var nbList []*entities.NbIdentity + rnibReaderMock.On("GetListNodebIds").Return(nbList, nil) + + rc := NewRootController(rnibDataService) + writer := httptest.NewRecorder() + rc.HandleHealthCheckRequest(writer, nil) + assert.Equal(t, http.StatusOK, writer.Result().StatusCode) +} + +func TestHandleHealthCheckRequestOtherError(t *testing.T) { + rnibDataService, rnibReaderMock := setupNodebControllerTest(t) + + mockOtherErr := &common.InternalError{Err: fmt.Errorf("non connection error")} + var nbList []*entities.NbIdentity + rnibReaderMock.On("GetListNodebIds").Return(nbList, mockOtherErr) + + rc := NewRootController(rnibDataService) + writer := httptest.NewRecorder() + rc.HandleHealthCheckRequest(writer, nil) + assert.Equal(t, http.StatusOK, writer.Result().StatusCode) +} + +func TestHandleHealthCheckRequestConnError(t *testing.T) { + rnibDataService, rnibReaderMock := setupNodebControllerTest(t) + + mockConnErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + var nbList []*entities.NbIdentity + rnibReaderMock.On("GetListNodebIds").Return(nbList, mockConnErr) + + + rc := NewRootController(rnibDataService) + writer := httptest.NewRecorder() + rc.HandleHealthCheckRequest(writer, nil) + assert.Equal(t, http.StatusInternalServerError, writer.Result().StatusCode) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/converters/enb_load_information_extractor.go b/setup/e2mgr/E2Manager/converters/enb_load_information_extractor.go new file mode 100644 index 0000000..c7e5326 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/enb_load_information_extractor.go @@ -0,0 +1,690 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters +/* +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +const ( + MaxCellsInEnb = 256 + MaxNoOfPrbs = 110 + NaxNoOfCompHypothesisSet = 256 + NaxNoOfCompCells = 32 + MaxNoOfPa = 3 +) + +type EnbLoadInformationExtractor struct { + logger *logger.Logger +} + +type IEnbLoadInformationExtractor interface { + ExtractAndBuildRanLoadInformation(pdu *C.E2AP_PDU_t, ranLoadInformation *entities.RanLoadInformation) error +} + +func NewEnbLoadInformationExtractor(logger *logger.Logger) *EnbLoadInformationExtractor { + return &EnbLoadInformationExtractor{ + logger: logger, + } +} + +var populators = map[C.CellInformation_Item_ExtIEs__extensionValue_PR]func(string, *entities.CellLoadInformation, *C.CellInformation_Item_ExtIEs_t) error{ + C.CellInformation_Item_ExtIEs__extensionValue_PR_ABSInformation: populateAbsInformation, + C.CellInformation_Item_ExtIEs__extensionValue_PR_InvokeIndication: populateInvokeIndication, + C.CellInformation_Item_ExtIEs__extensionValue_PR_SubframeAssignment: populateIntendedUlDlConfiguration, + C.CellInformation_Item_ExtIEs__extensionValue_PR_ExtendedULInterferenceOverloadInfo: populateExtendedUlInterferenceOverloadInfo, + C.CellInformation_Item_ExtIEs__extensionValue_PR_CoMPInformation: populateCompInformation, + C.CellInformation_Item_ExtIEs__extensionValue_PR_DynamicDLTransmissionInformation: populateDynamicDLTransmissionInformation, +} + +func extractPduCellInformationItemIEs(pdu *C.E2AP_PDU_t) ([]*C.CellInformation_ItemIEs_t, error) { + + if pdu.present != C.E2AP_PDU_PR_initiatingMessage { + return nil, fmt.Errorf("#extractPduCellInformationItemIEs - Invalid E2AP_PDU value") + } + + initiatingMessage := *(**C.InitiatingMessage_t)(unsafe.Pointer(&pdu.choice[0])) + + if initiatingMessage == nil || initiatingMessage.value.present != C.InitiatingMessage__value_PR_LoadInformation { + return nil, fmt.Errorf("#extractPduCellInformationItemIEs - Invalid InitiatingMessage value") + } + + loadInformationMessage := (*C.LoadInformation_t)(unsafe.Pointer(&initiatingMessage.value.choice[0])) + + if loadInformationMessage == nil { + return nil, fmt.Errorf("#extractPduCellInformationItemIEs - Invalid LoadInformation container") + } + + protocolIEsListCount := loadInformationMessage.protocolIEs.list.count + + if protocolIEsListCount != 1 { + return nil, fmt.Errorf("#extractPduCellInformationItemIEs - Invalid protocolIEs list count") + } + + loadInformationIEs := (*[1 << 30]*C.LoadInformation_IEs_t)(unsafe.Pointer(loadInformationMessage.protocolIEs.list.array))[:int(protocolIEsListCount):int(protocolIEsListCount)] + + loadInformationIE := loadInformationIEs[0] + + if loadInformationIE.value.present != C.LoadInformation_IEs__value_PR_CellInformation_List { + return nil, fmt.Errorf("#extractPduCellInformationItemIEs - Invalid protocolIEs value") + } + + loadInformationCellList := (*C.CellInformation_List_t)(unsafe.Pointer(&loadInformationIE.value.choice[0])) + + loadInformationCellListCount := loadInformationCellList.list.count + + if loadInformationCellListCount == 0 || loadInformationCellListCount > MaxCellsInEnb { + return nil, fmt.Errorf("#extractPduCellInformationItemIEs - Invalid CellInformation list count") + } + + return (*[1 << 30]*C.CellInformation_ItemIEs_t)(unsafe.Pointer(loadInformationCellList.list.array))[:int(loadInformationCellListCount):int(loadInformationCellListCount)], nil +} + +func populateCellLoadInformation(pduCellInformationItemIE *C.CellInformation_ItemIEs_t, ranLoadInformation *entities.RanLoadInformation) error { + + pduCellInformationItem, err := extractPduCellInformationItem(pduCellInformationItemIE) + + if err != nil { + return err + } + + cellLoadInformation := entities.CellLoadInformation{} + err = buildCellLoadInformation(&cellLoadInformation, pduCellInformationItem) + + if err != nil { + return err + } + + ranLoadInformation.CellLoadInfos = append(ranLoadInformation.CellLoadInfos, &cellLoadInformation) + + return nil +} + +func extractPduCellInformationItem(cell *C.CellInformation_ItemIEs_t) (*C.CellInformation_Item_t, error) { + + if cell.value.present != C.CellInformation_ItemIEs__value_PR_CellInformation_Item { + return nil, fmt.Errorf("#extractPduCellInformationItem - Failed extracting pdu cell information item") + } + + return (*C.CellInformation_Item_t)(unsafe.Pointer(&cell.value.choice[0])), nil +} + +func buildCellLoadInformation(cellLoadInformation *entities.CellLoadInformation, cellInformationItem *C.CellInformation_Item_t) error { + + cellId := buildCellId(cellInformationItem.cell_ID) + cellLoadInformation.CellId = cellId + + pduUlInterferenceOverloadIndicationItems, err := extractPduUlInterferenceOverloadIndicationItems(cellId, cellInformationItem) + + if err != nil { + return err + } + + if (pduUlInterferenceOverloadIndicationItems != nil) { + cellLoadInformation.UlInterferenceOverloadIndications = buildUlInterferenceOverloadIndicationList(pduUlInterferenceOverloadIndicationItems) + } + + pduUlHighInterferenceIndicationInfoItems, err := extractPduUlHighInterferenceIndicationInfoItems(cellId, cellInformationItem) + + if err != nil { + return err + } + + if pduUlHighInterferenceIndicationInfoItems != nil { + cellLoadInformation.UlHighInterferenceInfos = buildUlHighInterferenceIndicationInfoList(pduUlHighInterferenceIndicationInfoItems) + } + + pduRelativeNarrowbandTxPower := extractPduRelativeNarrowbandTxPower(cellInformationItem) + + if pduRelativeNarrowbandTxPower != nil { + pduEnhancedRntp, err := extractPduEnhancedRntp(cellId, pduRelativeNarrowbandTxPower) + + if err != nil { + return err + } + + cellLoadInformation.RelativeNarrowbandTxPower = buildRelativeNarrowbandTxPower(pduRelativeNarrowbandTxPower, pduEnhancedRntp) + } + + pduCellInformationItemExtensionIEs := extractPduCellInformationItemExtensionIEs(cellInformationItem) + + if (pduCellInformationItemExtensionIEs == nil) { + return nil + } + + err = populateCellLoadInformationExtensionIEs(cellId, cellLoadInformation, pduCellInformationItemExtensionIEs) + + if err != nil { + return err + } + + return nil + +} + +func buildCellId(cellId C.ECGI_t) string { + plmnId := cUcharArrayToGoByteSlice(cellId.pLMN_Identity.buf, cellId.pLMN_Identity.size) + eutranCellIdentifier := cUcharArrayToGoByteSlice(cellId.eUTRANcellIdentifier.buf, cellId.eUTRANcellIdentifier.size) + return fmt.Sprintf("%x:%x", plmnId, eutranCellIdentifier) +} + +func buildUlInterferenceOverloadIndicationList(pduUlInterferenceOverloadIndicationItems []*C.UL_InterferenceOverloadIndication_Item_t) []entities.UlInterferenceOverloadIndication { + indications := make([]entities.UlInterferenceOverloadIndication, len(pduUlInterferenceOverloadIndicationItems)) + for i, ci := range pduUlInterferenceOverloadIndicationItems { + indications[i] = entities.UlInterferenceOverloadIndication(*ci + 1) + } + + return indications +} + +func extractPduUlInterferenceOverloadIndicationItems(cellId string, cellInformationItem *C.CellInformation_Item_t) ([]*C.UL_InterferenceOverloadIndication_Item_t, error) { + + if cellInformationItem.ul_InterferenceOverloadIndication == nil { + return nil, nil + } + + ulInterferenceOverLoadIndicationCount := cellInformationItem.ul_InterferenceOverloadIndication.list.count + + if ulInterferenceOverLoadIndicationCount == 0 || ulInterferenceOverLoadIndicationCount > MaxNoOfPrbs { + return nil, fmt.Errorf("#extractPduUlInterferenceOverloadIndicationItems - cellId: %s - Invalid UL Interference OverLoad Indication list count", cellId) + } + + pduUlInterferenceOverloadIndicationItems := (*[1 << 30]*C.UL_InterferenceOverloadIndication_Item_t)(unsafe.Pointer(cellInformationItem.ul_InterferenceOverloadIndication.list.array))[:int(ulInterferenceOverLoadIndicationCount):int(ulInterferenceOverLoadIndicationCount)] + + return pduUlInterferenceOverloadIndicationItems, nil +} + +func NewStartTime(startSfn C.long, startSubframeNumber C.long) *entities.StartTime { + return &entities.StartTime{ + StartSfn: int32(startSfn), + StartSubframeNumber: int32(startSubframeNumber), + } +} + +func buildEnhancedRntp(pduEnhancedRntp *C.EnhancedRNTP_t) *entities.EnhancedRntp { + + enhancedRntp := entities.EnhancedRntp{ + EnhancedRntpBitmap: NewHexString(pduEnhancedRntp.enhancedRNTPBitmap.buf, pduEnhancedRntp.enhancedRNTPBitmap.size), + RntpHighPowerThreshold: entities.RntpThreshold(pduEnhancedRntp.rNTP_High_Power_Threshold + 1), + } + + pduEnhancedRntpStartTime := (*C.EnhancedRNTPStartTime_t)(unsafe.Pointer(pduEnhancedRntp.enhancedRNTPStartTime)) + + if pduEnhancedRntpStartTime != nil { + enhancedRntp.EnhancedRntpStartTime = NewStartTime(pduEnhancedRntpStartTime.startSFN, pduEnhancedRntpStartTime.startSubframeNumber) + } + + return &enhancedRntp +} + +func cUcharArrayToGoByteSlice(buf *C.uchar, size C.ulong) []byte { + return C.GoBytes(unsafe.Pointer(buf), C.int(size)) +} + +func NewHexString(buf *C.uchar, size C.ulong) string { + return fmt.Sprintf("%x", cUcharArrayToGoByteSlice(buf, size)) +} + +func buildRelativeNarrowbandTxPower(pduRelativeNarrowbandTxPower *C.RelativeNarrowbandTxPower_t, pduEnhancedRntp *C.EnhancedRNTP_t) *entities.RelativeNarrowbandTxPower { + + relativeNarrowbandTxPower := entities.RelativeNarrowbandTxPower{ + RntpThreshold: entities.RntpThreshold(pduRelativeNarrowbandTxPower.rNTP_Threshold + 1), + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts(pduRelativeNarrowbandTxPower.numberOfCellSpecificAntennaPorts + 1), + PB: uint32(pduRelativeNarrowbandTxPower.p_B), + PdcchInterferenceImpact: uint32(pduRelativeNarrowbandTxPower.pDCCH_InterferenceImpact), + RntpPerPrb: NewHexString(pduRelativeNarrowbandTxPower.rNTP_PerPRB.buf, pduRelativeNarrowbandTxPower.rNTP_PerPRB.size), + } + + if pduEnhancedRntp != nil { + relativeNarrowbandTxPower.EnhancedRntp = buildEnhancedRntp(pduEnhancedRntp) + } + + return &relativeNarrowbandTxPower +} + +func extractPduRelativeNarrowbandTxPower(cellInformationItem *C.CellInformation_Item_t) *C.RelativeNarrowbandTxPower_t { + + if cellInformationItem.relativeNarrowbandTxPower == nil { + return nil + } + + return (*C.RelativeNarrowbandTxPower_t)(unsafe.Pointer(cellInformationItem.relativeNarrowbandTxPower)) +} + +func buildUlHighInterferenceIndicationInfoList(ulHighInterferenceIndicationInfoList []*C.UL_HighInterferenceIndicationInfo_Item_t) []*entities.UlHighInterferenceInformation { + infos := make([]*entities.UlHighInterferenceInformation, len(ulHighInterferenceIndicationInfoList)) + + for i, v := range ulHighInterferenceIndicationInfoList { + + infos[i] = &entities.UlHighInterferenceInformation{ + TargetCellId: buildCellId(v.target_Cell_ID), + UlHighInterferenceIndication: NewHexString(v.ul_interferenceindication.buf, v.ul_interferenceindication.size), + } + } + + return infos +} + +func extractPduUlHighInterferenceIndicationInfoItems(cellId string, cellInformationItem *C.CellInformation_Item_t) ([]*C.UL_HighInterferenceIndicationInfo_Item_t, error) { + pduUlHighInterferenceIndicationInfo := (*C.UL_HighInterferenceIndicationInfo_t)(unsafe.Pointer(cellInformationItem.ul_HighInterferenceIndicationInfo)) + + if (pduUlHighInterferenceIndicationInfo == nil) { + return nil, nil + } + + pduUlHighInterferenceIndicationInfoListCount := pduUlHighInterferenceIndicationInfo.list.count + + if pduUlHighInterferenceIndicationInfoListCount == 0 || pduUlHighInterferenceIndicationInfoListCount > MaxCellsInEnb { + return nil, fmt.Errorf("#extractPduUlHighInterferenceIndicationInfoItems - cellId: %s - Invalid UL High Interference Indication info list count", cellId) + } + + pduUlHighInterferenceIndicationInfoItems := (*[1 << 30]*C.UL_HighInterferenceIndicationInfo_Item_t)(unsafe.Pointer(cellInformationItem.ul_HighInterferenceIndicationInfo.list.array))[:int(pduUlHighInterferenceIndicationInfoListCount):int(pduUlHighInterferenceIndicationInfoListCount)] + + return pduUlHighInterferenceIndicationInfoItems, nil +} + +func extractPduCellInformationItemExtensionIEs(cellInformationItem *C.CellInformation_Item_t) []*C.CellInformation_Item_ExtIEs_t { + extIEs := (*C.ProtocolExtensionContainer_170P7_t)(unsafe.Pointer(cellInformationItem.iE_Extensions)) + + if extIEs == nil { + return nil + } + + extIEsCount := int(extIEs.list.count) + + if extIEsCount == 0 { + return nil + } + + return (*[1 << 30]*C.CellInformation_Item_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:extIEsCount:extIEsCount] +} + +func extractPduEnhancedRntp(cellId string, pduRelativeNarrowbandTxPower *C.RelativeNarrowbandTxPower_t) (*C.EnhancedRNTP_t, error) { + + extIEs := (*C.ProtocolExtensionContainer_170P184_t)(unsafe.Pointer(pduRelativeNarrowbandTxPower.iE_Extensions)) + + if extIEs == nil { + return nil, nil + } + + extIEsCount := int(extIEs.list.count) + + if extIEsCount != 1 { + return nil, fmt.Errorf("#extractPduEnhancedRntp - cellId: %s - Invalid Enhanced RNTP container", cellId) + } + + enhancedRntpExtIEs := (*[1 << 30]*C.RelativeNarrowbandTxPower_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:extIEsCount:extIEsCount] + + enhancedRntpExtIE := enhancedRntpExtIEs[0] + + if enhancedRntpExtIE.extensionValue.present != C.RelativeNarrowbandTxPower_ExtIEs__extensionValue_PR_EnhancedRNTP { + return nil, fmt.Errorf("#extractPduEnhancedRntp - cellId: %s - Invalid Enhanced RNTP container", cellId) + } + + return (*C.EnhancedRNTP_t)(unsafe.Pointer(&enhancedRntpExtIE.extensionValue.choice[0])), nil +} + +func buildAbsInformationFdd(cellId string, pduAbsInformation *C.ABSInformation_t) (*entities.AbsInformation, error) { + pduAbsInformationFdd := *(**C.ABSInformationFDD_t)(unsafe.Pointer(&pduAbsInformation.choice[0])) + + if pduAbsInformationFdd == nil { + return nil, fmt.Errorf("#buildAbsInformationFdd - cellId: %s - Invalid FDD Abs Information", cellId) + } + + absInformation := entities.AbsInformation{ + Mode: entities.AbsInformationMode_ABS_INFO_FDD, + AbsPatternInfo: NewHexString(pduAbsInformationFdd.abs_pattern_info.buf, pduAbsInformationFdd.abs_pattern_info.size), + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts(pduAbsInformationFdd.numberOfCellSpecificAntennaPorts + 1), + MeasurementSubset: NewHexString(pduAbsInformationFdd.measurement_subset.buf, pduAbsInformationFdd.measurement_subset.size), + } + + return &absInformation, nil +} + +func buildAbsInformationTdd(cellId string, pduAbsInformation *C.ABSInformation_t) (*entities.AbsInformation, error) { + pduAbsInformationTdd := *(**C.ABSInformationTDD_t)(unsafe.Pointer(&pduAbsInformation.choice[0])) + + if pduAbsInformationTdd == nil { + return nil, fmt.Errorf("#buildAbsInformationTdd - cellId: %s - Invalid TDD Abs Information", cellId) + } + + absInformation := entities.AbsInformation{ + Mode: entities.AbsInformationMode_ABS_INFO_TDD, + AbsPatternInfo: NewHexString(pduAbsInformationTdd.abs_pattern_info.buf, pduAbsInformationTdd.abs_pattern_info.size), + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts(pduAbsInformationTdd.numberOfCellSpecificAntennaPorts + 1), + MeasurementSubset: NewHexString(pduAbsInformationTdd.measurement_subset.buf, pduAbsInformationTdd.measurement_subset.size), + } + + return &absInformation, nil +} + +func extractAndBuildCellLoadInformationAbsInformation(cellId string, extIE *C.CellInformation_Item_ExtIEs_t) (*entities.AbsInformation, error) { + pduAbsInformation := (*C.ABSInformation_t)(unsafe.Pointer(&extIE.extensionValue.choice[0])) + + switch pduAbsInformation.present { + case C.ABSInformation_PR_fdd: + return buildAbsInformationFdd(cellId, pduAbsInformation) + case C.ABSInformation_PR_tdd: + return buildAbsInformationTdd(cellId, pduAbsInformation) + case C.ABSInformation_PR_abs_inactive: + return &entities.AbsInformation{Mode: entities.AbsInformationMode_ABS_INACTIVE}, nil + } + + return nil, fmt.Errorf("#extractAndBuildCellLoadInformationAbsInformation - cellId: %s - Failed extracting AbsInformation", cellId) +} + +func extractExtendedUlInterferenceOverloadIndicationList(extendedULInterferenceOverloadInfo *C.ExtendedULInterferenceOverloadInfo_t) []*C.UL_InterferenceOverloadIndication_Item_t { + + extendedUlInterferenceOverLoadIndicationCount := extendedULInterferenceOverloadInfo.extended_ul_InterferenceOverloadIndication.list.count + + if extendedUlInterferenceOverLoadIndicationCount == 0 { + return nil + } + + extendedUlInterferenceOverLoadIndicationList := (*[1 << 30]*C.UL_InterferenceOverloadIndication_Item_t)(unsafe.Pointer(extendedULInterferenceOverloadInfo.extended_ul_InterferenceOverloadIndication.list.array))[:int(extendedUlInterferenceOverLoadIndicationCount):int(extendedUlInterferenceOverLoadIndicationCount)] + + if (extendedUlInterferenceOverLoadIndicationList == nil) { + return nil + } + + return extendedUlInterferenceOverLoadIndicationList +} + +func buildExtendedULInterferenceOverloadInfo(pduExtendedULInterferenceOverloadInfo *C.ExtendedULInterferenceOverloadInfo_t) *entities.ExtendedUlInterferenceOverloadInfo { + associatedSubframes := NewHexString(pduExtendedULInterferenceOverloadInfo.associatedSubframes.buf, pduExtendedULInterferenceOverloadInfo.associatedSubframes.size) + indications := extractExtendedUlInterferenceOverloadIndicationList(pduExtendedULInterferenceOverloadInfo) + + return &entities.ExtendedUlInterferenceOverloadInfo{ + AssociatedSubframes: associatedSubframes, + ExtendedUlInterferenceOverloadIndications: buildUlInterferenceOverloadIndicationList(indications), + } +} + +func extractPaListFromDynamicNaicsInformation(cellId string, dynamicNAICSInformation *C.DynamicNAICSInformation_t) ([]*C.long, error) { + + paListCount := dynamicNAICSInformation.pA_list.list.count + + if paListCount == 0 { + return nil, nil + } + + if paListCount > MaxNoOfPa { + return nil, fmt.Errorf("#extractPaListFromDynamicNaicsInformation - cellId: %s - Invalid PA list count", cellId) + } + + extendedUlInterferenceOverLoadIndicationList := (*[1 << 30]*C.long)(unsafe.Pointer(dynamicNAICSInformation.pA_list.list.array))[:int(paListCount):int(paListCount)] + + if (extendedUlInterferenceOverLoadIndicationList == nil) { + return nil, fmt.Errorf("#extractPaListFromDynamicNaicsInformation - cellId: %s - Extended Ul Interference OverLoad Indication List is nil", cellId) + } + + return extendedUlInterferenceOverLoadIndicationList, nil +} + +func buildPaList(paList []*C.long) []entities.PA { + pas := make([]entities.PA, len(paList)) + for i, pi := range paList { + pas[i] = entities.PA(*pi + 1) + } + + return pas +} + +func extractAndBuildActiveDynamicDlTransmissionInformation(cellId string, pduDynamicDlTransmissionInformation *C.DynamicDLTransmissionInformation_t) (*entities.DynamicDlTransmissionInformation, error) { + dynamicNaicsInformation := *(**C.DynamicNAICSInformation_t)(unsafe.Pointer(&pduDynamicDlTransmissionInformation.choice[0])) + + if dynamicNaicsInformation == nil { + return nil, fmt.Errorf("#extractAndBuildActiveDynamicDlTransmissionInformation - cellId: %s - Invalid NAICS Information value", cellId) + } + + dynamicDlTransmissionInformation := entities.DynamicDlTransmissionInformation{State: entities.NaicsState_NAICS_ACTIVE} + + if dynamicNaicsInformation.transmissionModes != nil { + transmissionModes := NewHexString(dynamicNaicsInformation.transmissionModes.buf, dynamicNaicsInformation.transmissionModes.size) + dynamicDlTransmissionInformation.TransmissionModes = transmissionModes + } + + if dynamicNaicsInformation.pB_information != nil { + dynamicDlTransmissionInformation.PB = uint32(*dynamicNaicsInformation.pB_information) + } + + paList, err := extractPaListFromDynamicNaicsInformation(cellId, dynamicNaicsInformation) + + if err != nil { + return nil, err + } + + if (paList != nil) { + dynamicDlTransmissionInformation.PAList = buildPaList(paList) + } + + return &dynamicDlTransmissionInformation, nil +} + +func extractAndBuildDynamicDlTransmissionInformation(cellId string, extIE *C.CellInformation_Item_ExtIEs_t) (*entities.DynamicDlTransmissionInformation, error) { + pduDynamicDlTransmissionInformation := (*C.DynamicDLTransmissionInformation_t)(unsafe.Pointer(&extIE.extensionValue.choice[0])) + + if pduDynamicDlTransmissionInformation.present == C.DynamicDLTransmissionInformation_PR_naics_inactive { + return &entities.DynamicDlTransmissionInformation{State: entities.NaicsState_NAICS_INACTIVE}, nil + } + + if pduDynamicDlTransmissionInformation.present != C.DynamicDLTransmissionInformation_PR_naics_active { + return nil, fmt.Errorf("#extractAndBuildDynamicDlTransmissionInformation - cellId: %s - Invalid Dynamic Dl Transmission Information value", cellId) + } + + return extractAndBuildActiveDynamicDlTransmissionInformation(cellId, pduDynamicDlTransmissionInformation) +} + +func extractCompInformationStartTime(cellId string, compInformation *C.CoMPInformation_t) (*C.CoMPInformationStartTime__Member, error) { + compInformationStartTimeListCount := compInformation.coMPInformationStartTime.list.count + + if compInformationStartTimeListCount == 0 { + return nil, nil + } + + compInformationStartTimeList := (*[1 << 30]*C.CoMPInformationStartTime__Member)(unsafe.Pointer(compInformation.coMPInformationStartTime.list.array))[:int(compInformationStartTimeListCount):int(compInformationStartTimeListCount)] + + if len(compInformationStartTimeList) != 1 { + return nil, fmt.Errorf("#extractCompInformationStartTime - cellId: %s - Invalid Comp Information StartTime list count", cellId) + } + + return compInformationStartTimeList[0], nil +} + +func buildCompHypothesisSet(pduCompHypothesisSetItem *C.CoMPHypothesisSetItem_t) *entities.CompHypothesisSet { + return &entities.CompHypothesisSet{ + CellId: buildCellId(pduCompHypothesisSetItem.coMPCellID), + CompHypothesis: NewHexString(pduCompHypothesisSetItem.coMPHypothesis.buf, pduCompHypothesisSetItem.coMPHypothesis.size), + } +} + +func buildCompHypothesisSets(cellId string, pduCompInformationItemMember *C.CoMPInformationItem__Member) ([]*entities.CompHypothesisSet, error) { + + compHypothesisSets := []*entities.CompHypothesisSet{} + + pduCompHypothesisSetItemsListCount := pduCompInformationItemMember.coMPHypothesisSet.list.count + + if pduCompHypothesisSetItemsListCount == 0 || pduCompHypothesisSetItemsListCount > NaxNoOfCompCells { + return nil, fmt.Errorf("#buildCompHypothesisSets - cellId: %s - Invalid Comp Hypothesis Set Items list count", cellId) + } + + pduCompHypothesisSetItems := (*[1 << 30]*C.CoMPHypothesisSetItem_t)(unsafe.Pointer(pduCompInformationItemMember.coMPHypothesisSet.list.array))[:int(pduCompHypothesisSetItemsListCount):int(pduCompHypothesisSetItemsListCount)] + + for _, pduCompHypothesisSetItem := range pduCompHypothesisSetItems { + compHypothesisSet := buildCompHypothesisSet(pduCompHypothesisSetItem) + compHypothesisSets = append(compHypothesisSets, compHypothesisSet) + } + + return compHypothesisSets, nil +} + +func buildCompInformationItem(cellId string, pduCompInformationItemMember *C.CoMPInformationItem__Member) (*entities.CompInformationItem, error) { + + compHypothesisSets, err := buildCompHypothesisSets(cellId, pduCompInformationItemMember) + + if err != nil { + return nil, err + } + + compInformation := entities.CompInformationItem{ + CompHypothesisSets: compHypothesisSets, + BenefitMetric: int32(pduCompInformationItemMember.benefitMetric), + } + + return &compInformation, nil +} + +func extractAndBuildCompInformation(cellId string, extIE *C.CellInformation_Item_ExtIEs_t) (*entities.CompInformation, error) { + + pduCompInformation := (*C.CoMPInformation_t)(unsafe.Pointer(&extIE.extensionValue.choice[0])) + + compInformation := entities.CompInformation{} + pduCompInformationStartTime, err := extractCompInformationStartTime(cellId, pduCompInformation) + + if err != nil { + return nil, err + } + + if pduCompInformationStartTime != nil { + compInformation.CompInformationStartTime = NewStartTime(pduCompInformationStartTime.startSFN, pduCompInformationStartTime.startSubframeNumber) + } + + pduCompInformationItemsListCount := pduCompInformation.coMPInformationItem.list.count + + if pduCompInformationItemsListCount == 0 || pduCompInformationItemsListCount > NaxNoOfCompHypothesisSet { + return nil, fmt.Errorf("#extractAndBuildCompInformation - cellId: %s - Invalid Comp Information Items list count", cellId) + } + + pduCompInformationItems := (*[1 << 30]*C.CoMPInformationItem__Member)(unsafe.Pointer(pduCompInformation.coMPInformationItem.list.array))[:int(pduCompInformationItemsListCount):int(pduCompInformationItemsListCount)] + + for _, pduCompInformationItem := range pduCompInformationItems { + compInformationItem, err := buildCompInformationItem(cellId, pduCompInformationItem) + + if err != nil { + return nil, err + } + + compInformation.CompInformationItems = append(compInformation.CompInformationItems, compInformationItem) + } + + return &compInformation, nil +} + +func populateAbsInformation(cellId string, cellLoadInformation *entities.CellLoadInformation, extIE *C.CellInformation_Item_ExtIEs_t) error { + absInformation, err := extractAndBuildCellLoadInformationAbsInformation(cellId, extIE) + + if err != nil { + return err + } + + cellLoadInformation.AbsInformation = absInformation + return nil +} + +func populateInvokeIndication(cellId string, cellLoadInformation *entities.CellLoadInformation, extIE *C.CellInformation_Item_ExtIEs_t) error { + pduInvokeIndication := (*C.InvokeIndication_t)(unsafe.Pointer(&extIE.extensionValue.choice[0])) + cellLoadInformation.InvokeIndication = entities.InvokeIndication(*pduInvokeIndication + 1) + return nil +} + +func populateIntendedUlDlConfiguration(cellId string, cellLoadInformation *entities.CellLoadInformation, extIE *C.CellInformation_Item_ExtIEs_t) error { + pduSubframeAssignment := (*C.SubframeAssignment_t)(unsafe.Pointer(&extIE.extensionValue.choice[0])) + cellLoadInformation.IntendedUlDlConfiguration = entities.SubframeAssignment(*pduSubframeAssignment + 1) + return nil +} + +func populateExtendedUlInterferenceOverloadInfo(cellId string, cellLoadInformation *entities.CellLoadInformation, extIE *C.CellInformation_Item_ExtIEs_t) error { + pduExtendedULInterferenceOverloadInfo := (*C.ExtendedULInterferenceOverloadInfo_t)(unsafe.Pointer(&extIE.extensionValue.choice[0])) + cellLoadInformation.ExtendedUlInterferenceOverloadInfo = buildExtendedULInterferenceOverloadInfo(pduExtendedULInterferenceOverloadInfo) + return nil +} + +func populateCompInformation(cellId string, cellLoadInformation *entities.CellLoadInformation, extIE *C.CellInformation_Item_ExtIEs_t) error { + pduCompInformation, err := extractAndBuildCompInformation(cellId, extIE) + + if err != nil { + return err + } + + cellLoadInformation.CompInformation = pduCompInformation + return nil +} + +func populateDynamicDLTransmissionInformation(cellId string, cellLoadInformation *entities.CellLoadInformation, extIE *C.CellInformation_Item_ExtIEs_t) error { + dynamicDLTransmissionInformation, err := extractAndBuildDynamicDlTransmissionInformation(cellId, extIE) + + if err != nil { + return err + } + + cellLoadInformation.DynamicDlTransmissionInformation = dynamicDLTransmissionInformation + return nil +} + +func populateCellLoadInformationExtensionIEs(cellId string, cellLoadInformation *entities.CellLoadInformation, extIEs []*C.CellInformation_Item_ExtIEs_t) error { + for _, extIE := range extIEs { + + populator, ok := populators[extIE.extensionValue.present] + + if (!ok) { + continue + } + + err := populator(cellId, cellLoadInformation, extIE) + + if err != nil { + return err + } + + } + + return nil +} + +func (*EnbLoadInformationExtractor) ExtractAndBuildRanLoadInformation(pdu *C.E2AP_PDU_t, ranLoadInformation *entities.RanLoadInformation) error { + + defer C.delete_pdu(pdu) + + pduCellInformationItemIEs, err := extractPduCellInformationItemIEs(pdu) + + if err != nil { + return err + } + + for _, pduCellInformationItemIE := range pduCellInformationItemIEs { + err = populateCellLoadInformation(pduCellInformationItemIE, ranLoadInformation) + + if err != nil { + return err + } + } + + return nil +} +*/ \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/converters/enb_load_information_extractor_test.go b/setup/e2mgr/E2Manager/converters/enb_load_information_extractor_test.go new file mode 100644 index 0000000..0346e35 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/enb_load_information_extractor_test.go @@ -0,0 +1,274 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +//import ( +// "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +//) +// +///* +//Test permutations of eNB Load Information to protobuf +//*/ +// +//type LoadInformationTestCaseName string +// +//const LoadTimestamp = 1257894000000000000 +// +//const ( +// SingleCellWithCellIdOnly LoadInformationTestCaseName = "SINGLE CELL WITH CELL ID ONLY" //base +// SingleCellPartiallyPopulated LoadInformationTestCaseName = "SINGLE CELL PARTIALLY POPULATED" //8 +// TwoCellsFullInfo LoadInformationTestCaseName = "TWO CELLS FULLY POPULATED" //13 +//) +// +//type LoadInformationTestCase struct { +// loadInformationTestCaseName LoadInformationTestCaseName +// packedUperPdu string +// packedAperPdu string +// expectedLoadInformation *entities.RanLoadInformation +//} +// +//var testCases = []LoadInformationTestCase{ +// { +// loadInformationTestCaseName: SingleCellWithCellIdOnly, +// packedAperPdu: "000240140000010006400d00000740080002f8290007ab50", +// packedUperPdu: "004898000400190d0000074200017c148003d5a80000", +// expectedLoadInformation: GenerateSingleCellWithCellIdOnlyRanLoadInformation(), +// }, +// { +// loadInformationTestCaseName: SingleCellPartiallyPopulated, +// packedAperPdu: "", //TODO: populate and USE +// packedUperPdu: "004b380004001961000007571e017c148003d5a8205000017c180003d5a875555003331420008007a85801f07c1f07c41f07c1e07801f2020000c680b0003220664102800d8908020000be0c4001ead4016e007ab50100002f8320067ab5005b8c1ead5070190c000000", +// expectedLoadInformation: GenerateSingleCellPartiallyPopulatedLoadInformation(), +// }, +// { +// loadInformationTestCaseName: TwoCellsFullInfo, +// packedAperPdu: "", //TODO: populate and USE +// packedUperPdu: "004c07080004001980da0100075bde017c148003d5a8205000017c180003d5a875555403331420000012883a0003547400cd20002801ea16007c1f07c1f107c1f0781e007c80800031a02c000c88199040a00352083669190000d8908020000be0c4001ead4016e007ab50100002f8320067ab5005b8c1ead5070190c00001d637805f220000f56a081400005f020000f56a1d555400ccc508002801ea16007c1f07c1f107c1f0781e007c80800031a02c000c88199040a00352083669190000d8908020000be044001ead4016e007ab50100002f8120067ab5005b8c1ead5070190c00000", +// expectedLoadInformation: GenerateTwoCellsFullyPopulatedRanLoadInformation(), +// }, +//} + +//func TestExtractAndBuildRanLoadInformation(t *testing.T) { +// logger, _ := logger.InitLogger(logger.InfoLevel) +// +// for _, tc := range testCases { +// t.Run(string(tc.loadInformationTestCaseName), func(t *testing.T) { +// +// var payload []byte +// _, err := fmt.Sscanf(tc.packedUperPdu, "%x", &payload) +// +// if err != nil { +// t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) +// } +// +// pdu, err := unpackX2apPduUPer(logger, MaxAsn1CodecAllocationBufferSize, len(payload), payload, MaxAsn1CodecMessageBufferSize) +// +// actualRanLoadInformation := &entities.RanLoadInformation{LoadTimestamp: LoadTimestamp} +// +// err = ExtractAndBuildRanLoadInformation(pdu, actualRanLoadInformation) +// +// if err != nil { +// t.Errorf("want: success, got: error: %v\n", err) +// } +// +// if !assert.Equal(t, tc.expectedLoadInformation, actualRanLoadInformation) { +// t.Errorf("want: %v, got: %v", tc.expectedLoadInformation, actualRanLoadInformation) +// } +// }) +// } +//} + +/*func GenerateSingleCellWithCellIdOnlyRanLoadInformation() *entities.RanLoadInformation { + return &entities.RanLoadInformation{ + LoadTimestamp: LoadTimestamp, + CellLoadInfos: []*entities.CellLoadInformation{ + {CellId: "02f829:0007ab50"}, + }, + } +} + +func GenerateSingleCellPartiallyPopulatedLoadInformation() *entities.RanLoadInformation { + + ulInterferenceOverloadIndications := []entities.UlInterferenceOverloadIndication{ + entities.UlInterferenceOverloadIndication_HIGH_INTERFERENCE, + entities.UlInterferenceOverloadIndication_MEDIUM_INTERFERENCE, + entities.UlInterferenceOverloadIndication_LOW_INTERFERENCE, + } + + rntp := entities.RelativeNarrowbandTxPower{ + RntpPerPrb: "cc", + RntpThreshold: entities.RntpThreshold_NEG_6, + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V2_ANT_PRT, + PB: 2, + PdcchInterferenceImpact: 1, + } + + absInformation := entities.AbsInformation{ + Mode: entities.AbsInformationMode_ABS_INFO_FDD, + AbsPatternInfo: "07c1f07c1f", + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V1_ANT_PRT, + MeasurementSubset: "83e0f83c0f", + } + + extendedUlInterferenceOverloadInfo := entities.ExtendedUlInterferenceOverloadInfo{ + AssociatedSubframes: "c8", + ExtendedUlInterferenceOverloadIndications: ulInterferenceOverloadIndications, + } + + compInformationStartTime := entities.StartTime{ + StartSfn: 50, + StartSubframeNumber: 3, + } + + return &entities.RanLoadInformation{ + LoadTimestamp: LoadTimestamp, + CellLoadInfos: []*entities.CellLoadInformation{ + { + CellId: "02f829:0007ab50", + UlInterferenceOverloadIndications: ulInterferenceOverloadIndications, + UlHighInterferenceInfos: []*entities.UlHighInterferenceInformation{{TargetCellId: "02f830:0007ab50", UlHighInterferenceIndication: "aaaa"}}, + RelativeNarrowbandTxPower: &rntp, + AbsInformation: &absInformation, + InvokeIndication: entities.InvokeIndication_ABS_INFORMATION, + IntendedUlDlConfiguration: entities.SubframeAssignment_SA6, + ExtendedUlInterferenceOverloadInfo: &extendedUlInterferenceOverloadInfo, + CompInformation: &entities.CompInformation{ + CompInformationItems: []*entities.CompInformationItem{ + { + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "02f831:0007ab50", CompHypothesis: "e007ab50"}}, + BenefitMetric: -99, + }, + { + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "02f832:0067ab50", CompHypothesis: "e307ab50"}}, + BenefitMetric: 30, + }, + }, + CompInformationStartTime: &compInformationStartTime, + }, + }, + }, + } + +} + +func GenerateTwoCellsFullyPopulatedRanLoadInformation() *entities.RanLoadInformation { + + ulInterferenceOverloadIndications := []entities.UlInterferenceOverloadIndication{ + entities.UlInterferenceOverloadIndication_HIGH_INTERFERENCE, + entities.UlInterferenceOverloadIndication_MEDIUM_INTERFERENCE, + entities.UlInterferenceOverloadIndication_LOW_INTERFERENCE, + } + + rntp := entities.RelativeNarrowbandTxPower{ + RntpPerPrb: "cc", + RntpThreshold: entities.RntpThreshold_NEG_6, + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V2_ANT_PRT, + PB: 2, + PdcchInterferenceImpact: 1, + } + + enhancedRntp := entities.EnhancedRntp{ + EnhancedRntpBitmap: "aa38", + RntpHighPowerThreshold: entities.RntpThreshold_NEG_4, + EnhancedRntpStartTime: &entities.StartTime{StartSfn: 51, StartSubframeNumber: 9}, + } + + rntpWithEnhanced := rntp + rntpWithEnhanced.EnhancedRntp = &enhancedRntp + + absInformation := entities.AbsInformation{ + Mode: entities.AbsInformationMode_ABS_INFO_FDD, + AbsPatternInfo: "07c1f07c1f", + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V1_ANT_PRT, + MeasurementSubset: "83e0f83c0f", + } + + extendedUlInterferenceOverloadInfo := entities.ExtendedUlInterferenceOverloadInfo{ + AssociatedSubframes: "c8", + ExtendedUlInterferenceOverloadIndications: ulInterferenceOverloadIndications, + } + + compInformationStartTime := entities.StartTime{ + StartSfn: 50, + StartSubframeNumber: 3, + } + + dynamicDlTransmissionInformation := entities.DynamicDlTransmissionInformation{ + State: entities.NaicsState_NAICS_ACTIVE, + TransmissionModes: "cd", + PB: 0, + PAList: []entities.PA{entities.PA_DB_NEG_1_DOT_77, entities.PA_DB_NEG_3}, + } + + return &entities.RanLoadInformation{ + LoadTimestamp: LoadTimestamp, + CellLoadInfos: []*entities.CellLoadInformation{ + { + CellId: "02f829:0007ab50", + UlInterferenceOverloadIndications: ulInterferenceOverloadIndications, + UlHighInterferenceInfos: []*entities.UlHighInterferenceInformation{{TargetCellId: "02f830:0007ab50", UlHighInterferenceIndication: "aaaa"}}, + RelativeNarrowbandTxPower: &rntpWithEnhanced, + AbsInformation: &absInformation, + InvokeIndication: entities.InvokeIndication_ABS_INFORMATION, + IntendedUlDlConfiguration: entities.SubframeAssignment_SA6, + ExtendedUlInterferenceOverloadInfo: &extendedUlInterferenceOverloadInfo, + CompInformation: &entities.CompInformation{ + CompInformationItems: []*entities.CompInformationItem{ + { + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "02f831:0007ab50", CompHypothesis: "e007ab50"}}, + BenefitMetric: -99, + }, + { + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "02f832:0067ab50", CompHypothesis: "e307ab50"}}, + BenefitMetric: 30, + }, + }, + CompInformationStartTime: &compInformationStartTime, + }, + DynamicDlTransmissionInformation: &dynamicDlTransmissionInformation, + }, + { + CellId: "02f910:0007ab50", + UlInterferenceOverloadIndications: ulInterferenceOverloadIndications, + UlHighInterferenceInfos: []*entities.UlHighInterferenceInformation{{TargetCellId: "02f810:0007ab50", UlHighInterferenceIndication: "aaaa"}}, + RelativeNarrowbandTxPower: &rntp, + AbsInformation: &absInformation, + InvokeIndication: entities.InvokeIndication_ABS_INFORMATION, + IntendedUlDlConfiguration: entities.SubframeAssignment_SA6, + ExtendedUlInterferenceOverloadInfo: &extendedUlInterferenceOverloadInfo, + CompInformation: &entities.CompInformation{ + CompInformationItems: []*entities.CompInformationItem{ + { + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "02f811:0007ab50", CompHypothesis: "e007ab50"}}, + BenefitMetric: -99, + }, + { + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "02f812:0067ab50", CompHypothesis: "e307ab50"}}, + BenefitMetric: 30, + }, + }, + CompInformationStartTime: &compInformationStartTime, + }, + DynamicDlTransmissionInformation: &dynamicDlTransmissionInformation, + }, + }, + } +}*/ diff --git a/setup/e2mgr/E2Manager/converters/endc_setup_failure_response_converter.go b/setup/e2mgr/E2Manager/converters/endc_setup_failure_response_converter.go new file mode 100644 index 0000000..587fedf --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/endc_setup_failure_response_converter.go @@ -0,0 +1,99 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/e2pdus" + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +type EndcSetupFailureResponseConverter struct { + logger *logger.Logger +} + +type IEndcSetupFailureResponseConverter interface { + UnpackEndcSetupFailureResponseAndExtract(packedBuf []byte) (*entities.SetupFailure, error) +} + +func NewEndcSetupFailureResponseConverter(logger *logger.Logger) *EndcSetupFailureResponseConverter { + return &EndcSetupFailureResponseConverter{ + logger: logger, + } +} + + +// Populate and return the EN-DC/X2 setup response failure structure with data from the pdu +func endcX2SetupFailureResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.SetupFailure, error) { + setupFailure := entities.SetupFailure{} + + if pdu.present == C.E2AP_PDU_PR_unsuccessfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + unsuccessfulOutcome := *(**C.UnsuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if unsuccessfulOutcome != nil && unsuccessfulOutcome.value.present == C.UnsuccessfulOutcome__value_PR_ENDCX2SetupFailure { + endcX2SetupFailure := (*C.ENDCX2SetupFailure_t)(unsafe.Pointer(&unsuccessfulOutcome.value.choice[0])) + if endcX2SetupFailure != nil && endcX2SetupFailure.protocolIEs.list.count > 0 { + count:=int(endcX2SetupFailure.protocolIEs.list.count) + endcX2SetupFailure_IEs_slice := (*[1 << 30]*C.ENDCX2SetupFailure_IEs_t)(unsafe.Pointer(endcX2SetupFailure.protocolIEs.list.array))[:count:count] + for _, endcX2SetupFailure_IE := range endcX2SetupFailure_IEs_slice { + if endcX2SetupFailure_IE != nil { + switch endcX2SetupFailure_IE.value.present { + case C.ENDCX2SetupFailure_IEs__value_PR_Cause: + causeIE := (*C.Cause_t)(unsafe.Pointer(&endcX2SetupFailure_IE.value.choice[0])) + err := getCause(causeIE, &setupFailure) + if err != nil { + return nil, err + } + case C.ENDCX2SetupFailure_IEs__value_PR_TimeToWait: + setupFailure.TimeToWait = entities.TimeToWait(1 + *((*C.TimeToWait_t)(unsafe.Pointer(&endcX2SetupFailure_IE.value.choice[0])))) + case C.ENDCX2SetupFailure_IEs__value_PR_CriticalityDiagnostics: + cdIE := (*C.CriticalityDiagnostics_t)(unsafe.Pointer(&endcX2SetupFailure_IE.value.choice[0])) + if cd, err := getCriticalityDiagnostics(cdIE); err == nil { + setupFailure.CriticalityDiagnostics = cd + } else { + return nil, err + } + } + } + } + } + } + } + + return &setupFailure, nil +} + +func (c *EndcSetupFailureResponseConverter) UnpackEndcSetupFailureResponseAndExtract(packedBuf []byte) (*entities.SetupFailure, error) { + pdu, err := UnpackX2apPdu(c.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, len(packedBuf), packedBuf, e2pdus.MaxAsn1CodecMessageBufferSize) + if err != nil { + return nil, err + } + + defer C.delete_pdu(pdu) + + return endcX2SetupFailureResponseToProtobuf(pdu) +} diff --git a/setup/e2mgr/E2Manager/converters/endc_setup_failure_response_converter_test.go b/setup/e2mgr/E2Manager/converters/endc_setup_failure_response_converter_test.go new file mode 100644 index 0000000..77c60b5 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/endc_setup_failure_response_converter_test.go @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package converters + +import ( + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb +*/ + +func TestUnpackEndcX2SetupFailureResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + response string + packedPdu string + failure error + }{ + { + response: "CONNECTED_SETUP_FAILED network_layer_cause:HANDOVER_DESIRABLE_FOR_RADIO_REASONS time_to_wait:V1S criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + radioNetwork_t = 0 + ProtocolIE_Container_elm + id_t = 0x16 + criticality_t = 0x1 + TimeToWait = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "4024001a0000030005400200000016400100001140087821a00000008040"}, + + /**** shares the same code with x2setup failure response to protobuf ****/ + } + + converter := NewEndcSetupFailureResponseConverter(logger) + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + response, err := converter.UnpackEndcSetupFailureResponseAndExtract(payload) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if response == nil { + if tc.failure == nil { + t.Errorf("want: response=%s, got: empty response", tc.response) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nb.SetupFailure = response + nb.FailureType = entities.Failure_X2_SETUP_FAILURE + respStr := fmt.Sprintf("%s %s", nb.ConnectionStatus, response) + if !strings.EqualFold(respStr, tc.response) { + t.Errorf("want: response=[%s], got: [%s]", tc.response, respStr) + } + + } + }) + } +} diff --git a/setup/e2mgr/E2Manager/converters/endc_setup_response_converter.go b/setup/e2mgr/E2Manager/converters/endc_setup_response_converter.go new file mode 100644 index 0000000..8901a92 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/endc_setup_response_converter.go @@ -0,0 +1,344 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/e2pdus" + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +const ( + maxCellinengNB = 16384 + maxofNRNeighbours = 1024 + maxnoofNrCellBands = 32 +) + +type EndcSetupResponseConverter struct { + logger *logger.Logger +} + +type IEndcSetupResponseConverter interface { + UnpackEndcSetupResponseAndExtract(packedBuf []byte) (*entities.GlobalNbId, *entities.Gnb, error) +} + +func NewEndcSetupResponseConverter(logger *logger.Logger) *EndcSetupResponseConverter { + return &EndcSetupResponseConverter{ + logger: logger, + } +} + +func getNRFreqInfo(freqInfo C.NRFreqInfo_t) (*entities.NrFrequencyInfo, error) { + var info *entities.NrFrequencyInfo + info = &entities.NrFrequencyInfo{NrArFcn: uint64(freqInfo.nRARFCN)} + + if freqInfo.sULInformation != nil { + info.SulInformation = &entities.NrFrequencyInfo_SulInformation{SulArFcn: uint64((*C.SULInformation_t)(freqInfo.sULInformation).sUL_ARFCN)} + + if value, err := getNR_TxBW((*C.SULInformation_t)(freqInfo.sULInformation).sUL_TxBW); err == nil { + info.SulInformation.SulTransmissionBandwidth = value + } else { + return nil, err + } + } + + if freqInfo.freqBandListNr.list.count > 0 && freqInfo.freqBandListNr.list.count <= maxnoofNrCellBands { + count := int(freqInfo.freqBandListNr.list.count) + freqBandListNr_slice := (*[1 << 30]*C.FreqBandNrItem_t)(unsafe.Pointer(freqInfo.freqBandListNr.list.array))[:count:count] + for _, freqBandNrItem := range freqBandListNr_slice { + frequencyBand := &entities.FrequencyBandItem{NrFrequencyBand: uint32(freqBandNrItem.freqBandIndicatorNr)} + + if freqBandNrItem.supportedSULBandList.list.count > 0 && freqBandNrItem.supportedSULBandList.list.count <= maxnoofNrCellBands { + count := int(freqBandNrItem.supportedSULBandList.list.count) + supportedSULBandList_slice := (*[1 << 30]*C.SupportedSULFreqBandItem_t)(unsafe.Pointer(freqBandNrItem.supportedSULBandList.list.array))[:count:count] + for _, supportedSULFreqBandItem := range supportedSULBandList_slice { + frequencyBand.SupportedSulBands = append(frequencyBand.SupportedSulBands, uint32(supportedSULFreqBandItem.freqBandIndicatorNr)) + } + } + + info.FrequencyBands = append(info.FrequencyBands, frequencyBand) + } + } + + return info, nil +} + +func getNR_TxBW(txBW C.NR_TxBW_t) (*entities.NrTransmissionBandwidth, error) { + var bw *entities.NrTransmissionBandwidth + + bw = &entities.NrTransmissionBandwidth{Nrscs: entities.Nrscs(1 + int64(txBW.nRSCS))} + bw.Ncnrb = entities.Ncnrb(1 + int64(txBW.nRNRB)) + + return bw, nil +} + +func getnrModeInfoFDDInfo(fdd *C.FDD_InfoServedNRCell_Information_t) (*entities.ServedNRCellInformation_ChoiceNRMode_FddInfo, error) { + var fddInfo *entities.ServedNRCellInformation_ChoiceNRMode_FddInfo + + if info, err := getNRFreqInfo(fdd.ul_NRFreqInfo); err == nil { + fddInfo = &entities.ServedNRCellInformation_ChoiceNRMode_FddInfo{UlFreqInfo: info} + } else { + return nil, err + } + + if info, err := getNRFreqInfo(fdd.dl_NRFreqInfo); err == nil { + fddInfo.DlFreqInfo = info + } else { + return nil, err + } + + if bw, err := getNR_TxBW(fdd.ul_NR_TxBW); err == nil { + fddInfo.UlTransmissionBandwidth = bw + } else { + return nil, err + } + + if bw, err := getNR_TxBW(fdd.dl_NR_TxBW); err == nil { + fddInfo.DlTransmissionBandwidth = bw + } else { + return nil, err + } + + return fddInfo, nil +} + +func getnrModeInfoTDDInfo(tdd *C.TDD_InfoServedNRCell_Information_t) (*entities.ServedNRCellInformation_ChoiceNRMode_TddInfo, error) { + var tddInfo *entities.ServedNRCellInformation_ChoiceNRMode_TddInfo + + if info, err := getNRFreqInfo(tdd.nRFreqInfo); err == nil { + tddInfo = &entities.ServedNRCellInformation_ChoiceNRMode_TddInfo{NrFreqInfo: info} + } else { + return nil, err + + } + + if bw, err := getNR_TxBW(tdd.nR_TxBW); err == nil { + tddInfo.TransmissionBandwidth = bw + } else { + return nil, err + } + + return tddInfo, nil +} + +func getNRNeighbourInformation_ChoiceNRMode_FDDInfo(fdd *C.FDD_InfoNeighbourServedNRCell_Information_t) (*entities.NrNeighbourInformation_ChoiceNRMode_FddInfo, error) { + var fddInfo *entities.NrNeighbourInformation_ChoiceNRMode_FddInfo + + if info, err := getNRFreqInfo(fdd.ul_NRFreqInfo); err == nil { + fddInfo = &entities.NrNeighbourInformation_ChoiceNRMode_FddInfo{UlarFcnFreqInfo: info} + } else { + return nil, err + } + + if info, err := getNRFreqInfo(fdd.dl_NRFreqInfo); err == nil { + fddInfo.DlarFcnFreqInfo = info + } else { + return nil, err + } + + return fddInfo, nil +} +func getNRNeighbourInformation_ChoiceNRMode_TDDInfo(tdd *C.TDD_InfoNeighbourServedNRCell_Information_t) (*entities.NrNeighbourInformation_ChoiceNRMode_TddInfo, error) { + var tddInfo *entities.NrNeighbourInformation_ChoiceNRMode_TddInfo + + if info, err := getNRFreqInfo(tdd.nRFreqInfo); err == nil { + tddInfo = &entities.NrNeighbourInformation_ChoiceNRMode_TddInfo{ArFcnNrFreqInfo: info} + } else { + return nil, err + } + + return tddInfo, nil +} + +func getnRNeighbourInfo(neighbour_Information *C.NRNeighbour_Information_t) ([]*entities.NrNeighbourInformation, error) { + var neighbours []*entities.NrNeighbourInformation + + if neighbour_Information != nil && neighbour_Information.list.count > 0 && neighbour_Information.list.count <= maxofNRNeighbours { + count := int(neighbour_Information.list.count) + neighbour_Information_slice := (*[1 << 30]*C.NRNeighbour_Information__Member)(unsafe.Pointer(neighbour_Information.list.array))[:count:count] + for _, member := range neighbour_Information_slice { + info := &entities.NrNeighbourInformation{NrPci: uint32(member.nrpCI)} + + //pLMN_Identity:nRcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(member.nrCellID.pLMN_Identity.buf), C.int(member.nrCellID.pLMN_Identity.size)) + nRcellIdentifier := C.GoBytes(unsafe.Pointer(member.nrCellID.nRcellIdentifier.buf), C.int(member.nrCellID.nRcellIdentifier.size)) + info.NrCgi = fmt.Sprintf("%02x:%02x", plmnId, nRcellIdentifier) + + if member.fiveGS_TAC != nil { + info.Stac5G = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(member.fiveGS_TAC.buf), C.int(member.fiveGS_TAC.size))) + + } + + if member.configured_TAC != nil { + info.ConfiguredStac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(member.configured_TAC.buf), C.int(member.configured_TAC.size))) + } + switch member.nRNeighbourModeInfo.present { + case C.NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_fdd: + if fdd, err := getNRNeighbourInformation_ChoiceNRMode_FDDInfo(*(**C.FDD_InfoNeighbourServedNRCell_Information_t)(unsafe.Pointer(&member.nRNeighbourModeInfo.choice[0]))); fdd != nil && err == nil { + info.ChoiceNrMode, info.NrMode = &entities.NrNeighbourInformation_ChoiceNRMode{Fdd: fdd}, entities.Nr_FDD + } + + case C.NRNeighbour_Information__Member__nRNeighbourModeInfo_PR_tdd: + if tdd, err := getNRNeighbourInformation_ChoiceNRMode_TDDInfo(*(**C.TDD_InfoNeighbourServedNRCell_Information_t)(unsafe.Pointer(&member.nRNeighbourModeInfo.choice[0]))); tdd != nil && err == nil { + info.ChoiceNrMode, info.NrMode = &entities.NrNeighbourInformation_ChoiceNRMode{Tdd: tdd}, entities.Nr_TDD + } + } + neighbours = append(neighbours, info) + } + + } + + return neighbours, nil +} + +func getServedNRCells(servedNRcellsManagementList *C.ServedNRcellsENDCX2ManagementList_t) ([]*entities.ServedNRCell, error) { + var servedNRCells []*entities.ServedNRCell + + if servedNRcellsManagementList != nil && servedNRcellsManagementList.list.count > 0 && servedNRcellsManagementList.list.count <= maxCellinengNB { + count := int(servedNRcellsManagementList.list.count) + servedNRcellsENDCX2ManagementList__Member_slice := (*[1 << 30]*C.ServedNRcellsENDCX2ManagementList__Member)(unsafe.Pointer(servedNRcellsManagementList.list.array))[:count:count] + for _, servedNRcellsENDCX2ManagementList__Member := range servedNRcellsENDCX2ManagementList__Member_slice { + servedNRCellInfo := servedNRcellsENDCX2ManagementList__Member.servedNRCellInfo + servedNRCell := &entities.ServedNRCell{ServedNrCellInformation: &entities.ServedNRCellInformation{NrPci: uint32(servedNRCellInfo.nrpCI)}} + + //pLMN_Identity:nRcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(servedNRCellInfo.nrCellID.pLMN_Identity.buf), C.int(servedNRCellInfo.nrCellID.pLMN_Identity.size)) + nRcellIdentifier := C.GoBytes(unsafe.Pointer(servedNRCellInfo.nrCellID.nRcellIdentifier.buf), C.int(servedNRCellInfo.nrCellID.nRcellIdentifier.size)) + servedNRCell.ServedNrCellInformation.CellId = fmt.Sprintf("%02x:%02x", plmnId, nRcellIdentifier) + + if servedNRCellInfo.fiveGS_TAC != nil { + servedNRCell.ServedNrCellInformation.Stac5G = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(servedNRCellInfo.fiveGS_TAC.buf), C.int(servedNRCellInfo.fiveGS_TAC.size))) + } + + if servedNRCellInfo.configured_TAC != nil { + servedNRCell.ServedNrCellInformation.ConfiguredStac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(servedNRCellInfo.configured_TAC.buf), C.int(servedNRCellInfo.configured_TAC.size))) + } + + if servedNRCellInfo.broadcastPLMNs.list.count > 0 && servedNRCellInfo.broadcastPLMNs.list.count <= maxnoofBPLMNs { + count := int(servedNRCellInfo.broadcastPLMNs.list.count) + pLMN_Identity_slice := (*[1 << 30]*C.PLMN_Identity_t)(unsafe.Pointer(servedNRCellInfo.broadcastPLMNs.list.array))[:count:count] + for _, pLMN_Identity := range pLMN_Identity_slice { + servedNRCell.ServedNrCellInformation.ServedPlmns = append(servedNRCell.ServedNrCellInformation.ServedPlmns, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(pLMN_Identity.buf), C.int(pLMN_Identity.size)))) + } + } + switch servedNRCellInfo.nrModeInfo.present { + case C.ServedNRCell_Information__nrModeInfo_PR_fdd: + if fdd, err := getnrModeInfoFDDInfo(*(**C.FDD_InfoServedNRCell_Information_t)(unsafe.Pointer(&servedNRCellInfo.nrModeInfo.choice[0]))); fdd != nil && err == nil { + servedNRCell.ServedNrCellInformation.ChoiceNrMode, servedNRCell.ServedNrCellInformation.NrMode = &entities.ServedNRCellInformation_ChoiceNRMode{Fdd: fdd}, entities.Nr_FDD + } else { + return nil, err + } + case C.ServedNRCell_Information__nrModeInfo_PR_tdd: + if tdd, err := getnrModeInfoTDDInfo(*(**C.TDD_InfoServedNRCell_Information_t)(unsafe.Pointer(&servedNRCellInfo.nrModeInfo.choice[0]))); tdd != nil && err == nil { + servedNRCell.ServedNrCellInformation.ChoiceNrMode, servedNRCell.ServedNrCellInformation.NrMode = &entities.ServedNRCellInformation_ChoiceNRMode{Tdd: tdd}, entities.Nr_TDD + } else { + return nil, err + } + } + + neighbours, err := getnRNeighbourInfo(servedNRcellsENDCX2ManagementList__Member.nRNeighbourInfo) + if err != nil { + return nil, err + } + servedNRCell.NrNeighbourInfos = neighbours + + servedNRCells = append(servedNRCells, servedNRCell) + } + } + + return servedNRCells, nil +} + +// Populate the GNB structure with data from the pdu +// Return the GNB and the associated key which can later be used to retrieve the GNB from the database. + +func endcX2SetupResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.GlobalNbId, *entities.Gnb, error) { + + var gnb *entities.Gnb + var globalNbId *entities.GlobalNbId + + if pdu.present == C.E2AP_PDU_PR_successfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + successfulOutcome := *(**C.SuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if successfulOutcome != nil && successfulOutcome.value.present == C.SuccessfulOutcome__value_PR_ENDCX2SetupResponse { + endcX2SetupResponse := (*C.ENDCX2SetupResponse_t)(unsafe.Pointer(&successfulOutcome.value.choice[0])) + if endcX2SetupResponse != nil && endcX2SetupResponse.protocolIEs.list.count > 0 { + count := int(endcX2SetupResponse.protocolIEs.list.count) + endcX2SetupResponse_IEs_slice := (*[1 << 30]*C.ENDCX2SetupResponse_IEs_t)(unsafe.Pointer(endcX2SetupResponse.protocolIEs.list.array))[:count:count] + for _, endcX2SetupResponse_IE := range endcX2SetupResponse_IEs_slice { + if endcX2SetupResponse_IE.value.present == C.ENDCX2SetupResponse_IEs__value_PR_RespondingNodeType_EndcX2Setup { + respondingNodeType := (*C.RespondingNodeType_EndcX2Setup_t)(unsafe.Pointer(&endcX2SetupResponse_IE.value.choice[0])) + switch respondingNodeType.present { + case C.RespondingNodeType_EndcX2Setup_PR_respond_en_gNB: + en_gNB_ENDCX2SetupReqAckIEs_Container := *(**C.ProtocolIE_Container_119P89_t)(unsafe.Pointer(&respondingNodeType.choice[0])) + if en_gNB_ENDCX2SetupReqAckIEs_Container != nil && en_gNB_ENDCX2SetupReqAckIEs_Container.list.count > 0 { + count := int(en_gNB_ENDCX2SetupReqAckIEs_Container.list.count) + en_gNB_ENDCX2SetupReqAckIEs_slice := (*[1 << 30]*C.En_gNB_ENDCX2SetupReqAckIEs_t)(unsafe.Pointer(en_gNB_ENDCX2SetupReqAckIEs_Container.list.array))[:count:count] + for _, en_gNB_ENDCX2SetupReqAckIE := range en_gNB_ENDCX2SetupReqAckIEs_slice { + switch en_gNB_ENDCX2SetupReqAckIE.value.present { + case C.En_gNB_ENDCX2SetupReqAckIEs__value_PR_GlobalGNB_ID: + globalGNB_ID := (*C.GlobalGNB_ID_t)(unsafe.Pointer(&en_gNB_ENDCX2SetupReqAckIE.value.choice[0])) + plmnId := C.GoBytes(unsafe.Pointer(globalGNB_ID.pLMN_Identity.buf), C.int(globalGNB_ID.pLMN_Identity.size)) + if globalGNB_ID.gNB_ID.present == C.GNB_ID_PR_gNB_ID { + gnbIdAsBitString := (*C.BIT_STRING_t)(unsafe.Pointer(&globalGNB_ID.gNB_ID.choice[0])) + globalNbId = &entities.GlobalNbId{} + globalNbId.NbId = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(gnbIdAsBitString.buf), C.int(gnbIdAsBitString.size))) + globalNbId.PlmnId = fmt.Sprintf("%02x", plmnId) + } + case C.En_gNB_ENDCX2SetupReqAckIEs__value_PR_ServedNRcellsENDCX2ManagementList: + servedCells, err := getServedNRCells((*C.ServedNRcellsENDCX2ManagementList_t)(unsafe.Pointer(&en_gNB_ENDCX2SetupReqAckIE.value.choice[0]))) + if err != nil { + return globalNbId, nil, err + } + gnb = &entities.Gnb{} + gnb.ServedNrCells = servedCells + } + } + } + case C.RespondingNodeType_EndcX2Setup_PR_respond_eNB: + /*ignored*/ + } + } + } + } + } + } + + return globalNbId, gnb, nil +} + +func (c *EndcSetupResponseConverter) UnpackEndcSetupResponseAndExtract(packedBuf []byte) (*entities.GlobalNbId, *entities.Gnb, error) { + pdu, err := UnpackX2apPdu(c.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, len(packedBuf), packedBuf, e2pdus.MaxAsn1CodecMessageBufferSize) + + if err != nil { + return nil, nil, err + } + + defer C.delete_pdu(pdu) + return endcX2SetupResponseToProtobuf(pdu) +} diff --git a/setup/e2mgr/E2Manager/converters/endc_setup_response_converter_test.go b/setup/e2mgr/E2Manager/converters/endc_setup_response_converter_test.go new file mode 100644 index 0000000..f68e4c0 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/endc_setup_response_converter_test.go @@ -0,0 +1,612 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package converters + +import ( + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb + */ + +func TestUnpackEndcX2SetupResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + key *entities.GlobalNbId + gnb string + packedPdu string + failure error + }{ + { + key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x2 + nRNRB_t = 0xf + nR_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0x12 + measurementTimingConfiguration_t = 3e 4e 5e + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x10 + nR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x11 + measurementTimingConfiguration_t = 3e 4e 5e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 1e 3f 27 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0 + + */ + packedPdu: "202400808e00000100f600808640000200fc00090002f829504a952a0a00fd007200010c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000211e148033e4e5e4c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a00021a0044033e4e5e000000002c001e3f271f2e3d4ff0031e3f274400010000150400000a00020000"}, + { + key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0xf + nR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x10 + measurementTimingConfiguration_t = 3e 4e 5e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 1e 3f 27 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x6 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x1 + + */ + packedPdu: "2024006500000100f6005e40000200fc00090002f829504a952a0a00fd004a00004c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000209e040033e4e5e000000002c001e3f271f2e3d4ff0031e3f274400050000150400000a00061820"}, + + { + key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 3d 44 d3 + configured_TAC_t = 4e 4f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0x2 + nRNRB_t = 0xf + nR_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0x12 + measurementTimingConfiguration_t = 3e 4e 5e + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x8 + nrCellID_t + pLMN_Identity_t = 2e 3f 45 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + fiveGS_TAC_t = 4f aa 3c + configured_TAC_t = 1a 2f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 50 32 1e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x4 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x7 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x3 + sULInformation_t + sUL_ARFCN_t = 0x8 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x10 + nR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x11 + measurementTimingConfiguration_t = 50 32 1e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 1e 3f 27 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x2 + sUL_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0 + */ + packedPdu: "202400808e00000100f600808640000200fc00090002f829504a952a0a00fd007200010c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000211e148033e4e5e4c0008002e3f451f2e3d4ff04faa3c1a2f0050321e4400040000060400000200081a00440350321e000000002c001e3f271f2e3d4ff0031e3f274400010000150400000a00020000"}, + + { + key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}, + gnb: "CONNECTED [served_nr_cell_information: > dl_freq_info: > ul_transmission_bandwidth: dl_transmission_bandwidth: > > > nr_neighbour_infos: > dlar_fcn_freq_info: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a 0a (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x5 + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 3e 4e 5e + nrModeInfo_t: + fdd_t + ul_NRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x2c + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x21 + dl_NRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + ul_NR_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0 + dl_NR_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x13 + measurementTimingConfiguration_t = 01 02 03 + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 1e 3f 27 + nRcellIdentifier_t = 1f 2e 3d 4f f0 (36 bits) + measurementTimingConfiguration_t = 01 02 03 + nRNeighbourModeInfo_t: + fdd_t + ul_NRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + dl_NRFreqInfo_t + nRARFCN_t = 0x1 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + + + */ + packedPdu: "2024006b00000100f6006440000200fc00090002f829504a952a0a00fd00500000400005001e3f271f2e3d4ff03e4e5e00000500002b0400002000010000150400000a18004c03010203000000002c001e3f271f2e3d4ff0030102030000050000150400000a00010000150400000a"}, + + + { + key: &entities.GlobalNbId{PlmnId: "04a5c1", NbId: "4fc52bff"}, + gnb: "CONNECTED [served_nr_cell_information: > frequency_bands: > transmission_bandwidth: > > > nr_neighbour_infos: > frequency_bands: > > > > nr_neighbour_infos: > frequency_bands: > > > > ]", + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 04 a5 c1 + gNB_ID_t: + gNB_ID_t = 4f c5 2b ff (32 bits) + ProtocolIE_Container_elm + id_t = 0xfd + criticality_t = 0 + ServedNRcellsENDCX2ManagementList: + ServedNRcellsENDCX2ManagementList_elm + servedNRCellInfo_t + nrpCI_t = 0x9 + nrCellID_t + pLMN_Identity_t = ae af a7 + nRcellIdentifier_t = 2a 3e 3b 4c d0 (36 bits) + fiveGS_TAC_t = 7d 47 73 + configured_TAC_t = 47 7f + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 7e 7e 7e + nrModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x8 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x16 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0xb + sULInformation_t + sUL_ARFCN_t = 0x9 + sUL_TxBW_t + nRSCS_t = 0 + nRNRB_t = 0x10 + nR_TxBW_t + nRSCS_t = 0x2 + nRNRB_t = 0x1 + measurementTimingConfiguration_t = 7e 7e 7e + nRNeighbourInfo_t: + NRNeighbour_Information_elm + nrpCI_t = 0x2c + nrCellID_t + pLMN_Identity_t = 5a 5f f1 + nRcellIdentifier_t = 2a 3e 3b 4c d0 (36 bits) + measurementTimingConfiguration_t = 5a 5f f1 + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x5 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x4 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x3 + sULInformation_t + sUL_ARFCN_t = 0x6 + sUL_TxBW_t + nRSCS_t = 0x1 + nRNRB_t = 0x1 + NRNeighbour_Information_elm + nrpCI_t = 0x9 + nrCellID_t + pLMN_Identity_t = 5d 5c aa + nRcellIdentifier_t = af 3e 35 4a c0 (36 bits) + measurementTimingConfiguration_t = 5d 5c aa + nRNeighbourModeInfo_t: + tdd_t + nRFreqInfo_t + nRARFCN_t = 0x7 + freqBandListNr_t: + freqBandListNr_t_elm + freqBandIndicatorNr_t = 0x3 + supportedSULBandList_t: + supportedSULBandList_t_elm + freqBandIndicatorNr_t = 0x1 + sULInformation_t + sUL_ARFCN_t = 0x8 + sUL_TxBW_t + nRSCS_t = 0x3 + nRNRB_t = 0x3 + */ + packedPdu: "202400808200000100f6007b40000200fc00090004a5c1504fc52bff00fd006700004c000900aeafa72a3e3b4cd07d4773477f007e7e7e4400080000150400000a0009020204037e7e7e000100002c005a5ff12a3e3b4cd0035a5ff144000500000304000002000608200009005d5caaaf3e354ac0035d5caa4400070000020400000000081860"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952aaa"}, + /* + E2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x24 + criticality_t = 0 + ENDCX2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0xf6 + criticality_t = 0 + RespondingNodeType-EndcX2Setup: + respond_en_gNB_t: + ProtocolIE_Container_elm + id_t = 0xfc + criticality_t = 0 + GlobalGNB-ID + pLMN_Identity_t = 02 f8 29 + gNB_ID_t: + gNB_ID_t = 4a 95 2a aa (32 bits) + */ + packedPdu: "2024001700000100f6001040000100fc00090002f829504a952aaa", + + failure: fmt.Errorf("getList for path [successfulOutcome_t ENDCX2SetupResponse protocolIEs_t ProtocolIE_Container_elm RespondingNodeType-EndcX2Setup respond_en_gNB_t ProtocolIE_Container_elm ServedNRcellsENDCX2ManagementList ServedNRcellsENDCX2ManagementList_elm servedNRCellInfo_t nrpCI_t] failed, rc = 1" /*NO_ITEMS*/),}, + } + + converter := NewEndcSetupResponseConverter(logger) + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + key, gnb, err := converter.UnpackEndcSetupResponseAndExtract(payload) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if key == nil { + if tc.failure == nil { + t.Errorf("want: key=%v, got: empty key", tc.key) + } + } else { + if strings.Compare(key.PlmnId, tc.key.PlmnId) != 0 || strings.Compare(key.NbId, tc.key.NbId) != 0 { + t.Errorf("want: key=%v, got: %v", tc.key, key) + } + } + + if gnb == nil { + if tc.failure == nil { + t.Errorf("want: enb=%s, got: empty enb", tc.gnb) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nb.Configuration = &entities.NodebInfo_Gnb{Gnb: gnb} + gnbStr := fmt.Sprintf("%s %s", nb.ConnectionStatus, gnb.ServedNrCells) + if !strings.EqualFold(gnbStr, tc.gnb) { + t.Errorf("want: enb=%s, got: %s", tc.gnb, gnbStr) + } + + } + }) + } +} diff --git a/setup/e2mgr/E2Manager/converters/x2_reset_response_extractor.go b/setup/e2mgr/E2Manager/converters/x2_reset_response_extractor.go new file mode 100644 index 0000000..447167f --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2_reset_response_extractor.go @@ -0,0 +1,90 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/e2pdus" + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +type X2ResetResponseExtractor struct { + logger *logger.Logger +} + +func NewX2ResetResponseExtractor(logger *logger.Logger) *X2ResetResponseExtractor { + return &X2ResetResponseExtractor{ + logger: logger, + } +} + +type IX2ResetResponseExtractor interface { + ExtractCriticalityDiagnosticsFromPdu(packedBuffer []byte) (*entities.CriticalityDiagnostics, error) +} + +func (e *X2ResetResponseExtractor) ExtractCriticalityDiagnosticsFromPdu(packedBuffer []byte) (*entities.CriticalityDiagnostics, error) { + pdu, err := UnpackX2apPdu(e.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, len(packedBuffer), packedBuffer, e2pdus.MaxAsn1CodecMessageBufferSize) + + if err != nil { + return nil, err + } + + if pdu.present != C.E2AP_PDU_PR_successfulOutcome { + return nil, fmt.Errorf("Invalid E2AP_PDU value") + } + + successfulOutcome := *(**C.SuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + + if successfulOutcome == nil || successfulOutcome.value.present != C.SuccessfulOutcome__value_PR_ResetResponse { + return nil, fmt.Errorf("Unexpected SuccessfulOutcome value") + } + + resetResponse := (*C.ResetResponse_t)(unsafe.Pointer(&successfulOutcome.value.choice[0])) + + protocolIEsListCount := resetResponse.protocolIEs.list.count + + if protocolIEsListCount == 0 { + return nil, nil + } + + if protocolIEsListCount != 1 { + return nil, fmt.Errorf("Invalid protocolIEs list count") + } + + resetResponseIEs := (*[1 << 30]*C.ResetResponse_IEs_t)(unsafe.Pointer(resetResponse.protocolIEs.list.array))[:int(protocolIEsListCount):int(protocolIEsListCount)] + + resetResponseIE := resetResponseIEs[0] + + if resetResponseIE.value.present != C.ResetResponse_IEs__value_PR_CriticalityDiagnostics { + return nil, fmt.Errorf("Invalid protocolIEs value") + } + + cd := (*C.CriticalityDiagnostics_t)(unsafe.Pointer(&resetResponseIE.value.choice[0])) + + return getCriticalityDiagnostics(cd) +} diff --git a/setup/e2mgr/E2Manager/converters/x2_setup_failure_response_converter.go b/setup/e2mgr/E2Manager/converters/x2_setup_failure_response_converter.go new file mode 100644 index 0000000..1a70c5f --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2_setup_failure_response_converter.go @@ -0,0 +1,168 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/e2pdus" + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +const ( + maxNrOfErrors = 256 +) + +type X2SetupFailureResponseConverter struct { + logger *logger.Logger +} + +type IX2SetupFailureResponseConverter interface { + UnpackX2SetupFailureResponseAndExtract(packedBuf []byte) (*entities.SetupFailure, error) +} + +func NewX2SetupFailureResponseConverter(logger *logger.Logger) *X2SetupFailureResponseConverter { + return &X2SetupFailureResponseConverter{ + logger: logger, + } +} + +// The following are possible values of a choice field, find which the pdu contains. +func getCause(causeIE *C.Cause_t, setupFailure *entities.SetupFailure) error { + switch causeIE.present { + case C.Cause_PR_radioNetwork: + v := (*C.CauseRadioNetwork_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_NetworkLayerCause{NetworkLayerCause: entities.RadioNetworkLayer_Cause(1 + *v)} + case C.Cause_PR_transport: + v := (*C.CauseTransport_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_TransportLayerCause{TransportLayerCause: entities.TransportLayer_Cause(1 + *v)} + case C.Cause_PR_protocol: + v := (*C.CauseProtocol_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_ProtocolCause{ProtocolCause: entities.Protocol_Cause(1 + *v)} + case C.Cause_PR_misc: + v := (*C.CauseMisc_t)(unsafe.Pointer(&causeIE.choice[0])) + setupFailure.CauseGroup = &entities.SetupFailure_MiscellaneousCause{MiscellaneousCause: entities.Miscellaneous_Cause(1 + *v)} + } + return nil +} + +func getCriticalityDiagnostics(critDiagIE *C.CriticalityDiagnostics_t) (*entities.CriticalityDiagnostics, error) { + var critDiag *entities.CriticalityDiagnostics + + if critDiagIE.procedureCode != nil { + critDiag = &entities.CriticalityDiagnostics{} + critDiag.ProcedureCode = uint32(*critDiagIE.procedureCode) + + } + + if critDiagIE.triggeringMessage != nil { + if critDiag == nil { + critDiag = &entities.CriticalityDiagnostics{} + } + critDiag.TriggeringMessage = entities.TriggeringMessage(1 + *critDiagIE.triggeringMessage) + + } + + if critDiagIE.procedureCriticality != nil { + if critDiag == nil { + critDiag = &entities.CriticalityDiagnostics{} + } + critDiag.ProcedureCriticality = entities.Criticality(1 + *critDiagIE.procedureCriticality) + + } + + if critDiagIE.iEsCriticalityDiagnostics != nil && critDiagIE.iEsCriticalityDiagnostics.list.count > 0 && critDiagIE.iEsCriticalityDiagnostics.list.count < maxNrOfErrors { + if critDiag == nil { + critDiag = &entities.CriticalityDiagnostics{} + } + var infoElements []*entities.InformationElementCriticalityDiagnostic + iEsCriticalityDiagnostics := (*C.CriticalityDiagnostics_IE_List_t)(critDiagIE.iEsCriticalityDiagnostics) + count:=int(iEsCriticalityDiagnostics.list.count) + iEsCriticalityDiagnostics_slice := (*[1 << 30]*C.CriticalityDiagnostics_IE_List__Member)(unsafe.Pointer(iEsCriticalityDiagnostics.list.array))[:count:count] + for _, criticalityDiagnostics_IE_List__Member := range iEsCriticalityDiagnostics_slice { + infoElement := &entities.InformationElementCriticalityDiagnostic{IeCriticality: entities.Criticality(1 + criticalityDiagnostics_IE_List__Member.iECriticality)} + infoElement.IeId = uint32(criticalityDiagnostics_IE_List__Member.iE_ID) + infoElement.TypeOfError = entities.TypeOfError(1 + criticalityDiagnostics_IE_List__Member.typeOfError) + + infoElements = append(infoElements, infoElement) + + } + critDiag.InformationElementCriticalityDiagnostics = infoElements + } + + return critDiag, nil +} + +// Populate and return the EN-DC/X2 setup response failure structure with data from the pdu +func x2SetupFailureResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.SetupFailure, error) { + setupFailure := entities.SetupFailure{} + + if pdu.present == C.E2AP_PDU_PR_unsuccessfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + unsuccessfulOutcome := *(**C.UnsuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if unsuccessfulOutcome != nil && unsuccessfulOutcome.value.present == C.UnsuccessfulOutcome__value_PR_X2SetupFailure { + x2SetupFailure := (*C.X2SetupFailure_t)(unsafe.Pointer(&unsuccessfulOutcome.value.choice[0])) + if x2SetupFailure != nil && x2SetupFailure.protocolIEs.list.count > 0 { + count:=int(x2SetupFailure.protocolIEs.list.count) + x2SetupFailure_IEs_slice := (*[1 << 30]*C.X2SetupFailure_IEs_t)(unsafe.Pointer(x2SetupFailure.protocolIEs.list.array))[:count:count] + for _, x2SetupFailure_IE := range x2SetupFailure_IEs_slice { + if x2SetupFailure_IE != nil { + switch x2SetupFailure_IE.value.present { + case C.X2SetupFailure_IEs__value_PR_Cause: + causeIE := (*C.Cause_t)(unsafe.Pointer(&x2SetupFailure_IE.value.choice[0])) + err := getCause(causeIE, &setupFailure) + if err != nil { + return nil, err + } + case C.X2SetupFailure_IEs__value_PR_TimeToWait: + setupFailure.TimeToWait = entities.TimeToWait(1 + *((*C.TimeToWait_t)(unsafe.Pointer(&x2SetupFailure_IE.value.choice[0])))) + case C.X2SetupFailure_IEs__value_PR_CriticalityDiagnostics: + cdIE := (*C.CriticalityDiagnostics_t)(unsafe.Pointer(&x2SetupFailure_IE.value.choice[0])) + if cd, err := getCriticalityDiagnostics(cdIE); err == nil { + setupFailure.CriticalityDiagnostics = cd + } else { + return nil, err + } + } + } + } + } + } + } + + return &setupFailure, nil +} + +func (c *X2SetupFailureResponseConverter) UnpackX2SetupFailureResponseAndExtract(packedBuf []byte) (*entities.SetupFailure, error) { + pdu, err := UnpackX2apPdu(c.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, len(packedBuf), packedBuf, e2pdus.MaxAsn1CodecMessageBufferSize) + if err != nil { + return nil, err + } + + defer C.delete_pdu(pdu) + + return x2SetupFailureResponseToProtobuf(pdu) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/converters/x2_setup_failure_response_converter_test.go b/setup/e2mgr/E2Manager/converters/x2_setup_failure_response_converter_test.go new file mode 100644 index 0000000..54a1f53 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2_setup_failure_response_converter_test.go @@ -0,0 +1,304 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package converters + +import ( + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb +*/ + +func TestUnpackX2SetupFailureResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + response string + packedPdu string + failure error + }{ + { + response: "CONNECTED_SETUP_FAILED network_layer_cause:HANDOVER_DESIRABLE_FOR_RADIO_REASONS time_to_wait:V1S criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + radioNetwork_t = 0 + ProtocolIE_Container_elm + id_t = 0x16 + criticality_t = 0x1 + TimeToWait = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "4006001a0000030005400200000016400100001140087821a00000008040"}, + { + response: "CONNECTED_SETUP_FAILED transport_layer_cause:TRANSPORT_RESOURCE_UNAVAILABLE criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + transport_t = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "400600140000020005400120001140087821a00000008040"}, + { + response: "CONNECTED_SETUP_FAILED protocol_cause:ABSTRACT_SYNTAX_ERROR_IGNORE_AND_NOTIFY criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + protocol_t = 0x2 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "400600130000020005400144001140073a800000008040"}, + + { + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "400600120000020005400168001140061a0000008040"}, + + { + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED criticality_diagnostics: information_element_criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0x2 + iE_ID_t = 0xff + typeOfError_t = 0 + */ + packedPdu: "4006001500000200054001680011400908010000804800ff00"}, + + + { + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED criticality_diagnostics: ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + */ + packedPdu: "4006000e0000020005400168001140024021"}, + + { + response: "CONNECTED_SETUP_FAILED miscellaneous_cause:UNSPECIFIED ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + misc_t = 0x4 + */ + packedPdu: "400600080000010005400168"}, + { + response: "CONNECTED_SETUP_FAILED network_layer_cause:HANDOVER_DESIRABLE_FOR_RADIO_REASONS time_to_wait:V1S criticality_diagnostics: > ", + /* + E2AP-PDU: + unsuccessfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupFailure + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x5 + criticality_t = 0x1 + Cause: + radioNetwork_t = 0 + ProtocolIE_Container_elm + id_t = 0x16 + criticality_t = 0x1 + TimeToWait = 0 + ProtocolIE_Container_elm + id_t = 0x11 + criticality_t = 0x1 + CriticalityDiagnostics + procedureCode_t = 0x21 + triggeringMessage_t = 0x2 + procedureCriticality_t = 0x2 + iEsCriticalityDiagnostics_t: + CriticalityDiagnostics_IE_List_elm + iECriticality_t = 0 + iE_ID_t = 0x80 + typeOfError_t = 0x1 + */ + packedPdu: "4006001a0000030005400200000016400100001140087821a00000008040", + //failure: fmt.Errorf("getAtom for path [unsuccessfulOutcome_t X2SetupFailure protocolIEs_t ProtocolIE_Container_elm Cause radioNetwork_t] failed, rc = 2" /*NO_SPACE_LEFT*/), + }, + } + + converter := NewX2SetupFailureResponseConverter(logger) + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + response, err := converter.UnpackX2SetupFailureResponseAndExtract(payload) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if response == nil { + if tc.failure == nil { + t.Errorf("want: response=%s, got: empty response", tc.response) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nb.SetupFailure = response + nb.FailureType = entities.Failure_X2_SETUP_FAILURE + respStr := fmt.Sprintf("%s %s", nb.ConnectionStatus, response) + if !strings.EqualFold(respStr, tc.response) { + t.Errorf("want: response=[%s], got: [%s]", tc.response, respStr) + } + + } + }) + } +} diff --git a/setup/e2mgr/E2Manager/converters/x2_setup_response_converter.go b/setup/e2mgr/E2Manager/converters/x2_setup_response_converter.go new file mode 100644 index 0000000..2ce50b4 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2_setup_response_converter.go @@ -0,0 +1,454 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/e2pdus" + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "unsafe" +) + +const ( + maxnoofMBSFN = 8 + maxnoofBPLMNs = 6 + maxCellineNB = 256 + maxnoofMBMSServiceAreaIdentities = 256 + maxnoofBands = 16 + maxPools = 16 + maxnoofNeighbours = 512 +) + +type X2SetupResponseConverter struct { + logger *logger.Logger +} + +type IX2SetupResponseConverter interface { + UnpackX2SetupResponseAndExtract(packedBuf []byte) (*entities.GlobalNbId, *entities.Enb, error) +} + +func NewX2SetupResponseConverter(logger *logger.Logger) *X2SetupResponseConverter { + return &X2SetupResponseConverter{ + logger: logger, + } +} + +// The following are possible values of a choice field, find which the pdu contains. +func getENB_ID_choice(eNB_ID C.ENB_ID_t) (entities.EnbType, []byte) { + + enbIdAsBitString := (*C.BIT_STRING_t)(unsafe.Pointer(&eNB_ID.choice[0])) + switch eNB_ID.present { + case C.ENB_ID_PR_macro_eNB_ID: + return entities.EnbType_MACRO_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + case C.ENB_ID_PR_home_eNB_ID: + return entities.EnbType_HOME_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + case C.ENB_ID_PR_short_Macro_eNB_ID: + return entities.EnbType_SHORT_MACRO_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + case C.ENB_ID_PR_long_Macro_eNB_ID: + return entities.EnbType_LONG_MACRO_ENB, C.GoBytes(unsafe.Pointer(enbIdAsBitString.buf), C.int(enbIdAsBitString.size)) + } + + return entities.EnbType_UNKNOWN_ENB_TYPE, nil +} + +func getFDDInfo(fdd *C.FDD_Info_t) (*entities.FddInfo, error) { + var fddInfo *entities.FddInfo + + if fdd != nil { + fddInfo = &entities.FddInfo{UlearFcn: uint32(fdd.uL_EARFCN)} + fddInfo.DlearFcn = uint32(fdd.dL_EARFCN) + fddInfo.UlTransmissionBandwidth = entities.TransmissionBandwidth(1 + fdd.uL_Transmission_Bandwidth) + fddInfo.DlTransmissionBandwidth = entities.TransmissionBandwidth(1 + fdd.dL_Transmission_Bandwidth) + + extIEs := (*C.ProtocolExtensionContainer_170P145_t)(unsafe.Pointer(fdd.iE_Extensions)) + if extIEs != nil && extIEs.list.count > 0 { + count := int(extIEs.list.count) + extIEs_slice := (*[1 << 30]*C.FDD_Info_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, member := range extIEs_slice { + switch member.extensionValue.present { + case C.FDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension: + eARFCNExtension := (*C.EARFCNExtension_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + if member.id == C.ProtocolIE_ID_id_UL_EARFCNExtension { + fddInfo.UlearFcn = uint32(*eARFCNExtension) + } + if member.id == C.ProtocolIE_ID_id_DL_EARFCNExtension { + fddInfo.DlearFcn = uint32(*eARFCNExtension) + } + case C.FDD_Info_ExtIEs__extensionValue_PR_OffsetOfNbiotChannelNumberToEARFCN: + /*ignored*/ + case C.FDD_Info_ExtIEs__extensionValue_PR_NRS_NSSS_PowerOffset: + /*ignored*/ + case C.FDD_Info_ExtIEs__extensionValue_PR_NSSS_NumOccasionDifferentPrecoder: + /*ignored*/ + } + } + } + } + + return fddInfo, nil +} + +func getSpecialSubframeInfo(info C.SpecialSubframe_Info_t) *entities.SpecialSubframeInfo { + specialSubframeInfo := entities.SpecialSubframeInfo{} + + specialSubframeInfo.SpecialSubframePatterns = entities.SpecialSubframe_Patterns(1 + info.specialSubframePatterns) + specialSubframeInfo.CyclicPrefixDl = entities.CyclicPrefix(1 + info.cyclicPrefixDL) + specialSubframeInfo.CyclicPrefixUl = entities.CyclicPrefix(1 + info.cyclicPrefixUL) + + return &specialSubframeInfo +} + +func getAdditionalSpecialSubframeInfo(info *C.AdditionalSpecialSubframe_Info_t) *entities.AdditionalSpecialSubframeInfo { + additionalSpecialSubframeInfo := &entities.AdditionalSpecialSubframeInfo{AdditionalSpecialSubframePatterns: entities.AdditionalSpecialSubframe_Patterns(1 + info.additionalspecialSubframePatterns)} + + additionalSpecialSubframeInfo.CyclicPrefixDl = entities.CyclicPrefix(1 + info.cyclicPrefixDL) + additionalSpecialSubframeInfo.CyclicPrefixUl = entities.CyclicPrefix(1 + info.cyclicPrefixUL) + + return additionalSpecialSubframeInfo +} + +func getAdditionalSpecialSubframeExtensionInfo(info *C.AdditionalSpecialSubframeExtension_Info_t) *entities.AdditionalSpecialSubframeExtensionInfo { + additionalSpecialSubframeExtensionInfo := &entities.AdditionalSpecialSubframeExtensionInfo{AdditionalSpecialSubframePatternsExtension: entities.AdditionalSpecialSubframePatterns_Extension(1 + info.additionalspecialSubframePatternsExtension)} + + additionalSpecialSubframeExtensionInfo.CyclicPrefixDl = entities.CyclicPrefix(1 + info.cyclicPrefixDL) + additionalSpecialSubframeExtensionInfo.CyclicPrefixUl = entities.CyclicPrefix(1 + info.cyclicPrefixUL) + + return additionalSpecialSubframeExtensionInfo +} + +func getTDDInfo(tdd *C.TDD_Info_t) (*entities.TddInfo, error) { + var tddInfo *entities.TddInfo + + if tdd != nil { + tddInfo = &entities.TddInfo{EarFcn: uint32(tdd.eARFCN)} + tddInfo.TransmissionBandwidth = entities.TransmissionBandwidth(1 + tdd.transmission_Bandwidth) + tddInfo.SubframeAssignment = entities.SubframeAssignment(1 + tdd.subframeAssignment) + + tddInfo.SpecialSubframeInfo = getSpecialSubframeInfo(tdd.specialSubframe_Info) + + extIEs := (*C.ProtocolExtensionContainer_170P206_t)(unsafe.Pointer(tdd.iE_Extensions)) + if extIEs != nil && extIEs.list.count > 0 { + count := int(extIEs.list.count) + extIEs_slice := (*[1 << 30]*C.TDD_Info_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, member := range extIEs_slice { + switch member.extensionValue.present { + case C.TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframe_Info: + tddInfo.AdditionalSpecialSubframeInfo = getAdditionalSpecialSubframeInfo((*C.AdditionalSpecialSubframe_Info_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + case C.TDD_Info_ExtIEs__extensionValue_PR_EARFCNExtension: + tddInfo.EarFcn = uint32(*(*C.EARFCNExtension_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + case C.TDD_Info_ExtIEs__extensionValue_PR_AdditionalSpecialSubframeExtension_Info: + tddInfo.AdditionalSpecialSubframeExtensionInfo = getAdditionalSpecialSubframeExtensionInfo((*C.AdditionalSpecialSubframeExtension_Info_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + } + } + } + } + + return tddInfo, nil +} + +// The following are possible values of a choice field, find which the pdu contains. +func getSubframeAllocation_choice(subframeAllocation C.SubframeAllocation_t) (entities.SubframeAllocationType, string, error) { + + switch subframeAllocation.present { + case C.SubframeAllocation_PR_oneframe: + frameAllocation := (*C.Oneframe_t)(unsafe.Pointer(&subframeAllocation.choice[0])) + return entities.SubframeAllocationType_ONE_FRAME, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(frameAllocation.buf), C.int(frameAllocation.size))), nil + case C.SubframeAllocation_PR_fourframes: + frameAllocation := (*C.Fourframes_t)(unsafe.Pointer(&subframeAllocation.choice[0])) + return entities.SubframeAllocationType_FOUR_FRAME, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(frameAllocation.buf), C.int(frameAllocation.size))), nil + } + return entities.SubframeAllocationType_UNKNOWN_SUBFRAME_ALLOCATION_TYPE, "", errors.Errorf("unexpected subframe allocation choice") +} + +func getMBSFN_Subframe_Infolist(mBSFN_Subframe_Infolist *C.MBSFN_Subframe_Infolist_t) ([]*entities.MbsfnSubframe, error) { + var mBSFNSubframes []*entities.MbsfnSubframe + + if mBSFN_Subframe_Infolist.list.count > 0 && mBSFN_Subframe_Infolist.list.count <= maxnoofMBSFN { + count := int(mBSFN_Subframe_Infolist.list.count) + BSFN_Subframe_Infolist_slice := (*[1 << 30]*C.MBSFN_Subframe_Info_t)(unsafe.Pointer(mBSFN_Subframe_Infolist.list.array))[:count:count] + for _, member := range BSFN_Subframe_Infolist_slice { + mBSFNSubframe := &entities.MbsfnSubframe{RadioframeAllocationPeriod: entities.RadioframeAllocationPeriod(1 + member.radioframeAllocationPeriod)} + + mBSFNSubframe.RadioframeAllocationOffset = uint32(member.radioframeAllocationOffset) + + allocType, subframeAllocation, err := getSubframeAllocation_choice(member.subframeAllocation) + if err != nil { + return nil, err + } + mBSFNSubframe.SubframeAllocation = subframeAllocation + mBSFNSubframe.SubframeAllocationType = allocType + + mBSFNSubframes = append(mBSFNSubframes, mBSFNSubframe) + } + } + + return mBSFNSubframes, nil +} + +func getPRACHConfiguration(prachConf *C.PRACH_Configuration_t) *entities.PrachConfiguration { + + var prachConfiguration *entities.PrachConfiguration + + prachConfiguration = &entities.PrachConfiguration{RootSequenceIndex: uint32(prachConf.rootSequenceIndex)} + prachConfiguration.ZeroCorrelationZoneConfiguration = uint32(prachConf.zeroCorrelationIndex) + prachConfiguration.HighSpeedFlag = prachConf.highSpeedFlag != 0 + prachConfiguration.PrachFrequencyOffset = uint32(prachConf.prach_FreqOffset) + if prachConf.prach_ConfigIndex != nil { + prachConfiguration.PrachConfigurationIndex = uint32(*prachConf.prach_ConfigIndex) + } + + return prachConfiguration +} +func getServedCellsInfoExt(extIEs *C.ProtocolExtensionContainer_170P192_t, servedCellInfo *entities.ServedCellInfo) error { + + if extIEs != nil && extIEs.list.count > 0 { + count := int(extIEs.list.count) + extIEs_slice := (*[1 << 30]*C.ServedCell_Information_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, member := range extIEs_slice { + switch member.extensionValue.present { + case C.ServedCell_Information_ExtIEs__extensionValue_PR_Number_of_Antennaports: + ports := (*C.Number_of_Antennaports_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.NumberOfAntennaPorts = entities.NumberOfAntennaPorts(1 + *ports) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_PRACH_Configuration: + prachConfiguration := getPRACHConfiguration((*C.PRACH_Configuration_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + servedCellInfo.PrachConfiguration = prachConfiguration + case C.ServedCell_Information_ExtIEs__extensionValue_PR_MBSFN_Subframe_Infolist: + mBSFN_Subframe_Infolist, err := getMBSFN_Subframe_Infolist((*C.MBSFN_Subframe_Infolist_t)(unsafe.Pointer(&member.extensionValue.choice[0]))) + if err != nil { + return err + } + servedCellInfo.MbsfnSubframeInfos = mBSFN_Subframe_Infolist + case C.ServedCell_Information_ExtIEs__extensionValue_PR_CSG_Id: + csgId := (*C.CSG_Id_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.CsgId = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(csgId.buf), C.int(csgId.size))) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_MBMS_Service_Area_Identity_List: + mBMS_Service_Area_Identity_List := (*C.MBMS_Service_Area_Identity_List_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + if mBMS_Service_Area_Identity_List.list.count > 0 && mBMS_Service_Area_Identity_List.list.count < maxnoofMBMSServiceAreaIdentities { + count := int(mBMS_Service_Area_Identity_List.list.count) + mBMS_Service_Area_Identity_List_slice := (*[1 << 30]*C.MBMS_Service_Area_Identity_t)(unsafe.Pointer(mBMS_Service_Area_Identity_List.list.array))[:count:count] + for _, identity := range mBMS_Service_Area_Identity_List_slice { + servedCellInfo.MbmsServiceAreaIdentities = append(servedCellInfo.MbmsServiceAreaIdentities, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(identity.buf), C.int(identity.size)))) + } + } + case C.ServedCell_Information_ExtIEs__extensionValue_PR_MultibandInfoList: + multibandInfoList := (*C.MultibandInfoList_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + if multibandInfoList.list.count > 0 && multibandInfoList.list.count < maxnoofBands { + count := int(multibandInfoList.list.count) + multibandInfoList_slice := (*[1 << 30]*C.BandInfo_t)(unsafe.Pointer(multibandInfoList.list.array))[:count:count] + for _, bandInfo := range multibandInfoList_slice { + servedCellInfo.MultibandInfos = append(servedCellInfo.MultibandInfos, uint32(bandInfo.freqBandIndicator)) + } + } + case C.ServedCell_Information_ExtIEs__extensionValue_PR_FreqBandIndicatorPriority: + priority := (*C.FreqBandIndicatorPriority_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.FreqBandIndicatorPriority = entities.FreqBandIndicatorPriority(1 + *priority) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_BandwidthReducedSI: + si := (*C.BandwidthReducedSI_t)(unsafe.Pointer(&member.extensionValue.choice[0])) + servedCellInfo.BandwidthReducedSi = entities.BandwidthReducedSI(1 + *si) + case C.ServedCell_Information_ExtIEs__extensionValue_PR_ProtectedEUTRAResourceIndication: + /*ignored*/ + + } + + } + + } + + return nil +} + +func getServedCellsNeighbour_Info(neighbour_Information *C.Neighbour_Information_t) ([]*entities.NeighbourInformation, error) { + var neighbours []*entities.NeighbourInformation + + if neighbour_Information != nil && neighbour_Information.list.count > 0 && neighbour_Information.list.count <= maxnoofNeighbours { + count := int(neighbour_Information.list.count) + neighbour_Information_slice := (*[1 << 30]*C.Neighbour_Information__Member)(unsafe.Pointer(neighbour_Information.list.array))[:count:count] + for _, member := range neighbour_Information_slice { + + //pLMN_Identity:eUTRANcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(member.eCGI.pLMN_Identity.buf), C.int(member.eCGI.pLMN_Identity.size)) + eUTRANcellIdentifier := C.GoBytes(unsafe.Pointer(member.eCGI.eUTRANcellIdentifier.buf), C.int(member.eCGI.eUTRANcellIdentifier.size)) + neighbourInfo := &entities.NeighbourInformation{Ecgi: fmt.Sprintf("%02x:%02x", plmnId, eUTRANcellIdentifier)} + + neighbourInfo.Pci = uint32(member.pCI) + + neighbourInfo.EarFcn = uint32(member.eARFCN) + + extIEs := (*C.ProtocolExtensionContainer_170P172_t)(unsafe.Pointer(member.iE_Extensions)) + if extIEs != nil && extIEs.list.count > 0 { + count := int(extIEs.list.count) + neighbour_Information_ExtIEs_slice := (*[1 << 30]*C.Neighbour_Information_ExtIEs_t)(unsafe.Pointer(extIEs.list.array))[:count:count] + for _, neighbour_Information_ExtIE := range neighbour_Information_ExtIEs_slice { + switch neighbour_Information_ExtIE.extensionValue.present { + case C.Neighbour_Information_ExtIEs__extensionValue_PR_TAC: + tac := (*C.TAC_t)(unsafe.Pointer(&neighbour_Information_ExtIE.extensionValue.choice[0])) + neighbourInfo.Tac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(tac.buf), C.int(tac.size))) + case C.Neighbour_Information_ExtIEs__extensionValue_PR_EARFCNExtension: + earFcn := (*C.EARFCNExtension_t)(unsafe.Pointer(&neighbour_Information_ExtIE.extensionValue.choice[0])) + neighbourInfo.EarFcn = uint32(*earFcn) + } + } + } + + neighbours = append(neighbours, neighbourInfo) + } + } + + return neighbours, nil +} + +func getServedCells(servedCellsIE *C.ServedCells_t) ([]*entities.ServedCellInfo, error) { + var servedCells []*entities.ServedCellInfo + + if servedCellsIE != nil && servedCellsIE.list.count > 0 && servedCellsIE.list.count < maxCellineNB { + count := int(servedCellsIE.list.count) + servedCells__Member_slice := (*[1 << 30]*C.ServedCells__Member)(unsafe.Pointer(servedCellsIE.list.array))[:count:count] + for _, member := range servedCells__Member_slice { + servedCellInfo := &entities.ServedCellInfo{Pci: uint32(member.servedCellInfo.pCI)} + + //pLMN_Identity:eUTRANcellIdentifier + plmnId := C.GoBytes(unsafe.Pointer(member.servedCellInfo.cellId.pLMN_Identity.buf), C.int(member.servedCellInfo.cellId.pLMN_Identity.size)) + eUTRANcellIdentifier := C.GoBytes(unsafe.Pointer(member.servedCellInfo.cellId.eUTRANcellIdentifier.buf), C.int(member.servedCellInfo.cellId.eUTRANcellIdentifier.size)) + servedCellInfo.CellId = fmt.Sprintf("%02x:%02x", plmnId, eUTRANcellIdentifier) + + servedCellInfo.Tac = fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(member.servedCellInfo.tAC.buf), C.int(member.servedCellInfo.tAC.size))) + + if member.servedCellInfo.broadcastPLMNs.list.count > 0 && member.servedCellInfo.broadcastPLMNs.list.count <= maxnoofBPLMNs { + count := int(member.servedCellInfo.broadcastPLMNs.list.count) + pLMN_Identity_slice := (*[1 << 30]*C.PLMN_Identity_t)(unsafe.Pointer(member.servedCellInfo.broadcastPLMNs.list.array))[:count:count] + for _, pLMN_Identity := range pLMN_Identity_slice { + servedCellInfo.BroadcastPlmns = append(servedCellInfo.BroadcastPlmns, fmt.Sprintf("%02x", C.GoBytes(unsafe.Pointer(pLMN_Identity.buf), C.int(pLMN_Identity.size)))) + } + } + + switch member.servedCellInfo.eUTRA_Mode_Info.present { + case C.EUTRA_Mode_Info_PR_fDD: + if fdd, err := getFDDInfo(*(**C.FDD_Info_t)(unsafe.Pointer(&member.servedCellInfo.eUTRA_Mode_Info.choice[0]))); fdd != nil && err == nil { + servedCellInfo.ChoiceEutraMode, servedCellInfo.EutraMode = &entities.ChoiceEUTRAMode{Fdd: fdd}, entities.Eutra_FDD + } else { + return nil, err + } + case C.EUTRA_Mode_Info_PR_tDD: + if tdd, err := getTDDInfo(*(**C.TDD_Info_t)(unsafe.Pointer(&member.servedCellInfo.eUTRA_Mode_Info.choice[0]))); tdd != nil && err == nil { + servedCellInfo.ChoiceEutraMode, servedCellInfo.EutraMode = &entities.ChoiceEUTRAMode{Tdd: tdd}, entities.Eutra_TDD + } else { + return nil, err + } + } + + neighbours, err := getServedCellsNeighbour_Info(member.neighbour_Info) + if err != nil { + return nil, err + } + servedCellInfo.NeighbourInfos = neighbours + + if err := getServedCellsInfoExt((*C.ProtocolExtensionContainer_170P192_t)(unsafe.Pointer(member.servedCellInfo.iE_Extensions)), servedCellInfo); err != nil { + return nil, err + } + + servedCells = append(servedCells, servedCellInfo) + + } + } + + return servedCells, nil +} + +func getGUGroupIDList(guGroupIDList *C.GUGroupIDList_t) []string { + var ids []string + + if guGroupIDList != nil && guGroupIDList.list.count > 0 && guGroupIDList.list.count <= maxPools { + count := int(guGroupIDList.list.count) + guGroupIDList_slice := (*[1 << 30]*C.GU_Group_ID_t)(unsafe.Pointer(guGroupIDList.list.array))[:count:count] + for _, guGroupID := range guGroupIDList_slice { + plmnId := C.GoBytes(unsafe.Pointer(guGroupID.pLMN_Identity.buf), C.int(guGroupID.pLMN_Identity.size)) + mME_Group_ID := C.GoBytes(unsafe.Pointer(guGroupID.mME_Group_ID.buf), C.int(guGroupID.mME_Group_ID.size)) + ids = append(ids, fmt.Sprintf("%02x:%02x", plmnId, mME_Group_ID)) + } + } + + return ids +} + +// Populate the ENB structure with data from the pdu +// Return the ENB and the associated key which can later be used to retrieve the ENB from the database. +func x2SetupResponseToProtobuf(pdu *C.E2AP_PDU_t) (*entities.GlobalNbId, *entities.Enb, error) { + var globalNbId *entities.GlobalNbId + + enb := entities.Enb{} + + if pdu.present == C.E2AP_PDU_PR_successfulOutcome { + //dereference a union of pointers (C union is represented as a byte array with the size of the largest member) + successfulOutcome := *(**C.SuccessfulOutcome_t)(unsafe.Pointer(&pdu.choice[0])) + if successfulOutcome != nil && successfulOutcome.value.present == C.SuccessfulOutcome__value_PR_X2SetupResponse { + x2SetupResponse := (*C.X2SetupResponse_t)(unsafe.Pointer(&successfulOutcome.value.choice[0])) + if x2SetupResponse != nil && x2SetupResponse.protocolIEs.list.count > 0 { + count := int(x2SetupResponse.protocolIEs.list.count) + x2SetupResponse_IEs_slice := (*[1 << 30]*C.X2SetupResponse_IEs_t)(unsafe.Pointer(x2SetupResponse.protocolIEs.list.array))[:count:count] + for _, x2SetupResponse_IE := range x2SetupResponse_IEs_slice { + switch x2SetupResponse_IE.value.present { + case C.X2SetupResponse_IEs__value_PR_GlobalENB_ID: + globalENB_ID := (*C.GlobalENB_ID_t)(unsafe.Pointer(&x2SetupResponse_IE.value.choice[0])) + plmnId := C.GoBytes(unsafe.Pointer(globalENB_ID.pLMN_Identity.buf), C.int(globalENB_ID.pLMN_Identity.size)) + enbType, enbVal := getENB_ID_choice(globalENB_ID.eNB_ID) + + globalNbId = &entities.GlobalNbId{} + globalNbId.NbId = fmt.Sprintf("%02x", enbVal) + globalNbId.PlmnId = fmt.Sprintf("%02x", plmnId) + enb.EnbType = enbType + + case C.X2SetupResponse_IEs__value_PR_ServedCells: + ServedCells, err := getServedCells((*C.ServedCells_t)(unsafe.Pointer(&x2SetupResponse_IE.value.choice[0]))) + if err != nil { + return globalNbId, nil, err + } + enb.ServedCells = ServedCells + case C.X2SetupResponse_IEs__value_PR_GUGroupIDList: + enb.GuGroupIds = getGUGroupIDList((*C.GUGroupIDList_t)(unsafe.Pointer(&x2SetupResponse_IE.value.choice[0]))) + case C.X2SetupResponse_IEs__value_PR_CriticalityDiagnostics: + /*ignored*/ + case C.X2SetupResponse_IEs__value_PR_LHN_ID: + /*ignored*/ + } + } + } + } + } + + return globalNbId, &enb, nil +} + +func (c *X2SetupResponseConverter) UnpackX2SetupResponseAndExtract(packedBuf []byte) (*entities.GlobalNbId, *entities.Enb, error) { + pdu, err := UnpackX2apPdu(c.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, len(packedBuf), packedBuf, e2pdus.MaxAsn1CodecMessageBufferSize) + if err != nil { + return nil, nil, err + } + + defer C.delete_pdu(pdu) + return x2SetupResponseToProtobuf(pdu) +} diff --git a/setup/e2mgr/E2Manager/converters/x2_setup_response_converter_test.go b/setup/e2mgr/E2Manager/converters/x2_setup_response_converter_test.go new file mode 100644 index 0000000..8161747 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2_setup_response_converter_test.go @@ -0,0 +1,1200 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package converters + +import ( + "e2mgr/logger" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "strings" + "testing" +) + +/* +Test permutations of x2 setup response to protobuf enb +*/ + +func TestUnpackX2SetupResponseAndExtract(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + var testCases = []struct { + key *entities.GlobalNbId + enb string + packedPdu string + failure error + }{ + { + key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3` + */ + packedPdu: "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133"}, + { + key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + packedPdu: "20060043000002001500080002f82900007a8000140030010000630002f8290007ab50102002f8290000010001330000640002f9290007ac50203202f82902f929000002000344"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5f //ul_EARFCN + criticality_t = 0 + EARFCNExtension = 0x2 + */ + packedPdu: "20060033000002001500080002f82900007a8000140020000000630002f8290007ab50102002f8291000010001330000005f0003800102"}, + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD ] [02f729:0203 02f929:0304]", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + ProtocolIE_Container_elm + id_t = 0x18 + criticality_t = 0 + GUGroupIDList: + GUGroupIDList_elm + pLMN_Identity_t = 02 f7 29 + mME_Group_ID_t = 02 03 + GUGroupIDList_elm + pLMN_Identity_t = 02 f9 29 + mME_Group_ID_t = 03 04 + */ + packedPdu: "2006003a000003001500080002f82900007a8000140017000000630002f8290007ab50102002f8290000010001330018000c1002f72902030002f9290304"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0x1 + */ + packedPdu: "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829400001320820"}, + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: additional_special_subframe_info: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x61 + criticality_t = 0x1 + AdditionalSpecialSubframe-Info + additionalspecialSubframePatterns_t = 0x9 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0x1 + */ + packedPdu: "20060032000002001500080002f82900007a800014001f000000630002f8290007ab50102002f8295000013208800000006140021220"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x2 + */ + packedPdu: "20060033000002001500080002f82900007a8000140020000000630002f8290007ab50102002f8295000013208800000005e0003800102"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: additional_special_subframe_extension_info: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0xb3 + criticality_t = 0x1 + AdditionalSpecialSubframeExtension-Info + additionalspecialSubframePatternsExtension_t = 0 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0 + */ + packedPdu: "20060031000002001500080002f82900007a800014001e000000630002f8290007ab50102002f829500001320880000000b3400100"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: additional_special_subframe_info: additional_special_subframe_extension_info: > > eutra_mode:TDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + tDD_t + eARFCN_t = 0x1 + transmission_Bandwidth_t = 0x3 + subframeAssignment_t = 0x2 + specialSubframe_Info_t + specialSubframePatterns_t = 0x4 + cyclicPrefixDL_t = 0x1 + cyclicPrefixUL_t = 0 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0xb3 + criticality_t = 0x1 + AdditionalSpecialSubframeExtension-Info + additionalspecialSubframePatternsExtension_t = 0 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0 + ProtocolExtensionContainer_elm + id_t = 0x61 + criticality_t = 0x1 + AdditionalSpecialSubframe-Info + additionalspecialSubframePatterns_t = 0x9 + cyclicPrefixDL_t = 0 + cyclicPrefixUL_t = 0x1 + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x2 + + */ + packedPdu: "2006003e000002001500080002f82900007a800014002b000000630002f8290007ab50102002f829500001320880000200b3400100006140021220005e0003800102"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80b0"}, + enb: "CONNECTED HOME_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + home_eNB_ID_t = 00 7a 80 b0 (28 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t:nb_id + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + + */ + packedPdu: "2006004b000002001500090002f82940007a80b000140037010800630002f8290007ab50102002f829000001000133000000294001000000640002f9290007ac50203202f82902f929000002000344"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD prach_configuration: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x37 + criticality_t = 0x1 + PRACH-Configuration + rootSequenceIndex_t = 0xf + zeroCorrelationIndex_t = 0x7 + highSpeedFlag_t = true + prach_FreqOffset_t = 0x1e + + */ + packedPdu: "20060056000002001500090002f8298003007a4000140042010800630002f8290007ab50102002f829000001000133000000294001000800640002f9290007ac50203202f82902f92900000200034400000037400500000f79e0"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD mbsfn_subframe_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x38 + criticality_t = 0x1 + MBSFN-Subframe-Infolist: + MBSFN_Subframe_Infolist_elm + radioframeAllocationPeriod_t = 0x3 + radioframeAllocationOffset_t = 0x3 + subframeAllocation_t: + oneframe_t = 28 (6 bits) + */ + packedPdu: "20060054000002001500090002f8298003007a4000140040010800630002f8290007ab50102002f829000001000133000000294001000800640002f9290007ac50203202f82902f929000002000344000000384003019850"}, + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 mbsfn_subframe_infos: pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ProtocolExtensionContainer_elm + id_t = 0x38 + criticality_t = 0x1 + MBSFN-Subframe-Infolist: + MBSFN_Subframe_Infolist_elm + radioframeAllocationPeriod_t = 0x3 + radioframeAllocationOffset_t = 0x3 + subframeAllocation_t: + oneframe_t = 28 (6 bits) + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + packedPdu: "20060052000002001500090002f8298003007a400014003e010800630002f8290007ab50102002f82900000100013300010029400100003840030198500000640002f9290007ac50203202f82902f929000002000344"}, + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a40"}, + enb: "CONNECTED SHORT_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD number_of_antenna_ports:AN1 prach_configuration: pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + short_Macro_eNB_ID_t = 00 7a 40 (18 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x29 + criticality_t = 0x1 + Number-of-Antennaports = 0 + ProtocolExtensionContainer_elm + id_t = 0x37 + criticality_t = 0x1 + PRACH-Configuration + rootSequenceIndex_t = 0xf + zeroCorrelationIndex_t = 0x7 + highSpeedFlag_t = true + prach_FreqOffset_t = 0x1e + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + packedPdu: "20060054000002001500090002f8298003007a4000140040010800630002f8290007ab50102002f829000001000133000100294001000037400500000f79e00000640002f9290007ac50203202f82902f929000002000344"}, + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a08"}, + enb: "CONNECTED LONG_MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD prach_configuration: pci:100 cell_id:\"02f929:0007ac50\" tac:\"0203\" broadcast_plmns:\"02f829\" broadcast_plmns:\"02f929\" choice_eutra_mode: > eutra_mode:FDD ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + long_Macro_eNB_ID_t = 00 7a 08 (21 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x37 + criticality_t = 0x1 + PRACH-Configuration + rootSequenceIndex_t = 0xf + zeroCorrelationIndex_t = 0x7 + highSpeedFlag_t = true + prach_FreqOffset_t = 0x1e + prach_ConfigIndex_t = 0x3c + ServedCells_elm + servedCellInfo_t + pCI_t = 0x64 + cellId_t + pLMN_Identity_t = 02 f9 29 + eUTRANcellIdentifier_t = 00 07 ac 50 (28 bits) + tAC_t = 02 03 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + BroadcastPLMNs_Item_elm = 02 f9 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x2 + dL_EARFCN_t = 0x3 + uL_Transmission_Bandwidth_t = 0x4 + dL_Transmission_Bandwidth_t = 0x4 + */ + //packedPdu: "20060050000002001500090002f8298103007a080014003c010800630002f8290007ab50102002f82900000100013300000037400640000f79ef000000640002f9290007ac50203202f82902f929000002000344"}, + packedPdu: "20060050000002001500090002f829c003007a080014003c010800630002f8290007ab50102002f82900000100013300000037400640000f79ef000000640002f9290007ac50203202f82902f929000002000344"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD csg_id:\"0007aba0\" freq_band_indicator_priority:BROADCASTED bandwidth_reduced_si:SCHEDULED ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x46 + criticality_t = 0x1 + CSG-Id = 00 07 ab a0 (27 bits) + ProtocolExtensionContainer_elm + id_t = 0xa0 + criticality_t = 0x1 + FreqBandIndicatorPriority = 0x1 + ProtocolExtensionContainer_elm + id_t = 0xb4 + criticality_t = 0x1 + BandwidthReducedSI = 0 + */ + packedPdu: "2006003e000002001500080002f82900007a800014002b000800630002f8290007ab50102002f8290000010001330002004640040007aba000a040014000b4400100"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD mbms_service_area_identities:\"02f8\" mbms_service_area_identities:\"03f9\" multiband_infos:1 multiband_infos:2 multiband_infos:3 freq_band_indicator_priority:NOT_BROADCASTED ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x4f + criticality_t = 0x1 + MBMS-Service-Area-Identity-List: + MBMS_Service_Area_Identity_List_elm = 02 f8 + MBMS_Service_Area_Identity_List_elm = 03 f9 + ProtocolExtensionContainer_elm + id_t = 0xa0 + criticality_t = 0x1 + FreqBandIndicatorPriority = 0 + ProtocolExtensionContainer_elm + id_t = 0x54 + criticality_t = 0x1 + MultibandInfoList: + MultibandInfoList_elm + freqBandIndicator_t = 0x1 + MultibandInfoList_elm + freqBandIndicator_t = 0x2 + MultibandInfoList_elm + freqBandIndicator_t = 0x3 + */ + packedPdu: "20060044000002001500080002f82900007a8000140031000800630002f8290007ab50102002f8290000010001330002004f40050102f803f900a040010000544006200000010002"}, + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD neighbour_infos: neighbour_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + neighbour_Info_t: + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + pCI_t = 0x63 + eARFCN_t = 0x1 + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 03 f9 30 + eUTRANcellIdentifier_t = 00 08 bc 50 (28 bits) + pCI_t = 0x64 + eARFCN_t = 0x2 + */ + packedPdu: "20060044000002001500080002f82900007a8000140031004000630002f8290007ab50102002f82900000100013300020002f8290007ab50006300010003f9300008bc5000640002"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD neighbour_infos: neighbour_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + neighbour_Info_t: + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + pCI_t = 0x63 + eARFCN_t = 0x1 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x4c + criticality_t = 0x1 + TAC = 01 02 + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 03 f9 30 + eUTRANcellIdentifier_t = 00 08 bc 50 (28 bits) + pCI_t = 0x64 + eARFCN_t = 0x2 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x3 + */ + packedPdu: "20060055000002001500080002f82900007a8000140042004000630002f8290007ab50102002f82900000100013300024002f8290007ab50006300010000004c400201024003f9300008bc50006400020000005e0003800103"}, + + {key: &entities.GlobalNbId{PlmnId: "02f829", NbId: "007a80"}, + enb: "CONNECTED MACRO_ENB [pci:99 cell_id:\"02f829:0007ab50\" tac:\"0102\" broadcast_plmns:\"02f829\" choice_eutra_mode: > eutra_mode:FDD neighbour_infos: neighbour_infos: ] []", + /* + X2AP-PDU: + successfulOutcome_t + procedureCode_t = 0x6 + criticality_t = 0 + X2SetupResponse + protocolIEs_t: + ProtocolIE_Container_elm + id_t = 0x15 + criticality_t = 0 + GlobalENB-ID + pLMN_Identity_t = 02 f8 29 + eNB_ID_t: + macro_eNB_ID_t = 00 7a 80 (20 bits) + ProtocolIE_Container_elm + id_t = 0x14 + criticality_t = 0 + ServedCells: + ServedCells_elm + servedCellInfo_t + pCI_t = 0x63 + cellId_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + tAC_t = 01 02 + broadcastPLMNs_t: + BroadcastPLMNs_Item_elm = 02 f8 29 + eUTRA_Mode_Info_t: + fDD_t + uL_EARFCN_t = 0x1 + dL_EARFCN_t = 0x1 + uL_Transmission_Bandwidth_t = 0x3 + dL_Transmission_Bandwidth_t = 0x3 + neighbour_Info_t: + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 02 f8 29 + eUTRANcellIdentifier_t = 00 07 ab 50 (28 bits) + pCI_t = 0x63 + eARFCN_t = 0x1 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x4c + criticality_t = 0x1 + TAC = 01 02 + Neighbour_Information_elm + eCGI_t + pLMN_Identity_t = 03 f9 30 + eUTRANcellIdentifier_t = 00 08 bc 50 (28 bits) + pCI_t = 0x64 + eARFCN_t = 0x2 + iE_Extensions_t: + ProtocolExtensionContainer_elm + id_t = 0x5e + criticality_t = 0 + EARFCNExtension = 0x3 + */ + packedPdu: "20060055000002001500080002f82900007a8000140042004000630002f8290007ab50102002f82900000100013300024002f8290007ab50006300010000004c400201024003f9300008bc50006400020000005e0003800103", + /*failure: fmt.Errorf("getAtom for path [successfulOutcome_t X2SetupResponse protocolIEs_t ProtocolIE_Container_elm GlobalENB-ID pLMN_Identity_t] failed, rc = 2" /NO_SPACE_LEFT),*/ }, + } + + converter := NewX2SetupResponseConverter(logger) + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + key, enb, err := converter.UnpackX2SetupResponseAndExtract(payload) + + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s", tc.failure, err) + } + } + } + + if key == nil { + if tc.failure == nil { + t.Errorf("want: key=%v, got: empty key", tc.key) + } + } else { + if strings.Compare(key.PlmnId, tc.key.PlmnId) != 0 || strings.Compare(key.NbId, tc.key.NbId) != 0 { + t.Errorf("want: key=%s, got: %s", tc.key, key) + } + } + + if enb == nil { + if tc.failure == nil { + t.Errorf("want: enb=%s, got: empty enb", tc.enb) + } + } else { + nb := &entities.NodebInfo{} + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nb.Configuration = &entities.NodebInfo_Enb{Enb: enb} + embStr := fmt.Sprintf("%s %s %s %s", nb.ConnectionStatus, enb.EnbType, enb.ServedCells, enb.GuGroupIds) + if !strings.EqualFold(embStr, tc.enb) { + t.Errorf("want: enb=%s, got: %s", tc.enb, embStr) + } + } + }) + } +} diff --git a/setup/e2mgr/E2Manager/converters/x2apPdu_asn1_unpacker.go b/setup/e2mgr/E2Manager/converters/x2apPdu_asn1_unpacker.go new file mode 100644 index 0000000..69e23aa --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2apPdu_asn1_unpacker.go @@ -0,0 +1,102 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package converters + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "github.com/pkg/errors" + "unsafe" +) + +type X2PduRefinedResponse struct { + PduPrint string +} + +//func unpackX2apPduUPer(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*C.E2AP_PDU_t, error) { +// pdu := C.new_pdu(C.ulong(allocationBufferSize)) +// +// if pdu == nil { +// return nil, errors.New("allocation failure (pdu)") +// } +// +// logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPduUPer - Packed pdu(%d):%x", packedBufferSize, packedBuf) +// +// errBuf := make([]C.char, maxMessageBufferSize) +// if !C.unpack_pdu_aux(pdu, C.ulong(packedBufferSize), (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0], C.ATS_UNALIGNED_BASIC_PER) { +// return nil, errors.New(fmt.Sprintf("unpacking error: %s", C.GoString(&errBuf[0]))) +// } +// +// if logger.DebugEnabled() { +// C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) +// logger.Debugf("#x2apPdu_asn1_unpacker.unpackX2apPduUPer - PDU: %v packed size:%d", C.GoString(&errBuf[0]), packedBufferSize) +// } +// +// return pdu, nil +//} + +func UnpackX2apPdu(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*C.E2AP_PDU_t, error) { + pdu := C.new_pdu(C.ulong(allocationBufferSize)) + + if pdu == nil { + return nil, errors.New("allocation failure (pdu)") + } + + logger.Infof("#x2apPdu_asn1_unpacker.UnpackX2apPdu - Packed pdu(%d):%x", packedBufferSize, packedBuf) + + errBuf := make([]C.char, maxMessageBufferSize) + if !C.per_unpack_pdu(pdu, C.ulong(packedBufferSize), (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.ulong(len(errBuf)), &errBuf[0]) { + return nil, errors.New(fmt.Sprintf("unpacking error: %s", C.GoString(&errBuf[0]))) + } + + if logger.DebugEnabled() { + C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) + logger.Debugf("#x2apPdu_asn1_unpacker.UnpackX2apPdu - PDU: %v packed size:%d", C.GoString(&errBuf[0]), packedBufferSize) + } + + return pdu, nil +} + +func UnpackX2apPduAndRefine(logger *logger.Logger, allocationBufferSize int, packedBufferSize int, packedBuf []byte, maxMessageBufferSize int) (*X2PduRefinedResponse, error) { + pdu, err := UnpackX2apPdu(logger, allocationBufferSize, packedBufferSize, packedBuf, maxMessageBufferSize) + if err != nil { + return nil, err + } + + defer C.delete_pdu(pdu) + + var refinedResponse = "" + if logger.DebugEnabled() { + buf := make([]C.char, 16*maxMessageBufferSize) + C.asn1_pdu_printer(pdu, C.size_t(len(buf)), &buf[0]) + refinedResponse = C.GoString(&buf[0]) + } + + return &X2PduRefinedResponse{PduPrint: refinedResponse}, nil +} + + + diff --git a/setup/e2mgr/E2Manager/converters/x2apPdu_asn1_unpacker_test.go b/setup/e2mgr/E2Manager/converters/x2apPdu_asn1_unpacker_test.go new file mode 100644 index 0000000..c0119a4 --- /dev/null +++ b/setup/e2mgr/E2Manager/converters/x2apPdu_asn1_unpacker_test.go @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package converters + +import ( + "e2mgr/e2pdus" + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +/* + * Unpack an x2setup response returned from RAN. + * Verify it matches the want pdu. + */ + +func TestUnpackX2apSetupResponse(t *testing.T) { + logger, _ := logger.InitLogger(logger.DebugLevel) + + wantPduAsStr := `SuccessfulOutcome ::= { + procedureCode: 6 + criticality: 0 (reject) + value: X2SetupResponse ::= { + protocolIEs: ProtocolIE-Container ::= { + X2SetupResponse-IEs ::= { + id: 21 + criticality: 0 (reject) + value: GlobalENB-ID ::= { + pLMN-Identity: 02 F8 29 + eNB-ID: 00 7A 80 (4 bits unused) + } + } + X2SetupResponse-IEs ::= { + id: 20 + criticality: 0 (reject) + value: ServedCells ::= { + SEQUENCE ::= { + servedCellInfo: ServedCell-Information ::= { + pCI: 99 + cellId: ECGI ::= { + pLMN-Identity: 02 F8 29 + eUTRANcellIdentifier: 00 07 AB 50 (4 bits unused) + } + tAC: 01 02 + broadcastPLMNs: BroadcastPLMNs-Item ::= { + 02 F8 29 + } + eUTRA-Mode-Info: FDD-Info ::= { + uL-EARFCN: 1 + dL-EARFCN: 1 + uL-Transmission-Bandwidth: 3 (bw50) + dL-Transmission-Bandwidth: 3 (bw50) + } + } + } + } + } + } + } + }` + + inputPayloadAsStr := "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133" + var payload []byte + + _, err := fmt.Sscanf(inputPayloadAsStr, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + response, err := UnpackX2apPduAndRefine(logger, e2pdus.MaxAsn1CodecAllocationBufferSize , len(payload), payload, e2pdus.MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + t.Errorf("want: success, got: unpack failed. Error: %v\n", err) + } + + want := strings.Fields(wantPduAsStr) + got := strings.Fields(response.PduPrint) + if len(want) != len(got) { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", wantPduAsStr, response.PduPrint) + } + for i := 0; i < len(want); i++ { + if strings.Compare(want[i], got[i]) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", wantPduAsStr, strings.TrimSpace(response.PduPrint)) + } + + } +} + +/*unpacking error*/ + +func TestUnpackX2apSetupResponseUnpackError(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + wantError := "unpacking error: #src/asn1codec_utils.c.unpack_pdu_aux - Failed to decode E2AP-PDU (consumed 0), error = 0 Success" + //--------------------2006002a + inputPayloadAsStr := "2006002b000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133" + var payload []byte + _, err := fmt.Sscanf(inputPayloadAsStr, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + + _, err = UnpackX2apPduAndRefine(logger, e2pdus.MaxAsn1CodecAllocationBufferSize , len(payload), payload, e2pdus.MaxAsn1CodecMessageBufferSize /*message buffer*/) + if err != nil { + if 0 != strings.Compare(fmt.Sprintf("%s", err), wantError) { + t.Errorf("want failure: %s, got: %s", wantError, err) + } + } else { + t.Errorf("want failure: %s, got: success", wantError) + + } +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/base_error.go b/setup/e2mgr/E2Manager/e2managererrors/base_error.go new file mode 100644 index 0000000..89e498f --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/base_error.go @@ -0,0 +1,26 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type BaseError struct { + Code int + Message string +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/command_already_in_progress.go b/setup/e2mgr/E2Manager/e2managererrors/command_already_in_progress.go new file mode 100644 index 0000000..655710b --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/command_already_in_progress.go @@ -0,0 +1,39 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type CommandAlreadyInProgressError struct { + *BaseError +} + +func NewCommandAlreadyInProgressError() *CommandAlreadyInProgressError { + return &CommandAlreadyInProgressError { + &BaseError{ + Code: 405, + Message: "Command already in progress", + }, + } +} + +func (e *CommandAlreadyInProgressError) Error() string { + return e.Message +} + diff --git a/setup/e2mgr/E2Manager/e2managererrors/e2t_instance_absence_error.go b/setup/e2mgr/E2Manager/e2managererrors/e2t_instance_absence_error.go new file mode 100644 index 0000000..1a3d136 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/e2t_instance_absence_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package e2managererrors + +type E2TInstanceAbsenceError struct { + *BaseError +} + +func NewE2TInstanceAbsenceError() *E2TInstanceAbsenceError { + return &E2TInstanceAbsenceError{ + &BaseError{ + Code: 510, + Message: "The New RAN can't be added, please try later.", + }, + } +} + +func (e *E2TInstanceAbsenceError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/header_validation_error.go b/setup/e2mgr/E2Manager/e2managererrors/header_validation_error.go new file mode 100644 index 0000000..95d0f5b --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/header_validation_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type HeaderValidationError struct { + *BaseError +} + +func NewHeaderValidationError() *HeaderValidationError { + return &HeaderValidationError { + &BaseError{ + Code: 415, + Message: "Header validation error", + }, + } +} + +func (e *HeaderValidationError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/internal_error.go b/setup/e2mgr/E2Manager/e2managererrors/internal_error.go new file mode 100644 index 0000000..5fedc87 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/internal_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type InternalError struct { + *BaseError +} + +func NewInternalError() *InternalError { + return &InternalError { + &BaseError{ + Code: 501, + Message: "Internal Server Error. Please try again later", + }, + } +} + +func (e *InternalError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/invalid_json_error.go b/setup/e2mgr/E2Manager/e2managererrors/invalid_json_error.go new file mode 100644 index 0000000..9d1a75e --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/invalid_json_error.go @@ -0,0 +1,40 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + + +type InvalidJsonError struct { + *BaseError +} + +func NewInvalidJsonError() *InvalidJsonError { + return &InvalidJsonError{ + &BaseError{ + Code: 401, + Message: "corrupted json", + }, + } +} + +func (e *InvalidJsonError) Error() string { + return e.Message +} + diff --git a/setup/e2mgr/E2Manager/e2managererrors/request_validation_error.go b/setup/e2mgr/E2Manager/e2managererrors/request_validation_error.go new file mode 100644 index 0000000..4d833c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/request_validation_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type RequestValidationError struct { + *BaseError +} + +func NewRequestValidationError() *RequestValidationError { + return &RequestValidationError{ + &BaseError{ + Code: 402, + Message: "Validation error", + }, + } +} + +func (e *RequestValidationError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/resource_not_found.go b/setup/e2mgr/E2Manager/e2managererrors/resource_not_found.go new file mode 100644 index 0000000..d73118b --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/resource_not_found.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type ResourceNotFoundError struct { + *BaseError +} + +func NewResourceNotFoundError() *ResourceNotFoundError { + return &ResourceNotFoundError{ + &BaseError{ + Code: 404, + Message: "Resource not found", + }, + } +} + +func (e *ResourceNotFoundError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/rmr_error.go b/setup/e2mgr/E2Manager/e2managererrors/rmr_error.go new file mode 100644 index 0000000..4f6bffd --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/rmr_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type RmrError struct { + *BaseError +} + +func NewRmrError() *RmrError { + return &RmrError{ + &BaseError{ + Code: 502, + Message: "RMR error", + }, + } +} + +func (e *RmrError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/rnib_db_error.go b/setup/e2mgr/E2Manager/e2managererrors/rnib_db_error.go new file mode 100644 index 0000000..a38eed7 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/rnib_db_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +type RnibDbError struct { + *BaseError +} + +func NewRnibDbError() *RnibDbError { + return &RnibDbError { + &BaseError{ + Code: 500, + Message: "RNIB error", + }, + } +} + +func (e *RnibDbError) Error() string { + return e.Message +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/e2managererrors/routing_manager_error.go b/setup/e2mgr/E2Manager/e2managererrors/routing_manager_error.go new file mode 100644 index 0000000..5141176 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/routing_manager_error.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package e2managererrors + +type RoutingManagerError struct { + *BaseError +} + +func NewRoutingManagerError() *RoutingManagerError { + return &RoutingManagerError{ + &BaseError{ + Code: 511, + Message: "No Routing Manager Available", + }, + } +} + +func (e *RoutingManagerError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2managererrors/wrong_state_error.go b/setup/e2mgr/E2Manager/e2managererrors/wrong_state_error.go new file mode 100644 index 0000000..aadbc52 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2managererrors/wrong_state_error.go @@ -0,0 +1,40 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package e2managererrors + +import "fmt" + +type WrongStateError struct { + *BaseError +} + +func NewWrongStateError(activityName string, state string) *WrongStateError { + return &WrongStateError{ + &BaseError{ + Code: 403, + Message: fmt.Sprintf("Activity %s rejected. RAN current state %s does not allow its execution ", activityName, state) , + }, + } +} + +func (e *WrongStateError) Error() string { + return e.Message +} diff --git a/setup/e2mgr/E2Manager/e2mgr-sonar-scanner.properties b/setup/e2mgr/E2Manager/e2mgr-sonar-scanner.properties new file mode 100644 index 0000000..a0c9ca9 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2mgr-sonar-scanner.properties @@ -0,0 +1,14 @@ +#----- Default SonarQube server +sonar.host.url=http://135.25.121.110:9000 +sonar.projectKey=oran:e2mgr +sonar.projectName=e2mgr +sonar.login=admin +sonar.password=admin +sonar.go.coverage.reportPaths=coverage.txt +#----- Default source code encoding +#sonar.sourceEncoding=UTF-8 +sonar.projectBaseDir=/home/ubuntu/oran_repo/e2mgr/E2Manager/ +sonar.sources=. +sonar.exclusions=**/*_test.go,**/generate_source.go,**/*_generated.go,**/build/**,**/.gogradle/**,**/mocks/**,**/tests/**,**/e2managererrors/**,**/enums/** +sonar.go.golangci-lint.reportPaths=sca.xml + diff --git a/setup/e2mgr/E2Manager/e2pdus/configuration_update.go b/setup/e2mgr/E2Manager/e2pdus/configuration_update.go new file mode 100644 index 0000000..806d0a2 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/configuration_update.go @@ -0,0 +1,113 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *******************************************************************************/ + +/* +* This source code is part of the near-RT RIC (RAN Intelligent Controller) +* platform project (RICP). +*/ + +package e2pdus + +// #cgo CFLAGS: -I../asn1codec/inc/ -I../asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../asn1codec/lib/ -L../asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +import "C" +import ( + "fmt" + "unsafe" +) + +var PackedEndcConfigurationUpdateFailure []byte +var PackedEndcConfigurationUpdateAck []byte +var PackedX2EnbConfigurationUpdateFailure []byte +var PackedX2EnbConfigurationUpdateAck []byte + +func prepareEndcConfigurationUpdateFailurePDU(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int) error { + + packedBuffer := make([]C.uchar, maxAsn1PackedBufferSize) + errorBuffer := make([]C.char, maxAsn1CodecMessageBufferSize) + var payloadSize = C.ulong(maxAsn1PackedBufferSize) + + if status := C.build_pack_endc_configuration_update_failure(&payloadSize, &packedBuffer[0], C.ulong(maxAsn1CodecMessageBufferSize), &errorBuffer[0]); !status { + return fmt.Errorf("#configuration_update.prepareEndcConfigurationUpdateFailurePDU - failed to build and pack the endc configuration update failure message %s ", C.GoString(&errorBuffer[0])) + + } + PackedEndcConfigurationUpdateFailure = C.GoBytes(unsafe.Pointer(&packedBuffer[0]), C.int(payloadSize)) + + return nil +} + +func prepareX2EnbConfigurationUpdateFailurePDU(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int) error { + + packedBuffer := make([]C.uchar, maxAsn1PackedBufferSize) + errorBuffer := make([]C.char, maxAsn1CodecMessageBufferSize) + var payloadSize = C.ulong(maxAsn1PackedBufferSize) + + if status := C.build_pack_x2enb_configuration_update_failure(&payloadSize, &packedBuffer[0], C.ulong(maxAsn1CodecMessageBufferSize), &errorBuffer[0]); !status { + return fmt.Errorf("#configuration_update.prepareX2EnbConfigurationUpdateFailurePDU - failed to build and pack the x2 configuration update failure message %s ", C.GoString(&errorBuffer[0])) + + } + PackedX2EnbConfigurationUpdateFailure = C.GoBytes(unsafe.Pointer(&packedBuffer[0]), C.int(payloadSize)) + + return nil +} + +func prepareEndcConfigurationUpdateAckPDU(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int) error { + + packedBuffer := make([]C.uchar, maxAsn1PackedBufferSize) + errorBuffer := make([]C.char, maxAsn1CodecMessageBufferSize) + var payloadSize = C.ulong(maxAsn1PackedBufferSize) + + if status := C.build_pack_endc_configuration_update_ack(&payloadSize, &packedBuffer[0], C.ulong(maxAsn1CodecMessageBufferSize), &errorBuffer[0]); !status { + return fmt.Errorf("#configuration_update.prepareEndcConfigurationUpdateAckPDU - failed to build and pack the endc configuration update ack message %s ", C.GoString(&errorBuffer[0])) + + } + PackedEndcConfigurationUpdateAck = C.GoBytes(unsafe.Pointer(&packedBuffer[0]), C.int(payloadSize)) + + return nil +} + +func prepareX2EnbConfigurationUpdateAckPDU(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int) error { + + packedBuffer := make([]C.uchar, maxAsn1PackedBufferSize) + errorBuffer := make([]C.char, maxAsn1CodecMessageBufferSize) + var payloadSize = C.ulong(maxAsn1PackedBufferSize) + + if status := C.build_pack_x2enb_configuration_update_ack(&payloadSize, &packedBuffer[0], C.ulong(maxAsn1CodecMessageBufferSize), &errorBuffer[0]); !status { + return fmt.Errorf("#configuration_update.prepareX2EnbConfigurationUpdateAckPDU - failed to build and pack the x2 configuration update ack message %s ", C.GoString(&errorBuffer[0])) + + } + PackedX2EnbConfigurationUpdateAck = C.GoBytes(unsafe.Pointer(&packedBuffer[0]), C.int(payloadSize)) + + return nil +} + +func init() { + if err := prepareEndcConfigurationUpdateFailurePDU(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize); err != nil { + panic(err) + } + if err := prepareEndcConfigurationUpdateAckPDU(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize); err != nil { + panic(err) + } + if err := prepareX2EnbConfigurationUpdateFailurePDU(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize); err != nil { + panic(err) + } + if err := prepareX2EnbConfigurationUpdateAckPDU(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize); err != nil { + panic(err) + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/configuration_update_test.go b/setup/e2mgr/E2Manager/e2pdus/configuration_update_test.go new file mode 100644 index 0000000..a4b40e4 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/configuration_update_test.go @@ -0,0 +1,171 @@ +/******************************************************************************* + * + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + *******************************************************************************/ + +/* +* This source code is part of the near-RT RIC (RAN Intelligent Controller) +* platform project (RICP). +*/ + +package e2pdus + +import ( + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +func TestPrepareEndcConfigurationUpdateFailurePDU(t *testing.T) { + _,err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("failed to initialize logger, error: %s", err) + } + packedPdu := "402500080000010005400142" + packedEndcConfigurationUpdateFailure := PackedEndcConfigurationUpdateFailure + + tmp := fmt.Sprintf("%x", packedEndcConfigurationUpdateFailure) + if len(tmp) != len(packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(packedPdu)/2, len(packedEndcConfigurationUpdateFailure)/2) + } + + if strings.Compare(tmp, packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", packedPdu, tmp) + } +} + +func TestPrepareEndcConfigurationUpdateFailurePDUFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + err = prepareEndcConfigurationUpdateFailurePDU(1, 4096) + if err == nil { + t.Errorf("want: error, got: success.\n") + } + + expected:= "#configuration_update.prepareEndcConfigurationUpdateFailurePDU - failed to build and pack the endc configuration update failure message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big" + if !strings.Contains(err.Error(), expected) { + t.Errorf("want :[%s], got: [%s]\n", expected, err) + } +} + +func TestPrepareX2EnbConfigurationUpdateFailurePDU(t *testing.T) { + _,err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("failed to initialize logger, error: %s", err) + } + packedPdu := "400800080000010005400142" + packedEndcX2ConfigurationUpdateFailure := PackedX2EnbConfigurationUpdateFailure + + tmp := fmt.Sprintf("%x", packedEndcX2ConfigurationUpdateFailure) + if len(tmp) != len(packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(packedPdu)/2, len(packedEndcX2ConfigurationUpdateFailure)/2) + } + + if strings.Compare(tmp, packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", packedPdu, tmp) + } +} + +func TestPrepareX2EnbConfigurationUpdateFailurePDUFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + err = prepareX2EnbConfigurationUpdateFailurePDU(1, 4096) + if err == nil { + t.Errorf("want: error, got: success.\n") + } + + expected:= "#configuration_update.prepareX2EnbConfigurationUpdateFailurePDU - failed to build and pack the x2 configuration update failure message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big" + if !strings.Contains(err.Error(), expected) { + t.Errorf("want :[%s], got: [%s]\n", expected, err) + } +} + +func TestPrepareEndcConfigurationUpdateAckPDU(t *testing.T) { + _,err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("failed to initialize logger, error: %s", err) + } + packedPdu := "2025000a00000100f70003000000" + packedEndcConfigurationUpdateAck := PackedEndcConfigurationUpdateAck + + tmp := fmt.Sprintf("%x", packedEndcConfigurationUpdateAck) + if len(tmp) != len(packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(packedPdu)/2, len(packedEndcConfigurationUpdateAck)/2) + } + + if strings.Compare(tmp, packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", packedPdu, tmp) + } +} + +func TestPrepareEndcConfigurationUpdateAckPDUFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + err = prepareEndcConfigurationUpdateAckPDU(1, 4096) + if err == nil { + t.Errorf("want: error, got: success.\n") + } + + expected:= "#configuration_update.prepareEndcConfigurationUpdateAckPDU - failed to build and pack the endc configuration update ack message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big" + if !strings.Contains(err.Error(), expected) { + t.Errorf("want :[%s], got: [%s]\n", expected, err) + } +} + +func TestPrepareX2EnbConfigurationUpdateAckPDU(t *testing.T) { + _,err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("failed to initialize logger, error: %s", err) + } + packedPdu := "200800080000010011400100" + packedEndcX2ConfigurationUpdateAck := PackedX2EnbConfigurationUpdateAck + + tmp := fmt.Sprintf("%x", packedEndcX2ConfigurationUpdateAck) + if len(tmp) != len(packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(packedPdu)/2, len(packedEndcX2ConfigurationUpdateAck)/2) + } + + if strings.Compare(tmp, packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", packedPdu, tmp) + } +} + +func TestPrepareX2EnbConfigurationUpdateAckPDUFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + err = prepareX2EnbConfigurationUpdateAckPDU(1, 4096) + if err == nil { + t.Errorf("want: error, got: success.\n") + } + + expected:= "#configuration_update.prepareX2EnbConfigurationUpdateAckPDU - failed to build and pack the x2 configuration update ack message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big" + if !strings.Contains(err.Error(), expected) { + t.Errorf("want :[%s], got: [%s]\n", expected, err) + } +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/e2pdus/endc_x2_setup_request_test.go b/setup/e2mgr/E2Manager/e2pdus/endc_x2_setup_request_test.go new file mode 100644 index 0000000..433f619 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/endc_x2_setup_request_test.go @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +import ( + "fmt" + "strings" + "testing" +) + +/* + * Create and pack an x2ap setup request. + * Verify the packed representation matches the want value. + */ +func TestPackEndcX2apSetupRequest(t *testing.T) { + pLMNId := []byte{0xbb, 0xbc, 0xcc} + ricFlag := []byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ + + var testCases = []struct { + eNBId []byte + eNBIdBitqty uint + packedPdu string + }{ + { + eNBId: []byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/ + eNBIdBitqty: ShortMacro_eNB_ID, + packedPdu: "0024003200000100f4002b0000020015000900bbbccc8003abcd8000fa0017000001f700bbbcccabcd80000000bbbccc000000000001", + }, + + { + eNBId: []byte{0xab, 0xcd, 0xe}, + eNBIdBitqty: Macro_eNB_ID, + packedPdu: "0024003100000100f4002a0000020015000800bbbccc00abcde000fa0017000001f700bbbcccabcde0000000bbbccc000000000001", + }, + { + eNBId: []byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/ + eNBIdBitqty: LongMacro_eNB_ID, + //packedPdu: "0024003200000100f4002b0000020015000900bbbccc8103abcd3800fa0017000001f700bbbcccabcd38000000bbbccc000000000001", + packedPdu: "0024003200000100f4002b0000020015000900bbbcccc003abcd3800fa0017000001f700bbbcccabcd38000000bbbccc000000000001", + }, + { + eNBId: []byte{0xab, 0xcd, 0xef, 0x8}, + eNBIdBitqty: Home_eNB_ID, + packedPdu: "0024003200000100f4002b0000020015000900bbbccc40abcdef8000fa0017000001f700bbbcccabcdef800000bbbccc000000000001", + }, + } + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + payload, _, err := preparePackedEndcX2SetupRequest(MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, tc.eNBId, tc.eNBIdBitqty, ricFlag) + if err != nil { + t.Errorf("want: success, got: pack failed. Error: %v\n", err) + } else { + t.Logf("packed X2AP setup request(size=%d): %x\n", len(payload), payload) + tmp := fmt.Sprintf("%x", payload) + if len(tmp) != len(tc.packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(tc.packedPdu)/2, len(payload)/2) + } + + if strings.Compare(tmp, tc.packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", tc.packedPdu, tmp) + } + } + }) + } +} + +/*Packing error*/ + +func TestPackEndcX2apSetupRequestPackError(t *testing.T) { + pLMNId := []byte{0xbb, 0xbc, 0xcc} + ricFlag := []byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ + eNBId := []byte{0xab, 0xcd, 0x2} + eNBIdBitqty := uint(Macro_eNB_ID) + wantError := "packing error: #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big:53" + + _, _, err := preparePackedEndcX2SetupRequest(40 /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, eNBId, eNBIdBitqty, ricFlag) + if err != nil { + if 0 != strings.Compare(fmt.Sprintf("%s", err), wantError) { + t.Errorf("want failure: %s, got: %s", wantError, err) + } + } else { + t.Errorf("want failure: %s, got: success", wantError) + + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_reset_known_causes.go b/setup/e2mgr/E2Manager/e2pdus/x2_reset_known_causes.go new file mode 100644 index 0000000..c525561 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_reset_known_causes.go @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +import "C" +import ( + "fmt" + "strings" + "unsafe" +) + +const ( + MaxAsn1PackedBufferSize = 4096 + MaxAsn1CodecMessageBufferSize = 4096 + MaxAsn1CodecAllocationBufferSize = 4096 // TODO: remove later +) + +// Used as default by the x2_reset_request +const ( + OmInterventionCause = "misc:om-intervention" +) + +type cause struct { + causeGroup uint32 + cause int +} + +var knownCauses = map[string]cause{ + "misc:control-processing-overload": {causeGroup: C.Cause_PR_misc, cause: C.CauseMisc_control_processing_overload}, + "misc:hardware-failure": {causeGroup: C.Cause_PR_misc, cause: C.CauseMisc_hardware_failure}, + OmInterventionCause: {causeGroup: C.Cause_PR_misc, cause: C.CauseMisc_om_intervention}, + "misc:not-enough-user-plane-processing-resources": {causeGroup: C.Cause_PR_misc, cause: C.CauseMisc_not_enough_user_plane_processing_resources}, + "misc:unspecified": {causeGroup: C.Cause_PR_misc, cause: C.CauseMisc_unspecified}, + + "protocol:transfer-syntax-error": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_transfer_syntax_error}, + "protocol:abstract-syntax-error-reject": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_abstract_syntax_error_reject}, + "protocol:abstract-syntax-error-ignore-and-notify": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_abstract_syntax_error_ignore_and_notify}, + "protocol:message-not-compatible-with-receiver-state": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_message_not_compatible_with_receiver_state}, + "protocol:semantic-error": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_semantic_error}, + "protocol:unspecified": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_unspecified}, + "protocol:abstract-syntax-error-falsely-constructed-message": {causeGroup: C.Cause_PR_protocol, cause: C.CauseProtocol_abstract_syntax_error_falsely_constructed_message}, + + "transport:transport-resource-unavailable": {causeGroup: C.Cause_PR_transport, cause: C.CauseTransport_transport_resource_unavailable}, + "transport:unspecified": {causeGroup: C.Cause_PR_transport, cause: C.CauseTransport_unspecified}, + + "radioNetwork:handover-desirable-for-radio-reasons": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_handover_desirable_for_radio_reasons}, + "radioNetwork:time-critical-handover": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_time_critical_handover}, + "radioNetwork:resource-optimisation-handover": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_resource_optimisation_handover}, + "radioNetwork:reduce-load-in-serving-cell": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_reduce_load_in_serving_cell}, + "radioNetwork:partial-handover": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_partial_handover}, + "radioNetwork:unknown-new-enb-ue-x2ap-id": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unknown_new_eNB_UE_X2AP_ID}, + "radioNetwork:unknown-old-enb-ue-x2ap-id": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unknown_old_eNB_UE_X2AP_ID}, + "radioNetwork:unknown-pair-of-ue-x2ap-id": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unknown_pair_of_UE_X2AP_ID}, + "radioNetwork:ho-target-not-allowed": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_ho_target_not_allowed}, + "radioNetwork:tx2relocoverall-expiry": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_tx2relocoverall_expiry}, + "radioNetwork:trelocprep-expiry": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_trelocprep_expiry}, + "radioNetwork:cell-not-available": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_cell_not_available}, + "radioNetwork:no-radio-resources-available-in-target-cell": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_no_radio_resources_available_in_target_cell}, + "radioNetwork:invalid-mme-groupid": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_invalid_MME_GroupID}, + "radioNetwork:unknown-mme-code": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unknown_MME_Code}, + "radioNetwork:encryption-and-or-integrity-protection-algorithms-not-supported": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_encryption_and_or_integrity_protection_algorithms_not_supported}, + "radioNetwork:reportcharacteristicsempty": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_reportCharacteristicsEmpty}, + "radioNetwork:noreportperiodicity": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_noReportPeriodicity}, + "radioNetwork:existingMeasurementID": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_existingMeasurementID}, + "radioNetwork:unknown-enb-measurement-id": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unknown_eNB_Measurement_ID}, + "radioNetwork:measurement-temporarily-not-available": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_measurement_temporarily_not_available}, + "radioNetwork:unspecified": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unspecified}, + "radioNetwork:load-balancing": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_load_balancing}, + "radioNetwork:handover-optimisation": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_handover_optimisation}, + "radioNetwork:value-out-of-allowed-range": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_value_out_of_allowed_range}, + "radioNetwork:multiple-E-RAB-ID-instances": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_multiple_E_RAB_ID_instances}, + "radioNetwork:switch-off-ongoing": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_switch_off_ongoing}, + "radioNetwork:not-supported-qci-value": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_not_supported_QCI_value}, + "radioNetwork:measurement-not-supported-for-the-object": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_measurement_not_supported_for_the_object}, + "radioNetwork:tdcoverall-expiry": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_tDCoverall_expiry}, + "radioNetwork:tdcprep-expiry": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_tDCprep_expiry}, + "radioNetwork:action-desirable-for-radio-reasons": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_action_desirable_for_radio_reasons}, + "radioNetwork:reduce-load": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_reduce_load}, + "radioNetwork:resource-optimisation": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_resource_optimisation}, + "radioNetwork:time-critical-action": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_time_critical_action}, + "radioNetwork:target-not-allowed": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_target_not_allowed}, + "radioNetwork:no-radio-resources-available": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_no_radio_resources_available}, + "radioNetwork:invalid-qos-combination": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_invalid_QoS_combination}, + "radioNetwork:encryption-algorithms-not-aupported": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_encryption_algorithms_not_aupported}, + "radioNetwork:procedure-cancelled": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_procedure_cancelled}, + "radioNetwork:rrm-purpose": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_rRM_purpose}, + "radioNetwork:improve-user-bit-rate": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_improve_user_bit_rate}, + "radioNetwork:user-inactivity": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_user_inactivity}, + "radioNetwork:radio-connection-with-ue-lost": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_radio_connection_with_UE_lost}, + "radioNetwork:failure-in-the-radio-interface-procedure": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_failure_in_the_radio_interface_procedure}, + "radioNetwork:bearer-option-not-supported": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_bearer_option_not_supported}, + "radioNetwork:mcg-mobility": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_mCG_Mobility}, + "radioNetwork:scg-mobility": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_sCG_Mobility}, + "radioNetwork:count-reaches-max-value": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_count_reaches_max_value}, + "radioNetwork:unknown-old-en-gnb-ue-x2ap-id": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_unknown_old_en_gNB_UE_X2AP_ID}, + "radioNetwork:pdcp-Overload": {causeGroup: C.Cause_PR_radioNetwork, cause: C.CauseRadioNetwork_pDCP_Overload}, +} + +var knownCausesToX2ResetPDUs = map[string][]byte{} + +func prepareX2ResetPDUs(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int) error { + packedBuffer := make([]C.uchar, maxAsn1PackedBufferSize) + errorBuffer := make([]C.char, maxAsn1CodecMessageBufferSize) + + for k, cause := range knownCauses { + var payloadSize = C.ulong(maxAsn1PackedBufferSize) + if status := C.build_pack_x2reset_request(cause.causeGroup, C.int(cause.cause), &payloadSize, &packedBuffer[0], C.ulong(maxAsn1CodecMessageBufferSize), &errorBuffer[0]); !status { + return fmt.Errorf("#x2_reset_known_causes.prepareX2ResetPDUs - failed to build and pack the reset message %s ", C.GoString(&errorBuffer[0])) + } + knownCausesToX2ResetPDUs[strings.ToLower(k)] = C.GoBytes(unsafe.Pointer(&packedBuffer[0]), C.int(payloadSize)) + } + return nil +} + +// KnownCausesToX2ResetPDU returns a packed x2 reset pdu with the specified cause (case insensitive match). +func KnownCausesToX2ResetPDU(cause string) ([]byte, bool) { + v, ok := knownCausesToX2ResetPDUs[strings.ToLower(cause)] + return v, ok +} + +func init() { + if err := prepareX2ResetPDUs(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize); err != nil { + panic(err) + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_reset_known_causes_test.go b/setup/e2mgr/E2Manager/e2pdus/x2_reset_known_causes_test.go new file mode 100644 index 0000000..2988f40 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_reset_known_causes_test.go @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +import ( + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +func TestKnownCausesToX2ResetPDU(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + var testCases = []struct { + cause string + packedPdu string + }{ + { + cause: OmInterventionCause, + packedPdu: "000700080000010005400164", + }, + { + cause: "PROTOCOL:transfer-syntax-error", + packedPdu: "000700080000010005400140", + }, + { + cause: "transport:transport-RESOURCE-unavailable", + packedPdu: "000700080000010005400120", + }, + + { + cause: "radioNetwork:invalid-MME-groupid", + packedPdu: "00070009000001000540020680", + }, + } + + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + payload, ok := KnownCausesToX2ResetPDU(tc.cause) + if !ok { + t.Errorf("want: success, got: not found.\n") + } else { + tmp := fmt.Sprintf("%x", payload) + if len(tmp) != len(tc.packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(tc.packedPdu)/2, len(payload)/2) + } + + if strings.Compare(tmp, tc.packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", tc.packedPdu, tmp) + } + } + }) + } +} + +func TestKnownCausesToX2ResetPDUFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + _, ok := KnownCausesToX2ResetPDU("xxxx") + if ok { + t.Errorf("want: not found, got: success.\n") + } +} + +func TestPrepareX2ResetPDUsFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + err = prepareX2ResetPDUs(1, 4096) + if err == nil { + t.Errorf("want: error, got: success.\n") + } + + expected := "failed to build and pack the reset message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big:" + if !strings.Contains(err.Error(), expected) { + t.Errorf("want :[%s], got: [%s]\n", expected, err) + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_reset_response.go b/setup/e2mgr/E2Manager/e2pdus/x2_reset_response.go new file mode 100644 index 0000000..ed6b43e --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_reset_response.go @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + + package e2pdus + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +import "C" +import ( + "fmt" + "unsafe" +) + +var PackedX2ResetResponse []byte + +func prepareX2ResetResponsePDU(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int) error { + + packedBuffer := make([]C.uchar, maxAsn1PackedBufferSize) + errorBuffer := make([]C.char, maxAsn1CodecMessageBufferSize) + var payloadSize = C.ulong(maxAsn1PackedBufferSize) + + if status := C.build_pack_x2reset_response(&payloadSize, &packedBuffer[0], C.ulong(maxAsn1CodecMessageBufferSize), &errorBuffer[0]); !status { + return fmt.Errorf("#x2_reset_response.prepareX2ResetResponsePDU - failed to build and pack the reset response message %s ", C.GoString(&errorBuffer[0])) + + } + PackedX2ResetResponse = C.GoBytes(unsafe.Pointer(&packedBuffer[0]), C.int(payloadSize)) + + return nil +} + +func init() { + if err := prepareX2ResetResponsePDU(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize); err != nil { + panic(err) + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_reset_response_test.go b/setup/e2mgr/E2Manager/e2pdus/x2_reset_response_test.go new file mode 100644 index 0000000..e91c7b1 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_reset_response_test.go @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +import ( + "e2mgr/logger" + "fmt" + "strings" + "testing" +) + +func TestPrepareX2ResetResponsePDU(t *testing.T) { + _,err := logger.InitLogger(logger.InfoLevel) + if err!=nil{ + t.Errorf("failed to initialize logger, error: %s", err) + } + packedPdu := "200700080000010011400100" + packedX2ResetResponse := PackedX2ResetResponse + + tmp := fmt.Sprintf("%x", packedX2ResetResponse) + if len(tmp) != len(packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(packedPdu)/2, len(packedX2ResetResponse)/2) + } + + if strings.Compare(tmp, packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", packedPdu, tmp) + } +} + +func TestPrepareX2ResetResponsePDUFailure(t *testing.T) { + _, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("failed to initialize logger, error: %s", err) + } + + err = prepareX2ResetResponsePDU(1, 4096) + if err == nil { + t.Errorf("want: error, got: success.\n") + } + + expected:= "#x2_reset_response.prepareX2ResetResponsePDU - failed to build and pack the reset response message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big" + if !strings.Contains(err.Error(), expected) { + t.Errorf("want :[%s], got: [%s]\n", expected, err) + } +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_setup_request_test.go b/setup/e2mgr/E2Manager/e2pdus/x2_setup_request_test.go new file mode 100644 index 0000000..3607d57 --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_setup_request_test.go @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +import ( + "fmt" + "strings" + "testing" +) + +/* + * Create and pack an x2ap setup request. + * Verify the packed representation matches the want value. + */ +func TestPackX2apSetupRequest(t *testing.T) { + pLMNId := []byte{0xbb, 0xbc, 0xcc} + ricFlag := []byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ + + var testCases = []struct { + eNBId []byte + eNBIdBitqty uint + packedPdu string + }{ + { + eNBId: []byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/ + eNBIdBitqty: ShortMacro_eNB_ID, + packedPdu: "0006002b0000020015000900bbbccc8003abcd8000140017000001f700bbbcccabcd80000000bbbccc000000000001", + }, + + { + eNBId: []byte{0xab, 0xcd, 0xe}, + eNBIdBitqty: Macro_eNB_ID, + packedPdu: "0006002a0000020015000800bbbccc00abcde000140017000001f700bbbcccabcde0000000bbbccc000000000001", + }, + { + eNBId: []byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/ + eNBIdBitqty: LongMacro_eNB_ID, + //packedPdu: "0006002b0000020015000900bbbccc8103abcd3800140017000001f700bbbcccabcd38000000bbbccc000000000001", + packedPdu: "0006002b0000020015000900bbbcccc003abcd3800140017000001f700bbbcccabcd38000000bbbccc000000000001", + }, + { + eNBId: []byte{0xab, 0xcd, 0xef, 0x8}, + eNBIdBitqty: Home_eNB_ID, + packedPdu: "0006002b0000020015000900bbbccc40abcdef8000140017000001f700bbbcccabcdef800000bbbccc000000000001", + }, + } + + // TODO: Consider using testify's assert/require + // testing/quick to input random value + for _, tc := range testCases { + t.Run(tc.packedPdu, func(t *testing.T) { + + payload, _, err := preparePackedX2SetupRequest(MaxAsn1PackedBufferSize /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, tc.eNBId, tc.eNBIdBitqty,ricFlag) + if err != nil { + t.Errorf("want: success, got: pack failed. Error: %v\n", err) + } else { + t.Logf("packed X2AP setup request(size=%d): %x\n", len(payload), payload) + tmp := fmt.Sprintf("%x", payload) + if len(tmp) != len(tc.packedPdu) { + t.Errorf("want packed len:%d, got: %d\n", len(tc.packedPdu)/2, len(payload)/2) + } + + if strings.Compare(tmp, tc.packedPdu) != 0 { + t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", tc.packedPdu, tmp) + } + } + }) + } +} + +/*Packing error*/ + +func TestPackX2apSetupRequestPackError(t *testing.T) { + + wantError := "packing error: #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big:46" + pLMNId := []byte{0xbb, 0xbc, 0xcc} + ricFlag := []byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ + eNBId := []byte{0xab, 0xcd, 0xe} + eNBIdBitqty := uint(Macro_eNB_ID) + _, _, err := preparePackedX2SetupRequest(40 /*max packed buffer*/, MaxAsn1CodecMessageBufferSize /*max message buffer*/, pLMNId, eNBId, eNBIdBitqty, ricFlag) + if err != nil { + if 0 != strings.Compare(fmt.Sprintf("%s", err), wantError) { + t.Errorf("want failure: %s, got: %s", wantError, err) + } + } else { + t.Errorf("want failure: %s, got: success", wantError) + + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_setup_requests.go b/setup/e2mgr/E2Manager/e2pdus/x2_setup_requests.go new file mode 100644 index 0000000..7b91f5a --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_setup_requests.go @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "fmt" + "github.com/pkg/errors" + "unsafe" +) + +const ( + EnvRicId = "RIC_ID" + ShortMacro_eNB_ID = 18 + Macro_eNB_ID = 20 + LongMacro_eNB_ID = 21 + Home_eNB_ID = 28 +) + +var PackedEndcX2setupRequest []byte +var PackedX2setupRequest []byte +var PackedEndcX2setupRequestAsString string +var PackedX2setupRequestAsString string + +/*The Ric Id is the combination of pLMNId and ENBId*/ +var pLMNId []byte +var eNBId []byte +var eNBIdBitqty uint +var ricFlag = []byte{0xbb, 0xbc, 0xcc} /*pLMNId [3]bytes*/ + +func preparePackedEndcX2SetupRequest(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int, pLMNId []byte, eNB_Id []byte /*18, 20, 21, 28 bits length*/, bitqty uint, ricFlag []byte) ([]byte, string, error) { + packedBuf := make([]byte, maxAsn1PackedBufferSize) + errBuf := make([]C.char, maxAsn1CodecMessageBufferSize) + packedBufSize := C.ulong(len(packedBuf)) + pduAsString := "" + + if !C.build_pack_endc_x2setup_request( + (*C.uchar)(unsafe.Pointer(&pLMNId[0])) /*pLMN_Identity*/, + (*C.uchar)(unsafe.Pointer(&eNB_Id[0])), + C.uint(bitqty), + (*C.uchar)(unsafe.Pointer(&ricFlag[0])) /*pLMN_Identity*/, + &packedBufSize, + (*C.uchar)(unsafe.Pointer(&packedBuf[0])), + C.ulong(len(errBuf)), + &errBuf[0]) { + return nil, "", errors.New(fmt.Sprintf("packing error: %s", C.GoString(&errBuf[0]))) + } + + pdu := C.new_pdu(C.size_t(1)) //TODO: change signature + defer C.delete_pdu(pdu) + if C.per_unpack_pdu(pdu, packedBufSize, (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.size_t(len(errBuf)), &errBuf[0]) { + C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) + pduAsString = C.GoString(&errBuf[0]) + } + + return packedBuf[:packedBufSize], pduAsString, nil +} + +func preparePackedX2SetupRequest(maxAsn1PackedBufferSize int, maxAsn1CodecMessageBufferSize int, pLMNId []byte, eNB_Id []byte /*18, 20, 21, 28 bits length*/, bitqty uint, ricFlag []byte) ([]byte, string, error) { + packedBuf := make([]byte, maxAsn1PackedBufferSize) + errBuf := make([]C.char, maxAsn1CodecMessageBufferSize) + packedBufSize := C.ulong(len(packedBuf)) + pduAsString := "" + + if !C.build_pack_x2setup_request( + (*C.uchar)(unsafe.Pointer(&pLMNId[0])) /*pLMN_Identity*/, + (*C.uchar)(unsafe.Pointer(&eNB_Id[0])), + C.uint(bitqty), + (*C.uchar)(unsafe.Pointer(&ricFlag[0])) /*pLMN_Identity*/, + &packedBufSize, + (*C.uchar)(unsafe.Pointer(&packedBuf[0])), + C.ulong(len(errBuf)), + &errBuf[0]) { + return nil, "", errors.New(fmt.Sprintf("packing error: %s", C.GoString(&errBuf[0]))) + } + + pdu := C.new_pdu(C.size_t(1)) //TODO: change signature + defer C.delete_pdu(pdu) + if C.per_unpack_pdu(pdu, packedBufSize, (*C.uchar)(unsafe.Pointer(&packedBuf[0])), C.size_t(len(errBuf)), &errBuf[0]) { + C.asn1_pdu_printer(pdu, C.size_t(len(errBuf)), &errBuf[0]) + pduAsString = C.GoString(&errBuf[0]) + } + return packedBuf[:packedBufSize], pduAsString, nil +} + +//Expected value in RIC_ID = pLMN_Identity-eNB_ID/ +//<6 hex digits>-<6 or 8 hex digits>/<18|20|21|28> +//Each byte is represented by two hex digits, the value in the lowest byte of the eNB_ID must be assigned to the lowest bits +//For example, to get the value of ffffeab/28 the last byte must be 0x0b, not 0xb0 (-ffffea0b/28). +func parseRicID(ricId string) error { + if _, err := fmt.Sscanf(ricId, "%6x-%8x/%2d", &pLMNId, &eNBId, &eNBIdBitqty); err != nil { + return fmt.Errorf("unable to extract the value of %s: %s", EnvRicId, err) + } + + if len(pLMNId) < 3 { + return fmt.Errorf("invalid value for %s, len(pLMNId:%v) != 3", EnvRicId, pLMNId) + } + + if len(eNBId) < 3 { + return fmt.Errorf("invalid value for %s, len(eNBId:%v) != 3 or 4", EnvRicId, eNBId) + } + + if eNBIdBitqty != ShortMacro_eNB_ID && eNBIdBitqty != Macro_eNB_ID && eNBIdBitqty != LongMacro_eNB_ID && eNBIdBitqty != Home_eNB_ID { + return fmt.Errorf("invalid value for %s, eNBIdBitqty: %d", EnvRicId, eNBIdBitqty) + } + + return nil +} + +func init() { + var err error + ricId := "bbbccc-abcd0e/20" + if err = parseRicID(ricId); err != nil { + panic(err) + } + + PackedEndcX2setupRequest, PackedEndcX2setupRequestAsString, err = preparePackedEndcX2SetupRequest(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize, pLMNId, eNBId, eNBIdBitqty, ricFlag) + if err != nil { + panic(err) + } + PackedX2setupRequest, PackedX2setupRequestAsString, err = preparePackedX2SetupRequest(MaxAsn1PackedBufferSize, MaxAsn1CodecMessageBufferSize, pLMNId, eNBId, eNBIdBitqty, ricFlag) + if err != nil { + panic(err) + } +} diff --git a/setup/e2mgr/E2Manager/e2pdus/x2_setup_requests_test.go b/setup/e2mgr/E2Manager/e2pdus/x2_setup_requests_test.go new file mode 100644 index 0000000..e63577b --- /dev/null +++ b/setup/e2mgr/E2Manager/e2pdus/x2_setup_requests_test.go @@ -0,0 +1,135 @@ +/* + * Copyright (c) 2019 AT&T Intellectual Property. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). + */ + +package e2pdus + +import ( + "bytes" + "fmt" + "strings" + "testing" +) + + +func TestParseRicId(t *testing.T) { + var testCases = []struct { + ricId string + pLMNId []byte + eNBId []byte + eNBIdBitqty uint + failure error + }{ + { + ricId: "bbbccc-abcd02/18", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0x2}, /*00000010 -> 10000000*/ + eNBIdBitqty: ShortMacro_eNB_ID, + }, + { + ricId: "bbbccc-abcd0e/20", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0xe}, + eNBIdBitqty: Macro_eNB_ID, + }, + { + ricId: "bbbccc-abcd07/21", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0x7}, /*00000111 -> 00111000*/ + eNBIdBitqty: LongMacro_eNB_ID, + }, + { + ricId: "bbbccc-abcdef08/28", + pLMNId: []byte{0xbb, 0xbc, 0xcc}, + eNBId: []byte{0xab, 0xcd, 0xef, 0x8}, + eNBIdBitqty: Home_eNB_ID, + }, + { + ricId: "", + failure: fmt.Errorf("unable to extract the value of RIC_ID: EOF"), + }, + + { + ricId: "bbbccc", + failure: fmt.Errorf("unable to extract the value of RIC_ID: unexpected EOF"), + }, + { + ricId: "bbbccc-", + failure: fmt.Errorf("unable to extract the value of RIC_ID: EOF"), + }, + { + ricId: "-bbbccc", + failure: fmt.Errorf("%s", "unable to extract the value of RIC_ID: no hex data for %x string"), + }, + { + ricId: "/20", + failure: fmt.Errorf("%s", "unable to extract the value of RIC_ID: no hex data for %x string"), + }, + { + ricId: "bbbcccdd-abcdef08/28", // pLMNId too long + failure: fmt.Errorf("unable to extract the value of RIC_ID: input does not match format"), + }, + { + ricId: "bbbccc-abcdef0809/28", // eNBId too long + failure: fmt.Errorf("unable to extract the value of RIC_ID: input does not match format"), + }, + + { + ricId: "bbbc-abcdef08/28", // pLMNId too short + failure: fmt.Errorf("invalid value for RIC_ID, len(pLMNId:[187 188]) != 3"), + }, + { + ricId: "bbbccc-abcd/28", // eNBId too short + failure: fmt.Errorf("invalid value for RIC_ID, len(eNBId:[171 205]) != 3 or 4"), + }, + { + ricId: "bbbccc-abcdef08/239", // bit quantity too long - no error, will return 23 (which is invalid) + failure: fmt.Errorf("invalid value for RIC_ID, eNBIdBitqty: 23"), + }, + } + + for _, tc := range testCases { + t.Run(tc.ricId, func(t *testing.T) { + + err := parseRicID(tc.ricId) + if err != nil { + if tc.failure == nil { + t.Errorf("want: success, got: parse failed. Error: %v\n", err) + } else { + if strings.Compare(err.Error(), tc.failure.Error()) != 0 { + t.Errorf("want: %s, got: %s\n", err, tc.failure) + } + } + } else { + if bytes.Compare(tc.pLMNId, pLMNId) != 0 { + t.Errorf("want: pLMNId = %v, got: pLMNId = %v", tc.pLMNId, pLMNId) + } + + if bytes.Compare(tc.eNBId, eNBId) != 0 { + t.Errorf("want: eNBId = %v, got: eNBId = %v", tc.eNBId, eNBId) + } + + if tc.eNBIdBitqty != eNBIdBitqty { + t.Errorf("want: eNBIdBitqty = %d, got: eNBIdBitqty = %d", tc.eNBIdBitqty, eNBIdBitqty) + } + } + }) + } +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/enums/message_direction.go b/setup/e2mgr/E2Manager/enums/message_direction.go new file mode 100644 index 0000000..509292a --- /dev/null +++ b/setup/e2mgr/E2Manager/enums/message_direction.go @@ -0,0 +1,59 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package enums + +import ( + "encoding/json" + "strconv" +) + +type MessageDirection int32 + +var messageDirectionEnumName = map[int32]string{ + 0: "UNKNOWN_MESSAGE_DIRECTION", + 1: "RAN_TO_RIC", + 2: "RIC_TO_RAN", +} + +const ( + UNKNOWN_MESSAGE_DIRECTION MessageDirection = 0 + RAN_TO_RIC MessageDirection = 1 + RIC_TO_RAN MessageDirection = 2 +) + +func (md MessageDirection) String() string { + s, ok := messageDirectionEnumName[int32(md)] + if ok { + return s + } + return strconv.Itoa(int(md)) +} + +func (md MessageDirection) MarshalJSON() ([]byte, error) { + _, ok := messageDirectionEnumName[int32(md)] + + if !ok { + return nil,&json.UnsupportedValueError{} + } + + v:= int32(md) + return json.Marshal(v) +} diff --git a/setup/e2mgr/E2Manager/go.mod b/setup/e2mgr/E2Manager/go.mod new file mode 100644 index 0000000..0339b3c --- /dev/null +++ b/setup/e2mgr/E2Manager/go.mod @@ -0,0 +1,30 @@ +module e2mgr + +require ( + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35 + gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35 + gerrit.o-ran-sc.org/r/ric-plt/sdlgo v0.5.2 + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect + github.com/go-ozzo/ozzo-validation v3.5.0+incompatible + github.com/golang/protobuf v1.3.4 + github.com/gorilla/mux v1.7.0 + github.com/magiconair/properties v1.8.1 + github.com/pelletier/go-toml v1.5.0 // indirect + github.com/pkg/errors v0.8.1 + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/viper v1.4.0 + github.com/stretchr/objx v0.2.0 // indirect + github.com/stretchr/testify v1.4.0 + go.uber.org/multierr v1.2.0 // indirect + go.uber.org/zap v1.11.0 + golang.org/x/net v0.0.0-20191021144547-ec77196f6094 // indirect + golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd // indirect + google.golang.org/appengine v1.6.1 // indirect + gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect + gopkg.in/yaml.v2 v2.2.8 + k8s.io/apimachinery v0.17.0 + k8s.io/client-go v0.17.0 +) + +replace gerrit.o-ran-sc.org/r/ric-plt/sdlgo => gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2 diff --git a/setup/e2mgr/E2Manager/go.sum b/setup/e2mgr/E2Manager/go.sum new file mode 100644 index 0000000..4bb1c2a --- /dev/null +++ b/setup/e2mgr/E2Manager/go.sum @@ -0,0 +1,361 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35 h1:TGXHb4DNY8on+ej4S9VUnk2HibIC/5chDy64OE+bQBQ= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common v1.0.35/go.mod h1:QJ1uPPZosGbhxUWpUpeM5fLqFHdnWTrVnvW2DgyOCes= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35 h1:tkM3yE8UzmuH4nf9TqAmiNBSuIZ2CtcMRH2eBIYIzpQ= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities v1.0.35/go.mod h1:G+4sUBMbLfQ+RrGS65U15tKmbnP+/1b5oLTPmMfyfT4= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35 h1:LcxnUUDwsCzYEISKmkjkyYfg/lnLt8ofkPiGK69vNIA= +gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader v1.0.35/go.mod h1:2bSaXTpECbZieB8bMnubTqMwF3n+mMBxlTaAXvcduNg= +gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2 h1:UK7awyRKIkVdokWvvkYvazlg3EWIfMnIqCcJxTnLlDA= +gerrit.o-ran-sc.org/r/ric-plt/sdlgo.git v0.5.2/go.mod h1:y2WhrCvdLkAKdH+ySdHSOSehACJkTMyZghCGVcqoZzc= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc h1:cAKDfWh5VpdgMhJosfJnn5/FoN2SRZ4p7fJNX58YPaU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf h1:qet1QNfXsQxTZqLG4oE62mJzwPIB8+Tee4RNCL9ulrY= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/evanphx/json-patch v4.2.0+incompatible h1:fUDGZCv/7iAN7u0puUVhvKCcsR6vRfwrJatElLBEf0I= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-ozzo/ozzo-validation v3.5.0+incompatible h1:sUy/in/P6askYr16XJgTKq/0SZhiWsdg4WZGaLsGQkM= +github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= +github.com/go-redis/redis v6.15.3+incompatible h1:NZ0O90AhLSvSrvLZ/S9h7D4kl1mW2PrKyxL7MyBKO2g= +github.com/go-redis/redis v6.15.3+incompatible/go.mod h1:W2YCLaZryXHirdd9QqwkiVUxCQsrx8SbLq9Uqk7JS7A= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d h1:3PaI8p3seN09VjbTYC/QWlUZdZ1qS1zGjy7LH2Wt07I= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.4 h1:87PNWwrRvUSnqS4dlcBU/ftvOIBep4sYuBLlh6rX2wk= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d h1:7XGaL1e6bYS1yIonGp9761ExpPPV1ui0SAC59Yube9k= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gorilla/mux v1.7.0 h1:tOSd0UKHQd6urX6ApfOn4XdBMY6Sh1MfxV3kmaazO+U= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.8 h1:QiWkFLKq0T7mpzwOTu6BzNDbfTE8OLrYhVKYMLF46Ok= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/julienschmidt/httprouter v1.2.0 h1:TDTW5Yz1mjftljbcKqRcrYhd4XeOoI98t+9HbQbYf7g= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0 h1:izbySO9zDPmjJ8rDjLvkA2zJHIo+HkYXHnf7eN7SSyo= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.5.0 h1:5BakdOZdtKJ1FFk6QdL8iSGrMWsXgchNJcrnarjbmJQ= +github.com/pelletier/go-toml v1.5.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= +github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.2.0 h1:6I+W7f5VwC5SV9dNrZ3qXrDB9mD0dyGOi/ZJmYw03T4= +go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.11.0 h1:gSmpCfs+R47a4yQPAI4xJ0IPDLTRGXskm6UelqNXpqE= +go.uber.org/zap v1.11.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586 h1:7KByu05hhLed2MO29w7p1XfZvZ13m8mub3shuVftRs0= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191021144547-ec77196f6094 h1:5O4U9trLjNpuhpynaDsqwCk+Tw6seqJz1EbqbnzHrc8= +golang.org/x/net v0.0.0-20191021144547-ec77196f6094/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456 h1:ng0gs1AKnRRuEMZoTLLlbOd+C17zUDepwGQBb/n+JVg= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII= +golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/api v0.17.0 h1:H9d/lw+VkZKEVIUc8F3wgiQ+FUXTTr21M87jXLU7yqM= +k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +k8s.io/apimachinery v0.17.0 h1:xRBnuie9rXcPxUkDizUsGvPf1cnlZCFu210op7J7LJo= +k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/client-go v0.17.0 h1:8QOGvUGdqDMFrm9sD6IUFl256BcffynGoe80sxgTEDg= +k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a h1:UcxjrRMyNx/i/y8G7kPvLyy7rfbeuf1PYyBf973pgyU= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f h1:GiPwtSzdP43eI1hpPCbROQCCIgCuiMMNF8YUVLF3vJo= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/delete_all_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/delete_all_request_handler.go new file mode 100644 index 0000000..975640a --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/delete_all_request_handler.go @@ -0,0 +1,224 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import "C" +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "time" +) + +type DeleteAllRequestHandler struct { + rnibDataService services.RNibDataService + rmrSender *rmrsender.RmrSender + config *configuration.Configuration + logger *logger.Logger + e2tInstancesManager managers.IE2TInstancesManager + rmClient clients.IRoutingManagerClient +} + +const PartialSuccessDueToRmErrorMessage = "Operation succeeded except for routing manager outbound call" + +func NewDeleteAllRequestHandler(logger *logger.Logger, rmrSender *rmrsender.RmrSender, config *configuration.Configuration, rnibDataService services.RNibDataService, e2tInstancesManager managers.IE2TInstancesManager, rmClient clients.IRoutingManagerClient) *DeleteAllRequestHandler { + return &DeleteAllRequestHandler{ + logger: logger, + rnibDataService: rnibDataService, + rmrSender: rmrSender, + config: config, + e2tInstancesManager: e2tInstancesManager, + rmClient: rmClient, + } +} + +func (h *DeleteAllRequestHandler) Handle(request models.Request) (models.IResponse, error) { + h.logger.Infof("#DeleteAllRequestHandler.Handle - handling shutdown request") + + e2tAddresses, err := h.e2tInstancesManager.GetE2TAddresses() + + if err != nil { + return nil, err + } + + if len(e2tAddresses) == 0 { + err, _ = h.updateNodebs(h.updateNodebInfoForceShutdown) + return nil, err + } + + dissocErr := h.rmClient.DissociateAllRans(e2tAddresses) + + if dissocErr != nil { + h.logger.Warnf("#DeleteAllRequestHandler.Handle - routing manager failure. continue flow.") + } + + err, updatedAtLeastOnce := h.updateNodebs(h.updateNodebInfoShuttingDown) + + if err != nil { + return nil, err + } + + err = h.e2tInstancesManager.ClearRansOfAllE2TInstances() + + if err != nil { + return nil, err + } + + rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} + + err = h.rmrSender.Send(&rmrMessage) + + if err != nil { + h.logger.Errorf("#DeleteAllRequestHandler.Handle - failed to send sctp clear all message to RMR: %s", err) + return nil, e2managererrors.NewRmrError() + } + + if !updatedAtLeastOnce { + h.logger.Infof("#DeleteAllRequestHandler.Handle - DB wasn't updated, not activating timer") + + if dissocErr != nil { + return models.NewRedButtonPartialSuccessResponseModel(PartialSuccessDueToRmErrorMessage), nil + } + + return nil, nil + } + + time.Sleep(time.Duration(h.config.BigRedButtonTimeoutSec) * time.Second) + h.logger.Infof("#DeleteAllRequestHandler.Handle - timer expired") + + err, _ = h.updateNodebs(h.updateNodebInfoShutDown) + + if err != nil { + return nil, err + } + + if dissocErr != nil { + return models.NewRedButtonPartialSuccessResponseModel(PartialSuccessDueToRmErrorMessage), nil + } + + return nil, nil +} + +func (h *DeleteAllRequestHandler) updateNodebs(updateCb func(node *entities.NodebInfo) (error, bool)) (error, bool) { + nbIdentityList, err := h.rnibDataService.GetListNodebIds() + + if err != nil { + h.logger.Errorf("#DeleteAllRequestHandler.updateNodebs - failed to get nodes list from rNib. Error: %s", err) + return e2managererrors.NewRnibDbError(), false + } + + updatedAtLeastOnce := false + + for _, nbIdentity := range nbIdentityList { + node, err := h.rnibDataService.GetNodeb(nbIdentity.InventoryName) + + if err != nil { + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + h.logger.Errorf("#DeleteAllRequestHandler.updateNodebs - failed to get nodeB entity for ran name: %s from rNib. error: %s", nbIdentity.InventoryName, err) + return e2managererrors.NewRnibDbError(), false + } + continue + } + + err, updated := updateCb(node) + + if err != nil { + return err, false + } + + if updated { + updatedAtLeastOnce = true + } + } + + return nil, updatedAtLeastOnce +} + +func (h *DeleteAllRequestHandler) updateNodebInfoForceShutdown(node *entities.NodebInfo) (error, bool) { + err := h.updateNodebInfo(node, entities.ConnectionStatus_SHUT_DOWN, true) + + if err != nil { + return err, false + } + + return nil, true +} + +func (h *DeleteAllRequestHandler) updateNodebInfoShuttingDown(node *entities.NodebInfo) (error, bool) { + if node.ConnectionStatus == entities.ConnectionStatus_SHUT_DOWN { + return nil, false + } + + err := h.updateNodebInfo(node, entities.ConnectionStatus_SHUTTING_DOWN, true) + + if err != nil { + return err, false + } + + return nil, true +} + +func (h *DeleteAllRequestHandler) updateNodebInfoShutDown(node *entities.NodebInfo) (error, bool) { + if node.ConnectionStatus == entities.ConnectionStatus_SHUT_DOWN { + return nil, false + } + + if node.ConnectionStatus != entities.ConnectionStatus_SHUTTING_DOWN { + h.logger.Warnf("#DeleteAllRequestHandler.updateNodebInfoShutDown - RAN name: %s - ignore, status is not Shutting Down", node.RanName) + return nil, false + } + + err := h.updateNodebInfo(node, entities.ConnectionStatus_SHUT_DOWN, false) + + if err != nil { + return err, false + } + + return nil, true +} + +func (h *DeleteAllRequestHandler) updateNodebInfo(node *entities.NodebInfo, connectionStatus entities.ConnectionStatus, resetAssociatedE2TAddress bool) error { + node.ConnectionStatus = connectionStatus + + if resetAssociatedE2TAddress { + node.AssociatedE2TInstanceAddress = "" + } + + err := h.rnibDataService.UpdateNodebInfo(node) + + if err != nil { + h.logger.Errorf("#DeleteAllRequestHandler.updateNodebInfo - RAN name: %s - failed updating nodeB entity in rNib. error: %s", node.RanName, err) + return e2managererrors.NewRnibDbError() + } + + h.logger.Infof("#DeleteAllRequestHandler.updateNodebInfo - RAN name: %s, connection status: %s", node.RanName, connectionStatus) + return nil + +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go new file mode 100644 index 0000000..a1cea80 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/delete_all_request_handler_test.go @@ -0,0 +1,473 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "io/ioutil" + "net/http" + "testing" +) + +func setupDeleteAllRequestHandlerTest(t *testing.T) (*DeleteAllRequestHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.HttpClientMock) { + log := initLog(t) + config := configuration.ParseConfiguration() + config.BigRedButtonTimeoutSec = 1 + config.RoutingManager.BaseUrl = BaseRMUrl + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := getRmrSender(rmrMessengerMock, log) + + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + handler := NewDeleteAllRequestHandler(log, rmrSender, config, rnibDataService, e2tInstancesManager, rmClient) + return handler, readerMock, writerMock, rmrMessengerMock, httpClientMock +} + +func mapE2TAddressesToE2DataList(e2tAddresses []string) models.RoutingManagerE2TDataList { + e2tDataList := make(models.RoutingManagerE2TDataList, len(e2tAddresses)) + + for i, v := range e2tAddresses { + e2tDataList[i] = models.NewRoutingManagerE2TData(v) + } + + return e2tDataList +} + +func mockHttpClientDissociateAllRans(httpClientMock *mocks.HttpClientMock, e2tAddresses []string, ok bool) { + data := mapE2TAddressesToE2DataList(e2tAddresses) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := BaseRMUrl + clients.DissociateRanE2TInstanceApiSuffix + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + + var status int + if ok { + status = http.StatusOK + } else { + status = http.StatusBadRequest + } + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: status, Body: respBody}, nil) +} + +func TestGetE2TAddressesFailure(t *testing.T) { + h, readerMock, _, _, _ := setupDeleteAllRequestHandlerTest(t) + readerMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(errors.New("error"))) + _, err := h.Handle(nil) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) +} + +func TestOneRanGetE2TAddressesEmptyList(t *testing.T) { + h, readerMock, writerMock, _, _ := setupDeleteAllRequestHandlerTest(t) + readerMock.On("GetE2TAddresses").Return([]string{}, nil) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + _, err := h.Handle(nil) + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestTwoRansGetE2TAddressesEmptyListOneGetNodebFailure(t *testing.T) { + h, readerMock, writerMock, _, _ := setupDeleteAllRequestHandlerTest(t) + readerMock.On("GetE2TAddresses").Return([]string{}, nil) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}, {InventoryName: "RanName_2"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + var nb2 *entities.NodebInfo + readerMock.On("GetNodeb", "RanName_2").Return(nb2, common.NewInternalError(errors.New("error"))) + _, err := h.Handle(nil) + assert.IsType(t,&e2managererrors.RnibDbError{}, err) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) + readerMock.AssertExpectations(t) +} + +func TestTwoRansGetE2TAddressesEmptyListOneUpdateNodebInfoFailure(t *testing.T) { + h, readerMock, writerMock, _, _ := setupDeleteAllRequestHandlerTest(t) + readerMock.On("GetE2TAddresses").Return([]string{}, nil) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}, {InventoryName: "RanName_2"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + updatedNb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb2).Return(common.NewInternalError(errors.New("error"))) + _, err := h.Handle(nil) + assert.IsType(t,&e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestOneRanDissociateSucceedsTryShuttingDownFailure(t *testing.T) { + h, readerMock, writerMock, _, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, true) + nbIdentityList := []*entities.NbIdentity{} + readerMock.On("GetListNodebIds").Return(nbIdentityList, common.NewInternalError(errors.New("error"))) + _, err := h.Handle(nil) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestOneRanDissociateFailsTryShuttingDownFailure(t *testing.T) { + h, readerMock, writerMock, _, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress} + + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, false) + nbIdentityList := []*entities.NbIdentity{} + readerMock.On("GetListNodebIds").Return(nbIdentityList, common.NewInternalError(errors.New("error"))) + _, err := h.Handle(nil) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestOneRanTryShuttingDownSucceedsClearFails(t *testing.T) { + h, readerMock, writerMock, _, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, true) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + readerMock.On("GetE2TInstances", []string{E2TAddress}).Return([]*entities.E2TInstance{}, common.NewInternalError(errors.New("error"))) + _, err := h.Handle(nil) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestOneRanTryShuttingDownSucceedsClearSucceedsRmrSendFails(t *testing.T) { + h, readerMock, writerMock, rmrMessengerMock, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, true) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"RanName_1"}} + readerMock.On("GetE2TInstances", []string{E2TAddress}).Return([]*entities.E2TInstance{&e2tInstance}, nil) + updatedE2tInstance := e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + + rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} + mbuf := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, e2managererrors.NewRmrError()) + _, err := h.Handle(nil) + assert.IsType(t, &e2managererrors.RmrError{}, err) + rmrMessengerMock.AssertCalled(t, "SendMsg", mbuf, true) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func testTwoRansTryShuttingDownSucceedsClearSucceedsRmrSucceedsAllRansAreShutdown(t *testing.T, partial bool) { + h, readerMock, writerMock, rmrMessengerMock, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, !partial) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}, {InventoryName: "RanName_2"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN} + nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN} + readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"RanName_1", "RanName_2"}} + readerMock.On("GetE2TInstances", []string{E2TAddress}).Return([]*entities.E2TInstance{&e2tInstance}, nil) + updatedE2tInstance := e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + + rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} + mbuf := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, nil) + resp, err := h.Handle(nil) + assert.Nil(t, err) + + if partial { + assert.IsType(t, &models.RedButtonPartialSuccessResponseModel{}, resp) + } else { + assert.Nil(t, resp) + } + + rmrMessengerMock.AssertCalled(t, "SendMsg", mbuf, true) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) +} + +func TestTwoRansTryShuttingDownSucceedsClearSucceedsRmrSucceedsAllRansAreShutdownSuccess(t *testing.T) { + testTwoRansTryShuttingDownSucceedsClearSucceedsRmrSucceedsAllRansAreShutdown(t, false) +} + +func TestTwoRansTryShuttingDownSucceedsClearSucceedsRmrSucceedsAllRansAreShutdownPartialSuccess(t *testing.T) { + testTwoRansTryShuttingDownSucceedsClearSucceedsRmrSucceedsAllRansAreShutdown(t, true) +} + +//func TestOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsAlreadyShutdown(t *testing.T) { +// h, readerMock, writerMock, rmrMessengerMock, httpClientMock := setupDeleteAllRequestHandlerTest(t) +// e2tAddresses := []string{E2TAddress} + +// readerMock.On("GetE2TAddresses").Return(e2tAddresses , nil) +// mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses ,true) +// nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} +// readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) +// nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} +// readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) +// updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} +// writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) +// readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) +// e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"RanName_1"}} +// readerMock.On("GetE2TInstances", []string{E2TAddress}).Return([]*entities.E2TInstance{&e2tInstance }, nil) +// updatedE2tInstance := e2tInstance +// updatedE2tInstance.AssociatedRanList = []string{} +// writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) +// +// rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} +// mbuf := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction) +// rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, nil) +// +// readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) +// nbAfterTimer := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} +// readerMock.On("GetNodeb", /*"RanName_1"*/mock.Anything).Return(nbAfterTimer , nil) // Since this is a second call with same arguments we send mock.Anything due to mock limitations +// _, err := h.Handle(nil) +// assert.Nil(t, err) +// rmrMessengerMock.AssertCalled(t, "SendMsg",mbuf, true) +// readerMock.AssertExpectations(t) +// writerMock.AssertExpectations(t) +// writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) +//} + +//func TestOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsShuttingDownUpdateFailure(t *testing.T) { +// h, readerMock, writerMock, rmrMessengerMock, httpClientMock := setupDeleteAllRequestHandlerTest(t) +// e2tAddresses := []string{E2TAddress} +// readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) +// mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, true) +// nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} +// readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) +// //nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} +// //readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) +// updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} +// writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) +// readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) +// e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"RanName_1"}} +// readerMock.On("GetE2TInstances", []string{E2TAddress}).Return([]*entities.E2TInstance{&e2tInstance}, nil) +// updatedE2tInstance := e2tInstance +// updatedE2tInstance.AssociatedRanList = []string{} +// writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) +// +// rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} +// mbuf := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction) +// rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, nil) +// +// readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) +// readerMock.On("GetNodeb", "RanName_1").Return(updatedNb1, nil) +// updatedNb2 := *updatedNb1 +// updatedNb2.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN +// writerMock.On("UpdateNodebInfo", &updatedNb2).Return(common.NewInternalError(errors.New("error"))) +// _, err := h.Handle(nil) +// assert.IsType(t,&e2managererrors.RnibDbError{}, err) +// rmrMessengerMock.AssertCalled(t, "SendMsg", mbuf, true) +// readerMock.AssertExpectations(t) +// writerMock.AssertExpectations(t) +//} + +func testOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsShuttingDown(t *testing.T, partial bool) { + h, readerMock, writerMock, rmrMessengerMock, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, !partial) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + //nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} + //readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"RanName_1"}} + readerMock.On("GetE2TInstances", []string{E2TAddress}).Return([]*entities.E2TInstance{&e2tInstance}, nil) + updatedE2tInstance := e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + + rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} + mbuf := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, nil) + + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + readerMock.On("GetNodeb", "RanName_1").Return(updatedNb1, nil) + updatedNb2 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb2).Return(nil) + _, err := h.Handle(nil) + assert.Nil(t, err) + rmrMessengerMock.AssertCalled(t, "SendMsg", mbuf, true) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) +} + +func TestOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsShuttingDownSuccess (t *testing.T) { + testOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsShuttingDown(t, false) +} + +func TestOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsShuttingDownPartialSuccess (t *testing.T) { + testOneRanTryShuttingDownSucceedsClearSucceedsRmrSucceedsRanStatusIsShuttingDown(t, true) +} + +func TestSuccessTwoE2TInstancesSixRans(t *testing.T) { + h, readerMock, writerMock, rmrMessengerMock, httpClientMock := setupDeleteAllRequestHandlerTest(t) + e2tAddresses := []string{E2TAddress, E2TAddress2} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + mockHttpClientDissociateAllRans(httpClientMock, e2tAddresses, true) + nbIdentityList := []*entities.NbIdentity{{InventoryName: "RanName_1"}, {InventoryName: "RanName_2"}, {InventoryName: "RanName_3"}, {InventoryName: "RanName_4"}, {InventoryName: "RanName_5"}, {InventoryName: "RanName_6"}} + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + //nb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} + //readerMock.On("GetNodeb", "RanName_1").Return(nb1, nil) + //nb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} + //readerMock.On("GetNodeb", "RanName_2").Return(nb2, nil) + //nb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress} + //readerMock.On("GetNodeb", "RanName_3").Return(nb3, nil) + //nb4 := &entities.NodebInfo{RanName: "RanName_4", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress2} + //readerMock.On("GetNodeb", "RanName_4").Return(nb4, nil) + //nb5 := &entities.NodebInfo{RanName: "RanName_5", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress2} + //readerMock.On("GetNodeb", "RanName_5").Return(nb5, nil) + //nb6 := &entities.NodebInfo{RanName: "RanName_6", ConnectionStatus: entities.ConnectionStatus_CONNECTED, AssociatedE2TInstanceAddress: E2TAddress2} + //readerMock.On("GetNodeb", "RanName_6").Return(nb6, nil) + + updatedNb1 := &entities.NodebInfo{RanName: "RanName_1", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb1).Return(nil) + updatedNb2 := &entities.NodebInfo{RanName: "RanName_2", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb2).Return(nil) + updatedNb3 := &entities.NodebInfo{RanName: "RanName_3", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb3).Return(nil) + updatedNb4 := &entities.NodebInfo{RanName: "RanName_4", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb4).Return(nil) + updatedNb5 := &entities.NodebInfo{RanName: "RanName_5", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb5).Return(nil) + updatedNb6 := &entities.NodebInfo{RanName: "RanName_6", ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + writerMock.On("UpdateNodebInfo", updatedNb6).Return(nil) + + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"RanName_1", "RanName_2", "RanName_3"}} + e2tInstance2 := entities.E2TInstance{Address: E2TAddress2, AssociatedRanList: []string{"RanName_4", "RanName_5", "RanName_6"}} + readerMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{&e2tInstance, &e2tInstance2}, nil) + updatedE2tInstance := e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + updatedE2tInstance2 := e2tInstance2 + updatedE2tInstance2.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + writerMock.On("SaveE2TInstance", &updatedE2tInstance2).Return(nil) + + rmrMessage := models.RmrMessage{MsgType: rmrCgo.RIC_SCTP_CLEAR_ALL} + mbuf := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, nil) + + readerMock.On("GetListNodebIds").Return(nbIdentityList, nil) + readerMock.On("GetNodeb", "RanName_1").Return(updatedNb1, nil) + readerMock.On("GetNodeb", "RanName_2").Return(updatedNb2, nil) + readerMock.On("GetNodeb", "RanName_3").Return(updatedNb3, nil) + readerMock.On("GetNodeb", "RanName_4").Return(updatedNb4, nil) + readerMock.On("GetNodeb", "RanName_5").Return(updatedNb5, nil) + readerMock.On("GetNodeb", "RanName_6").Return(updatedNb6, nil) + + updatedNb1AfterTimer := *updatedNb1 + updatedNb1AfterTimer.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNb1AfterTimer).Return(nil) + updatedNb2AfterTimer := *updatedNb2 + updatedNb2AfterTimer.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNb2AfterTimer).Return(nil) + updatedNb3AfterTimer := *updatedNb3 + updatedNb3AfterTimer.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNb3AfterTimer).Return(nil) + updatedNb4AfterTimer := *updatedNb4 + updatedNb4AfterTimer.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNb4AfterTimer).Return(nil) + updatedNb5AfterTimer := *updatedNb5 + updatedNb5AfterTimer.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNb5AfterTimer).Return(nil) + updatedNb6AfterTimer := *updatedNb6 + updatedNb6AfterTimer.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNb6AfterTimer).Return(nil) + _, err := h.Handle(nil) + assert.Nil(t, err) + rmrMessengerMock.AssertCalled(t, "SendMsg", mbuf, true) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 12) +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#initLog test - failed to initialize logger, error: %s", err) + } + return log +} + +func getRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_e2t_instances_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_e2t_instances_request_handler.go new file mode 100644 index 0000000..be438e6 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_e2t_instances_request_handler.go @@ -0,0 +1,57 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" +) + +type GetE2TInstancesRequestHandler struct { + e2tInstancesManager managers.IE2TInstancesManager + logger *logger.Logger +} + +func NewGetE2TInstancesRequestHandler(logger *logger.Logger, e2tInstancesManager managers.IE2TInstancesManager) *GetE2TInstancesRequestHandler { + return &GetE2TInstancesRequestHandler{ + logger: logger, + e2tInstancesManager: e2tInstancesManager, + } +} + +func (h *GetE2TInstancesRequestHandler) Handle(request models.Request) (models.IResponse, error) { + + e2tInstances, err := h.e2tInstancesManager.GetE2TInstances() + + if err != nil { + h.logger.Errorf("#GetE2TInstancesRequestHandler.Handle - Error fetching E2T instances from rNib: %s", err) + return nil, err + } + + mapped := make([]*models.E2TInstanceResponseModel, len(e2tInstances)) + + for i, v := range e2tInstances { + mapped[i] = models.NewE2TInstanceResponseModel(v.Address, v.AssociatedRanList) + } + + return models.E2TInstancesResponse(mapped), nil +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_e2t_instances_request_handler_test.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_e2t_instances_request_handler_test.go new file mode 100644 index 0000000..6d8c7c6 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_e2t_instances_request_handler_test.go @@ -0,0 +1,78 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "testing" +) + +const E2TAddress2 = "10.0.2.15:3213" + +func setupGetE2TInstancesListRequestHandlerTest(t *testing.T) (*GetE2TInstancesRequestHandler, *mocks.RnibReaderMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) + handler := NewGetE2TInstancesRequestHandler(log, e2tInstancesManager) + return handler, readerMock +} + +func TestGetE2TInstancesFailure(t *testing.T) { + handler, rnibReaderMock := setupGetE2TInstancesListRequestHandlerTest(t) + rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(errors.New("error"))) + _, err := handler.Handle(nil) + assert.NotNil(t, err) +} + +func TestGetE2TInstancesNoInstances(t *testing.T) { + handler, rnibReaderMock := setupGetE2TInstancesListRequestHandlerTest(t) + rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil) + resp, err := handler.Handle(nil) + assert.Nil(t, err) + assert.IsType(t, models.E2TInstancesResponse{}, resp) + assert.Len(t, resp, 0) +} + +func TestGetE2TInstancesSuccess(t *testing.T) { + handler, rnibReaderMock := setupGetE2TInstancesListRequestHandlerTest(t) + + e2tAddresses := []string{E2TAddress, E2TAddress2} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tInstance := entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{"test1", "test2"}} + e2tInstance2 := entities.E2TInstance{Address: E2TAddress2, AssociatedRanList: []string{"test3", "test4", "test5"}} + + rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{&e2tInstance, &e2tInstance2}, nil) + resp, err := handler.Handle(nil) + assert.Nil(t, err) + assert.IsType(t, models.E2TInstancesResponse{}, resp) + assert.Len(t, resp, 2) +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_id_list_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_id_list_request_handler.go new file mode 100644 index 0000000..0ab1f74 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_id_list_request_handler.go @@ -0,0 +1,52 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/services" +) + +type GetNodebIdListRequestHandler struct { + rNibDataService services.RNibDataService + logger *logger.Logger +} + +func NewGetNodebIdListRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService) *GetNodebIdListRequestHandler { + return &GetNodebIdListRequestHandler{ + logger: logger, + rNibDataService: rNibDataService, + } +} + +func (handler *GetNodebIdListRequestHandler) Handle(request models.Request) (models.IResponse, error) { + + nodebIdList, err := handler.rNibDataService.GetListNodebIds() + + if err != nil { + handler.logger.Errorf("#GetNodebIdListRequestHandler.Handle - Error fetching Nodeb Identity list from rNib: %v", err) + return nil, e2managererrors.NewRnibDbError() + } + + return models.NewGetNodebIdListResponse(nodebIdList), nil +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_id_list_request_handler_test.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_id_list_request_handler_test.go new file mode 100644 index 0000000..eb5bae3 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_id_list_request_handler_test.go @@ -0,0 +1,62 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "testing" +) + +func setupGetNodebIdListRequestHandlerTest(t *testing.T) (*GetNodebIdListRequestHandler, *mocks.RnibReaderMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) + handler := NewGetNodebIdListRequestHandler(log, rnibDataService) + return handler, readerMock +} + +func TestHandleGetNodebIdListSuccess(t *testing.T) { + handler, readerMock := setupGetNodebIdListRequestHandlerTest(t) + var rnibError error + readerMock.On("GetListNodebIds").Return([]*entities.NbIdentity{}, rnibError) + response, err := handler.Handle(nil) + assert.Nil(t, err) + assert.NotNil(t, response) + assert.IsType(t, &models.GetNodebIdListResponse{}, response) +} + +func TestHandleGetNodebIdListFailure(t *testing.T) { + handler, readerMock := setupGetNodebIdListRequestHandlerTest(t) + var nodebIdList []*entities.NbIdentity + readerMock.On("GetListNodebIds").Return(nodebIdList, common.NewInternalError(errors.New("#reader.GetListNodebIds - Internal Error"))) + response, err := handler.Handle(nil) + assert.NotNil(t, err) + assert.Nil(t, response) +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_request_handler.go new file mode 100644 index 0000000..1bbbd4c --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_request_handler.go @@ -0,0 +1,62 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" +) + +type GetNodebRequestHandler struct { + rNibDataService services.RNibDataService + logger *logger.Logger +} + +func NewGetNodebRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService) *GetNodebRequestHandler { + return &GetNodebRequestHandler{ + logger: logger, + rNibDataService: rNibDataService, + } +} + +func (handler *GetNodebRequestHandler) Handle(request models.Request) (models.IResponse, error) { + getNodebRequest := request.(models.GetNodebRequest) + ranName:= getNodebRequest.RanName + nodeb, err := handler.rNibDataService.GetNodeb(ranName) + + if err != nil { + handler.logger.Errorf("#GetNodebRequestHandler.Handle - RAN name: %s - Error fetching RAN from rNib: %v", ranName, err) + return nil, rnibErrorToE2ManagerError(err) + } + + return models.NewGetNodebResponse(nodeb), nil +} + +func rnibErrorToE2ManagerError(err error) error { + _, ok := err.(*common.ResourceNotFoundError) + if ok { + return e2managererrors.NewResourceNotFoundError() + } + return e2managererrors.NewRnibDbError() +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_request_handler_test.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_request_handler_test.go new file mode 100644 index 0000000..0177561 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/get_nodeb_request_handler_test.go @@ -0,0 +1,64 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "testing" +) + +func setupGetNodebRequestHandlerTest(t *testing.T) (*GetNodebRequestHandler, *mocks.RnibReaderMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) + handler := NewGetNodebRequestHandler(log, rnibDataService) + return handler, readerMock +} + +func TestHandleGetNodebSuccess(t *testing.T) { + handler, readerMock := setupGetNodebRequestHandlerTest(t) + + ranName := "test1" + var rnibError error + readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{RanName:ranName}, rnibError) + response, err := handler.Handle(models.GetNodebRequest{RanName: ranName}) + assert.Nil(t, err) + assert.NotNil(t, response) + assert.IsType(t, &models.GetNodebResponse{}, response) +} + +func TestHandleGetNodebFailure(t *testing.T) { + handler, readerMock := setupGetNodebRequestHandlerTest(t) + ranName := "test1" + var nodebInfo *entities.NodebInfo + readerMock.On("GetNodeb", ranName).Return(nodebInfo, common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error"))) + response, err := handler.Handle(models.GetNodebRequest{RanName: ranName}) + assert.NotNil(t, err) + assert.Nil(t, response) +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/request_handler.go new file mode 100644 index 0000000..e37adb7 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/request_handler.go @@ -0,0 +1,28 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "e2mgr/models" +) + +type RequestHandler interface { + Handle(request models.Request) (models.IResponse, error) +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/setup_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/setup_request_handler.go new file mode 100644 index 0000000..dae75a9 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/setup_request_handler.go @@ -0,0 +1,221 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/go-ozzo/ozzo-validation" + "github.com/go-ozzo/ozzo-validation/is" +) + +const ( + X2SetupActivityName = "X2_SETUP" + EndcSetupActivityName = "ENDC_SETUP" +) + +type SetupRequestHandler struct { + rNibDataService services.RNibDataService + logger *logger.Logger + ranSetupManager managers.IRanSetupManager + protocol entities.E2ApplicationProtocol + e2tAssociationManager *managers.E2TAssociationManager + e2tInstancesManager managers.IE2TInstancesManager +} + +func NewSetupRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService, + ranSetupManager managers.IRanSetupManager, protocol entities.E2ApplicationProtocol, e2tInstancesManager managers.IE2TInstancesManager, e2tAssociationManager *managers.E2TAssociationManager) *SetupRequestHandler { + return &SetupRequestHandler{ + logger: logger, + rNibDataService: rNibDataService, + ranSetupManager: ranSetupManager, + protocol: protocol, + e2tAssociationManager: e2tAssociationManager, + e2tInstancesManager: e2tInstancesManager, + } +} + +func (h *SetupRequestHandler) Handle(request models.Request) (models.IResponse, error) { + + setupRequest := request.(models.SetupRequest) + + err := h.validateRequestDetails(setupRequest) + if err != nil { + return nil, err + } + + nodebInfo, err := h.rNibDataService.GetNodeb(setupRequest.RanName) + + if err != nil { + _, ok := err.(*common.ResourceNotFoundError) + if !ok { + h.logger.Errorf("#SetupRequestHandler.Handle - failed to get nodeB entity for ran name: %v from RNIB. Error: %s", setupRequest.RanName, err) + return nil, e2managererrors.NewRnibDbError() + } + + result := h.connectNewRan(&setupRequest, h.protocol) + return nil, result + } + + if nodebInfo.ConnectionStatus == entities.ConnectionStatus_SHUTTING_DOWN { + h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN: %s in wrong state (%s)", nodebInfo.RanName, entities.ConnectionStatus_name[int32(nodebInfo.ConnectionStatus)]) + result := e2managererrors.NewWrongStateError(h.getActivityName(h.protocol), entities.ConnectionStatus_name[int32(nodebInfo.ConnectionStatus)]) + return nil, result + } + + if len(nodebInfo.AssociatedE2TInstanceAddress) != 0 { + result := h.connectExistingRanWithAssociatedE2TAddress(nodebInfo) + return nil, result + } + + result := h.connectExistingRanWithoutAssociatedE2TAddress(nodebInfo) + return nil, result +} + +func createInitialNodeInfo(requestDetails *models.SetupRequest, protocol entities.E2ApplicationProtocol) (*entities.NodebInfo, *entities.NbIdentity) { + + nodebInfo := &entities.NodebInfo{ + Ip: requestDetails.RanIp, + Port: uint32(requestDetails.RanPort), + ConnectionStatus: entities.ConnectionStatus_CONNECTING, + E2ApplicationProtocol: protocol, + RanName: requestDetails.RanName, + } + + nbIdentity := &entities.NbIdentity{ + InventoryName: requestDetails.RanName, + } + + return nodebInfo, nbIdentity +} + +func (h *SetupRequestHandler) connectExistingRanWithoutAssociatedE2TAddress(nodebInfo *entities.NodebInfo) error { + e2tAddress, err := h.e2tInstancesManager.SelectE2TInstance() + + if err != nil { + h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed selecting E2T instance", nodebInfo.RanName) + + if nodebInfo.ConnectionStatus == entities.ConnectionStatus_DISCONNECTED{ + return err + } + + nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updateError := h.rNibDataService.UpdateNodebInfo(nodebInfo) + + if updateError != nil { + h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed updating nodeb. error: %s", nodebInfo.RanName, updateError) + } + + return err + } + + err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo) + + if err != nil { + h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - failed associating ran to e2t address %s. error: %s", nodebInfo.RanName, e2tAddress, err) + return err + } + + h.logger.Infof("#SetupRequestHandler.connectExistingRanWithoutAssociatedE2TAddress - RAN name: %s - successfully updated nodeb in rNib", nodebInfo.RanName) + + result := h.ranSetupManager.ExecuteSetup(nodebInfo, entities.ConnectionStatus_CONNECTING) + return result +} + +func (h *SetupRequestHandler) connectExistingRanWithAssociatedE2TAddress(nodebInfo *entities.NodebInfo) error { + status := entities.ConnectionStatus_CONNECTING + if nodebInfo.ConnectionStatus == entities.ConnectionStatus_CONNECTED { + status = nodebInfo.ConnectionStatus + } + err := h.rNibDataService.UpdateNodebInfo(nodebInfo) + + if err != nil { + h.logger.Errorf("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - failed resetting connection attempts of RAN. error: %s", nodebInfo.RanName, err) + return e2managererrors.NewRnibDbError() + } + + h.logger.Infof("#SetupRequestHandler.connectExistingRanWithAssociatedE2TAddress - RAN name: %s - successfully reset connection attempts of RAN", nodebInfo.RanName) + + result := h.ranSetupManager.ExecuteSetup(nodebInfo, status) + return result +} + +func (h *SetupRequestHandler) connectNewRan(request *models.SetupRequest, protocol entities.E2ApplicationProtocol) error { + + e2tAddress, err := h.e2tInstancesManager.SelectE2TInstance() + + if err != nil { + h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed selecting E2T instance", request.RanName) + return err + } + + nodebInfo, nodebIdentity := createInitialNodeInfo(request, protocol) + + err = h.rNibDataService.SaveNodeb(nodebIdentity, nodebInfo) + + if err != nil { + h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed to save initial nodeb entity in RNIB. error: %s", request.RanName, err) + return e2managererrors.NewRnibDbError() + } + + h.logger.Infof("#SetupRequestHandler.connectNewRan - RAN name: %s - initial nodeb entity was saved to rNib", request.RanName) + + err = h.e2tAssociationManager.AssociateRan(e2tAddress, nodebInfo) + + if err != nil { + h.logger.Errorf("#SetupRequestHandler.connectNewRan - RAN name: %s - failed associating ran to e2t address %s. error: %s", request.RanName, e2tAddress, err) + return err + } + + result := h.ranSetupManager.ExecuteSetup(nodebInfo, entities.ConnectionStatus_CONNECTING) + + return result +} + +func (handler *SetupRequestHandler) validateRequestDetails(request models.SetupRequest) error { + + if request.RanPort == 0 { + handler.logger.Errorf("#SetupRequestHandler.validateRequestDetails - validation failure: port cannot be zero") + return e2managererrors.NewRequestValidationError() + } + err := validation.ValidateStruct(&request, + validation.Field(&request.RanIp, validation.Required, is.IP), + validation.Field(&request.RanName, validation.Required), + ) + + if err != nil { + handler.logger.Errorf("#SetupRequestHandler.validateRequestDetails - validation failure, error: %v", err) + return e2managererrors.NewRequestValidationError() + } + + return nil +} + +func (handler *SetupRequestHandler) getActivityName(protocol entities.E2ApplicationProtocol) string { + if protocol == entities.E2ApplicationProtocol_X2_SETUP_REQUEST { + return X2SetupActivityName + } + return EndcSetupActivityName +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go new file mode 100644 index 0000000..9b9880d --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/setup_request_handler_test.go @@ -0,0 +1,462 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/e2pdus" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "encoding/json" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "io/ioutil" + "net/http" + "testing" +) + +const E2TAddress = "10.0.2.15:8989" +const RanName = "test" +const BaseRMUrl = "http://10.10.2.15:12020/routingmanager" + +func initSetupRequestTest(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.E2TInstancesManagerMock, *mocks.RanSetupManagerMock, *mocks.HttpClientMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + config.RoutingManager.BaseUrl = BaseRMUrl + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + + ranSetupManagerMock := &mocks.RanSetupManagerMock{} + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} + httpClientMock := &mocks.HttpClientMock{} + mockHttpClientAssociateRan(httpClientMock) + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManagerMock, rmClient) + handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManagerMock, protocol, e2tInstancesManagerMock, e2tAssociationManager) + + return readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, httpClientMock +} + +func initSetupRequestTestBasicMocks(t *testing.T, protocol entities.E2ApplicationProtocol) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *SetupRequestHandler, *mocks.RmrMessengerMock, *mocks.HttpClientMock, *mocks.E2TInstancesManagerMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + config.RoutingManager.BaseUrl = BaseRMUrl + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := getRmrSender(rmrMessengerMock, log) + ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService) + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManagerMock, rmClient) + handler := NewSetupRequestHandler(log, rnibDataService, ranSetupManager, protocol, e2tInstancesManagerMock, e2tAssociationManager) + + return readerMock, writerMock, handler, rmrMessengerMock, httpClientMock, e2tInstancesManagerMock +} + +func mockHttpClientAssociateRan(httpClientMock *mocks.HttpClientMock) { + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + url := BaseRMUrl + clients.AssociateRanToE2TInstanceApiSuffix + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Post", url, "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) +} + +func TestX2SetupHandleNoPortError(t *testing.T) { + readerMock, _, handler, _, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + + sr := models.SetupRequest{"127.0.0.1", 0, RanName,} + _, err := handler.Handle(sr) + assert.IsType(t, &e2managererrors.RequestValidationError{}, err) + readerMock.AssertNotCalled(t, "GetNodeb") +} + +func TestX2SetupHandleNoRanNameError(t *testing.T) { + readerMock, _, handler, _, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + + sr := models.SetupRequest{RanPort: 8080, RanIp: "127.0.0.1"} + _, err := handler.Handle(sr) + assert.IsType(t, &e2managererrors.RequestValidationError{}, err) + readerMock.AssertNotCalled(t, "GetNodeb") +} + +func TestX2SetupHandleNoIpError(t *testing.T) { + readerMock, _, handler, _, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + + sr := models.SetupRequest{RanPort: 8080, RanName: RanName} + _, err := handler.Handle(sr) + assert.IsType(t, &e2managererrors.RequestValidationError{}, err) + readerMock.AssertNotCalled(t, "GetNodeb") +} + +func TestX2SetupHandleInvalidIpError(t *testing.T) { + readerMock, _, handler, _, _, _:= initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + + sr := models.SetupRequest{RanPort: 8080, RanName: RanName, RanIp: "invalid ip"} + _, err := handler.Handle(sr) + assert.IsType(t, &e2managererrors.RequestValidationError{}, err) + readerMock.AssertNotCalled(t, "GetNodeb") +} + +func TestSetupGetNodebFailure(t *testing.T) { + readerMock, _, handler, _, _, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + + rnibErr := &common.ValidationError{} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + + sr := models.SetupRequest{"127.0.0.1", 8080, RanName,} + _, err := handler.Handle(sr) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) +} + +func TestSetupNewRanSelectE2TInstancesDbError(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError()) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance") + writerMock.AssertNotCalled(t, "SaveNodeb") + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestSetupNewRanSelectE2TInstancesNoInstances(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + nodebInfo, _ := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + e2tInstancesManagerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) +} + +func TestSetupNewRanAssociateRanFailure(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, httpClientMock := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(e2managererrors.NewRnibDbError()) + setupRequest := &models.SetupRequest{"127.0.0.1", 8080, RanName,} + nb, nbIdentity := createInitialNodeInfo(setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("SaveNodeb", nbIdentity, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", nb).Return(nil) + nb.AssociatedE2TInstanceAddress = E2TAddress + mockHttpClientAssociateRan(httpClientMock) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + + _, err := handler.Handle(*setupRequest) + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + e2tInstancesManagerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestSetupNewRanSaveNodebFailure(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(common.NewInternalError(fmt.Errorf(""))) + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestSetupNewRanSetupDbError(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(e2managererrors.NewRnibDbError()) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + _, err := handler.Handle(setupRequest) + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + ranSetupManagerMock.AssertExpectations(t) +} + +func TestSetupNewRanSetupRmrError(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRmrError()) + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.RmrError{}, err) +} + +func TestSetupNewRanSetupSuccess(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("")) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + nodebInfo, nbIdentity := createInitialNodeInfo(&setupRequest, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) + updatedNb := *nodebInfo + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil) + _, err := handler.Handle(setupRequest) + assert.Nil(t, err) +} + +func TestX2SetupExistingRanShuttingDown(t *testing.T) { + readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock , _:= initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.WrongStateError{}, err) + e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance") + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestEndcSetupExistingRanShuttingDown(t *testing.T) { + readerMock, _, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST) + readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN}, nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.WrongStateError{}, err) + e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance") + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestSetupExistingRanWithoutAssocE2TInstanceSelectDbError(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewRnibDbError()) + updatedNb := *nb + updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceError(t *testing.T) { + readerMock, writerMock, handler, rmrMessengerMock, httpClientMock,e2tInstancesManagerMock:= initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + readerMock.On("GetE2TAddresses").Return([]string{}, nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + e2tInstancesManagerMock.On("AddRansToInstance", "10.0.2.15:8989", []string{"test"}).Return(nil) + mockHttpClientAssociateRan(httpClientMock) + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.InternalError{}, err) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") + writerMock.AssertExpectations(t) +} + +func TestSetupExistingRanWithoutAssocE2TInstanceSelectNoInstanceErrorUpdateFailure(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + e2tInstancesManagerMock.On("SelectE2TInstance").Return("", e2managererrors.NewE2TInstanceAbsenceError()) + updatedNb := *nb + updatedNb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf(""))) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err) + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestSetupExistingRanWithoutAssocE2TInstanceSelectErrorAlreadyDisconnected(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionStatus: entities.ConnectionStatus_DISCONNECTED} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, e2managererrors.NewE2TInstanceAbsenceError()) + setupRequest := models.SetupRequest{"127.0.0.1", 8080, RanName,} + _, err := handler.Handle(setupRequest) + assert.IsType(t, &e2managererrors.E2TInstanceAbsenceError{}, err) + writerMock.AssertNotCalled(t, "UpdateNodebInfo") + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +//func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanFailure(t *testing.T) { +// readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) +// nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} +// readerMock.On("GetNodeb", RanName).Return(nb, nil) +// e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) +// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(e2managererrors.NewRnibDbError()) +// writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) +// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) +// assert.IsType(t, &e2managererrors.RnibDbError{}, err) +// writerMock.AssertNotCalled(t, "UpdateNodebInfo") +// ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +//} + +//func TestSetupExistingRanWithoutAssocE2TInstanceAssociateRanSucceedsUpdateNodebFails(t *testing.T) { +// readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) +// nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} +// readerMock.On("GetNodeb", RanName).Return(nb, nil) +// e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) +// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) +// updatedNb := *nb +// updatedNb.AssociatedE2TInstanceAddress = E2TAddress +// writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf(""))) +// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) +// assert.IsType(t, /* &e2managererrors.RnibDbError{} */&common.InternalError{}, err) +// ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +//} + +//func TestSetupExistingRanWithoutAssocE2TInstanceExecuteSetupFailure(t *testing.T) { +// readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) +// nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} +// readerMock.On("GetNodeb", RanName).Return(nb, nil) +// e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) +// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) +// updatedNb := *nb +// updatedNb.AssociatedE2TInstanceAddress = E2TAddress +// writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) +// ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(e2managererrors.NewRnibDbError()) +// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) +// assert.IsType(t, &e2managererrors.RnibDbError{}, err) +//} +// +//func TestSetupExistingRanWithoutAssocE2TInstanceSuccess(t *testing.T) { +// readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) +// nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} +// readerMock.On("GetNodeb", RanName).Return(nb, nil) +// e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) +// e2tInstancesManagerMock.On("AddRansToInstance", E2TAddress, []string{RanName}).Return(nil) +// updatedNb := *nb +// updatedNb.AssociatedE2TInstanceAddress = E2TAddress +// writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) +// ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTING).Return(nil) +// _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) +// assert.Nil(t, err) +//} + +func TestSetupExistingRanWithAssocE2TInstanceUpdateNodebFailure(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + writerMock.On("UpdateNodebInfo", &updatedNb).Return(common.NewInternalError(fmt.Errorf(""))) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance") + ranSetupManagerMock.AssertNotCalled(t, "ExecuteSetup") +} + +func TestSetupExistingRanWithAssocE2TInstanceExecuteSetupRmrError(t *testing.T) { + readerMock, writerMock, handler, rmrMessengerMock, _, _ := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + updatedNb3 := updatedNb + updatedNb3.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + payload := e2pdus.PackedX2setupRequest + xaction := []byte(RanName) + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), RanName, &payload, &xaction, nil) + rmrMessengerMock.On("SendMsg",mock.Anything, true).Return(msg, e2managererrors.NewRmrError()) + writerMock.On("UpdateNodebInfo", &updatedNb3).Return(nil) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.IsType(t, &e2managererrors.RmrError{}, err) + writerMock.AssertExpectations(t) +} + +func TestSetupExistingRanWithAssocE2TInstanceConnectedSuccess(t *testing.T) { + readerMock, writerMock, handler, e2tInstancesManagerMock, ranSetupManagerMock, _ := initSetupRequestTest(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress, ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + ranSetupManagerMock.On("ExecuteSetup", &updatedNb, entities.ConnectionStatus_CONNECTED).Return(nil) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.Nil(t, err) + e2tInstancesManagerMock.AssertNotCalled(t, "SelectE2TInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance") +} + +func TestSetupExistingRanWithoutAssocE2TInstanceExecuteRoutingManagerError(t *testing.T) { + readerMock, writerMock, handler, rmrMessengerMock, httpClientMock, e2tInstancesManagerMock := initSetupRequestTestBasicMocks(t, entities.E2ApplicationProtocol_X2_SETUP_REQUEST) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: "", ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + writerMock.On("UpdateNodebInfo", nb).Return(nil) + e2tInstancesManagerMock.On("SelectE2TInstance").Return(E2TAddress, nil) + mockHttpClientAssociateRan(httpClientMock) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + msg := &rmrCgo.MBuf{} + var errNIl error + rmrMessengerMock.On("SendMsg",mock.Anything, true).Return(msg, errNIl) + _, err := handler.Handle(models.SetupRequest{"127.0.0.1", 8080, RanName,}) + assert.Nil(t, err) + writerMock.AssertExpectations(t) + readerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go new file mode 100644 index 0000000..5d9d2b2 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/update_gnb_request_handler.go @@ -0,0 +1,233 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" +) + +const VALIDATION_FAILURE_MESSAGE = "#UpdateGnbRequestHandler.Handle - validation failure: %s is a mandatory field" + +type UpdateGnbRequestHandler struct { + logger *logger.Logger + rNibDataService services.RNibDataService +} + +func NewUpdateGnbRequestHandler(logger *logger.Logger, rNibDataService services.RNibDataService) *UpdateGnbRequestHandler { + return &UpdateGnbRequestHandler{ + logger: logger, + rNibDataService: rNibDataService, + } +} + +func (h *UpdateGnbRequestHandler) Handle(request models.Request) (models.IResponse, error) { + + updateGnbRequest := request.(models.UpdateGnbRequest) + + h.logger.Infof("#UpdateGnbRequestHandler.Handle - Ran name: %s", updateGnbRequest.RanName) + + err := h.validateRequestBody(updateGnbRequest) + + if err != nil { + return nil, err + } + + nodebInfo, err := h.rNibDataService.GetNodeb(updateGnbRequest.RanName) + + if err != nil { + _, ok := err.(*common.ResourceNotFoundError) + if !ok { + h.logger.Errorf("#UpdateGnbRequestHandler.Handle - RAN name: %s - failed to get nodeb entity from RNIB. Error: %s", updateGnbRequest.RanName, err) + return nil, e2managererrors.NewRnibDbError() + } + + h.logger.Errorf("#UpdateGnbRequestHandler.Handle - RAN name: %s - RAN not found on RNIB. Error: %s", updateGnbRequest.RanName, err) + return nil, e2managererrors.NewResourceNotFoundError() + } + + err = h.updateGnbCells(nodebInfo, updateGnbRequest) + + if err != nil { + return nil, err + } + + return models.NewUpdateGnbResponse(nodebInfo), nil +} + +func (h *UpdateGnbRequestHandler) updateGnbCells(nodebInfo *entities.NodebInfo, updateGnbRequest models.UpdateGnbRequest) error { + + ranName := nodebInfo.RanName + gnb := nodebInfo.GetGnb() + + if gnb == nil { + h.logger.Errorf("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - nodeb missing gnb configuration", ranName) + return e2managererrors.NewInternalError() + } + + if len(gnb.ServedNrCells) != 0 { + err := h.rNibDataService.RemoveServedNrCells(ranName, gnb.ServedNrCells) + + if err != nil { + h.logger.Errorf("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - Failed removing served nr cells", ranName) + return e2managererrors.NewRnibDbError() + } + } + + gnb.ServedNrCells = updateGnbRequest.ServedNrCells + + err := h.rNibDataService.UpdateGnbCells(nodebInfo, updateGnbRequest.ServedNrCells) + + if err != nil { + h.logger.Errorf("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - Failed updating GNB cells. Error: %s", ranName, err) + return e2managererrors.NewRnibDbError() + } + + h.logger.Infof("#UpdateGnbRequestHandler.updateGnbCells - RAN name: %s - Successfully updated GNB cells", ranName) + return nil +} + +func (h *UpdateGnbRequestHandler) validateRequestBody(updateGnbRequest models.UpdateGnbRequest) error { + + if len(updateGnbRequest.ServedNrCells) == 0 { + h.logger.Errorf(VALIDATION_FAILURE_MESSAGE+" and cannot be empty", "servedCells") + return e2managererrors.NewRequestValidationError() + } + + for _, servedNrCell := range updateGnbRequest.ServedNrCells { + if servedNrCell.ServedNrCellInformation == nil { + h.logger.Errorf(VALIDATION_FAILURE_MESSAGE+" and cannot be empty", "servedNrCellInformation") + return e2managererrors.NewRequestValidationError() + } + + err := isServedNrCellInformationValid(servedNrCell.ServedNrCellInformation) + + if err != nil { + h.logger.Errorf(VALIDATION_FAILURE_MESSAGE, err) + return e2managererrors.NewRequestValidationError() + } + + if len(servedNrCell.NrNeighbourInfos) == 0 { + continue + } + + for _, nrNeighbourInformation := range servedNrCell.NrNeighbourInfos { + + err := isNrNeighbourInformationValid(nrNeighbourInformation) + + if err != nil { + h.logger.Errorf(VALIDATION_FAILURE_MESSAGE, err) + return e2managererrors.NewRequestValidationError() + } + + } + } + + return nil +} + +func isServedNrCellInformationValid(servedNrCellInformation *entities.ServedNRCellInformation) error { + if servedNrCellInformation.CellId == "" { + return errors.New("cellId") + } + + if servedNrCellInformation.ChoiceNrMode == nil { + return errors.New("choiceNrMode") + } + + if servedNrCellInformation.NrMode == entities.Nr_UNKNOWN { + return errors.New("nrMode") + } + + if servedNrCellInformation.NrPci == 0 { + return errors.New("nrPci") + } + + if len(servedNrCellInformation.ServedPlmns) == 0 { + return errors.New("servedPlmns") + } + + return isServedNrCellInfoChoiceNrModeValid(servedNrCellInformation.ChoiceNrMode) +} + +func isServedNrCellInfoChoiceNrModeValid(choiceNrMode *entities.ServedNRCellInformation_ChoiceNRMode) error { + if choiceNrMode.Fdd != nil { + return isServedNrCellInfoFddValid(choiceNrMode.Fdd) + } + + if choiceNrMode.Tdd != nil { + return isServedNrCellInfoTddValid(choiceNrMode.Tdd) + } + + return errors.New("served nr cell fdd / tdd") +} + +func isServedNrCellInfoTddValid(tdd *entities.ServedNRCellInformation_ChoiceNRMode_TddInfo) error { + return nil +} + +func isServedNrCellInfoFddValid(fdd *entities.ServedNRCellInformation_ChoiceNRMode_FddInfo) error { + return nil +} + +func isNrNeighbourInformationValid(nrNeighbourInformation *entities.NrNeighbourInformation) error { + if nrNeighbourInformation.NrCgi == "" { + return errors.New("nrCgi") + } + + if nrNeighbourInformation.ChoiceNrMode == nil { + return errors.New("choiceNrMode") + } + + if nrNeighbourInformation.NrMode == entities.Nr_UNKNOWN { + return errors.New("nrMode") + } + + if nrNeighbourInformation.NrPci == 0 { + return errors.New("nrPci") + } + + return isNrNeighbourInfoChoiceNrModeValid(nrNeighbourInformation.ChoiceNrMode) +} + +func isNrNeighbourInfoChoiceNrModeValid(choiceNrMode *entities.NrNeighbourInformation_ChoiceNRMode) error { + if choiceNrMode.Fdd != nil { + return isNrNeighbourInfoFddValid(choiceNrMode.Fdd) + } + + if choiceNrMode.Tdd != nil { + return isNrNeighbourInfoTddValid(choiceNrMode.Tdd) + } + + return errors.New("nr neighbour fdd / tdd") +} + +func isNrNeighbourInfoTddValid(tdd *entities.NrNeighbourInformation_ChoiceNRMode_TddInfo) error { + return nil +} + +func isNrNeighbourInfoFddValid(fdd *entities.NrNeighbourInformation_ChoiceNRMode_FddInfo) error { + return nil +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/x2_reset_request_handler.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/x2_reset_request_handler.go new file mode 100644 index 0000000..c8fd494 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/x2_reset_request_handler.go @@ -0,0 +1,99 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlers + +import ( + "e2mgr/e2managererrors" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +const ( + X2_RESET_ACTIVITY_NAME = "X2_RESET" +) + +type X2ResetRequestHandler struct { + rNibDataService services.RNibDataService + rmrSender *rmrsender.RmrSender + logger *logger.Logger +} + +func NewX2ResetRequestHandler(logger *logger.Logger, rmrSender *rmrsender.RmrSender, rNibDataService services.RNibDataService) *X2ResetRequestHandler { + return &X2ResetRequestHandler{ + rNibDataService: rNibDataService, + rmrSender: rmrSender, + logger: logger, + } +} + +func (handler *X2ResetRequestHandler) Handle(request models.Request) (models.IResponse, error) { + + resetRequest := request.(models.ResetRequest) + handler.logger.Infof("#X2ResetRequestHandler.Handle - Ran name: %s", resetRequest.RanName) + + if len(resetRequest.Cause) == 0 { + resetRequest.Cause = e2pdus.OmInterventionCause + } + + payload, ok := e2pdus.KnownCausesToX2ResetPDU(resetRequest.Cause) + + if !ok { + handler.logger.Errorf("#X2ResetRequestHandler.Handle - Unknown cause (%s)", resetRequest.Cause) + return nil, e2managererrors.NewRequestValidationError() + } + + nodeb, err := handler.rNibDataService.GetNodeb(resetRequest.RanName) + if err != nil { + handler.logger.Errorf("#X2ResetRequestHandler.Handle - failed to get status of RAN: %s from RNIB. Error: %s", resetRequest.RanName, err.Error()) + _, ok := err.(*common.ResourceNotFoundError) + if ok { + return nil, e2managererrors.NewResourceNotFoundError() + } + return nil, e2managererrors.NewRnibDbError() + } + + if nodeb.ConnectionStatus != entities.ConnectionStatus_CONNECTED { + handler.logger.Errorf("#X2ResetRequestHandler.Handle - RAN: %s in wrong state (%s)", resetRequest.RanName, entities.ConnectionStatus_name[int32(nodeb.ConnectionStatus)]) + return nil, e2managererrors.NewWrongStateError(X2_RESET_ACTIVITY_NAME, entities.ConnectionStatus_name[int32(nodeb.ConnectionStatus)]) + } + + var xAction []byte + var msgSrc unsafe.Pointer + msg := models.NewRmrMessage(rmrCgo.RIC_X2_RESET, resetRequest.RanName, payload, xAction, msgSrc) + + err = handler.rmrSender.Send(msg) + + if err != nil { + handler.logger.Errorf("#X2ResetRequestHandler.Handle - failed to send reset message to RMR: %s", err) + return nil, e2managererrors.NewRmrError() + } + + handler.logger.Infof("#X2ResetRequestHandler.Handle - sent x2 reset to RAN: %s with cause: %s", resetRequest.RanName, resetRequest.Cause) + + return nil, nil +} diff --git a/setup/e2mgr/E2Manager/handlers/httpmsghandlers/x2_reset_request_handler_test.go b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/x2_reset_request_handler_test.go new file mode 100644 index 0000000..e8cdc4e --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/httpmsghandlers/x2_reset_request_handler_test.go @@ -0,0 +1,154 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "testing" + "unsafe" +) + +func setupX2ResetRequestHandlerTest(t *testing.T) (*X2ResetRequestHandler, *mocks.RmrMessengerMock, *mocks.RnibReaderMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := getRmrSender(rmrMessengerMock, log) + handler := NewX2ResetRequestHandler(log, rmrSender, rnibDataService) + + return handler, rmrMessengerMock, readerMock +} +func TestHandleSuccessfulDefaultCause(t *testing.T) { + handler, rmrMessengerMock, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + // o&m intervention + payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64} + var xAction[]byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction, msgSrc) + + rmrMessengerMock.On("SendMsg", msg, true).Return(msg, nil) + + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName}) + + assert.Nil(t, actual) +} + +func TestHandleSuccessfulRequestedCause(t *testing.T) { + handler, rmrMessengerMock, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x40} + var xAction[]byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", msg, true).Return(msg, nil) + + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName, Cause: "protocol:transfer-syntax-error"}) + + assert.Nil(t, actual) +} + +func TestHandleFailureUnknownCause(t *testing.T) { + handler, _, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName, Cause: "XXX"}) + + assert.IsType(t, e2managererrors.NewRequestValidationError(), actual) + +} + +func TestHandleFailureWrongState(t *testing.T) { + handler, _, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName}) + + assert.IsType(t, e2managererrors.NewWrongStateError(X2_RESET_ACTIVITY_NAME, entities.ConnectionStatus_name[int32(nodeb.ConnectionStatus)]), actual) +} + +func TestHandleFailureRanNotFound(t *testing.T) { + handler, _, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + + readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{}, common.NewResourceNotFoundError("nodeb not found")) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName}) + + assert.IsType(t, e2managererrors.NewResourceNotFoundError(), actual) +} + +func TestHandleFailureRnibError(t *testing.T) { + handler, _, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + + readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{}, common.NewInternalError(fmt.Errorf("internal error"))) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName}) + + assert.IsType(t, e2managererrors.NewRnibDbError(), actual) +} + +func TestHandleFailureRmrError(t *testing.T) { + handler, rmrMessengerMock, readerMock := setupX2ResetRequestHandlerTest(t) + + ranName := "test1" + // o&m intervention + payload := []byte{0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x05, 0x40, 0x01, 0x64} + var xAction[]byte + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", msg, true).Return(&rmrCgo.MBuf{}, fmt.Errorf("rmr error")) + + var nodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED} + readerMock.On("GetNodeb", ranName).Return(nodeb, nil) + + _, actual := handler.Handle(models.ResetRequest{RanName: ranName}) + + assert.IsType(t, e2managererrors.NewRmrError(), actual) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go new file mode 100644 index 0000000..7cd5458 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler.go @@ -0,0 +1,273 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "bytes" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "encoding/xml" + "errors" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "strconv" + "strings" +) + +type E2SetupRequestNotificationHandler struct { + logger *logger.Logger + config *configuration.Configuration + e2tInstancesManager managers.IE2TInstancesManager + rmrSender *rmrsender.RmrSender + rNibDataService services.RNibDataService + e2tAssociationManager *managers.E2TAssociationManager +} + +func NewE2SetupRequestNotificationHandler(logger *logger.Logger, config *configuration.Configuration, e2tInstancesManager managers.IE2TInstancesManager, rmrSender *rmrsender.RmrSender, rNibDataService services.RNibDataService, e2tAssociationManager *managers.E2TAssociationManager) E2SetupRequestNotificationHandler { + return E2SetupRequestNotificationHandler{ + logger: logger, + config: config, + e2tInstancesManager: e2tInstancesManager, + rmrSender: rmrSender, + rNibDataService: rNibDataService, + e2tAssociationManager: e2tAssociationManager, + } +} + +func (h E2SetupRequestNotificationHandler) Handle(request *models.NotificationRequest) { + ranName := request.RanName + h.logger.Infof("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - received E2_SETUP_REQUEST. Payload: %x", ranName, request.Payload) + + setupRequest, e2tIpAddress, err := h.parseSetupRequest(request.Payload) + if err != nil { + h.logger.Errorf(err.Error()) + return + } + + h.logger.Infof("#E2SetupRequestNotificationHandler.Handle - E2T Address: %s - handling E2_SETUP_REQUEST", e2tIpAddress) + h.logger.Debugf("#E2SetupRequestNotificationHandler.Handle - E2_SETUP_REQUEST has been parsed successfully %+v", setupRequest) + + _, err = h.e2tInstancesManager.GetE2TInstance(e2tIpAddress) + + if err != nil { + h.logger.Errorf("#E2TermInitNotificationHandler.Handle - Failed retrieving E2TInstance. error: %s", err) + return + } + + nodebInfo, err := h.rNibDataService.GetNodeb(ranName) + + if err != nil { + + if _, ok := err.(*common.ResourceNotFoundError); !ok { + h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - failed to retrieve nodebInfo entity. Error: %s", ranName, err) + return + + } + + if nodebInfo, err = h.handleNewRan(ranName, e2tIpAddress, setupRequest); err != nil { + return + } + + } else { + if err = h.handleExistingRan(ranName, nodebInfo, setupRequest); err != nil { + return + } + } + + err = h.e2tAssociationManager.AssociateRan(e2tIpAddress, nodebInfo) + + if err != nil { + + h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s - failed to associate E2T to nodeB entity. Error: %s", ranName, err) + if _, ok := err.(*e2managererrors.RoutingManagerError); ok { + h.handleUnsuccessfulResponse(nodebInfo, request) + } + return + } + + h.handleSuccessfulResponse(ranName, request, setupRequest) +} + +func (h E2SetupRequestNotificationHandler) handleNewRan(ranName string, e2tIpAddress string, setupRequest *models.E2SetupRequestMessage) (*entities.NodebInfo, error) { + + nodebInfo, err := h.buildNodebInfo(ranName, e2tIpAddress, setupRequest) + + if err != nil { + h.logger.Errorf("#E2SetupRequestNotificationHandler.handleNewRan - RAN name: %s - failed to build nodebInfo entity. Error: %s", ranName, err) + return nil, err + } + + nbIdentity := h.buildNbIdentity(ranName, setupRequest) + err = h.rNibDataService.SaveNodeb(nbIdentity, nodebInfo) + + if err != nil { + h.logger.Errorf("#E2SetupRequestNotificationHandler.handleNewRan - RAN name: %s - failed to save nodebInfo entity. Error: %s", ranName, err) + return nil, err + } + + return nodebInfo, nil +} + +func (h E2SetupRequestNotificationHandler) setGnbFunctions(nodebInfo *entities.NodebInfo, setupRequest *models.E2SetupRequestMessage) error { + ranFunctions, err := setupRequest.ExtractRanFunctionsList() + + if err != nil { + h.logger.Errorf("#E2SetupRequestNotificationHandler.setGnbFunctions - RAN name: %s - failed to update nodebInfo entity. Error: %s", nodebInfo.GetRanName(), err) + return err + } + + if ranFunctions != nil { + nodebInfo.GetGnb().RanFunctions = ranFunctions + } + + return nil +} + +func (h E2SetupRequestNotificationHandler) handleExistingRan(ranName string, nodebInfo *entities.NodebInfo, setupRequest *models.E2SetupRequestMessage) error { + if nodebInfo.GetConnectionStatus() == entities.ConnectionStatus_SHUTTING_DOWN { + h.logger.Errorf("#E2SetupRequestNotificationHandler.Handle - RAN name: %s, connection status: %s - nodeB entity in incorrect state", ranName, nodebInfo.ConnectionStatus) + return errors.New("nodeB entity in incorrect state") + } + + err := h.setGnbFunctions(nodebInfo, setupRequest) + return err +} + +func (h E2SetupRequestNotificationHandler) handleUnsuccessfulResponse(nodebInfo *entities.NodebInfo, req *models.NotificationRequest) { + failureResponse := models.NewE2SetupFailureResponseMessage(models.TimeToWaitEnum.V60s) + h.logger.Debugf("#E2SetupRequestNotificationHandler.handleUnsuccessfulResponse - E2_SETUP_RESPONSE has been built successfully %+v", failureResponse) + + responsePayload, err := xml.Marshal(&failureResponse.E2APPDU) + if err != nil { + h.logger.Warnf("#E2SetupRequestNotificationHandler.handleUnsuccessfulResponse - RAN name: %s - Error marshalling RIC_E2_SETUP_RESP. Payload: %s", nodebInfo.RanName, responsePayload) + } + + responsePayload = replaceEmptyTagsWithSelfClosing(responsePayload) + + msg := models.NewRmrMessage(rmrCgo.RIC_E2_SETUP_FAILURE, nodebInfo.RanName, responsePayload, req.TransactionId, req.GetMsgSrc()) + h.logger.Infof("#E2SetupRequestNotificationHandler.handleUnsuccessfulResponse - RAN name: %s - RIC_E2_SETUP_RESP message has been built successfully. Message: %x", nodebInfo.RanName, msg) + _ = h.rmrSender.WhSend(msg) + +} + +func (h E2SetupRequestNotificationHandler) handleSuccessfulResponse(ranName string, req *models.NotificationRequest, setupRequest *models.E2SetupRequestMessage) { + + ricNearRtId, err := convertTo20BitString(h.config.GlobalRicId.RicNearRtId) + if err != nil { + h.logger.Errorf("#E2SetupRequestNotificationHandler.handleSuccessfulResponse - RAN name: %s - failed to convert RicNearRtId value %s to 20 bit string . Error: %s", ranName, h.config.GlobalRicId.RicNearRtId, err) + return + } + successResponse := models.NewE2SetupSuccessResponseMessage(h.config.GlobalRicId.PlmnId, ricNearRtId, setupRequest) + h.logger.Debugf("#E2SetupRequestNotificationHandler.handleSuccessfulResponse - E2_SETUP_RESPONSE has been built successfully %+v", successResponse) + + responsePayload, err := xml.Marshal(&successResponse.E2APPDU) + if err != nil { + h.logger.Warnf("#E2SetupRequestNotificationHandler.handleSuccessfulResponse - RAN name: %s - Error marshalling RIC_E2_SETUP_RESP. Payload: %s", ranName, responsePayload) + } + + responsePayload = replaceEmptyTagsWithSelfClosing(responsePayload) + + msg := models.NewRmrMessage(rmrCgo.RIC_E2_SETUP_RESP, ranName, responsePayload, req.TransactionId, req.GetMsgSrc()) + h.logger.Infof("#E2SetupRequestNotificationHandler.handleSuccessfulResponse - RAN name: %s - RIC_E2_SETUP_RESP message has been built successfully. Message: %x", ranName, msg) + _ = h.rmrSender.Send(msg) +} + +func replaceEmptyTagsWithSelfClosing(responsePayload []byte) []byte { + responseString := strings.NewReplacer( + "", "", + "", "", + "", "", + "", "", + "", "", + "", "", + "", "", + "", "", + "", "", + ).Replace(string(responsePayload)) + return []byte(responseString) +} + +func convertTo20BitString(ricNearRtId string) (string, error) { + r, err := strconv.ParseUint(ricNearRtId, 16, 32) + if err != nil { + return "", err + } + return fmt.Sprintf("%020b", r)[:20], nil +} + +func (h E2SetupRequestNotificationHandler) parseSetupRequest(payload []byte) (*models.E2SetupRequestMessage, string, error) { + + pipInd := bytes.IndexByte(payload, '|') + if pipInd < 0 { + return nil, "", errors.New("#E2SetupRequestNotificationHandler.parseSetupRequest - Error parsing E2 Setup Request failed extract Payload: no | separator found") + } + + e2tIpAddress := string(payload[:pipInd]) + if len(e2tIpAddress) == 0 { + return nil, "", errors.New("#E2SetupRequestNotificationHandler.parseSetupRequest - Empty E2T Address received") + } + + h.logger.Infof("#E2SetupRequestNotificationHandler.parseSetupRequest - payload: %s", payload[pipInd+1:]) + + setupRequest := &models.E2SetupRequestMessage{} + err := xml.Unmarshal(payload[pipInd+1:], &setupRequest.E2APPDU) + if err != nil { + return nil, "", errors.New(fmt.Sprintf("#E2SetupRequestNotificationHandler.parseSetupRequest - Error unmarshalling E2 Setup Request payload: %x", payload)) + } + + return setupRequest, e2tIpAddress, nil +} + +func (h E2SetupRequestNotificationHandler) buildNodebInfo(ranName string, e2tAddress string, request *models.E2SetupRequestMessage) (*entities.NodebInfo, error) { + + var err error + nodebInfo := &entities.NodebInfo{ + AssociatedE2TInstanceAddress: e2tAddress, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + RanName: ranName, + NodeType: entities.Node_GNB, + Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}}, + GlobalNbId: h.buildGlobalNbId(request), + } + + err = h.setGnbFunctions(nodebInfo, request) + return nodebInfo, err +} + +func (h E2SetupRequestNotificationHandler) buildGlobalNbId(setupRequest *models.E2SetupRequestMessage) *entities.GlobalNbId { + return &entities.GlobalNbId{ + PlmnId: setupRequest.GetPlmnId(), + NbId: setupRequest.GetNbId(), + } +} + +func (h E2SetupRequestNotificationHandler) buildNbIdentity(ranName string, setupRequest *models.E2SetupRequestMessage) *entities.NbIdentity { + return &entities.NbIdentity{ + InventoryName: ranName, + GlobalNbId: h.buildGlobalNbId(setupRequest), + } +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go new file mode 100644 index 0000000..28dfe76 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_setup_request_notification_handler_test.go @@ -0,0 +1,417 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/tests" + "errors" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "io/ioutil" + "path/filepath" + "testing" +) + +const ( + prefix = "10.0.2.15:9999|" + e2tInstanceFullAddress = "10.0.2.15:9999" + nodebRanName = "gnb:310-410-b5c67788" + GnbSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb.xml" + GnbWithoutFunctionsSetupRequestXmlPath = "../../tests/resources/setupRequest_gnb_without_functions.xml" + EnGnbSetupRequestXmlPath = "../../tests/resources/setupRequest_en-gNB.xml" + NgEnbSetupRequestXmlPath = "../../tests/resources/setupRequest_ng-eNB.xml" + EnbSetupRequestXmlPath = "../../tests/resources/setupRequest_enb.xml" +) + +func readXmlFile(t *testing.T, xmlPath string) []byte { + path, err := filepath.Abs(xmlPath) + if err != nil { + t.Fatal(err) + } + xmlAsBytes, err := ioutil.ReadFile(path) + if err != nil { + t.Fatal(err) + } + + return xmlAsBytes +} + +func TestParseGnbSetupRequest_Success(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + handler, _, _, _, _, _ := initMocks(t) + prefBytes := []byte(prefix) + request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...)) + assert.Equal(t, "131014", request.GetPlmnId()) + assert.Equal(t, "10011001101010101011", request.GetNbId()) + assert.Nil(t, err) +} + +func TestParseEnGnbSetupRequest_Success(t *testing.T) { + enGnbXml := readXmlFile(t, EnGnbSetupRequestXmlPath) + handler, _, _, _, _, _ := initMocks(t) + prefBytes := []byte(prefix) + request, _, err := handler.parseSetupRequest(append(prefBytes, enGnbXml...)) + assert.Equal(t, "131014", request.GetPlmnId()) + assert.Equal(t, "11000101110001101100011111111000", request.GetNbId()) + assert.Nil(t, err) +} + +func TestParseNgEnbSetupRequest_Success(t *testing.T) { + ngEnbXml := readXmlFile(t, NgEnbSetupRequestXmlPath) + handler, _, _, _, _, _ := initMocks(t) + prefBytes := []byte(prefix) + request, _, err := handler.parseSetupRequest(append(prefBytes, ngEnbXml...)) + assert.Equal(t, "131014", request.GetPlmnId()) + assert.Equal(t, "101010101010101010", request.GetNbId()) + assert.Nil(t, err) +} + +func TestParseEnbSetupRequest_Success(t *testing.T) { + enbXml := readXmlFile(t, EnbSetupRequestXmlPath) + handler, _, _, _, _, _ := initMocks(t) + prefBytes := []byte(prefix) + request, _, err := handler.parseSetupRequest(append(prefBytes, enbXml...)) + assert.Equal(t, "6359AB", request.GetPlmnId()) + assert.Equal(t, "101010101010101010", request.GetNbId()) + assert.Nil(t, err) +} + +func TestParseSetupRequest_PipFailure(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + handler, _, _, _, _, _ := initMocks(t) + prefBytes := []byte("10.0.2.15:9999") + request, _, err := handler.parseSetupRequest(append(prefBytes, xmlGnb...)) + assert.Nil(t, request) + assert.NotNil(t, err) + assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error parsing E2 Setup Request failed extract Payload: no | separator found") +} + +func TestParseSetupRequest_UnmarshalFailure(t *testing.T) { + handler, _, _, _, _, _ := initMocks(t) + prefBytes := []byte(prefix) + request, _, err := handler.parseSetupRequest(append(prefBytes, 1, 2, 3)) + assert.Nil(t, request) + assert.NotNil(t, err) + assert.EqualError(t, err, "#E2SetupRequestNotificationHandler.parseSetupRequest - Error unmarshalling E2 Setup Request payload: 31302e302e322e31353a393939397c010203") +} + +func TestE2SetupRequestNotificationHandler_HandleNewGnbSuccess(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock) +} + +func TestE2SetupRequestNotificationHandler_HandleNewGnbWithoutFunctionsSuccess(t *testing.T) { + xmlGnb := readXmlFile(t, GnbWithoutFunctionsSetupRequestXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock) +} + +func TestE2SetupRequestNotificationHandler_HandleNewEnGnbSuccess(t *testing.T) { + xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)} + handler.Handle(notificationRequest) + assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock) +} + +func TestE2SetupRequestNotificationHandler_HandleNewNgEnbSuccess(t *testing.T) { + xmlNgEnb := readXmlFile(t, NgEnbSetupRequestXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlNgEnb...)} + handler.Handle(notificationRequest) + assertNewNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock) +} + +func TestE2SetupRequestNotificationHandler_HandleExistingGnbSuccess(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb = &entities.NodebInfo{ + RanName: nodebRanName, + AssociatedE2TInstanceAddress: e2tInstanceFullAddress, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + NodeType: entities.Node_GNB, + Configuration: &entities.NodebInfo_Gnb{Gnb: &entities.Gnb{}}, + } + readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + assertExistingNodebSuccessCalls(readerMock, t, e2tInstancesManagerMock, writerMock, routingManagerClientMock, rmrMessengerMock) +} + +func TestE2SetupRequestNotificationHandler_HandleParseError(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + prefBytes := []byte("invalid_prefix") + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func TestE2SetupRequestNotificationHandler_HandleUnmarshalError(t *testing.T) { + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, "xmlGnb"...)} + handler.Handle(notificationRequest) + readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func TestE2SetupRequestNotificationHandler_HandleGetE2TInstanceError(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance *entities.E2TInstance + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, common.NewResourceNotFoundError("Not found")) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + readerMock.AssertNotCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func TestE2SetupRequestNotificationHandler_HandleGetNodebError(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + + handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewInternalError(errors.New("some error"))) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func TestE2SetupRequestNotificationHandler_HandleAssociationError(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + + handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock := initMocks(t) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(errors.New("association error")) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("WhSendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertCalled(t, "WhSendMsg", mock.Anything, mock.Anything) +} + +func TestE2SetupRequestNotificationHandler_ConvertTo20BitStringError(t *testing.T) { + xmlEnGnb := readXmlFile(t, EnGnbSetupRequestXmlPath) + logger := tests.InitLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct { + PlmnId string + RicNearRtId string + }{PlmnId: "131014", RicNearRtId: "10011001101010101011"}} + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := tests.InitRmrSender(rmrMessengerMock, logger) + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + routingManagerClientMock := &mocks.RoutingManagerClientMock{} + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock) + handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager) + + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + var gnb *entities.NodebInfo + readerMock.On("GetNodeb", mock.Anything).Return(gnb, common.NewResourceNotFoundError("Not found")) + writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(nil) + routingManagerClientMock.On("AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything).Return(nil) + writerMock.On("UpdateNodebInfo", mock.Anything).Return(nil) + e2tInstancesManagerMock.On("AddRansToInstance", mock.Anything, mock.Anything).Return(nil) + var errEmpty error + rmrMessage := &rmrCgo.MBuf{} + rmrMessengerMock.On("SendMsg", mock.Anything, mock.Anything).Return(rmrMessage, errEmpty) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlEnGnb...)} + handler.Handle(notificationRequest) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func TestE2SetupRequestNotificationHandler_HandleExistingGnbInvalidStatusError(t *testing.T) { + xmlGnb := readXmlFile(t, GnbSetupRequestXmlPath) + handler, readerMock, writerMock, routingManagerClientMock, e2tInstancesManagerMock, rmrMessengerMock := initMocks(t) + var gnb = &entities.NodebInfo{RanName: nodebRanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN} + readerMock.On("GetNodeb", mock.Anything).Return(gnb, nil) + var e2tInstance = &entities.E2TInstance{} + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceFullAddress).Return(e2tInstance, nil) + prefBytes := []byte(prefix) + notificationRequest := &models.NotificationRequest{RanName: nodebRanName, Payload: append(prefBytes, xmlGnb...)} + handler.Handle(notificationRequest) + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + routingManagerClientMock.AssertNotCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertNotCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertNotCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertNotCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func initMocks(t *testing.T) (E2SetupRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.RmrMessengerMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) { + logger := tests.InitLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, GlobalRicId: struct { + PlmnId string + RicNearRtId string + }{PlmnId: "131014", RicNearRtId: "556670"}} + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := tests.InitRmrSender(rmrMessengerMock, logger) + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + routingManagerClientMock := &mocks.RoutingManagerClientMock{} + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock) + handler := NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManagerMock, rmrSender, rnibDataService, e2tAssociationManager) + return handler, readerMock, writerMock, rmrMessengerMock, e2tInstancesManagerMock, routingManagerClientMock +} + +func assertNewNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) { + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything) +} + +func assertExistingNodebSuccessCalls(readerMock *mocks.RnibReaderMock, t *testing.T, e2tInstancesManagerMock *mocks.E2TInstancesManagerMock, writerMock *mocks.RnibWriterMock, routingManagerClientMock *mocks.RoutingManagerClientMock, rmrMessengerMock *mocks.RmrMessengerMock) { + readerMock.AssertCalled(t, "GetNodeb", mock.Anything) + writerMock.AssertNotCalled(t, "SaveNodeb", mock.Anything, mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceFullAddress) + routingManagerClientMock.AssertCalled(t, "AssociateRanToE2TInstance", e2tInstanceFullAddress, mock.Anything) + writerMock.AssertCalled(t, "UpdateNodebInfo", mock.Anything) + e2tInstancesManagerMock.AssertCalled(t, "AddRansToInstance", mock.Anything, mock.Anything) + rmrMessengerMock.AssertCalled(t, "SendMsg", mock.Anything, mock.Anything) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler.go new file mode 100644 index 0000000..4aa4039 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler.go @@ -0,0 +1,118 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +import ( + "e2mgr/clients" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type E2TermInitNotificationHandler struct { + logger *logger.Logger + ranDisconnectionManager *managers.RanDisconnectionManager + e2tInstancesManager managers.IE2TInstancesManager + routingManagerClient clients.IRoutingManagerClient +} + +func NewE2TermInitNotificationHandler(logger *logger.Logger, ranDisconnectionManager *managers.RanDisconnectionManager, e2tInstancesManager managers.IE2TInstancesManager, routingManagerClient clients.IRoutingManagerClient) E2TermInitNotificationHandler { + return E2TermInitNotificationHandler{ + logger: logger, + ranDisconnectionManager: ranDisconnectionManager, + e2tInstancesManager: e2tInstancesManager, + routingManagerClient: routingManagerClient, + } +} + +func (h E2TermInitNotificationHandler) Handle(request *models.NotificationRequest) { + unmarshalledPayload := models.E2TermInitPayload{} + err := json.Unmarshal(request.Payload, &unmarshalledPayload) + + if err != nil { + h.logger.Errorf("#E2TermInitNotificationHandler.Handle - Error unmarshaling E2 Term Init payload: %s", err) + return + } + + e2tAddress := unmarshalledPayload.Address + + if len(e2tAddress) == 0 { + h.logger.Errorf("#E2TermInitNotificationHandler.Handle - Empty E2T address received") + return + } + + h.logger.Infof("#E2TermInitNotificationHandler.Handle - E2T payload: %s - handling E2_TERM_INIT", unmarshalledPayload) + + e2tInstance, err := h.e2tInstancesManager.GetE2TInstance(e2tAddress) + + if err != nil { + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + h.logger.Errorf("#E2TermInitNotificationHandler.Handle - Failed retrieving E2TInstance. error: %s", err) + return + } + + h.HandleNewE2TInstance(e2tAddress, unmarshalledPayload.PodName) + return + } + + if len(e2tInstance.AssociatedRanList) == 0 { + h.logger.Infof("#E2TermInitNotificationHandler.Handle - E2T Address: %s - E2T instance has no associated RANs", e2tInstance.Address) + return + } + + if e2tInstance.State == entities.ToBeDeleted{ + h.logger.Infof("#E2TermInitNotificationHandler.Handle - E2T Address: %s - E2T instance status is: %s, ignore", e2tInstance.Address, e2tInstance.State) + return + } + + h.HandleExistingE2TInstance(e2tInstance) + + h.logger.Infof("#E2TermInitNotificationHandler.Handle - Completed handling of E2_TERM_INIT") +} + +func (h E2TermInitNotificationHandler) HandleExistingE2TInstance(e2tInstance *entities.E2TInstance) { + + for _, ranName := range e2tInstance.AssociatedRanList { + + if err := h.ranDisconnectionManager.DisconnectRan(ranName); err != nil { + if _, ok := err.(*common.ResourceNotFoundError); !ok{ + break + } + } + } +} + +func (h E2TermInitNotificationHandler) HandleNewE2TInstance(e2tAddress string, podName string) { + + err := h.routingManagerClient.AddE2TInstance(e2tAddress) + + if err != nil{ + h.logger.Errorf("#E2TermInitNotificationHandler.HandleNewE2TInstance - e2t address: %s - routing manager failure", e2tAddress) + return + } + + _ = h.e2tInstancesManager.AddE2TInstance(e2tAddress, podName) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go new file mode 100644 index 0000000..8a74eff --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2_term_init_notification_handler_test.go @@ -0,0 +1,478 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/mock" + "io/ioutil" + "net/http" + "testing" +) + +const ( + e2tInitPayload = "{\"address\":\"10.0.2.15\", \"fqdn\":\"\"}" + e2tInstanceAddress = "10.0.2.15" + podName = "podNAme_test" +) + +func initRanLostConnectionTest(t *testing.T) (*logger.Logger, E2TermInitNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.E2TInstancesManagerMock, *mocks.RoutingManagerClientMock) { + + logger := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + + routingManagerClientMock := &mocks.RoutingManagerClientMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManagerMock, routingManagerClientMock) + + ranDisconnectionManager := managers.NewRanDisconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, e2tAssociationManager) + handler := NewE2TermInitNotificationHandler(logger, ranDisconnectionManager, e2tInstancesManagerMock, routingManagerClientMock) + + return logger, handler, readerMock, writerMock, e2tInstancesManagerMock, routingManagerClientMock +} + +func initRanLostConnectionTestWithRealE2tInstanceManager(t *testing.T) (*logger.Logger, *configuration.Configuration, E2TermInitNotificationHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.HttpClientMock) { + + logger := initLog(t) + config := configuration.ParseConfiguration() + + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + httpClientMock := &mocks.HttpClientMock{} + + routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClientMock) + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + ranDisconnectionManager := managers.NewRanDisconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, e2tAssociationManager) + handler := NewE2TermInitNotificationHandler(logger, ranDisconnectionManager, e2tInstancesManager, routingManagerClient) + return logger, config, handler, readerMock, writerMock, httpClientMock +} + +func TestE2TermInitUnmarshalPayloadFailure(t *testing.T) { + _, handler, _, _, e2tInstancesManagerMock, _ := initRanLostConnectionTest(t) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte("asd")} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertNotCalled(t, "GetE2TInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddE2TInstance") +} + +func TestE2TermInitEmptyE2TAddress(t *testing.T) { + _, handler, _, _, e2tInstancesManagerMock, _ := initRanLostConnectionTest(t) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte("{\"address\":\"\"}")} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertNotCalled(t, "GetE2TInstance") + e2tInstancesManagerMock.AssertNotCalled(t, "AddE2TInstance") +} + +func TestE2TermInitGetE2TInstanceFailure(t *testing.T) { + _, handler, _, _, e2tInstancesManagerMock, _ := initRanLostConnectionTest(t) + var e2tInstance *entities.E2TInstance + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, common.NewInternalError(fmt.Errorf("internal error"))) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertNotCalled(t, "AddE2TInstance") +} + +func TestE2TermInitGetE2TInstanceDbFailure(t *testing.T) { + _, _, handler, readerMock, writerMock, _ := initRanLostConnectionTestWithRealE2tInstanceManager(t) + var e2tInstance *entities.E2TInstance + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, common.NewInternalError(fmt.Errorf("internal error"))) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + handler.Handle(notificationRequest) + writerMock.AssertNotCalled(t, "UpdateNodebInfo") +} + +func TestE2TermInitNewE2TInstance(t *testing.T) { + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + var e2tInstance *entities.E2TInstance + + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, common.NewResourceNotFoundError("not found")) + writerMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + url := config.RoutingManager.BaseUrl + clients.AddE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + e2tAddresses := []string{} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewResourceNotFoundError("")) + + e2tAddresses = append(e2tAddresses, e2tInstanceAddress) + writerMock.On("SaveE2TAddresses", e2tAddresses).Return(nil) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + handler.Handle(notificationRequest) + + httpClientMock.AssertCalled(t, "Post", url, mock.Anything, mock.Anything) + writerMock.AssertCalled(t, "SaveE2TInstance", mock.Anything) + writerMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses) +} + +func TestE2TermInitNewE2TInstance__RoutingManagerError(t *testing.T) { + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + var e2tInstance *entities.E2TInstance + + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, common.NewResourceNotFoundError("not found")) + + url := config.RoutingManager.BaseUrl + clients.AddE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{}, errors.New("error")) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 0) +} + +func TestE2TermInitExistingE2TInstanceNoAssociatedRans(t *testing.T) { + _, handler, _, _, e2tInstancesManagerMock, _ := initRanLostConnectionTest(t) + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertCalled(t, "GetE2TInstance", e2tInstanceAddress) +} + +func TestE2TermInitHandlerSuccessOneRan(t *testing.T) { + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + var rnibErr error + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(initialNodeb, rnibErr) + + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + var disconnectedNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(disconnectedNodeb, rnibErr) + + var updatedNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", updatedNodeb).Return(rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil).Return(e2tInstance, nil) + writerMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + url := config.RoutingManager.BaseUrl + clients.DissociateRanE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1) + httpClientMock.AssertNumberOfCalls(t, "Post", 1) +} + +func TestE2TermInitHandlerSuccessOneRan_RoutingManagerError(t *testing.T) { + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + var rnibErr error + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(initialNodeb, rnibErr) + + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + var disconnectedNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(disconnectedNodeb, rnibErr) + + var updatedNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", updatedNodeb).Return(rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil).Return(e2tInstance, nil) + writerMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + url := config.RoutingManager.BaseUrl + clients.DissociateRanE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{}, errors.New("error")) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1) + httpClientMock.AssertNumberOfCalls(t, "Post", 1) +} + +func TestE2TermInitHandlerSuccessOneRanShuttingdown(t *testing.T) { + _, _, handler, readerMock, writerMock, _ := initRanLostConnectionTestWithRealE2tInstanceManager(t) + var rnibErr error + + var initialNodeb = &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", RanName).Return(initialNodeb, rnibErr) + + var argNodeb = &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) +} + +func TestE2TermInitHandlerSuccessOneRan_ToBeDeleted(t *testing.T) { + _, _, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + var rnibErr error + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", RanName).Return(initialNodeb, rnibErr) + + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.State = entities.ToBeDeleted + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + httpClientMock.AssertNotCalled(t, "Post", mock.Anything, mock.Anything, mock.Anything) + writerMock.AssertNotCalled(t, "UpdateNodebInfo") +} + +func TestE2TermInitHandlerSuccessTwoRans(t *testing.T) { + + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + var rnibErr error + test2 := "test2" + + //First RAN + var firstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + var disconnectedFirstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(firstRan, rnibErr).Return(disconnectedFirstRan, rnibErr) + + var updatedFirstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + writerMock.On("UpdateNodebInfo", updatedFirstRan).Return(rnibErr) + + var updatedDisconnectedFirstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", updatedDisconnectedFirstRan).Return(rnibErr) + + //Second RAN + var secondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + var disconnectedSecondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", test2).Return(secondRan, rnibErr).Return(disconnectedSecondRan, rnibErr) + + var updatedSecondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + writerMock.On("UpdateNodebInfo", updatedSecondRan).Return(rnibErr) + + var updatedDisconnectedSecondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: test2, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", updatedDisconnectedSecondRan).Return(rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, test2) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil).Return(e2tInstance, nil) + writerMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + url := config.RoutingManager.BaseUrl + clients.DissociateRanE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 4) + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 2) + httpClientMock.AssertNumberOfCalls(t, "Post", 2) +} + +func TestE2TermInitHandlerSuccessTwoRansSecondRanShutdown(t *testing.T) { + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + var rnibErr error + test2 := "test2" + + //First RAN + var firstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + var disconnectedFirstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(firstRan, rnibErr).Return(disconnectedFirstRan, rnibErr) + + var updatedFirstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + writerMock.On("UpdateNodebInfo", updatedFirstRan).Return(rnibErr) + + var updatedDisconnectedFirstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", updatedDisconnectedFirstRan).Return(rnibErr) + + //Second RAN + var secondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", test2).Return(secondRan, rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil).Return(e2tInstance, nil) + writerMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + url := config.RoutingManager.BaseUrl + clients.DissociateRanE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1) + httpClientMock.AssertNumberOfCalls(t, "Post", 1) +} + +func TestE2TermInitHandlerSuccessTwoRansFirstNotFoundFailure(t *testing.T) { + _, config, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + var rnibErr error + test2 := "test2" + + //First RAN + var firstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(firstRan, common.NewResourceNotFoundError("not found")) + + //Second RAN + var secondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + var disconnectedSecondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", test2).Return(secondRan, rnibErr).Return(disconnectedSecondRan, rnibErr) + + var updatedSecondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: test2, AssociatedE2TInstanceAddress: "10.0.2.15"} + writerMock.On("UpdateNodebInfo", updatedSecondRan).Return(rnibErr) + + var updatedDisconnectedSecondRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, RanName: test2, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", updatedDisconnectedSecondRan).Return(rnibErr) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, test2) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil).Return(e2tInstance, nil) + writerMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + url := config.RoutingManager.BaseUrl + clients.DissociateRanE2TInstanceApiSuffix + httpClientMock.On("Post", url, mock.Anything, mock.Anything).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1) + httpClientMock.AssertNumberOfCalls(t, "Post", 1) +} + +func TestE2TermInitHandlerSuccessTwoRansFirstRnibInternalErrorFailure(t *testing.T) { + _, _, handler, readerMock, writerMock, httpClientMock := initRanLostConnectionTestWithRealE2tInstanceManager(t) + + test2 := "test2" + + //First RAN + var firstRan = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, RanName: RanName, AssociatedE2TInstanceAddress: "10.0.2.15"} + readerMock.On("GetNodeb", RanName).Return(firstRan, common.NewInternalError(fmt.Errorf("internal error"))) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, test2) + readerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil).Return(e2tInstance, nil) + + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 0) + writerMock.AssertNumberOfCalls(t, "SaveE2TInstance", 0) + httpClientMock.AssertNumberOfCalls(t, "Post", 0) +} + +func TestE2TermInitHandlerSuccessZeroRans(t *testing.T) { + _, handler, _, writerMock, e2tInstancesManagerMock, _ := initRanLostConnectionTest(t) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + + handler.Handle(notificationRequest) + + writerMock.AssertNotCalled(t, "UpdateNodebInfo") +} + +func TestE2TermInitHandlerFailureGetNodebInternalError(t *testing.T) { + _, handler, readerMock, writerMock, e2tInstancesManagerMock, _ := initRanLostConnectionTest(t) + + var nodebInfo *entities.NodebInfo + readerMock.On("GetNodeb", "test1").Return(nodebInfo, common.NewInternalError(fmt.Errorf("internal error"))) + + e2tInstance := entities.NewE2TInstance(e2tInstanceAddress, podName) + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, "test1") + e2tInstancesManagerMock.On("GetE2TInstance", e2tInstanceAddress).Return(e2tInstance, nil) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(e2tInitPayload)} + handler.Handle(notificationRequest) + + writerMock.AssertNotCalled(t, "UpdateNodebInfo") +} + +// TODO: extract to test_utils +func initRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} + +// TODO: extract to test_utils +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2t_keep_alive_response_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2t_keep_alive_response_handler.go new file mode 100644 index 0000000..4ec0f28 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2t_keep_alive_response_handler.go @@ -0,0 +1,55 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/services" + "encoding/json" +) + +type E2TKeepAliveResponseHandler struct { + logger *logger.Logger + rnibDataService services.RNibDataService + e2TInstancesManager managers.IE2TInstancesManager +} + +func NewE2TKeepAliveResponseHandler(logger *logger.Logger, rnibDataService services.RNibDataService, e2TInstancesManager managers.IE2TInstancesManager) E2TKeepAliveResponseHandler { + return E2TKeepAliveResponseHandler{ + logger: logger, + rnibDataService: rnibDataService, + e2TInstancesManager: e2TInstancesManager, + } +} + +func (h E2TKeepAliveResponseHandler) Handle(request *models.NotificationRequest) { + unmarshalledPayload := models.E2TKeepAlivePayload{} + err := json.Unmarshal(request.Payload, &unmarshalledPayload) + + if err != nil { + h.logger.Errorf("#E2TKeepAliveResponseHandler.Handle - Error unmarshaling RMR request payload: %v", err) + return + } + + _ = h.e2TInstancesManager.ResetKeepAliveTimestamp(unmarshalledPayload.Address) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2t_keep_alive_response_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2t_keep_alive_response_handler_test.go new file mode 100644 index 0000000..9b74fec --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/e2t_keep_alive_response_handler_test.go @@ -0,0 +1,63 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "testing" +) + +func initE2TKeepAliveTest(t *testing.T) (*logger.Logger, E2TKeepAliveResponseHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.E2TInstancesManagerMock) { + + logger := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + + e2tInstancesManagerMock := &mocks.E2TInstancesManagerMock{} + handler := NewE2TKeepAliveResponseHandler(logger, rnibDataService, e2tInstancesManagerMock) + return logger, handler, readerMock, writerMock, e2tInstancesManagerMock +} + +func TestE2TKeepAliveUnmarshalPayloadFailure(t *testing.T) { + _, handler, _, _, e2tInstancesManagerMock := initE2TKeepAliveTest(t) + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte("asd")} + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertNotCalled(t, "ResetKeepAliveTimestamp") +} + +func TestE2TKeepAliveUnmarshalPayloadSuccess(t *testing.T) { + _, handler, _, _, e2tInstancesManagerMock := initE2TKeepAliveTest(t) + + jsonRequest := "{\"address\":\"10.10.2.15:9800\"}" + notificationRequest := &models.NotificationRequest{RanName: RanName, Payload: []byte(jsonRequest)} + + e2tInstancesManagerMock.On("ResetKeepAliveTimestamp", "10.10.2.15:9800").Return(nil) + handler.Handle(notificationRequest) + e2tInstancesManagerMock.AssertCalled(t, "ResetKeepAliveTimestamp", "10.10.2.15:9800") +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/enb_load_information_notification_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/enb_load_information_notification_handler.go new file mode 100644 index 0000000..4d0c384 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/enb_load_information_notification_handler.go @@ -0,0 +1,81 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +/*import ( + "e2mgr/converters" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "time" +) + +type EnbLoadInformationNotificationHandler struct { + logger *logger.Logger + rnibDataService services.RNibDataService + //extractor converters.IEnbLoadInformationExtractor +} + +func NewEnbLoadInformationNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, extractor converters.IEnbLoadInformationExtractor) EnbLoadInformationNotificationHandler { + return EnbLoadInformationNotificationHandler{ + logger: logger, + rnibDataService: rnibDataService, + extractor: extractor, + } +} + +func elapsed(startTime time.Time) float64 { + return float64(time.Since(startTime)) / float64(time.Millisecond) +} + +func (h EnbLoadInformationNotificationHandler) Handle(request *models.NotificationRequest) { + + pdu, err := converters.UnpackX2apPdu(h.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, request.Len, request.Payload, e2pdus.MaxAsn1CodecMessageBufferSize) + + if err != nil { + h.logger.Errorf("#EnbLoadInformationNotificationHandler.Handle - RAN name: %s - Unpack failed. Error: %v", request.RanName, err) + return + } + + h.logger.Debugf("#EnbLoadInformationNotificationHandler.Handle - RAN name: %s - Unpacked message successfully", request.RanName) + + ranLoadInformation := &entities.RanLoadInformation{LoadTimestamp: uint64(request.StartTime.UnixNano())} + + err = h.extractor.ExtractAndBuildRanLoadInformation(pdu, ranLoadInformation) + + if err != nil { + h.logger.Errorf("#EnbLoadInformationNotificationHandler.Handle - RAN name: %s - Failed at ExtractAndBuildRanLoadInformation. Error: %v", request.RanName, err) + return + } + + h.logger.Debugf("#EnbLoadInformationNotificationHandler.Handle - RAN name: %s - Successfully done with extracting and building RAN load information. elapsed: %f ms", request.RanName, elapsed(request.StartTime)) + + rnibErr := h.rnibDataService.SaveRanLoadInformation(request.RanName, ranLoadInformation) + + if rnibErr != nil { + h.logger.Errorf("#EnbLoadInformationNotificationHandler.Handle - RAN name: %s - Failed saving RAN load information. Error: %v", request.RanName, rnibErr) + return + } + + h.logger.Infof("#EnbLoadInformationNotificationHandler.Handle - RAN name: %s - Successfully saved RAN load information to RNIB. elapsed: %f ms", request.RanName, elapsed(request.StartTime)) +}*/ diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/enb_load_information_notification_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/enb_load_information_notification_handler_test.go new file mode 100644 index 0000000..743083b --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/enb_load_information_notification_handler_test.go @@ -0,0 +1,144 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +/*import ( + "e2mgr/models" + "fmt" + "time" +) + +const ( + FullUperPdu string = "004c07080004001980da0100075bde017c148003d5a8205000017c180003d5a875555403331420000012883a0003547400cd20002801ea16007c1f07c1f107c1f0781e007c80800031a02c000c88199040a00352083669190000d8908020000be0c4001ead4016e007ab50100002f8320067ab5005b8c1ead5070190c00001d637805f220000f56a081400005f020000f56a1d555400ccc508002801ea16007c1f07c1f107c1f0781e007c80800031a02c000c88199040a00352083669190000d8908020000be044001ead4016e007ab50100002f8120067ab5005b8c1ead5070190c00000" + FullAperPdu string = "" // TODO: populate and use it + BasicUperPdu string = "004898000400190d0000074200017c148003d5a80000" + BasicAperPdu string = "" // TODO: populate and use it + GarbagePdu string = "12312312" +) + +func createNotificationRequest(ranName string, transactionId []byte, packedPdu string) (*models.NotificationRequest, error) { + var packedByteSlice []byte + + _, err := fmt.Sscanf(packedPdu, "%x", &packedByteSlice) + + if err != nil { + return nil, err + } + + return models.NewNotificationRequest(ranName, packedByteSlice, time.Now(), transactionId, nil), nil +} + +func createNotificationRequestAndHandle(ranName string, transactionId []byte, loadInformationHandler EnbLoadInformationNotificationHandler, pdu string) error { + notificationRequest, err := createNotificationRequest(ranName, transactionId, pdu) + + if err != nil { + return err + } + + loadInformationHandler.Handle(notificationRequest) + return nil +}*/ + +//func TestLoadInformationHandlerSuccess(t *testing.T) { +// log, err := logger.InitLogger(logger.InfoLevel) +// if err != nil { +// t.Errorf("#setup_request_handler_test.TestLoadInformationHandlerSuccess - failed to initialize logger, error: %v", err) +// } +// +// inventoryName := "testRan" +// +// writerMock := &mocks.RnibWriterMock{} +// rnibWriterProvider := func() rNibWriter.RNibWriter { +// return writerMock +// } +// +// var rnibErr error +// writerMock.On("SaveRanLoadInformation",inventoryName, mock.Anything).Return(rnibErr) +// +// loadInformationHandler := NewEnbLoadInformationNotificationHandler(rnibWriterProvider) +// +// var packedExampleByteSlice []byte +// _, err = fmt.Sscanf(FullUperPdu, "%x", &packedExampleByteSlice) +// notificationRequest := models.NewNotificationRequest(inventoryName, packedExampleByteSlice, time.Now(), " 881828026419") +// loadInformationHandler.Handle(log, notificationRequest) +// +// writerMock.AssertNumberOfCalls(t, "SaveRanLoadInformation", 1) +//} +// +//func TestLoadInformationHandlerPayloadFailure(t *testing.T) { +// log, err := logger.InitLogger(logger.InfoLevel) +// if err != nil { +// t.Errorf("#setup_request_handler_test.TestLoadInformationHandlerPayloadFailure - failed to initialize logger, error: %v", err) +// } +// +// inventoryName := "testRan" +// +// writerMock := &mocks.RnibWriterMock{} +// rnibWriterProvider := func() rNibWriter.RNibWriter { +// return writerMock +// } +// +// var rnibErr error +// writerMock.On("SaveRanLoadInformation",inventoryName, mock.Anything).Return(rnibErr) +// +// loadInformationHandler := NewEnbLoadInformationNotificationHandler(rnibWriterProvider) +// +// var packedExampleByteSlice []byte +// _, err = fmt.Sscanf(GarbagePdu, "%x", &packedExampleByteSlice) +// notificationRequest := models.NewNotificationRequest(inventoryName, packedExampleByteSlice, time.Now(), " 881828026419") +// loadInformationHandler.Handle(log, notificationRequest) +// +// writerMock.AssertNumberOfCalls(t, "SaveRanLoadInformation", 0) +//} + +// Integration test +//func TestLoadInformationHandlerOverrideSuccess(t *testing.T) { +// log, err := logger.InitLogger(logger.InfoLevel) +// if err != nil { +// t.Errorf("#setup_request_handler_test.TestLoadInformationHandlerOverrideSuccess - failed to initialize logger, error: %s", err) +// } +// +// rNibWriter.Init("e2Manager", 1) +// defer rNibWriter.Close() +// reader.Init("e2Manager", 1) +// defer reader.Close() +// loadInformationHandler := NewEnbLoadInformationNotificationHandler(rNibWriter.GetRNibWriter) +// +// err = createNotificationRequestAndHandle("ranName", " 881828026419", loadInformationHandler, FullUperPdu) +// +// if err != nil { +// t.Errorf("#setup_request_handler_test.TestLoadInformationHandlerOverrideSuccess - failed creating NotificationRequest, error: %v", err) +// } +// +// err = createNotificationRequestAndHandle("ranName", " 881828026419", loadInformationHandler, BasicUperPdu) +// +// if err != nil { +// t.Errorf("#setup_request_handler_test.TestLoadInformationHandlerOverrideSuccess - failed creating NotificationRequest, error: %v", err) +// } +// +// ranLoadInformation, rnibErr := reader.GetRNibReader().GetRanLoadInformation("ranName") +// +// if (rnibErr != nil) { +// t.Errorf("#setup_request_handler_test.TestLoadInformationHandlerOverrideSuccess - RNIB error: %v", err) +// } +// +// assert.Len(t, ranLoadInformation.CellLoadInfos, 1) +//} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/endc_configuration_update_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/endc_configuration_update_handler.go new file mode 100644 index 0000000..5a81916 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/endc_configuration_update_handler.go @@ -0,0 +1,70 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +// #cgo CFLAGS: -I../../3rdparty/asn1codec/inc/ -I../../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../../3rdparty/asn1codec/lib/ -L../../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/converters" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services/rmrsender" + "e2mgr/utils" +) + +type EndcConfigurationUpdateHandler struct { + logger *logger.Logger + rmrSender *rmrsender.RmrSender +} + +func NewEndcConfigurationUpdateHandler(logger *logger.Logger, rmrSender *rmrsender.RmrSender) EndcConfigurationUpdateHandler { + return EndcConfigurationUpdateHandler{ + logger: logger, + rmrSender: rmrSender, + } +} + +func (h EndcConfigurationUpdateHandler) Handle(request *models.NotificationRequest) { + + refinedMessage, err := converters.UnpackX2apPduAndRefine(h.logger, e2pdus.MaxAsn1CodecAllocationBufferSize /*allocation buffer*/, request.Len, request.Payload, e2pdus.MaxAsn1CodecMessageBufferSize /*message buffer*/) + + if err != nil { + h.logger.Errorf("#endc_configuration_update_handler.Handle - unpack failed. Error: %v", err) + + msg := models.NewRmrMessage(rmrCgo.RIC_ENDC_CONF_UPDATE_FAILURE, request.RanName, e2pdus.PackedEndcConfigurationUpdateFailure, request.TransactionId, request.GetMsgSrc()) + _ = h.rmrSender.Send(msg) + + h.logger.Infof("#EndcConfigurationUpdateHandler.Handle - Summary: elapsed time for receiving and handling endc configuration update initiating message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + h.logger.Infof("#endc_configuration_update_handler.Handle - Endc configuration update initiating message received") + h.logger.Debugf("#endc_configuration_update_handler.Handle - Endc configuration update initiating message payload: %s", refinedMessage.PduPrint) + msg := models.NewRmrMessage(rmrCgo.RIC_ENDC_CONF_UPDATE_ACK, request.RanName, e2pdus.PackedEndcConfigurationUpdateAck, request.TransactionId, request.GetMsgSrc()) + _ = h.rmrSender.Send(msg) + + h.logger.Infof("#EndcConfigurationUpdateHandler.Handle - Summary: elapsed time for receiving and handling endc configuration update initiating message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/endc_configuration_update_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/endc_configuration_update_handler_test.go new file mode 100644 index 0000000..6400cf3 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/endc_configuration_update_handler_test.go @@ -0,0 +1,78 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "fmt" + "testing" + "time" + "unsafe" +) + +const PackedEndcConfigurationUpdateAck = "2025000a00000100f70003000000" +const PackedEndcConfigurationUpdateFailure = "402500080000010005400142" + +func initEndcConfigurationUpdateHandlerTest(t *testing.T) (EndcConfigurationUpdateHandler, *mocks.RmrMessengerMock) { + log := initLog(t) + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, log) + h := NewEndcConfigurationUpdateHandler(log, rmrSender) + return h, rmrMessengerMock +} + +func TestHandleEndcConfigUpdateSuccess(t *testing.T) { + h, rmrMessengerMock := initEndcConfigurationUpdateHandlerTest(t) + + ranName := "test" + xAction := []byte("123456aa") + + var payload []byte + _, _ = fmt.Sscanf(PackedEndcConfigurationUpdateAck, "%x", &payload) + var msgSrc unsafe.Pointer + + mBuf := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_CONF_UPDATE_ACK, len(payload), ranName, &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), + TransactionId: *mBuf.XAction} + var err error + rmrMessengerMock.On("SendMsg", mBuf, true).Return(&rmrCgo.MBuf{}, err) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", mBuf, true) +} + +func TestHandleEndcConfigUpdateFailure(t *testing.T) { + h, rmrMessengerMock := initEndcConfigurationUpdateHandlerTest(t) + + ranName := "test" + xAction := []byte("123456aa") + + var payload []byte + _, _ = fmt.Sscanf(PackedEndcConfigurationUpdateFailure, "%x", &payload) + var msgSrc unsafe.Pointer + + mBuf := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_CONF_UPDATE_FAILURE, len(payload), ranName, &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: 0, Payload: []byte{0}, StartTime: time.Now(), + TransactionId: *mBuf.XAction} + rmrMessengerMock.On("SendMsg", mBuf, true).Return(&rmrCgo.MBuf{}, fmt.Errorf("send failure")) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", mBuf, true) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/notification_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/notification_handler.go new file mode 100644 index 0000000..4a85de2 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/notification_handler.go @@ -0,0 +1,29 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +import ( + "e2mgr/models" +) + +type NotificationHandler interface { + Handle(*models.NotificationRequest) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler.go new file mode 100644 index 0000000..12d4df1 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler.go @@ -0,0 +1,47 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +import ( + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" +) + +type RanLostConnectionHandler struct { + ranDisconnectionManager managers.IRanDisconnectionManager + logger *logger.Logger +} + +func NewRanLostConnectionHandler(logger *logger.Logger, ranDisconnectionManager managers.IRanDisconnectionManager) RanLostConnectionHandler { + return RanLostConnectionHandler{ + logger: logger, + ranDisconnectionManager: ranDisconnectionManager, + } +} +func (h RanLostConnectionHandler) Handle(request *models.NotificationRequest) { + + ranName := request.RanName + + h.logger.Warnf("#RanLostConnectionHandler.Handle - RAN name: %s - Received lost connection notification", ranName) + + _ = h.ranDisconnectionManager.DisconnectRan(ranName) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go new file mode 100644 index 0000000..b1d3546 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/ran_lost_connection_handler_test.go @@ -0,0 +1,133 @@ + //// Copyright 2019 AT&T Intellectual Property +//// Copyright 2019 Nokia +//// +//// Licensed under the Apache License, Version 2.0 (the "License"); +//// you may not use this file except in compliance with the License. +//// You may obtain a copy of the License at +//// +//// http://www.apache.org/licenses/LICENSE-2.0 +//// +//// Unless required by applicable law or agreed to in writing, software +//// distributed under the License is distributed on an "AS IS" BASIS, +//// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//// See the License for the specific language governing permissions and +//// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "io/ioutil" + "net/http" + "testing" +) + +const ranName = "test" +const e2tAddress = "10.10.2.15:9800" + +func TestLostConnectionHandlerSuccess(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + notificationRequest := models.NotificationRequest{RanName: ranName} + ranDisconnectionManagerMock := &mocks.RanDisconnectionManagerMock{} + ranDisconnectionManagerMock.On("DisconnectRan", ranName).Return(nil) + handler := NewRanLostConnectionHandler(logger, ranDisconnectionManagerMock) + handler.Handle(¬ificationRequest) + ranDisconnectionManagerMock.AssertCalled(t, "DisconnectRan", ranName) +} + +func TestLostConnectionHandlerFailure(t *testing.T) { + logger, _ := logger.InitLogger(logger.InfoLevel) + + notificationRequest := models.NotificationRequest{RanName: ranName} + ranDisconnectionManagerMock := &mocks.RanDisconnectionManagerMock{} + ranDisconnectionManagerMock.On("DisconnectRan", ranName).Return(errors.New("error")) + handler := NewRanLostConnectionHandler(logger, ranDisconnectionManagerMock) + handler.Handle(¬ificationRequest) + ranDisconnectionManagerMock.AssertCalled(t, "DisconnectRan", ranName) +} + +func setupLostConnectionHandlerTestWithRealDisconnectionManager(t *testing.T, isSuccessfulHttpPost bool) (RanLostConnectionHandler, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.HttpClientMock) { + logger, _ := logger.InitLogger(logger.InfoLevel) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) + httpClientMock := &mocks.HttpClientMock{} + routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClientMock) + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + ranDisconnectionManager := managers.NewRanDisconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, e2tAssociationManager) + handler := NewRanLostConnectionHandler(logger, ranDisconnectionManager) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, AssociatedE2TInstanceAddress: e2tAddress} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) + e2tInstance := &entities.E2TInstance{Address: e2tAddress, AssociatedRanList: []string{ranName}} + readerMock.On("GetE2TInstance", e2tAddress).Return(e2tInstance, nil) + e2tInstanceToSave := *e2tInstance + e2tInstanceToSave.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &e2tInstanceToSave).Return(nil) + mockHttpClient(httpClientMock, isSuccessfulHttpPost) + + return handler, readerMock, writerMock, httpClientMock +} + +func mockHttpClient(httpClientMock *mocks.HttpClientMock, isSuccessful bool) { + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(e2tAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + var respStatusCode int + if isSuccessful { + respStatusCode = http.StatusCreated + } else { + respStatusCode = http.StatusBadRequest + } + httpClientMock.On("Post", clients.DissociateRanE2TInstanceApiSuffix, "application/json", body).Return(&http.Response{StatusCode: respStatusCode, Body: respBody}, nil) +} + +func TestLostConnectionHandlerFailureWithRealDisconnectionManager(t *testing.T) { + handler, readerMock, writerMock, httpClientMock := setupLostConnectionHandlerTestWithRealDisconnectionManager(t, false) + + notificationRequest := models.NotificationRequest{RanName: ranName} + handler.Handle(¬ificationRequest) + + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) +} + +func TestLostConnectionHandlerSuccessWithRealDisconnectionManager(t *testing.T) { + handler, readerMock, writerMock, httpClientMock := setupLostConnectionHandlerTestWithRealDisconnectionManager(t, true) + + notificationRequest := models.NotificationRequest{RanName: ranName} + handler.Handle(¬ificationRequest) + + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go new file mode 100644 index 0000000..695a09f --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler.go @@ -0,0 +1,106 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/utils" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type SetupResponseNotificationHandler struct { + logger *logger.Logger + rnibDataService services.RNibDataService + setupResponseManager managers.ISetupResponseManager + ranStatusChangeManager managers.IRanStatusChangeManager + msgType int +} + +var msgTypeToMsgName = map[int]string{ + rmrCgo.RIC_X2_SETUP_RESP: "X2 Setup Response", + rmrCgo.RIC_X2_SETUP_FAILURE: "X2 Setup Failure Response", + rmrCgo.RIC_ENDC_X2_SETUP_RESP: "ENDC Setup Response", + rmrCgo.RIC_ENDC_X2_SETUP_FAILURE: "ENDC Setup Failure Response", +} + +func NewSetupResponseNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, setupResponseManager managers.ISetupResponseManager, ranStatusChangeManager managers.IRanStatusChangeManager, msgType int) SetupResponseNotificationHandler { + return SetupResponseNotificationHandler{ + logger: logger, + rnibDataService: rnibDataService, + setupResponseManager: setupResponseManager, + ranStatusChangeManager: ranStatusChangeManager, + msgType: msgType, + } +} + +func (h SetupResponseNotificationHandler) Handle(request *models.NotificationRequest) { + msgName := msgTypeToMsgName[h.msgType] + h.logger.Infof("#SetupResponseNotificationHandler - RAN name: %s - Received %s notification", request.RanName, msgName) + + inventoryName := request.RanName + + nodebInfo, rnibErr := h.rnibDataService.GetNodeb(inventoryName) + + if rnibErr != nil { + h.logger.Errorf("#SetupResponseNotificationHandler - RAN name: %s - Error fetching RAN from rNib: %v", request.RanName, rnibErr) + return + } + + if !isConnectionStatusValid(nodebInfo.ConnectionStatus) { + h.logger.Errorf("#SetupResponseNotificationHandler - RAN name: %s - Invalid RAN connection status: %s", request.RanName, nodebInfo.ConnectionStatus) + return + } + + nbIdentity := &entities.NbIdentity{InventoryName: inventoryName} + err := h.setupResponseManager.PopulateNodebByPdu(h.logger, nbIdentity, nodebInfo, request.Payload) + + if err != nil { + return + } + + rnibErr = h.rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + + if rnibErr != nil { + h.logger.Errorf("#SetupResponseNotificationHandler - RAN name: %s - Error saving RAN to rNib: %v", request.RanName, rnibErr) + return + } + + h.logger.Infof("#SetupResponseNotificationHandler - RAN name: %s - Successfully saved RAN to rNib", request.RanName) + h.logger.Infof("#SetupResponseNotificationHandler - Summary: elapsed time for receiving and handling setup response message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + + if !isSuccessSetupResponseMessage(h.msgType) { + return + } + + _ = h.ranStatusChangeManager.Execute(rmrCgo.RAN_CONNECTED, enums.RIC_TO_RAN, nodebInfo) +} + +func isConnectionStatusValid(connectionStatus entities.ConnectionStatus) bool { + return connectionStatus == entities.ConnectionStatus_CONNECTING || connectionStatus == entities.ConnectionStatus_CONNECTED +} + +func isSuccessSetupResponseMessage(msgType int) bool { + return msgType == rmrCgo.RIC_X2_SETUP_RESP || msgType == rmrCgo.RIC_ENDC_X2_SETUP_RESP +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go new file mode 100644 index 0000000..4d3a0ee --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/setup_response_notification_handler_test.go @@ -0,0 +1,339 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/converters" + "e2mgr/e2managererrors" + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "encoding/json" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "testing" + "unsafe" +) + +const ( + RanName = "test" + X2SetupResponsePackedPdu = "2006002a000002001500080002f82900007a8000140017000000630002f8290007ab50102002f829000001000133" + EndcSetupResponsePackedPdu = "202400808e00000100f600808640000200fc00090002f829504a952a0a00fd007200010c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000211e148033e4e5e4c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a00021a0044033e4e5e000000002c001e3f271f2e3d4ff0031e3f274400010000150400000a00020000" + X2SetupFailureResponsePackedPdu = "4006001a0000030005400200000016400100001140087821a00000008040" + EndcSetupFailureResponsePackedPdu = "4024001a0000030005400200000016400100001140087821a00000008040" +) + +type setupSuccessResponseTestCase struct { + packedPdu string + setupResponseManager managers.ISetupResponseManager + msgType int + saveNodebMockError error + sendMsgError error + statusChangeMbuf *rmrCgo.MBuf +} + +type setupFailureResponseTestCase struct { + packedPdu string + setupResponseManager managers.ISetupResponseManager + msgType int + saveNodebMockError error +} + +type setupResponseTestContext struct { + logger *logger.Logger + readerMock *mocks.RnibReaderMock + writerMock *mocks.RnibWriterMock + rnibDataService services.RNibDataService + setupResponseManager managers.ISetupResponseManager + ranStatusChangeManager managers.IRanStatusChangeManager + rmrSender *rmrsender.RmrSender + rmrMessengerMock *mocks.RmrMessengerMock +} + +func NewSetupResponseTestContext(manager managers.ISetupResponseManager) *setupResponseTestContext { + logger, _ := logger.InitLogger(logger.InfoLevel) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, logger) + + ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender) + + return &setupResponseTestContext{ + logger: logger, + readerMock: readerMock, + writerMock: writerMock, + rnibDataService: rnibDataService, + setupResponseManager: manager, + ranStatusChangeManager: ranStatusChangeManager, + rmrMessengerMock: rmrMessengerMock, + rmrSender: rmrSender, + } +} + +func TestSetupResponseGetNodebFailure(t *testing.T) { + notificationRequest := models.NotificationRequest{RanName: RanName} + testContext := NewSetupResponseTestContext(nil) + handler := NewSetupResponseNotificationHandler(testContext.logger, testContext.rnibDataService, &managers.X2SetupResponseManager{}, testContext.ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP) + testContext.readerMock.On("GetNodeb", RanName).Return(&entities.NodebInfo{}, common.NewInternalError(errors.New("Error"))) + handler.Handle(¬ificationRequest) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertNotCalled(t, "SaveNodeb") + testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestSetupResponseInvalidConnectionStatus(t *testing.T) { + ranName := "test" + notificationRequest := models.NotificationRequest{RanName: ranName} + testContext := NewSetupResponseTestContext(nil) + handler := NewSetupResponseNotificationHandler(testContext.logger, testContext.rnibDataService, &managers.X2SetupResponseManager{}, testContext.ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP) + var rnibErr error + testContext.readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN}, rnibErr) + handler.Handle(¬ificationRequest) + testContext.readerMock.AssertCalled(t, "GetNodeb", ranName) + testContext.writerMock.AssertNotCalled(t, "SaveNodeb") + testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func executeHandleSetupSuccessResponse(t *testing.T, tc setupSuccessResponseTestCase) (*setupResponseTestContext, *entities.NodebInfo) { + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + notificationRequest := models.NotificationRequest{RanName: RanName, Payload: payload} + testContext := NewSetupResponseTestContext(tc.setupResponseManager) + + handler := NewSetupResponseNotificationHandler(testContext.logger, testContext.rnibDataService, testContext.setupResponseManager, testContext.ranStatusChangeManager, tc.msgType) + + var rnibErr error + + nodebInfo := &entities.NodebInfo{ + ConnectionStatus: entities.ConnectionStatus_CONNECTING, + RanName: RanName, + Ip: "10.0.2.2", + Port: 1231, + } + + testContext.readerMock.On("GetNodeb", RanName).Return(nodebInfo, rnibErr) + testContext.writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(tc.saveNodebMockError) + testContext.rmrMessengerMock.On("SendMsg", tc.statusChangeMbuf, true).Return(&rmrCgo.MBuf{}, tc.sendMsgError) + handler.Handle(¬ificationRequest) + + return testContext, nodebInfo +} + +func getRanConnectedMbuf(nodeType entities.Node_Type) *rmrCgo.MBuf { + var xAction []byte + resourceStatusPayload := models.NewResourceStatusPayload(nodeType, enums.RIC_TO_RAN) + resourceStatusJson, _ := json.Marshal(resourceStatusPayload) + var msgSrc unsafe.Pointer + return rmrCgo.NewMBuf(rmrCgo.RAN_CONNECTED, len(resourceStatusJson), RanName, &resourceStatusJson, &xAction, msgSrc) +} + +func executeHandleSetupFailureResponse(t *testing.T, tc setupFailureResponseTestCase) (*setupResponseTestContext, *entities.NodebInfo) { + var payload []byte + _, err := fmt.Sscanf(tc.packedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + notificationRequest := models.NotificationRequest{RanName: RanName, Payload: payload} + testContext := NewSetupResponseTestContext(tc.setupResponseManager) + + handler := NewSetupResponseNotificationHandler(testContext.logger, testContext.rnibDataService, testContext.setupResponseManager, testContext.ranStatusChangeManager, tc.msgType) + + var rnibErr error + + nodebInfo := &entities.NodebInfo{ + ConnectionStatus: entities.ConnectionStatus_CONNECTING, + RanName: RanName, + Ip: "10.0.2.2", + Port: 1231, + } + + testContext.readerMock.On("GetNodeb", RanName).Return(nodebInfo, rnibErr) + testContext.writerMock.On("SaveNodeb", mock.Anything, mock.Anything).Return(tc.saveNodebMockError) + handler.Handle(¬ificationRequest) + + return testContext, nodebInfo +} + +func TestX2SetupResponse(t *testing.T) { + logger := initLog(t) + var saveNodebMockError error + var sendMsgError error + tc := setupSuccessResponseTestCase{ + X2SetupResponsePackedPdu, + managers.NewX2SetupResponseManager(converters.NewX2SetupResponseConverter(logger)), + rmrCgo.RIC_X2_SETUP_RESP, + saveNodebMockError, + sendMsgError, + getRanConnectedMbuf(entities.Node_ENB), + } + + testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) + assert.EqualValues(t, entities.Node_ENB, nodebInfo.NodeType) + + assert.IsType(t, &entities.NodebInfo_Enb{}, nodebInfo.Configuration) + i, _ := nodebInfo.Configuration.(*entities.NodebInfo_Enb) + assert.NotNil(t, i.Enb) + testContext.rmrMessengerMock.AssertCalled(t, "SendMsg", tc.statusChangeMbuf, true) +} + +func TestX2SetupFailureResponse(t *testing.T) { + logger := initLog(t) + var saveNodebMockError error + tc := setupFailureResponseTestCase{ + X2SetupFailureResponsePackedPdu, + managers.NewX2SetupFailureResponseManager(converters.NewX2SetupFailureResponseConverter(logger)), + rmrCgo.RIC_X2_SETUP_FAILURE, + saveNodebMockError, + } + + testContext, nodebInfo := executeHandleSetupFailureResponse(t, tc) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + assert.EqualValues(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus) + assert.EqualValues(t, entities.Failure_X2_SETUP_FAILURE, nodebInfo.FailureType) + assert.NotNil(t, nodebInfo.SetupFailure) + testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestEndcSetupResponse(t *testing.T) { + logger := initLog(t) + var saveNodebMockError error + var sendMsgError error + tc := setupSuccessResponseTestCase{ + EndcSetupResponsePackedPdu, + managers.NewEndcSetupResponseManager(converters.NewEndcSetupResponseConverter(logger)), + rmrCgo.RIC_ENDC_X2_SETUP_RESP, + saveNodebMockError, + sendMsgError, + getRanConnectedMbuf(entities.Node_GNB), + } + + testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) + assert.EqualValues(t, entities.Node_GNB, nodebInfo.NodeType) + assert.IsType(t, &entities.NodebInfo_Gnb{}, nodebInfo.Configuration) + + i, _ := nodebInfo.Configuration.(*entities.NodebInfo_Gnb) + assert.NotNil(t, i.Gnb) + testContext.rmrMessengerMock.AssertCalled(t, "SendMsg", tc.statusChangeMbuf, true) +} + +func TestEndcSetupFailureResponse(t *testing.T) { + logger := initLog(t) + var saveNodebMockError error + tc := setupFailureResponseTestCase{ + EndcSetupFailureResponsePackedPdu, + managers.NewEndcSetupFailureResponseManager(converters.NewEndcSetupFailureResponseConverter(logger)), + rmrCgo.RIC_ENDC_X2_SETUP_FAILURE, + saveNodebMockError, + } + + testContext, nodebInfo := executeHandleSetupFailureResponse(t, tc) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + assert.EqualValues(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus) + assert.EqualValues(t, entities.Failure_ENDC_X2_SETUP_FAILURE, nodebInfo.FailureType) + assert.NotNil(t, nodebInfo.SetupFailure) + testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestSetupResponseInvalidPayload(t *testing.T) { + logger := initLog(t) + ranName := "test" + notificationRequest := models.NotificationRequest{RanName: ranName, Payload: []byte("123")} + testContext := NewSetupResponseTestContext(nil) + handler := NewSetupResponseNotificationHandler(testContext.logger, testContext.rnibDataService, managers.NewX2SetupResponseManager(converters.NewX2SetupResponseConverter(logger)), testContext.ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP) + var rnibErr error + testContext.readerMock.On("GetNodeb", ranName).Return(&entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING}, rnibErr) + handler.Handle(¬ificationRequest) + testContext.readerMock.AssertCalled(t, "GetNodeb", ranName) + testContext.writerMock.AssertNotCalled(t, "SaveNodeb") + testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestSetupResponseSaveNodebFailure(t *testing.T) { + logger := initLog(t) + saveNodebMockError := common.NewInternalError(errors.New("Error")) + var sendMsgError error + tc := setupSuccessResponseTestCase{ + X2SetupResponsePackedPdu, + managers.NewX2SetupResponseManager(converters.NewX2SetupResponseConverter(logger)), + rmrCgo.RIC_X2_SETUP_RESP, + saveNodebMockError, + sendMsgError, + getRanConnectedMbuf(entities.Node_ENB), + } + + testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + testContext.rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestSetupResponseStatusChangeSendFailure(t *testing.T) { + logger := initLog(t) + var saveNodebMockError error + sendMsgError := e2managererrors.NewRmrError() + tc := setupSuccessResponseTestCase{ + X2SetupResponsePackedPdu, + managers.NewX2SetupResponseManager(converters.NewX2SetupResponseConverter(logger)), + rmrCgo.RIC_X2_SETUP_RESP, + saveNodebMockError, + sendMsgError, + getRanConnectedMbuf(entities.Node_ENB), + } + + testContext, nodebInfo := executeHandleSetupSuccessResponse(t, tc) + testContext.readerMock.AssertCalled(t, "GetNodeb", RanName) + testContext.writerMock.AssertCalled(t, "SaveNodeb", mock.Anything, nodebInfo) + assert.EqualValues(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) + assert.EqualValues(t, entities.Node_ENB, nodebInfo.NodeType) + + assert.IsType(t, &entities.NodebInfo_Enb{}, nodebInfo.Configuration) + i, _ := nodebInfo.Configuration.(*entities.NodebInfo_Enb) + assert.NotNil(t, i.Enb) + testContext.rmrMessengerMock.AssertCalled(t, "SendMsg", tc.statusChangeMbuf, true) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler.go new file mode 100644 index 0000000..85255eb --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler.go @@ -0,0 +1,87 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +// #cgo CFLAGS: -I../../3rdparty/asn1codec/inc/ -I../../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../../3rdparty/asn1codec/lib/ -L../../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/e2pdus" + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/utils" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type X2ResetRequestNotificationHandler struct { + logger *logger.Logger + rnibDataService services.RNibDataService + ranStatusChangeManager managers.IRanStatusChangeManager + rmrSender *rmrsender.RmrSender +} + +func NewX2ResetRequestNotificationHandler(logger *logger.Logger, rnibDataService services.RNibDataService, ranStatusChangeManager managers.IRanStatusChangeManager, rmrSender *rmrsender.RmrSender) X2ResetRequestNotificationHandler { + return X2ResetRequestNotificationHandler{ + logger: logger, + rnibDataService: rnibDataService, + ranStatusChangeManager: ranStatusChangeManager, + rmrSender: rmrSender, + } +} + +func (h X2ResetRequestNotificationHandler) Handle(request *models.NotificationRequest) { + + h.logger.Infof("#X2ResetRequestNotificationHandler.Handle - Ran name: %s", request.RanName) + + nb, rNibErr := h.rnibDataService.GetNodeb(request.RanName) + if rNibErr != nil { + h.logger.Errorf("#X2ResetRequestNotificationHandler.Handle - failed to retrieve nodeB entity. RanName: %s. Error: %s", request.RanName, rNibErr.Error()) + h.logger.Infof("#X2ResetRequestNotificationHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + h.logger.Debugf("#X2ResetRequestNotificationHandler.Handle - nodeB entity retrieved. RanName %s, ConnectionStatus %s", nb.RanName, nb.ConnectionStatus) + + if nb.ConnectionStatus == entities.ConnectionStatus_SHUTTING_DOWN { + h.logger.Warnf("#X2ResetRequestNotificationHandler.Handle - nodeB entity in incorrect state. RanName %s, ConnectionStatus %s", nb.RanName, nb.ConnectionStatus) + h.logger.Infof("#X2ResetRequestNotificationHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + if nb.ConnectionStatus != entities.ConnectionStatus_CONNECTED { + h.logger.Errorf("#X2ResetRequestNotificationHandler.Handle - nodeB entity in incorrect state. RanName %s, ConnectionStatus %s", nb.RanName, nb.ConnectionStatus) + h.logger.Infof("#X2ResetRequestNotificationHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + msg := models.NewRmrMessage(rmrCgo.RIC_X2_RESET_RESP, request.RanName, e2pdus.PackedX2ResetResponse, request.TransactionId, request.GetMsgSrc()) + + _ = h.rmrSender.Send(msg) + h.logger.Infof("#X2ResetRequestNotificationHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + _ = h.ranStatusChangeManager.Execute(rmrCgo.RAN_RESTARTED, enums.RAN_TO_RIC, nb) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go new file mode 100644 index 0000000..73d3a56 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_request_notification_handler_test.go @@ -0,0 +1,132 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/e2pdus" + "e2mgr/enums" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/tests" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "testing" + "time" + "unsafe" +) + +func initX2ResetRequestNotificationHandlerTest(t *testing.T) (X2ResetRequestNotificationHandler, *mocks.RnibReaderMock, *mocks.RmrMessengerMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + readerMock := &mocks.RnibReaderMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, log) + ranStatusChangeManager := managers.NewRanStatusChangeManager(log, rmrSender) + h := NewX2ResetRequestNotificationHandler(log, rnibDataService, ranStatusChangeManager, rmrSender) + return h, readerMock, rmrMessengerMock +} + +func getRanRestartedMbuf(nodeType entities.Node_Type, messageDirection enums.MessageDirection) *rmrCgo.MBuf { + var xAction []byte + resourceStatusPayload := models.NewResourceStatusPayload(nodeType, messageDirection) + resourceStatusJson, _ := json.Marshal(resourceStatusPayload) + var msgSrc unsafe.Pointer + return rmrCgo.NewMBuf(rmrCgo.RAN_RESTARTED, len(resourceStatusJson), RanName, &resourceStatusJson, &xAction, msgSrc) +} + +func TestHandleX2ResetRequestNotificationSuccess(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) + ranName := "test" + xAction := []byte("123456aa") + notificationRequest := models.NewNotificationRequest(ranName, []byte{}, time.Now(), xAction, nil) + + nb := &entities.NodebInfo{RanName: ranName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var err error + readerMock.On("GetNodeb", ranName).Return(nb, err) + var msgSrc unsafe.Pointer + resetResponseMbuf := rmrCgo.NewMBuf(rmrCgo.RIC_X2_RESET_RESP, len(e2pdus.PackedX2ResetResponse), ranName, &e2pdus.PackedX2ResetResponse, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", resetResponseMbuf, true).Return(&rmrCgo.MBuf{}, err) + ranRestartedMbuf := getRanRestartedMbuf(nb.NodeType, enums.RAN_TO_RIC) + rmrMessengerMock.On("SendMsg", ranRestartedMbuf, true).Return(&rmrCgo.MBuf{}, err) + h.Handle(notificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", resetResponseMbuf, true) + rmrMessengerMock.AssertCalled(t, "SendMsg", ranRestartedMbuf, true) +} + +func TestHandleX2ResetRequestNotificationShuttingDownStatus(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) + var payload []byte + + xAction := []byte("123456aa") + var msgSrc unsafe.Pointer + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, + StartTime: time.Now(), TransactionId: xAction} + + nb := &entities.NodebInfo{RanName: mBuf.Meid, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN,} + var rnibErr error + + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestHandleX2ResetRequestNotificationDisconnectStatus(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) + var payload []byte + xAction := []byte("123456aa") + var msgSrc unsafe.Pointer + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: mBuf.Meid, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED,} + var rnibErr error + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestHandleX2ResetRequestNotificationGetNodebFailed(t *testing.T) { + + h, readerMock, rmrMessengerMock := initX2ResetRequestNotificationHandlerTest(t) + var payload []byte + var xAction []byte + var msgSrc unsafe.Pointer + mBuf := rmrCgo.NewMBuf(tests.MessageType, len(payload), "RanName", &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, + StartTime: time.Now(), TransactionId: xAction} + + var nb *entities.NodebInfo + rnibErr := &common.ResourceNotFoundError{} + readerMock.On("GetNodeb", mBuf.Meid).Return(nb, rnibErr) + + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_response_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_response_handler.go new file mode 100644 index 0000000..1097ed2 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_response_handler.go @@ -0,0 +1,104 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +// #cgo CFLAGS: -I../../3rdparty/asn1codec/inc/ -I../../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../../3rdparty/asn1codec/lib/ -L../../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +import "C" +import ( + "e2mgr/converters" + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/utils" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type X2ResetResponseHandler struct { + logger *logger.Logger + rnibDataService services.RNibDataService + ranStatusChangeManager managers.IRanStatusChangeManager + extractor converters.IX2ResetResponseExtractor +} + +func NewX2ResetResponseHandler(logger *logger.Logger, rnibDataService services.RNibDataService, ranStatusChangeManager managers.IRanStatusChangeManager, x2ResetResponseExtractor converters.IX2ResetResponseExtractor) X2ResetResponseHandler { + return X2ResetResponseHandler{ + logger: logger, + rnibDataService: rnibDataService, + ranStatusChangeManager: ranStatusChangeManager, + extractor: x2ResetResponseExtractor, + } +} + +func (h X2ResetResponseHandler) Handle(request *models.NotificationRequest) { + ranName := request.RanName + h.logger.Infof("#X2ResetResponseHandler.Handle - RAN name: %s - received reset response. Payload: %x", ranName, request.Payload) + + nodebInfo, err := h.rnibDataService.GetNodeb(ranName) + if err != nil { + h.logger.Errorf("#x2ResetResponseHandler.Handle - RAN name: %s - failed to retrieve nodebInfo entity. Error: %s", ranName, err) + return + } + + if nodebInfo.ConnectionStatus == entities.ConnectionStatus_SHUTTING_DOWN { + h.logger.Warnf("#X2ResetResponseHandler.Handle - RAN name: %s, connection status: %s - nodeB entity in incorrect state", nodebInfo.RanName, nodebInfo.ConnectionStatus) + h.logger.Infof("#X2ResetResponseHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + if nodebInfo.ConnectionStatus != entities.ConnectionStatus_CONNECTED { + h.logger.Errorf("#X2ResetResponseHandler.Handle - RAN name: %s, connection status: %s - nodeB entity in incorrect state", nodebInfo.RanName, nodebInfo.ConnectionStatus) + h.logger.Infof("#X2ResetResponseHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + isSuccessfulResetResponse, err := h.isSuccessfulResetResponse(ranName, request.Payload) + + h.logger.Infof("#X2ResetResponseHandler.Handle - Summary: elapsed time for receiving and handling reset request message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + + if err != nil || !isSuccessfulResetResponse { + return + } + + _ = h.ranStatusChangeManager.Execute(rmrCgo.RAN_RESTARTED, enums.RIC_TO_RAN, nodebInfo) +} + +func (h X2ResetResponseHandler) isSuccessfulResetResponse(ranName string, packedBuffer []byte) (bool, error) { + + criticalityDiagnostics, err := h.extractor.ExtractCriticalityDiagnosticsFromPdu(packedBuffer) + + if err != nil { + h.logger.Errorf("#X2ResetResponseHandler.isSuccessfulResetResponse - RAN name: %s - Failed extracting pdu: %s", ranName, err) + return false, err + } + + if criticalityDiagnostics != nil { + h.logger.Errorf("#X2ResetResponseHandler.isSuccessfulResetResponse - RAN name: %s - Unsuccessful RESET response message. Criticality diagnostics: %s", ranName, criticalityDiagnostics) + return false, nil + } + + h.logger.Infof("#X2ResetResponseHandler.isSuccessfulResetResponse - RAN name: %s - Successful RESET response message", ranName) + return true, nil +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_response_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_response_handler_test.go new file mode 100644 index 0000000..7a99903 --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2_reset_response_handler_test.go @@ -0,0 +1,185 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +import ( + "e2mgr/configuration" + "e2mgr/converters" + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "testing" + "time" +) + +const ( + SuccessfulX2ResetResponsePackedPdu = "200700080000010011400100" + SuccessfulX2ResetResponsePackedPduEmptyIEs = "20070003000000" + UnsuccessfulX2ResetResponsePackedPdu = "2007000d00000100114006080000000d00" +) + +func initX2ResetResponseHandlerTest(t *testing.T) (X2ResetResponseHandler, *mocks.RnibReaderMock, *mocks.RmrMessengerMock) { + log, err := logger.InitLogger(logger.InfoLevel) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + if err != nil { + t.Errorf("#initX2ResetResponseHandlerTest - failed to initialize logger, error: %s", err) + } + readerMock := &mocks.RnibReaderMock{} + + rnibDataService := services.NewRnibDataService(log, config, readerMock, nil) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, log) + ranStatusChangeManager := managers.NewRanStatusChangeManager(log, rmrSender) + + h := NewX2ResetResponseHandler(log, rnibDataService, ranStatusChangeManager, converters.NewX2ResetResponseExtractor(log)) + return h, readerMock, rmrMessengerMock +} + +func TestX2ResetResponseSuccess(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + var payload []byte + _, err := fmt.Sscanf(SuccessfulX2ResetResponsePackedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var rnibErr error + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + ranRestartedMbuf := getRanRestartedMbuf(nb.NodeType, enums.RIC_TO_RAN) + rmrMessengerMock.On("SendMsg", ranRestartedMbuf, true).Return(&rmrCgo.MBuf{}, err) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", ranRestartedMbuf, true) +} + +func TestX2ResetResponseSuccessEmptyIEs(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + var payload []byte + _, err := fmt.Sscanf(SuccessfulX2ResetResponsePackedPduEmptyIEs, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var rnibErr error + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + ranRestartedMbuf := getRanRestartedMbuf(nb.NodeType, enums.RIC_TO_RAN) + rmrMessengerMock.On("SendMsg", ranRestartedMbuf, true).Return(&rmrCgo.MBuf{}, err) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", ranRestartedMbuf, true) +} + +func TestX2ResetResponseShuttingDown(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + var payload []byte + _, err := fmt.Sscanf(SuccessfulX2ResetResponsePackedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN, NodeType: entities.Node_ENB} + var rnibErr error + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestX2ResetResponseInvalidConnectionStatus(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + var payload []byte + _, err := fmt.Sscanf(SuccessfulX2ResetResponsePackedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, NodeType: entities.Node_ENB} + var rnibErr error + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestX2ResetResponseError(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + var payload []byte + _, err := fmt.Sscanf(UnsuccessfulX2ResetResponsePackedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var rnibErr error + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestX2ResetResponseGetNodebFailure(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + + var payload []byte + _, err := fmt.Sscanf(SuccessfulX2ResetResponsePackedPdu, "%x", &payload) + if err != nil { + t.Fatalf("Failed converting packed pdu. Error: %v\n", err) + } + + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + + var nb *entities.NodebInfo + rnibErr := common.NewResourceNotFoundError("nodeb not found") + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} + +func TestX2ResetResponseUnpackFailure(t *testing.T) { + h, readerMock, rmrMessengerMock := initX2ResetResponseHandlerTest(t) + + payload := []byte("Invalid payload") + var xAction []byte + notificationRequest := models.NotificationRequest{RanName: RanName, Len: len(payload), Payload: payload, StartTime: time.Now(), TransactionId: xAction} + nb := &entities.NodebInfo{RanName: RanName, ConnectionStatus: entities.ConnectionStatus_CONNECTED, NodeType: entities.Node_ENB} + var rnibErr error + readerMock.On("GetNodeb", RanName).Return(nb, rnibErr) + + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertNotCalled(t, "SendMsg") +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2enb_configuration_update_handler.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2enb_configuration_update_handler.go new file mode 100644 index 0000000..c9efe0d --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2enb_configuration_update_handler.go @@ -0,0 +1,71 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlers + +// #cgo CFLAGS: -I../../3rdparty/asn1codec/inc/ -I../../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../../3rdparty/asn1codec/lib/ -L../../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +import "C" +import ( + "e2mgr/converters" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services/rmrsender" + "e2mgr/utils" +) + +type X2EnbConfigurationUpdateHandler struct { + logger *logger.Logger + rmrSender *rmrsender.RmrSender +} + +func NewX2EnbConfigurationUpdateHandler(logger *logger.Logger, rmrSender *rmrsender.RmrSender) X2EnbConfigurationUpdateHandler { + return X2EnbConfigurationUpdateHandler{ + logger: logger, + rmrSender: rmrSender, + } +} + +func (h X2EnbConfigurationUpdateHandler) Handle(request *models.NotificationRequest) { + + refinedMessage, err := converters.UnpackX2apPduAndRefine(h.logger, e2pdus.MaxAsn1CodecAllocationBufferSize, request.Len, request.Payload, e2pdus.MaxAsn1CodecMessageBufferSize) + + if err != nil { + h.logger.Errorf("#x2enb_configuration_update_handler.Handle - unpack failed. Error: %v", err) + + msg := models.NewRmrMessage(rmrCgo.RIC_ENB_CONFIGURATION_UPDATE_FAILURE, request.RanName, e2pdus.PackedX2EnbConfigurationUpdateFailure, request.TransactionId, request.GetMsgSrc()) + _ = h.rmrSender.Send(msg) + + h.logger.Infof("#X2EnbConfigurationUpdateHandler.Handle - Summary: elapsed time for receiving and handling enb configuration update initiating message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) + return + } + + h.logger.Infof("#x2enb_configuration_update_handler.Handle - Enb configuration update initiating message received") + h.logger.Debugf("#x2enb_configuration_update_handler.Handle - Enb configuration update initiating message payload: %s", refinedMessage.PduPrint) + + msg := models.NewRmrMessage(rmrCgo.RIC_ENB_CONFIGURATION_UPDATE_ACK, request.RanName, e2pdus.PackedX2EnbConfigurationUpdateAck,request.TransactionId, request.GetMsgSrc()) + _ = h.rmrSender.Send(msg) + + h.logger.Infof("#X2EnbConfigurationUpdateHandler.Handle - Summary: elapsed time for receiving and handling enb configuration update initiating message from E2 terminator: %f ms", utils.ElapsedTime(request.StartTime)) +} diff --git a/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2enb_configuration_update_handler_test.go b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2enb_configuration_update_handler_test.go new file mode 100644 index 0000000..5a48a8d --- /dev/null +++ b/setup/e2mgr/E2Manager/handlers/rmrmsghandlers/x2enb_configuration_update_handler_test.go @@ -0,0 +1,77 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlers + +import ( + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "fmt" + "testing" + "time" + "unsafe" +) + +const PackedX2EnbConfigurationUpdateAck = "200800080000010011400100" +const PackedX2EnbConfigurationUpdateFailure = "400800080000010005400142" + +func initX2EnbConfigurationUpdateHandlerTest(t *testing.T) (X2EnbConfigurationUpdateHandler, *mocks.RmrMessengerMock) { + log := initLog(t) + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, log) + h := NewX2EnbConfigurationUpdateHandler(log, rmrSender) + return h, rmrMessengerMock +} + +func TestHandleX2EnbConfigUpdateSuccess(t *testing.T) { + h, rmrMessengerMock := initX2EnbConfigurationUpdateHandlerTest(t) + + ranName := "test" + xAction := []byte("123456aa") + var payload []byte + _, _ = fmt.Sscanf(PackedX2EnbConfigurationUpdateAck, "%x", &payload) + var msgSrc unsafe.Pointer + + mBuf := rmrCgo.NewMBuf(rmrCgo.RIC_ENB_CONFIGURATION_UPDATE_ACK, len(payload), ranName, &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: mBuf.Len, Payload: *mBuf.Payload, + StartTime: time.Now(), TransactionId:xAction} + var err error + rmrMessengerMock.On("SendMsg", mBuf, true).Return(&rmrCgo.MBuf{}, err) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", mBuf, true) +} + +func TestHandleX2EnbConfigUpdateFailure(t *testing.T) { + h, rmrMessengerMock := initX2EnbConfigurationUpdateHandlerTest(t) + + ranName := "test" + xAction := []byte("123456aa") + + var payload []byte + _, _ = fmt.Sscanf(PackedX2EnbConfigurationUpdateFailure, "%x", &payload) + var msgSrc unsafe.Pointer + + mBuf := rmrCgo.NewMBuf(rmrCgo.RIC_ENB_CONFIGURATION_UPDATE_FAILURE, len(payload), ranName, &payload, &xAction, msgSrc) + notificationRequest := models.NotificationRequest{RanName: mBuf.Meid, Len: 0, Payload: []byte{0}, + StartTime: time.Now(), TransactionId:xAction} + rmrMessengerMock.On("SendMsg", mBuf, true).Return(&rmrCgo.MBuf{}, fmt.Errorf("send failure")) + h.Handle(¬ificationRequest) + rmrMessengerMock.AssertCalled(t, "SendMsg", mBuf, true) +} diff --git a/setup/e2mgr/E2Manager/httpserver/http_server.go b/setup/e2mgr/E2Manager/httpserver/http_server.go new file mode 100644 index 0000000..a022ecb --- /dev/null +++ b/setup/e2mgr/E2Manager/httpserver/http_server.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpserver + +import ( + "e2mgr/controllers" + "e2mgr/logger" + "fmt" + "github.com/gorilla/mux" + "net/http" +) + +func Run(log *logger.Logger, port int, rootController controllers.IRootController, nodebController controllers.INodebController, e2tController controllers.IE2TController) error { + + router := mux.NewRouter(); + initializeRoutes(router, rootController, nodebController, e2tController) + + addr := fmt.Sprintf(":%d", port) + + err := http.ListenAndServe(addr, router) + + log.Errorf("#http_server.Run - Fail initiating HTTP server. Error: %v", err) + return err +} + +func initializeRoutes(router *mux.Router, rootController controllers.IRootController, nodebController controllers.INodebController, e2tController controllers.IE2TController) { + r := router.PathPrefix("/v1").Subrouter() + r.HandleFunc("/health", rootController.HandleHealthCheckRequest).Methods(http.MethodGet) + + rr := r.PathPrefix("/nodeb").Subrouter() + rr.HandleFunc("/ids", nodebController.GetNodebIdList).Methods(http.MethodGet) + rr.HandleFunc("/{ranName}", nodebController.GetNodeb).Methods(http.MethodGet) + rr.HandleFunc("/{ranName}/update", nodebController.UpdateGnb).Methods(http.MethodPut) + rr.HandleFunc("/shutdown", nodebController.Shutdown).Methods(http.MethodPut) + rrr := r.PathPrefix("/e2t").Subrouter() + rrr.HandleFunc("/list", e2tController.GetE2TInstances).Methods(http.MethodGet) +} diff --git a/setup/e2mgr/E2Manager/httpserver/http_server_test.go b/setup/e2mgr/E2Manager/httpserver/http_server_test.go new file mode 100644 index 0000000..3c0620b --- /dev/null +++ b/setup/e2mgr/E2Manager/httpserver/http_server_test.go @@ -0,0 +1,144 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpserver + +import ( + "e2mgr/logger" + "e2mgr/mocks" + "github.com/gorilla/mux" + "github.com/stretchr/testify/assert" + "net/http" + "net/http/httptest" + "testing" + "time" +) + +func setupRouterAndMocks() (*mux.Router, *mocks.RootControllerMock, *mocks.NodebControllerMock, *mocks.E2TControllerMock) { + rootControllerMock := &mocks.RootControllerMock{} + rootControllerMock.On("HandleHealthCheckRequest").Return(nil) + + nodebControllerMock := &mocks.NodebControllerMock{} + nodebControllerMock.On("Shutdown").Return(nil) + nodebControllerMock.On("GetNodeb").Return(nil) + nodebControllerMock.On("GetNodebIdList").Return(nil) + + e2tControllerMock := &mocks.E2TControllerMock{} + + e2tControllerMock.On("GetE2TInstances").Return(nil) + + router := mux.NewRouter() + initializeRoutes(router, rootControllerMock, nodebControllerMock, e2tControllerMock) + return router, rootControllerMock, nodebControllerMock, e2tControllerMock +} + +func TestRouteGetNodebIds(t *testing.T) { + router, _, nodebControllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/nodeb/ids", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + nodebControllerMock.AssertNumberOfCalls(t, "GetNodebIdList", 1) +} + +func TestRouteGetNodebRanName(t *testing.T) { + router, _, nodebControllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/nodeb/ran1", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusOK, rr.Code, "handler returned wrong status code") + assert.Equal(t, "ran1", rr.Body.String(), "handler returned wrong body") + nodebControllerMock.AssertNumberOfCalls(t, "GetNodeb", 1) +} + +func TestRouteGetHealth(t *testing.T) { + router, rootControllerMock, _, _ := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/health", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + rootControllerMock.AssertNumberOfCalls(t, "HandleHealthCheckRequest", 1) +} + +func TestRoutePutNodebShutdown(t *testing.T) { + router, _, nodebControllerMock, _ := setupRouterAndMocks() + + req, err := http.NewRequest("PUT", "/v1/nodeb/shutdown", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + nodebControllerMock.AssertNumberOfCalls(t, "Shutdown", 1) +} + +func TestRouteNotFound(t *testing.T) { + router, _, _,_ := setupRouterAndMocks() + + req, err := http.NewRequest("GET", "/v1/no/such/route", nil) + if err != nil { + t.Fatal(err) + } + rr := httptest.NewRecorder() + router.ServeHTTP(rr, req) + + assert.Equal(t, http.StatusNotFound, rr.Code, "handler returned wrong status code") +} + +func TestRunError(t *testing.T) { + log := initLog(t) + err := Run(log, 1234567, &mocks.RootControllerMock{}, &mocks.NodebControllerMock{}, &mocks.E2TControllerMock{}) + assert.NotNil(t, err) +} + +func TestRun(t *testing.T) { + log := initLog(t) + _, rootControllerMock, nodebControllerMock, e2tControllerMock := setupRouterAndMocks() + go Run(log, 11223, rootControllerMock, nodebControllerMock, e2tControllerMock) + + time.Sleep(time.Millisecond * 100) + resp, err := http.Get("http://localhost:11223/v1/health") + if err != nil { + t.Fatalf("failed to perform GET to http://localhost:11223/v1/health") + } + assert.Equal(t, 200, resp.StatusCode) +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#initLog test - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/kube_config.yml b/setup/e2mgr/E2Manager/kube_config.yml new file mode 100644 index 0000000..0163244 --- /dev/null +++ b/setup/e2mgr/E2Manager/kube_config.yml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: Config +users: +- name: someuser + user: + token: sometoken +clusters: +- cluster: + certificate-authority-data: somedata + server: 10.0.2.15:59009 + name: self-hosted-cluster +contexts: +- context: + cluster: self-hosted-cluster + user: svcs-acct-dply + name: svcs-acct-context +current-context: svcs-acct-context diff --git a/setup/e2mgr/E2Manager/logger/logger.go b/setup/e2mgr/E2Manager/logger/logger.go new file mode 100644 index 0000000..0cdfd2f --- /dev/null +++ b/setup/e2mgr/E2Manager/logger/logger.go @@ -0,0 +1,187 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package logger + +import ( + "fmt" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "strings" + "time" +) + +type Logger struct { + Logger *zap.Logger +} + +// Copied from zap logger +// +// A Level is a logging priority. Higher levels are more important. +type LogLevel int8 + +const ( + // DebugLevel logs are typically voluminous, and are usually disabled in + // production. + DebugLevel LogLevel = iota - 1 + // InfoLevel is the default logging priority. + InfoLevel + // WarnLevel logs are more important than Info, but don't need individual + // human review. + WarnLevel + // ErrorLevel logs are high-priority. If an application is running smoothly, + // it shouldn't generate any error-level logs. + ErrorLevel + // DPanicLevel logs are particularly important errors. In development the + // logger panics after writing the message. + DPanicLevel + // PanicLevel logs a message, then panics. + PanicLevel + // FatalLevel logs a message, then calls os.Exit(1). + FatalLevel + + _minLevel = DebugLevel + _maxLevel = FatalLevel +) + +var logLevelTokenToLevel = map[string] LogLevel { + "debug" : DebugLevel, + "info": InfoLevel, + "warn": WarnLevel, + "error": ErrorLevel, + "dpanic": DPanicLevel, + "panic": PanicLevel, + "fatal": FatalLevel, +} + +func LogLevelTokenToLevel(level string) (LogLevel, bool) { + if level, ok := logLevelTokenToLevel[strings.TrimSpace(strings.ToLower(level))];ok { + return level, true + } + return _maxLevel+1, false +} + +func InitLogger(requested LogLevel) (*Logger, error) { + var logger *zap.Logger + var err error + switch requested { + case DebugLevel: + logger, err = initLoggerByLevel(zapcore.DebugLevel) + case InfoLevel: + logger, err = initLoggerByLevel(zapcore.InfoLevel) + case WarnLevel: + logger, err = initLoggerByLevel(zapcore.WarnLevel) + case ErrorLevel: + logger, err = initLoggerByLevel(zapcore.ErrorLevel) + case DPanicLevel: + logger, err = initLoggerByLevel(zapcore.DPanicLevel) + case PanicLevel: + logger, err = initLoggerByLevel(zapcore.PanicLevel) + case FatalLevel: + logger, err = initLoggerByLevel(zapcore.FatalLevel) + default: + err = fmt.Errorf("Invalid logging Level :%d",requested) + } + if err != nil { + return nil, err + } + return &Logger{Logger:logger}, nil + +} +func(l *Logger)Sync() error { + l.Debugf("#logger.Sync - Going to flush buffered log") + return l.Logger.Sync() +} + +func (l *Logger)Infof(formatMsg string, a ...interface{}) { + if l.InfoEnabled() { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Info(msg, zap.Any("mdc", l.getTimeStampMdc())) + } +} + +func (l *Logger)Debugf(formatMsg string, a ...interface{}) { + if l.DebugEnabled(){ + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Debug(msg, zap.Any("mdc", l.getTimeStampMdc())) + } +} + +func (l *Logger)Errorf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Error(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func (l *Logger)Warnf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Warn(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func (l *Logger) getTimeStampMdc() map[string]string { + timeStr := time.Now().Format("2006-01-02 15:04:05.000") + mdc := map[string]string{"time": timeStr} + return mdc +} + +func (l *Logger)InfoEnabled()bool{ + return l.Logger.Core().Enabled(zap.InfoLevel) +} + +func (l *Logger)DebugEnabled()bool{ + return l.Logger.Core().Enabled(zap.DebugLevel) +} + +func (l *Logger)DPanicf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.DPanic(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func initLoggerByLevel(l zapcore.Level) (*zap.Logger, error) { + cfg := zap.Config{ + Encoding: "json", + Level: zap.NewAtomicLevelAt(l), + OutputPaths: []string{"stdout"}, + ErrorOutputPaths: []string{"stderr"}, + EncoderConfig: zapcore.EncoderConfig{ + MessageKey: "msg", + + LevelKey: "crit", + EncodeLevel: zapcore.CapitalLevelEncoder, + + TimeKey: "ts", + EncodeTime: epochMillisIntegerTimeEncoder, + + CallerKey: "id", + EncodeCaller: e2ManagerCallerEncoder, + }, + } + return cfg.Build() +} + +func e2ManagerCallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { + enc.AppendString("E2Manager") +} + +func epochMillisIntegerTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { + nanos := t.UnixNano() + millis := int64(nanos) / int64(time.Millisecond) + enc.AppendInt64(millis) +} + diff --git a/setup/e2mgr/E2Manager/logger/logger_test.go b/setup/e2mgr/E2Manager/logger/logger_test.go new file mode 100644 index 0000000..d1d00d2 --- /dev/null +++ b/setup/e2mgr/E2Manager/logger/logger_test.go @@ -0,0 +1,293 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package logger + +import ( + "bytes" + "github.com/stretchr/testify/assert" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "io" + "os" + "testing" +) + +func TestInitDebugLoggerSuccess(t *testing.T) { + log, err := InitLogger(DebugLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.DebugLevel)) +} + +func TestInitInfoLoggerSuccess(t *testing.T) { + log, err := InitLogger(InfoLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.InfoLevel)) +} + +func TestInitWarnLoggerSuccess(t *testing.T) { + log, err := InitLogger(WarnLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.WarnLevel)) +} + +func TestInitErrorLoggerSuccess(t *testing.T) { + log, err := InitLogger(ErrorLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.ErrorLevel)) +} + +func TestInitDPanicLoggerSuccess(t *testing.T) { + log, err := InitLogger(DPanicLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.DPanicLevel)) +} + +func TestInitPanicLoggerSuccess(t *testing.T) { + log, err := InitLogger(PanicLevel) + assert.Nil(t, err) + assert.NotNil(t, log) + assert.True(t, log.Logger.Core().Enabled(zap.PanicLevel)) +} + +func TestInitInfoLoggerFailure(t *testing.T) { + log, err := InitLogger(99) + assert.NotNil(t, err) + assert.Nil(t, log) +} + +func TestSyncSuccess(t *testing.T){ + logFile, err := os.Create("./loggerTest.txt") + if err != nil{ + t.Errorf("logger_test.TestSyncSuccess - failed to create file, error: %s", err) + } + old := os.Stdout + os.Stdout = logFile + log, err := InitLogger(DebugLevel) + if err != nil { + t.Errorf("logger_test.TestSyncSuccess - failed to initialize logger, error: %s", err) + } + err = log.Sync() + assert.Nil(t, err) + + os.Stdout = old + logFile, err = os.Open("./loggerTest.txt") + if err != nil{ + t.Errorf("logger_test.TestSyncSuccess - failed to open file, error: %s", err) + } + var buf bytes.Buffer + _, err = io.Copy(&buf, logFile) + if err != nil { + t.Errorf("logger_test.TestSyncSuccess - failed to copy bytes, error: %s", err) + } + debugRecord,_ :=buf.ReadString('\n') + errorRecord,_ :=buf.ReadString('\n') + + assert.NotEmpty(t, debugRecord) + assert.Empty(t, errorRecord) + err = os.Remove("./loggerTest.txt") + if err != nil { + t.Errorf("logger_test.TestSyncSuccess - failed to remove file, error: %s", err) + } + +} + +func TestSyncFailure(t *testing.T){ + log, err := InitLogger(DebugLevel) + err = log.Sync() + assert.NotNil(t, err) +} + +func TestDebugEnabledFalse(t *testing.T){ + entryNum, log := countRecords(InfoLevel, t) + assert.False(t, log.DebugEnabled()) + assert.Equal(t,3, entryNum) +} + +func TestDebugEnabledTrue(t *testing.T){ + entryNum, log := countRecords(DebugLevel, t) + assert.True(t, log.DebugEnabled()) + assert.Equal(t,4, entryNum) +} + +func TestDPanicfDebugLevel(t *testing.T){ + assert.True(t,validateRecordExists(DebugLevel, zap.DPanicLevel, t)) +} + +func TestDPanicfInfoLevel(t *testing.T){ + assert.True(t,validateRecordExists(InfoLevel, zap.DPanicLevel, t)) +} + +func TestErrorfDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.ErrorLevel, t)) +} + +func TestErrorfInfoLevel(t *testing.T) { + assert.True(t,validateRecordExists(InfoLevel, zap.ErrorLevel, t)) +} + +func TestInfofDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.InfoLevel, t)) +} + +func TestInfofInfoLevel(t *testing.T) { + assert.True(t,validateRecordExists(InfoLevel, zap.InfoLevel, t)) +} + +func TestDebugfDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.DebugLevel, t)) +} + +func TestDebugfInfoLevel(t *testing.T) { + assert.False(t,validateRecordExists(InfoLevel, zap.DebugLevel, t)) +} + +func TestInfofFatalLevel(t *testing.T) { + assert.False(t,validateRecordExists(FatalLevel, zap.InfoLevel, t)) +} + +func TestDebugfFatalLevel(t *testing.T) { + assert.False(t,validateRecordExists(FatalLevel, zap.DebugLevel, t)) +} + +func TestWarnfWarnLevel(t *testing.T) { + assert.True(t,validateRecordExists(WarnLevel, zap.WarnLevel, t)) +} + +func TestWarnfDebugLevel(t *testing.T) { + assert.True(t,validateRecordExists(DebugLevel, zap.WarnLevel, t)) +} + +func TestWarnfInfoLevel(t *testing.T) { + assert.True(t,validateRecordExists(InfoLevel, zap.WarnLevel, t)) +} + +func TestWarnfFatalLevel(t *testing.T) { + assert.False(t,validateRecordExists(FatalLevel, zap.WarnLevel, t)) +} + +func TestLogLevelTokenToLevel(t *testing.T) { + level, ok := LogLevelTokenToLevel("deBug") + assert.True(t, ok) + assert.True(t, level == DebugLevel) + + level, ok = LogLevelTokenToLevel("infO") + assert.True(t, ok) + assert.True(t, level == InfoLevel) + + level, ok = LogLevelTokenToLevel("Warn") + assert.True(t, ok) + assert.True(t, level == WarnLevel) + + level, ok = LogLevelTokenToLevel("eRror") + assert.True(t, ok) + assert.True(t, level == ErrorLevel) + + level, ok = LogLevelTokenToLevel("Dpanic ") + assert.True(t, ok) + assert.True(t, level == DPanicLevel) + + level, ok = LogLevelTokenToLevel(" panic ") + assert.True(t, ok) + assert.True(t, level == PanicLevel) + + level, ok = LogLevelTokenToLevel("fatal") + assert.True(t, ok) + assert.True(t, level == FatalLevel) + + level, ok = LogLevelTokenToLevel("zzz") + assert.False(t, ok) + assert.True(t, level > FatalLevel) + +} +func countRecords(logLevel LogLevel, t *testing.T) (int, *Logger){ + old := os.Stdout + r, w, _ :=os.Pipe() + os.Stdout = w + log, err := InitLogger(logLevel) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to initialize logger, error: %s", err) + } + log.Infof("%v, %v, %v", 1, "abc", 0.1) + log.Debugf("%v, %v, %v", 1, "abc", 0.1) + log.Errorf("%v, %v, %v", 1, "abc", 0.1) + log.DPanicf("%v, %v, %v", 1, "abc", 0.1) + err = w.Close() + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to close writer, error: %s", err) + } + os.Stdout = old + var buf bytes.Buffer + _, err = io.Copy(&buf, r) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to copy bytes, error: %s", err) + } + entryNum := 0 + s,_:= buf.ReadString('\n') + for len(s) > 0{ + entryNum +=1 + s,_= buf.ReadString('\n') + } + return entryNum, log +} + +func validateRecordExists(logLevel LogLevel, recordLevel zapcore.Level, t *testing.T) bool { + old := os.Stdout + r, w, _ :=os.Pipe() + os.Stdout = w + log, err := InitLogger(logLevel) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to initialize logger, error: %s", err) + } + switch recordLevel{ + case zap.DebugLevel: + log.Debugf("%v, %v, %v", 1, "abc", 0.1) + case zap.InfoLevel: + log.Infof("%v, %v, %v", 1, "abc", 0.1) + case zap.WarnLevel: + log.Warnf("%v, %v, %v", 1, "abc", 0.1) + case zap.ErrorLevel: + log.Errorf("%v, %v, %v", 1, "abc", 0.1) + case zap.DPanicLevel: + log.DPanicf("%v, %v, %v", 1, "abc", 0.1) + } + err = w.Close() + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to close writer, error: %s", err) + } + os.Stdout = old + var buf bytes.Buffer + _, err = io.Copy(&buf, r) + if err != nil { + t.Errorf("logger_test.TestSyncFailure - failed to copy bytes, error: %s", err) + } + entryNum := 0 + s,_:= buf.ReadString('\n') + for len(s) > 0{ + entryNum +=1 + s,_= buf.ReadString('\n') + } + return entryNum == 1 +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/managers/e2t_association_manager.go b/setup/e2mgr/E2Manager/managers/e2t_association_manager.go new file mode 100644 index 0000000..8958241 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_association_manager.go @@ -0,0 +1,134 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/clients" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type E2TAssociationManager struct { + logger *logger.Logger + rnibDataService services.RNibDataService + e2tInstanceManager IE2TInstancesManager + rmClient clients.IRoutingManagerClient +} + +func NewE2TAssociationManager(logger *logger.Logger, rnibDataService services.RNibDataService, e2tInstanceManager IE2TInstancesManager, rmClient clients.IRoutingManagerClient) *E2TAssociationManager { + return &E2TAssociationManager{ + logger: logger, + rnibDataService: rnibDataService, + e2tInstanceManager: e2tInstanceManager, + rmClient: rmClient, + } +} + +func (m *E2TAssociationManager) AssociateRan(e2tAddress string, nodebInfo *entities.NodebInfo) error { + ranName := nodebInfo.RanName + m.logger.Infof("#E2TAssociationManager.AssociateRan - Associating RAN %s to E2T Instance address: %s", ranName, e2tAddress) + + err := m.associateRanAndUpdateNodeb(e2tAddress, nodebInfo) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.AssociateRan - RoutingManager failure: Failed to associate RAN %s to E2T %s. Error: %s", nodebInfo, e2tAddress, err) + return err + } + err = m.e2tInstanceManager.AddRansToInstance(e2tAddress, []string{ranName}) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.AssociateRan - RAN name: %s - Failed to add RAN to E2T instance %s. Error: %s", ranName, e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + m.logger.Infof("#E2TAssociationManager.AssociateRan - successfully associated RAN %s with E2T %s", ranName, e2tAddress) + return nil +} + +func (m *E2TAssociationManager) associateRanAndUpdateNodeb(e2tAddress string, nodebInfo *entities.NodebInfo) error { + + rmErr := m.rmClient.AssociateRanToE2TInstance(e2tAddress, nodebInfo.RanName) + if rmErr != nil { + nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + } else { + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nodebInfo.AssociatedE2TInstanceAddress = e2tAddress + } + rNibErr := m.rnibDataService.UpdateNodebInfo(nodebInfo) + if rNibErr != nil { + m.logger.Errorf("#E2TAssociationManager.associateRanAndUpdateNodeb - RAN name: %s - Failed to update nodeb entity in rNib. Error: %s", nodebInfo.RanName, rNibErr) + } + var err error + if rmErr != nil { + err = e2managererrors.NewRoutingManagerError() + } else if rNibErr != nil{ + err = e2managererrors.NewRnibDbError() + } + return err +} + +func (m *E2TAssociationManager) DissociateRan(e2tAddress string, ranName string) error { + m.logger.Infof("#E2TAssociationManager.DissociateRan - Dissociating RAN %s from E2T Instance address: %s", ranName, e2tAddress) + + nodebInfo, rnibErr := m.rnibDataService.GetNodeb(ranName) + if rnibErr != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RAN name: %s - Failed fetching RAN from rNib. Error: %s", ranName, rnibErr) + return rnibErr + } + + nodebInfo.AssociatedE2TInstanceAddress = "" + rnibErr = m.rnibDataService.UpdateNodebInfo(nodebInfo) + if rnibErr != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RAN name: %s - Failed to update RAN.AssociatedE2TInstanceAddress in rNib. Error: %s", ranName, rnibErr) + return rnibErr + } + + err := m.e2tInstanceManager.RemoveRanFromInstance(ranName, e2tAddress) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RAN name: %s - Failed to remove RAN from E2T instance %s. Error: %s", ranName, e2tAddress, err) + return err + } + + err = m.rmClient.DissociateRanE2TInstance(e2tAddress, ranName) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.DissociateRan - RoutingManager failure: Failed to dissociate RAN %s from E2T %s. Error: %s", ranName, e2tAddress, err) + } else { + m.logger.Infof("#E2TAssociationManager.DissociateRan - successfully dissociated RAN %s from E2T %s", ranName, e2tAddress) + } + return nil +} + +func (m *E2TAssociationManager) RemoveE2tInstance(e2tInstance *entities.E2TInstance) error { + m.logger.Infof("#E2TAssociationManager.RemoveE2tInstance - Removing E2T %s and dessociating its associated RANs.", e2tInstance.Address) + + err := m.rmClient.DeleteE2TInstance(e2tInstance.Address, e2tInstance.AssociatedRanList) + if err != nil { + m.logger.Warnf("#E2TAssociationManager.RemoveE2tInstance - RoutingManager failure: Failed to delete E2T %s. Error: %s", e2tInstance.Address, err) + // log and continue + } + + err = m.e2tInstanceManager.RemoveE2TInstance(e2tInstance.Address) + if err != nil { + m.logger.Errorf("#E2TAssociationManager.RemoveE2tInstance - Failed to remove E2T %s. Error: %s", e2tInstance.Address, err) + return err + } + + m.logger.Infof("#E2TAssociationManager.RemoveE2tInstance - E2T %s successfully removed.", e2tInstance.Address) + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/e2t_association_manager_test.go b/setup/e2mgr/E2Manager/managers/e2t_association_manager_test.go new file mode 100644 index 0000000..d515cd5 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_association_manager_test.go @@ -0,0 +1,383 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "io/ioutil" + "net/http" + "testing" +) + +const RanName = "test" + +func initE2TAssociationManagerTest(t *testing.T) (*E2TAssociationManager, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.HttpClientMock) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + + e2tInstancesManager := NewE2TInstancesManager(rnibDataService, log) + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + manager := NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient) + + return manager, readerMock, writerMock, httpClientMock +} + +func mockHttpClient(httpClientMock *mocks.HttpClientMock, apiSuffix string, isSuccessful bool) { + data := models.RoutingManagerE2TDataList{models.NewRoutingManagerE2TData(E2TAddress, RanName)} + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + var respStatusCode int + if isSuccessful { + respStatusCode = http.StatusCreated + } else { + respStatusCode = http.StatusBadRequest + } + httpClientMock.On("Post", apiSuffix, "application/json", body).Return(&http.Response{StatusCode: respStatusCode, Body: respBody}, nil) +} + +func TestAssociateRanSuccess(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + e2tInstance := &entities.E2TInstance{Address: E2TAddress} + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + updatedE2tInstance := *e2tInstance + updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName) + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + + err := manager.AssociateRan(E2TAddress, nb) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestAssociateRanRoutingManagerError(t *testing.T) { + manager, _, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, false) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + writerMock.On("UpdateNodebInfo", nb).Return(nil) + + err := manager.AssociateRan(E2TAddress, nb) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RoutingManagerError{}, err) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestAssociateRanUpdateNodebError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError()) + + err := manager.AssociateRan(E2TAddress, nb) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestAssociateRanGetE2tInstanceError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + var e2tInstance *entities.E2TInstance + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test")) + + err := manager.AssociateRan(E2TAddress, nb) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestAssociateRanSaveE2tInstanceError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.AssociateRanToE2TInstanceApiSuffix, true) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: ""} + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = E2TAddress + updatedNb.ConnectionStatus = entities.ConnectionStatus_CONNECTED + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + e2tInstance := &entities.E2TInstance{Address: E2TAddress} + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + updatedE2tInstance := *e2tInstance + updatedE2tInstance.AssociatedRanList = append(updatedE2tInstance.AssociatedRanList, RanName) + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test")) + + err := manager.AssociateRan(E2TAddress, nb) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestDissociateRanSuccess(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, true) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + e2tInstance := &entities.E2TInstance{Address: E2TAddress} + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + updatedE2tInstance := *e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + + err := manager.DissociateRan(E2TAddress, RanName) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestDissociateRanGetNodebError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + var nb *entities.NodebInfo + readerMock.On("GetNodeb", RanName).Return(nb, e2managererrors.NewRnibDbError()) + + err := manager.DissociateRan(E2TAddress, RanName) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestDissociateRanUpdateNodebError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNb).Return(e2managererrors.NewRnibDbError()) + + err := manager.DissociateRan(E2TAddress, RanName) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestDissociateRanGetE2tInstanceError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + var e2tInstance *entities.E2TInstance + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, errors.New("test")) + + err := manager.DissociateRan(E2TAddress, RanName) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestDissociateRanSaveE2tInstanceError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + e2tInstance := &entities.E2TInstance{Address: E2TAddress} + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + updatedE2tInstance := *e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(errors.New("test")) + + err := manager.DissociateRan(E2TAddress, RanName) + + assert.NotNil(t, err) + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestDissociateRanRoutingManagerError(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClient(httpClientMock, clients.DissociateRanE2TInstanceApiSuffix, false) + nb := &entities.NodebInfo{RanName: RanName, AssociatedE2TInstanceAddress: E2TAddress} + readerMock.On("GetNodeb", RanName).Return(nb, nil) + updatedNb := *nb + updatedNb.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNb).Return(nil) + e2tInstance := &entities.E2TInstance{Address: E2TAddress} + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, RanName) + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + updatedE2tInstance := *e2tInstance + updatedE2tInstance.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &updatedE2tInstance).Return(nil) + + err := manager.DissociateRan(E2TAddress, RanName) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestRemoveE2tInstanceSuccessWithOrphans(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + + ranNamesToBeDissociated := []string{RanName, "test1"} + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, ranNamesToBeDissociated, nil) + mockHttpClientDelete(httpClientMock, data, true) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{} + writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) + + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:ranNamesToBeDissociated} + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestRemoveE2tInstanceFailureRoutingManager(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) + mockHttpClientDelete(httpClientMock, data, false) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{} + writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) + + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:[]string{"test1"}} + //readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewRnibDbError()) + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestRemoveE2tInstanceFailureInE2TInstanceManager(t *testing.T) { + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1"}, nil) + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + mockHttpClientDelete(httpClientMock, data, true) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + var e2tAddresses []string + readerMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError()) + + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList:[]string{"test1"}} + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.NotNil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestRemoveE2tInstanceFailureInE2tInstanceAddRansToInstance(t *testing.T) { + manager, readerMock, writerMock, httpClientMock := initE2TAssociationManagerTest(t) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, nil, nil) + mockHttpClientDelete(httpClientMock, data, true) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress, E2TAddress2, E2TAddress3} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{E2TAddress2, E2TAddress3} + writerMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) + + e2tInstance1 := &entities.E2TInstance{Address: E2TAddress} + err := manager.RemoveE2tInstance(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func mockHttpClientDelete(httpClientMock *mocks.HttpClientMock, data *models.RoutingManagerDeleteRequestModel, isSuccessful bool) { + + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + var respStatusCode int + if isSuccessful { + respStatusCode = http.StatusCreated + } else { + respStatusCode = http.StatusBadRequest + } + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: respStatusCode, Body: respBody}, nil) +} diff --git a/setup/e2mgr/E2Manager/managers/e2t_instances_manager.go b/setup/e2mgr/E2Manager/managers/e2t_instances_manager.go new file mode 100644 index 0000000..982524c --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_instances_manager.go @@ -0,0 +1,449 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "math" + "sync" + "time" +) + +type E2TInstancesManager struct { + rnibDataService services.RNibDataService + logger *logger.Logger + mux sync.Mutex +} + +type IE2TInstancesManager interface { + GetE2TAddresses() ([]string, error) + GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error) + GetE2TInstances() ([]*entities.E2TInstance, error) + GetE2TInstancesNoLogs() ([]*entities.E2TInstance, error) + AddE2TInstance(e2tAddress string, podName string) error + RemoveE2TInstance(e2tAddress string) error + SelectE2TInstance() (string, error) + AddRansToInstance(e2tAddress string, ranNames []string) error + RemoveRanFromInstance(ranName string, e2tAddress string) error + ResetKeepAliveTimestamp(e2tAddress string) error + ClearRansOfAllE2TInstances() error + SetE2tInstanceState(e2tAddress string, currentState entities.E2TInstanceState, newState entities.E2TInstanceState) error +} + +func NewE2TInstancesManager(rnibDataService services.RNibDataService, logger *logger.Logger) *E2TInstancesManager { + return &E2TInstancesManager{ + rnibDataService: rnibDataService, + logger: logger, + } +} + +func (m *E2TInstancesManager) GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error) { + e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress) + + if err != nil { + + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + m.logger.Errorf("#E2TInstancesManager.GetE2TInstance - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err) + } else { + m.logger.Infof("#E2TInstancesManager.GetE2TInstance - E2T Instance address: %s not found on DB", e2tAddress) + } + } + + return e2tInstance, err +} + +func (m *E2TInstancesManager) GetE2TInstancesNoLogs() ([]*entities.E2TInstance, error) { + e2tAddresses, err := m.rnibDataService.GetE2TAddressesNoLogs() + + if err != nil { + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + m.logger.Errorf("#E2TInstancesManager.GetE2TInstancesNoLogs - Failed retrieving E2T addresses. error: %s", err) + return nil, e2managererrors.NewRnibDbError() + } + + return []*entities.E2TInstance{}, nil + } + + if len(e2tAddresses) == 0 { + return []*entities.E2TInstance{}, nil + } + + e2tInstances, err := m.rnibDataService.GetE2TInstancesNoLogs(e2tAddresses) + + if err != nil { + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + m.logger.Errorf("#E2TInstancesManager.GetE2TInstancesNoLogs - Failed retrieving E2T instances list. error: %s", err) + } + return e2tInstances, err + } + + return e2tInstances, nil +} + +func (m *E2TInstancesManager) GetE2TAddresses() ([]string, error) { + e2tAddresses, err := m.rnibDataService.GetE2TAddresses() + + if err != nil { + + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + m.logger.Errorf("#E2TInstancesManager.GetE2TAddresses - Failed retrieving E2T addresses. error: %s", err) + return nil, e2managererrors.NewRnibDbError() + } + + } + + return e2tAddresses, nil +} + +func (m *E2TInstancesManager) GetE2TInstances() ([]*entities.E2TInstance, error) { + e2tAddresses, err := m.GetE2TAddresses() + + if err != nil { + return nil, e2managererrors.NewRnibDbError() + } + + if len(e2tAddresses) == 0 { + m.logger.Infof("#E2TInstancesManager.GetE2TInstances - Empty E2T addresses list") + return []*entities.E2TInstance{}, nil + } + + e2tInstances, err := m.rnibDataService.GetE2TInstances(e2tAddresses) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.GetE2TInstances - Failed retrieving E2T instances list. error: %s", err) + return e2tInstances, e2managererrors.NewRnibDbError() + } + + if len(e2tInstances) == 0 { + m.logger.Warnf("#E2TInstancesManager.GetE2TInstances - Empty E2T instances list") + return e2tInstances, nil + } + + return e2tInstances, nil +} + +func (m *E2TInstancesManager) ResetKeepAliveTimestampsForAllE2TInstances() { + + e2tInstances, err := m.GetE2TInstances() + + if err != nil { + m.logger.Errorf("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - Couldn't reset timestamps due to a DB error") + return + } + + if len(e2tInstances) == 0 { + m.logger.Infof("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - No instances, ignoring reset") + return + } + + for _, v := range e2tInstances { + + if v.State != entities.Active { + continue + } + + v.KeepAliveTimestamp = time.Now().UnixNano() + + err := m.rnibDataService.SaveE2TInstance(v) + + if err != nil { + m.logger.Errorf("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - E2T address: %s - failed resetting e2t instance keep alive timestamp. error: %s", v.Address, err) + } + } + + m.logger.Infof("E2TInstancesManager.ResetKeepAliveTimestampForAllE2TInstances - Done with reset") +} + +func findActiveE2TInstanceWithMinimumAssociatedRans(e2tInstances []*entities.E2TInstance) *entities.E2TInstance { + var minInstance *entities.E2TInstance + minAssociatedRanCount := math.MaxInt32 + + for _, v := range e2tInstances { + if v.State == entities.Active && len(v.AssociatedRanList) < minAssociatedRanCount { + minAssociatedRanCount = len(v.AssociatedRanList) + minInstance = v + } + } + + return minInstance +} + +func (m *E2TInstancesManager) AddE2TInstance(e2tAddress string, podName string) error { + + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstance := entities.NewE2TInstance(e2tAddress, podName) + err := m.rnibDataService.SaveE2TInstance(e2tInstance) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.AddE2TInstance - E2T Instance address: %s - Failed saving E2T instance. error: %s", e2tInstance.Address, err) + return err + } + + e2tAddresses, err := m.rnibDataService.GetE2TAddresses() + + if err != nil { + + _, ok := err.(*common.ResourceNotFoundError) + + if !ok { + m.logger.Errorf("#E2TInstancesManager.AddE2TInstance - E2T Instance address: %s - Failed retrieving E2T addresses list. error: %s", e2tInstance.Address, err) + return err + } + } + + e2tAddresses = append(e2tAddresses, e2tInstance.Address) + + err = m.rnibDataService.SaveE2TAddresses(e2tAddresses) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.AddE2TInstance - E2T Instance address: %s - Failed saving E2T addresses list. error: %s", e2tInstance.Address, err) + return err + } + + m.logger.Infof("#E2TInstancesManager.AddE2TInstance - E2T Instance address: %s, pod name: %s - successfully added E2T instance", e2tInstance.Address, e2tInstance.PodName) + return nil +} + +func (m *E2TInstancesManager) RemoveRanFromInstance(ranName string, e2tAddress string) error { + + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.RemoveRanFromInstance - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + i := 0 // output index + for _, v := range e2tInstance.AssociatedRanList { + if v != ranName { + // copy and increment index + e2tInstance.AssociatedRanList[i] = v + i++ + } + } + + e2tInstance.AssociatedRanList = e2tInstance.AssociatedRanList[:i] + + err = m.rnibDataService.SaveE2TInstance(e2tInstance) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.RemoveRanFromInstance - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + m.logger.Infof("#E2TInstancesManager.RemoveRanFromInstance - successfully dissociated RAN %s from E2T %s", ranName, e2tInstance.Address) + return nil +} + +func (m *E2TInstancesManager) RemoveE2TInstance(e2tAddress string) error { + m.mux.Lock() + defer m.mux.Unlock() + + err := m.rnibDataService.RemoveE2TInstance(e2tAddress) + if err != nil { + m.logger.Errorf("#E2TInstancesManager.RemoveE2TInstance - E2T Instance address: %s - Failed removing E2TInstance. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + e2tAddresses, err := m.rnibDataService.GetE2TAddresses() + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.RemoveE2TInstance - E2T Instance address: %s - Failed retrieving E2T addresses list. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + e2tAddresses = m.removeAddressFromList(e2tAddresses, e2tAddress) + + err = m.rnibDataService.SaveE2TAddresses(e2tAddresses) + if err != nil { + m.logger.Errorf("#E2TInstancesManager.RemoveE2TInstance - E2T Instance address: %s - Failed saving E2T addresses list. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + return nil +} + +func (m *E2TInstancesManager) removeAddressFromList(e2tAddresses []string, addressToRemove string) []string { + newAddressList := []string{} + + for _, address := range e2tAddresses { + if address != addressToRemove { + newAddressList = append(newAddressList, address) + } + } + + return newAddressList +} + +func (m *E2TInstancesManager) SelectE2TInstance() (string, error) { + + e2tInstances, err := m.GetE2TInstances() + + if err != nil { + return "", err + } + + if len(e2tInstances) == 0 { + m.logger.Errorf("#E2TInstancesManager.SelectE2TInstance - No E2T instance found") + return "", e2managererrors.NewE2TInstanceAbsenceError() + } + + min := findActiveE2TInstanceWithMinimumAssociatedRans(e2tInstances) + + if min == nil { + m.logger.Errorf("#E2TInstancesManager.SelectE2TInstance - No active E2T instance found") + return "", e2managererrors.NewE2TInstanceAbsenceError() + } + + m.logger.Infof("#E2TInstancesManager.SelectE2TInstance - successfully selected E2T instance. address: %s", min.Address) + return min.Address, nil +} + +func (m *E2TInstancesManager) AddRansToInstance(e2tAddress string, ranNames []string) error { + + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.AddRansToInstance - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + e2tInstance.AssociatedRanList = append(e2tInstance.AssociatedRanList, ranNames...) + + err = m.rnibDataService.SaveE2TInstance(e2tInstance) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.AddRansToInstance - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + m.logger.Infof("#E2TInstancesManager.AddRansToInstance - RAN %s were added successfully to E2T %s", ranNames, e2tInstance.Address) + return nil +} + +func (m *E2TInstancesManager) ResetKeepAliveTimestamp(e2tAddress string) error { + + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstance, err := m.rnibDataService.GetE2TInstanceNoLogs(e2tAddress) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.ResetKeepAliveTimestamp - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err) + return err + } + + if e2tInstance.State == entities.ToBeDeleted { + m.logger.Warnf("#E2TInstancesManager.ResetKeepAliveTimestamp - Ignore. This Instance is about to be deleted") + return nil + + } + + e2tInstance.KeepAliveTimestamp = time.Now().UnixNano() + err = m.rnibDataService.SaveE2TInstanceNoLogs(e2tInstance) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.ResetKeepAliveTimestamp - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tAddress, err) + return err + } + + return nil +} + +func (m *E2TInstancesManager) SetE2tInstanceState(e2tAddress string, currentState entities.E2TInstanceState, newState entities.E2TInstanceState) error { + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstance, err := m.rnibDataService.GetE2TInstance(e2tAddress) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.SetE2tInstanceState - E2T Instance address: %s - Failed retrieving E2TInstance. error: %s", e2tAddress, err) + return e2managererrors.NewRnibDbError() + } + + if (currentState != e2tInstance.State) { + m.logger.Warnf("#E2TInstancesManager.SetE2tInstanceState - E2T Instance address: %s - Current state is not: %s", e2tAddress, currentState) + return e2managererrors.NewInternalError() + } + + e2tInstance.State = newState + if (newState == entities.Active) { + e2tInstance.KeepAliveTimestamp = time.Now().UnixNano() + } + + err = m.rnibDataService.SaveE2TInstance(e2tInstance) + if err != nil { + m.logger.Errorf("#E2TInstancesManager.SetE2tInstanceState - E2T Instance address: %s - Failed saving E2TInstance. error: %s", e2tInstance.Address, err) + return err + } + + m.logger.Infof("#E2TInstancesManager.SetE2tInstanceState - E2T Instance address: %s - State change: %s --> %s", e2tAddress, currentState, newState) + + return nil +} + +func (m *E2TInstancesManager) ClearRansOfAllE2TInstances() error { + m.logger.Infof("#E2TInstancesManager.ClearRansOfAllE2TInstances - Going to clear associated RANs from E2T instances") + m.mux.Lock() + defer m.mux.Unlock() + + e2tInstances, err := m.GetE2TInstances() + + if err != nil { + return err + } + + if len(e2tInstances) == 0 { + m.logger.Errorf("#E2TInstancesManager.ClearRansOfAllE2TInstances - No E2T instances to clear associated RANs from") + return nil + } + + for _, v := range e2tInstances { + v.AssociatedRanList = []string{} + err := m.rnibDataService.SaveE2TInstance(v) + + if err != nil { + m.logger.Errorf("#E2TInstancesManager.ClearRansOfAllE2TInstances - e2t address: %s - failed saving e2t instance. error: %s", v.Address, err) + } + } + + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/e2t_instances_manager_test.go b/setup/e2mgr/E2Manager/managers/e2t_instances_manager_test.go new file mode 100644 index 0000000..863bfe1 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_instances_manager_test.go @@ -0,0 +1,553 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "testing" +) + +const E2TAddress = "10.10.2.15:9800" +const E2TAddress2 = "10.10.2.16:9800" +const PodName = "som_ pod_name" + +func initE2TInstancesManagerTest(t *testing.T) (*mocks.RnibReaderMock, *mocks.RnibWriterMock, *E2TInstancesManager) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger) + return readerMock, writerMock, e2tInstancesManager +} + +func TestAddNewE2TInstanceSaveE2TInstanceFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error"))) + err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName) + assert.NotNil(t, err) + rnibReaderMock.AssertNotCalled(t, "GetE2TAddresses") +} + +func TestAddNewE2TInstanceGetE2TAddressesInternalFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + e2tAddresses := []string{} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewInternalError(errors.New("Error"))) + err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName) + assert.NotNil(t, err) + rnibReaderMock.AssertNotCalled(t, "SaveE2TAddresses") +} + +func TestAddNewE2TInstanceSaveE2TAddressesFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + E2TAddresses := []string{} + rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil) + E2TAddresses = append(E2TAddresses, E2TAddress) + rnibWriterMock.On("SaveE2TAddresses", E2TAddresses).Return(common.NewResourceNotFoundError("")) + err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName) + assert.NotNil(t, err) +} + +func TestAddNewE2TInstanceNoE2TAddressesSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + e2tAddresses := []string{} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, common.NewResourceNotFoundError("")) + e2tAddresses = append(e2tAddresses, E2TAddress) + rnibWriterMock.On("SaveE2TAddresses", e2tAddresses).Return(nil) + err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName) + assert.Nil(t, err) + rnibWriterMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses) +} + +func TestAddNewE2TInstanceEmptyE2TAddressesSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + e2tAddresses := []string{} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddresses = append(e2tAddresses, E2TAddress) + rnibWriterMock.On("SaveE2TAddresses", e2tAddresses).Return(nil) + err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName) + assert.Nil(t, err) + rnibWriterMock.AssertCalled(t, "SaveE2TAddresses", e2tAddresses) +} + +func TestAddNewE2TInstanceExistingE2TAddressesSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + E2TAddresses := []string{"10.0.1.15:3030"} + rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil) + E2TAddresses = append(E2TAddresses, E2TAddress) + rnibWriterMock.On("SaveE2TAddresses", E2TAddresses).Return(nil) + err := e2tInstancesManager.AddE2TInstance(E2TAddress, PodName) + assert.Nil(t, err) +} + +func TestGetE2TInstanceFailure(t *testing.T) { + rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t) + var e2tInstance *entities.E2TInstance + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, common.NewInternalError(fmt.Errorf("for test"))) + res, err := e2tInstancesManager.GetE2TInstance(E2TAddress) + assert.NotNil(t, err) + assert.Nil(t, res) +} + +func TestGetE2TInstanceSuccess(t *testing.T) { + rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t) + address := "10.10.2.15:9800" + e2tInstance := entities.NewE2TInstance(address, PodName) + rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil) + res, err := e2tInstancesManager.GetE2TInstance(address) + assert.Nil(t, err) + assert.Equal(t, e2tInstance, res) +} + +func TestAddRanToInstanceGetInstanceFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + var e2tInstance1 *entities.E2TInstance + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test"))) + + err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"}) + assert.NotNil(t, err) + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestAddRanToInstanceSaveInstanceFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test"))) + + err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"}) + assert.NotNil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestAddRanToInstanceSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + e2tInstance := entities.NewE2TInstance(E2TAddress, PodName) + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + + updateE2TInstance := *e2tInstance + updateE2TInstance.AssociatedRanList = append(updateE2TInstance.AssociatedRanList, "test1") + + rnibWriterMock.On("SaveE2TInstance", &updateE2TInstance).Return(nil) + + err := e2tInstancesManager.AddRansToInstance(E2TAddress, []string{"test1"}) + assert.Nil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestRemoveRanFromInstanceGetInstanceFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + var e2tInstance1 *entities.E2TInstance + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(fmt.Errorf("for test"))) + err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress) + assert.NotNil(t, err) + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestRemoveRanFromInstanceSaveInstanceFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for test"))) + + err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress) + assert.NotNil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestRemoveRanFromInstanceSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + e2tInstance := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance.AssociatedRanList = []string{"test0", "test1"} + updatedE2TInstance := *e2tInstance + updatedE2TInstance.AssociatedRanList = []string{"test0"} + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + rnibWriterMock.On("SaveE2TInstance", &updatedE2TInstance).Return(nil) + + err := e2tInstancesManager.RemoveRanFromInstance("test1", E2TAddress) + assert.Nil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestSelectE2TInstancesGetE2TAddressesFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(fmt.Errorf("for test"))) + address, err := e2tInstancesManager.SelectE2TInstance() + assert.NotNil(t, err) + assert.Empty(t, address) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertNotCalled(t, "GetE2TInstances") +} + +func TestSelectE2TInstancesEmptyE2TAddressList(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil) + address, err := e2tInstancesManager.SelectE2TInstance() + assert.NotNil(t, err) + assert.Empty(t, address) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertNotCalled(t, "GetE2TInstances") +} + +func TestSelectE2TInstancesGetE2TInstancesFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + addresses := []string{E2TAddress} + rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil) + rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{}, common.NewInternalError(fmt.Errorf("for test"))) + address, err := e2tInstancesManager.SelectE2TInstance() + assert.NotNil(t, err) + assert.Empty(t, address) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestSelectE2TInstancesEmptyE2TInstancesList(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + addresses := []string{E2TAddress} + rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil) + rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{}, nil) + address, err := e2tInstancesManager.SelectE2TInstance() + assert.NotNil(t, err) + assert.Empty(t, address) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestSelectE2TInstancesNoActiveE2TInstance(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + addresses := []string{E2TAddress, E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.ToBeDeleted + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.ToBeDeleted + e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"} + + rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil) + rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + address, err := e2tInstancesManager.SelectE2TInstance() + assert.NotNil(t, err) + assert.Equal(t, "", address) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestSelectE2TInstancesSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + addresses := []string{E2TAddress, E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"} + + rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil) + rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + address, err := e2tInstancesManager.SelectE2TInstance() + assert.Nil(t, err) + assert.Equal(t, E2TAddress, address) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestActivateE2TInstanceSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.ToBeDeleted + e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"} + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, nil) + rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.State == entities.Active })).Return(nil) + + err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active) + assert.Nil(t, err) + assert.Equal(t, entities.Active, e2tInstance1.State) + rnibWriterMock.AssertExpectations(t) +} + +func TestActivateE2TInstance_RnibError(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + var e2tInstance1 *entities.E2TInstance + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, common.NewInternalError(errors.New("for test"))) + + err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active) + assert.NotNil(t, err) + rnibWriterMock.AssertExpectations(t) +} + +func TestActivateE2TInstance_NoInstance(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + var e2tInstance1 *entities.E2TInstance + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance1, e2managererrors.NewResourceNotFoundError()) + + err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active) + + assert.NotNil(t, err) + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestResetKeepAliveTimestampGetInternalFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + address := "10.10.2.15:9800" + e2tInstance := entities.NewE2TInstance(address, PodName) + rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, common.NewInternalError(errors.New("Error"))) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + err := e2tInstancesManager.ResetKeepAliveTimestamp(address) + assert.NotNil(t, err) + rnibReaderMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestAResetKeepAliveTimestampSaveInternalFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + address := "10.10.2.15:9800" + e2tInstance := entities.NewE2TInstance(address, PodName) + rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error"))) + + err := e2tInstancesManager.ResetKeepAliveTimestamp(address) + assert.NotNil(t, err) +} + +func TestResetKeepAliveTimestampSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + address := "10.10.2.15:9800" + e2tInstance := entities.NewE2TInstance(address, PodName) + rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + + err := e2tInstancesManager.ResetKeepAliveTimestamp(address) + assert.Nil(t, err) + rnibReaderMock.AssertCalled(t, "GetE2TInstance", address) + rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance", 1) +} + +func TestResetKeepAliveTimestampToBeDeleted(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + address := "10.10.2.15:9800" + e2tInstance := entities.NewE2TInstance(address, PodName) + e2tInstance.State = entities.ToBeDeleted + rnibReaderMock.On("GetE2TInstance", address).Return(e2tInstance, nil) + + err := e2tInstancesManager.ResetKeepAliveTimestamp(address) + assert.Nil(t, err) + rnibReaderMock.AssertCalled(t, "GetE2TInstance", address) + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestResetKeepAliveTimestampsForAllE2TInstancesGetE2TInstancesFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibReaderMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(errors.New("Error"))) + e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestResetKeepAliveTimestampsForAllE2TInstancesNoInstances(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibReaderMock.On("GetE2TAddresses").Return([]string{}, nil) + e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestResetKeepAliveTimestampsForAllE2TInstancesNoActiveInstances(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + e2tAddresses := []string{E2TAddress, E2TAddress2} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.ToBeDeleted + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.ToBeDeleted + rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() + rnibWriterMock.AssertNotCalled(t, "SaveE2TInstance") +} + +func TestResetKeepAliveTimestampsForAllE2TInstancesOneActiveInstance(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + e2tAddresses := []string{E2TAddress, E2TAddress2} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.ToBeDeleted + rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(nil) + e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() + rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance",1) +} + +func TestResetKeepAliveTimestampsForAllE2TInstancesSaveE2TInstanceFailure(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + e2tAddresses := []string{E2TAddress, E2TAddress2} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.ToBeDeleted + rnibReaderMock.On("GetE2TInstances", e2tAddresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(errors.New("Error"))) + e2tInstancesManager.ResetKeepAliveTimestampsForAllE2TInstances() + rnibWriterMock.AssertNumberOfCalls(t, "SaveE2TInstance",1) +} + +func TestRemoveE2TInstanceSuccess(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress, E2TAddress2} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{E2TAddress2} + rnibWriterMock.On("SaveE2TAddresses", e2tAddressesNew).Return(nil) + + err := e2tInstancesManager.RemoveE2TInstance(E2TAddress) + assert.Nil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestRemoveE2TInstanceRnibErrorInRemoveInstance(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(e2managererrors.NewRnibDbError()) + + err := e2tInstancesManager.RemoveE2TInstance(E2TAddress) + assert.NotNil(t, err) + assert.IsType(t, e2managererrors.NewRnibDbError(), err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestRemoveE2TInstanceRnibErrorInGetAddresses(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + var e2tAddresses []string + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, e2managererrors.NewRnibDbError()) + + err := e2tInstancesManager.RemoveE2TInstance(E2TAddress) + assert.NotNil(t, err) + assert.IsType(t, e2managererrors.NewRnibDbError(), err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestRemoveE2TInstanceRnibErrorInSaveAddresses(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + rnibWriterMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + e2tAddresses := []string{E2TAddress, E2TAddress2} + rnibReaderMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + e2tAddressesNew := []string{E2TAddress2} + rnibWriterMock.On("SaveE2TAddresses", e2tAddressesNew).Return(e2managererrors.NewRnibDbError()) + + err := e2tInstancesManager.RemoveE2TInstance(E2TAddress) + assert.NotNil(t, err) + assert.IsType(t, e2managererrors.NewRnibDbError(), err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestSetE2tInstanceStateCurrentStateHasChanged(t *testing.T) { + rnibReaderMock, _, e2tInstancesManager := initE2TInstancesManagerTest(t) + + e2tInstance := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance.State = entities.Active + + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + + err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active) + assert.NotNil(t, err) + assert.IsType(t, e2managererrors.NewInternalError(), err) + rnibReaderMock.AssertExpectations(t) +} + +func TestSetE2tInstanceStateErrorInSaveE2TInstance(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + + e2tInstance := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance.State = entities.ToBeDeleted + rnibReaderMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + rnibWriterMock.On("SaveE2TInstance", mock.Anything).Return(common.NewInternalError(fmt.Errorf("for testing"))) + + err := e2tInstancesManager.SetE2tInstanceState(E2TAddress, entities.ToBeDeleted, entities.Active) + assert.NotNil(t, err) + assert.IsType(t, &common.InternalError{}, err) + rnibReaderMock.AssertExpectations(t) +} + +func TestClearRansOfAllE2TInstancesEmptyList(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + E2TAddresses := []string{} + rnibReaderMock.On("GetE2TAddresses").Return(E2TAddresses, nil) + err := e2tInstancesManager.ClearRansOfAllE2TInstances() + assert.Nil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} + +func TestClearRansOfAllE2TInstancesErrorInSaveE2TInstance(t *testing.T) { + rnibReaderMock, rnibWriterMock, e2tInstancesManager := initE2TInstancesManagerTest(t) + addresses := []string{E2TAddress, E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test3"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.AssociatedRanList = []string{"test4", "test5", "test6", "test7"} + + rnibReaderMock.On("GetE2TAddresses").Return(addresses, nil) + rnibReaderMock.On("GetE2TInstances", addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress})).Return(common.NewInternalError(fmt.Errorf("for testing"))) + rnibWriterMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress2})).Return(nil) + err := e2tInstancesManager.ClearRansOfAllE2TInstances() + assert.Nil(t, err) + rnibReaderMock.AssertExpectations(t) + rnibWriterMock.AssertExpectations(t) +} diff --git a/setup/e2mgr/E2Manager/managers/e2t_keep_alive_worker.go b/setup/e2mgr/E2Manager/managers/e2t_keep_alive_worker.go new file mode 100644 index 0000000..606e339 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_keep_alive_worker.go @@ -0,0 +1,89 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services/rmrsender" + "time" +) + +type E2TKeepAliveWorker struct { + logger *logger.Logger + e2tShutdownManager IE2TShutdownManager + e2TInstancesManager IE2TInstancesManager + rmrSender *rmrsender.RmrSender + config *configuration.Configuration +} + +func NewE2TKeepAliveWorker(logger *logger.Logger, rmrSender *rmrsender.RmrSender, e2TInstancesManager IE2TInstancesManager, e2tShutdownManager IE2TShutdownManager, config *configuration.Configuration) E2TKeepAliveWorker { + return E2TKeepAliveWorker{ + logger: logger, + e2tShutdownManager: e2tShutdownManager, + e2TInstancesManager: e2TInstancesManager, + rmrSender: rmrSender, + config: config, + } +} + +func (h E2TKeepAliveWorker) Execute() { + + h.logger.Infof("#E2TKeepAliveWorker.Execute - keep alive started") + + ticker := time.NewTicker(time.Duration(h.config.KeepAliveDelayMs) * time.Millisecond) + + for _ = range ticker.C { + + h.SendKeepAliveRequest() + h.E2TKeepAliveExpired() + } +} + +func (h E2TKeepAliveWorker) E2TKeepAliveExpired() { + + e2tInstances, err := h.e2TInstancesManager.GetE2TInstancesNoLogs() + + if err != nil || len(e2tInstances) == 0 { + return + } + + for _, e2tInstance := range e2tInstances { + + delta := int64(time.Now().UnixNano()) - e2tInstance.KeepAliveTimestamp + timestampNanosec := int64(time.Duration(h.config.KeepAliveResponseTimeoutMs) * time.Millisecond) + + if delta > timestampNanosec { + + h.logger.Warnf("#E2TKeepAliveWorker.E2TKeepAliveExpired - e2t address: %s time expired, shutdown e2 instance", e2tInstance.Address) + + h.e2tShutdownManager.Shutdown(e2tInstance) + } + } +} + +func (h E2TKeepAliveWorker) SendKeepAliveRequest() { + + rmrMessage := models.RmrMessage{MsgType: rmrCgo.E2_TERM_KEEP_ALIVE_REQ} + h.rmrSender.SendWithoutLogs(&rmrMessage) +} diff --git a/setup/e2mgr/E2Manager/managers/e2t_keep_alive_worker_test.go b/setup/e2mgr/E2Manager/managers/e2t_keep_alive_worker_test.go new file mode 100644 index 0000000..c15aedb --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_keep_alive_worker_test.go @@ -0,0 +1,205 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/rmrCgo" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/mock" + "testing" + "time" + "unsafe" +) + +func initE2TKeepAliveTest(t *testing.T) (*mocks.RmrMessengerMock, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.E2TShutdownManagerMock, *E2TKeepAliveWorker) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, KeepAliveResponseTimeoutMs: 400, KeepAliveDelayMs: 100} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + e2tShutdownManagerMock := &mocks.E2TShutdownManagerMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger) + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, logger) + + e2tKeepAliveWorker := NewE2TKeepAliveWorker(logger, rmrSender, e2tInstancesManager, e2tShutdownManagerMock, config) + + return rmrMessengerMock, readerMock, writerMock, e2tShutdownManagerMock, &e2tKeepAliveWorker +} + +func TestSendKeepAliveRequest(t *testing.T) { + rmrMessengerMock, _, _, _, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + rmrMessengerMock.On("SendMsg", mock.Anything, false).Return(&rmrCgo.MBuf{}, nil) + + e2tKeepAliveWorker.SendKeepAliveRequest() + + var payload, xAction []byte + var msgSrc unsafe.Pointer + req := rmrCgo.NewMBuf(rmrCgo.E2_TERM_KEEP_ALIVE_REQ, 0, "", &payload, &xAction, msgSrc) + + rmrMessengerMock.AssertCalled(t, "SendMsg", req, false) +} + +func TestShutdownExpiredE2T_InternalError(t *testing.T) { + rmrMessengerMock, readerMock, _, _, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + readerMock.On("GetE2TAddresses").Return([]string{}, common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error"))) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + rmrMessengerMock.AssertNotCalled(t, "Shutdown") +} + +func TestShutdownExpiredE2T_NoAddresses(t *testing.T) { + rmrMessengerMock, readerMock, _, _, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + addresses := []string{} + + readerMock.On("GetE2TAddresses").Return(addresses, nil) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + rmrMessengerMock.AssertNotCalled(t, "Shutdown") +} + +func TestShutdownExpiredE2T_NotExpired_InternalError(t *testing.T) { + rmrMessengerMock, readerMock, _, _, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + addresses := []string{E2TAddress,E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.AssociatedRanList = []string{"test4","test5","test6", "test7"} + + readerMock.On("GetE2TAddresses").Return(addresses, nil) + readerMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, common.NewInternalError(errors.New("#reader.GetNodeb - Internal Error"))) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + rmrMessengerMock.AssertNotCalled(t, "Shutdown") +} + +func TestShutdownExpiredE2T_NoE2T(t *testing.T) { + rmrMessengerMock, readerMock, _, _, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + readerMock.On("GetE2TAddresses").Return([]string{}, common.NewResourceNotFoundError("not found")) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + rmrMessengerMock.AssertNotCalled(t, "Shutdown") +} + +func TestShutdownExpiredE2T_NotExpired(t *testing.T) { + rmrMessengerMock, readerMock, _, _, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + addresses := []string{E2TAddress,E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.AssociatedRanList = []string{"test4","test5","test6", "test7"} + + readerMock.On("GetE2TAddresses").Return(addresses, nil) + readerMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + rmrMessengerMock.AssertNotCalled(t, "Shutdown") +} + +func TestShutdownExpiredE2T_One_E2TExpired(t *testing.T) { + _, readerMock, _, e2tShutdownManagerMock, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + addresses := []string{E2TAddress,E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"} + + time.Sleep(time.Duration(400) * time.Millisecond) + + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.AssociatedRanList = []string{"test4","test5","test6", "test7"} + + readerMock.On("GetE2TAddresses").Return(addresses, nil) + readerMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + e2tShutdownManagerMock.On("Shutdown", e2tInstance1).Return(nil) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + e2tShutdownManagerMock.AssertNumberOfCalls(t, "Shutdown", 1) +} + +func TestShutdownExpiredE2T_Two_E2TExpired(t *testing.T) { + _, readerMock, _, e2tShutdownManagerMock, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + addresses := []string{E2TAddress,E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"} + + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.AssociatedRanList = []string{"test4","test5","test6", "test7"} + + time.Sleep(time.Duration(400) * time.Millisecond) + + readerMock.On("GetE2TAddresses").Return(addresses, nil) + readerMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1, e2tInstance2}, nil) + e2tShutdownManagerMock.On("Shutdown", e2tInstance1).Return(nil) + e2tShutdownManagerMock.On("Shutdown", e2tInstance2).Return(nil) + + e2tKeepAliveWorker.E2TKeepAliveExpired() + + e2tShutdownManagerMock.AssertNumberOfCalls(t, "Shutdown", 2) +} + +func TestExecute_Two_E2TExpired(t *testing.T) { + rmrMessengerMock, readerMock, _, e2tShutdownManagerMock, e2tKeepAliveWorker := initE2TKeepAliveTest(t) + + addresses := []string{E2TAddress,E2TAddress2} + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.AssociatedRanList = []string{"test1","test2","test3"} + + readerMock.On("GetE2TAddresses").Return(addresses, nil) + readerMock.On("GetE2TInstances",addresses).Return([]*entities.E2TInstance{e2tInstance1}, nil) + e2tShutdownManagerMock.On("Shutdown", e2tInstance1).Return(nil) + rmrMessengerMock.On("SendMsg", mock.Anything, false).Return(&rmrCgo.MBuf{}, nil) + + go e2tKeepAliveWorker.Execute() + + time.Sleep(time.Duration(500) * time.Millisecond) + + var payload, xAction []byte + var msgSrc unsafe.Pointer + req := rmrCgo.NewMBuf(rmrCgo.E2_TERM_KEEP_ALIVE_REQ, 0, "", &payload, &xAction, msgSrc) + + rmrMessengerMock.AssertCalled(t, "SendMsg", req, false) + e2tShutdownManagerMock.AssertCalled(t, "Shutdown", e2tInstance1) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/managers/e2t_shutdown_manager.go b/setup/e2mgr/E2Manager/managers/e2t_shutdown_manager.go new file mode 100644 index 0000000..6287547 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_shutdown_manager.go @@ -0,0 +1,124 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "time" +) + +type IE2TShutdownManager interface { + Shutdown(e2tInstance *entities.E2TInstance) error +} + +type E2TShutdownManager struct { + logger *logger.Logger + config *configuration.Configuration + rnibDataService services.RNibDataService + e2TInstancesManager IE2TInstancesManager + e2tAssociationManager *E2TAssociationManager + kubernetesManager *KubernetesManager +} + +func NewE2TShutdownManager(logger *logger.Logger, config *configuration.Configuration, rnibDataService services.RNibDataService, e2TInstancesManager IE2TInstancesManager, e2tAssociationManager *E2TAssociationManager, kubernetes *KubernetesManager) *E2TShutdownManager { + return &E2TShutdownManager{ + logger: logger, + config: config, + rnibDataService: rnibDataService, + e2TInstancesManager: e2TInstancesManager, + e2tAssociationManager: e2tAssociationManager, + kubernetesManager: kubernetes, + } +} + +func (m E2TShutdownManager) Shutdown(e2tInstance *entities.E2TInstance) error { + m.logger.Infof("#E2TShutdownManager.Shutdown - E2T %s is Dead, RIP", e2tInstance.Address) + + isE2tInstanceBeingDeleted := m.isE2tInstanceAlreadyBeingDeleted(e2tInstance) + if isE2tInstanceBeingDeleted { + m.logger.Infof("#E2TShutdownManager.Shutdown - E2T %s is already being deleted", e2tInstance.Address) + return nil + } + + //go m.kubernetesManager.DeletePod(e2tInstance.PodName) + + err := m.markE2tInstanceToBeDeleted(e2tInstance) + if err != nil { + m.logger.Errorf("#E2TShutdownManager.Shutdown - Failed to mark E2T %s as 'ToBeDeleted'.", e2tInstance.Address) + return err + } + + err = m.clearNodebsAssociation(e2tInstance.AssociatedRanList) + if err != nil { + m.logger.Errorf("#E2TShutdownManager.Shutdown - Failed to clear nodebs association to E2T %s.", e2tInstance.Address) + return err + } + + err = m.e2tAssociationManager.RemoveE2tInstance(e2tInstance) + if err != nil { + m.logger.Errorf("#E2TShutdownManager.Shutdown - Failed to remove E2T %s.", e2tInstance.Address) + return err + } + + m.logger.Infof("#E2TShutdownManager.Shutdown - E2T %s was shutdown successfully.", e2tInstance.Address) + return nil +} + +func (m E2TShutdownManager) clearNodebsAssociation(ranNamesToBeDissociated []string) error { + for _, ranName := range ranNamesToBeDissociated { + nodeb, err := m.rnibDataService.GetNodeb(ranName) + if err != nil { + m.logger.Warnf("#E2TShutdownManager.associateAndSetupNodebs - Failed to get nodeb %s from db.", ranName) + _, ok := err.(*common.ResourceNotFoundError) + if !ok { + continue + } + return err + } + nodeb.AssociatedE2TInstanceAddress = "" + nodeb.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + + err = m.rnibDataService.UpdateNodebInfo(nodeb) + if err != nil { + m.logger.Errorf("#E2TShutdownManager.associateAndSetupNodebs - Failed to save nodeb %s from db.", ranName) + return err + } + } + return nil +} + +func (m E2TShutdownManager) markE2tInstanceToBeDeleted(e2tInstance *entities.E2TInstance) error { + e2tInstance.State = entities.ToBeDeleted + e2tInstance.DeletionTimestamp = time.Now().UnixNano() + + return m.rnibDataService.SaveE2TInstance(e2tInstance) +} + +func (m E2TShutdownManager) isE2tInstanceAlreadyBeingDeleted(e2tInstance *entities.E2TInstance) bool { + delta := time.Now().UnixNano() - e2tInstance.DeletionTimestamp + timestampNanosec := int64(time.Duration(m.config.E2TInstanceDeletionTimeoutMs) * time.Millisecond) + + return e2tInstance.State == entities.ToBeDeleted && delta <= timestampNanosec +} diff --git a/setup/e2mgr/E2Manager/managers/e2t_shutdown_manager_test.go b/setup/e2mgr/E2Manager/managers/e2t_shutdown_manager_test.go new file mode 100644 index 0000000..9e3fcc3 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/e2t_shutdown_manager_test.go @@ -0,0 +1,510 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "bytes" + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/services" + "encoding/json" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "io/ioutil" + //"k8s.io/apimachinery/pkg/runtime" + //"k8s.io/client-go/kubernetes/fake" + "net/http" + "testing" + "time" +) + +const E2TAddress3 = "10.10.2.17:9800" + +func initE2TShutdownManagerTest(t *testing.T) (*E2TShutdownManager, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *mocks.HttpClientMock, *KubernetesManager) { + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3, E2TInstanceDeletionTimeoutMs: 15000} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + + e2tInstancesManager := NewE2TInstancesManager(rnibDataService, log) + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + associationManager := NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient) + //kubernetesManager := initKubernetesManagerTest(t) + + /*shutdownManager := NewE2TShutdownManager(log, config, rnibDataService, e2tInstancesManager, associationManager, kubernetesManager) + + return shutdownManager, readerMock, writerMock, httpClientMock, kubernetesManager*/ + shutdownManager := NewE2TShutdownManager(log, config, rnibDataService, e2tInstancesManager, associationManager, nil) + + return shutdownManager, readerMock, writerMock, httpClientMock, nil +} + +func TestShutdownSuccess1OutOf3Instances(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test5"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.Active + e2tInstance2.AssociatedRanList = []string{"test3"} + e2tInstance3 := entities.NewE2TInstance(E2TAddress3, PodName) + e2tInstance3.State = entities.Active + e2tInstance3.AssociatedRanList = []string{"test4"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test1").Return(nodeb1, nil) + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + nodeb5 := &entities.NodebInfo{RanName:"test5", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test5").Return(nodeb5, nil) + + e2tAddresses := []string{E2TAddress, E2TAddress2,E2TAddress3} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, e2tInstance1.AssociatedRanList, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + writerMock.On("SaveE2TAddresses", []string{E2TAddress2,E2TAddress3}).Return(nil) + + nodeb1connected := *nodeb1 + nodeb1connected.AssociatedE2TInstanceAddress = "" + nodeb1connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb1connected).Return(nil) + nodeb2connected := *nodeb2 + nodeb2connected.AssociatedE2TInstanceAddress = "" + nodeb2connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2connected).Return(nil) + nodeb5connected := *nodeb5 + nodeb5connected.AssociatedE2TInstanceAddress = "" + nodeb5connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb5connected).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestShutdownSuccess1InstanceWithoutRans(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, nil, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + writerMock.On("SaveE2TAddresses", []string{}).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestShutdownSuccess1Instance2Rans(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test1").Return(nodeb1, nil) + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1", "test2"}, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + writerMock.On("SaveE2TAddresses", []string{}).Return(nil) + + nodeb1new := *nodeb1 + nodeb1new.AssociatedE2TInstanceAddress = "" + nodeb1new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb1new).Return(nil) + nodeb2new := *nodeb2 + nodeb2new.AssociatedE2TInstanceAddress = "" + nodeb2new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2new).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + +} + +func TestShutdownE2tInstanceAlreadyBeingDeleted(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.ToBeDeleted + e2tInstance1.AssociatedRanList = []string{"test1"} + e2tInstance1.DeletionTimestamp = time.Now().UnixNano() + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + +} + +func TestShutdownFailureMarkInstanceAsToBeDeleted(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test5"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(e2managererrors.NewRnibDbError()) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.NotNil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + +} + +func TestShutdownFailureRoutingManagerError(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test5"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.Active + e2tInstance2.AssociatedRanList = []string{"test3"} + e2tInstance3 := entities.NewE2TInstance(E2TAddress3, PodName) + e2tInstance3.State = entities.Active + e2tInstance3.AssociatedRanList = []string{"test4"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test1").Return(nodeb1, nil) + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + nodeb5 := &entities.NodebInfo{RanName:"test5", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test5").Return(nodeb5, nil) + + e2tAddresses := []string{E2TAddress, E2TAddress2,E2TAddress3} + readerMock.On("GetE2TAddresses").Return(e2tAddresses, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, e2tInstance1.AssociatedRanList, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusBadRequest, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + writerMock.On("SaveE2TAddresses", []string{E2TAddress2,E2TAddress3}).Return(nil) + + nodeb1connected := *nodeb1 + nodeb1connected.AssociatedE2TInstanceAddress = "" + nodeb1connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb1connected).Return(nil) + nodeb2connected := *nodeb2 + nodeb2connected.AssociatedE2TInstanceAddress = "" + nodeb2connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2connected).Return(nil) + nodeb5connected := *nodeb5 + nodeb5connected.AssociatedE2TInstanceAddress = "" + nodeb5connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb5connected).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + +} + +func TestShutdownFailureInClearNodebsAssociation(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test1").Return(nodeb1, nil) + + nodeb1new := *nodeb1 + nodeb1new.AssociatedE2TInstanceAddress = "" + nodeb1new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb1new).Return(common.NewInternalError(fmt.Errorf("for tests"))) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.NotNil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestShutdownResourceNotFoundErrorInGetNodeb(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test1").Return(nodeb1, nil) + var nodeb2 *entities.NodebInfo + readerMock.On("GetNodeb", "test2").Return(nodeb2, common.NewResourceNotFoundError("for testing")) + + nodeb1new := *nodeb1 + nodeb1new.AssociatedE2TInstanceAddress = "" + nodeb1new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb1new).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.NotNil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} + +func TestShutdownResourceGeneralErrorInGetNodeb(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + var nodeb1 *entities.NodebInfo + readerMock.On("GetNodeb", "test1").Return(nodeb1, common.NewInternalError(fmt.Errorf("for testing"))) + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test1", "test2"}, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + writerMock.On("SaveE2TAddresses", []string{}).Return(nil) + + nodeb2new := *nodeb2 + nodeb2new.AssociatedE2TInstanceAddress = "" + nodeb2new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2new).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + +} + +func TestShutdownFailureInRemoveE2TInstance(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,_ := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test1", "test2", "test5"} + e2tInstance2 := entities.NewE2TInstance(E2TAddress2, PodName) + e2tInstance2.State = entities.Active + e2tInstance2.AssociatedRanList = []string{"test3"} + e2tInstance3 := entities.NewE2TInstance(E2TAddress3, PodName) + e2tInstance3.State = entities.Active + e2tInstance3.AssociatedRanList = []string{"test4"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test1").Return(nodeb1, nil) + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_SHUTTING_DOWN, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + nodeb5 := &entities.NodebInfo{RanName:"test5", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test5").Return(nodeb5, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, e2tInstance1.AssociatedRanList, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(common.NewInternalError(fmt.Errorf("for tests"))) + + nodeb1connected := *nodeb1 + nodeb1connected.AssociatedE2TInstanceAddress = "" + nodeb1connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb1connected).Return(nil) + nodeb2connected := *nodeb2 + nodeb2connected.AssociatedE2TInstanceAddress = "" + nodeb2connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2connected).Return(nil) + nodeb5connected := *nodeb5 + nodeb5connected.AssociatedE2TInstanceAddress = "" + nodeb5connected.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb5connected).Return(nil) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.IsType(t, &e2managererrors.RnibDbError{}, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) +} +/* +func TestShutdownSuccess2Instance2Rans(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,kubernetesManager := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test2"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress2, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test2"}, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + writerMock.On("SaveE2TAddresses", []string{}).Return(nil) + + nodeb1new := *nodeb1 + nodeb1new.AssociatedE2TInstanceAddress = "" + nodeb1new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + nodeb2new := *nodeb2 + nodeb2new.AssociatedE2TInstanceAddress = "" + nodeb2new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2new).Return(nil) + + test := TestStruct{ + description: "namespace, 2 pods in Oran", + namespace: "oran", + objs: []runtime.Object{pod("oran", PodName), pod("oran", "e2t_2"), pod("some-namespace", "POD_Test_1")}, + } + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + }) +} + +func TestShutdownSuccess2Instance2RansNoPod(t *testing.T) { + shutdownManager, readerMock, writerMock, httpClientMock,kubernetesManager := initE2TShutdownManagerTest(t) + + e2tInstance1 := entities.NewE2TInstance(E2TAddress, PodName) + e2tInstance1.State = entities.Active + e2tInstance1.AssociatedRanList = []string{"test2"} + writerMock.On("SaveE2TInstance", mock.MatchedBy(func(e2tInstance *entities.E2TInstance) bool { return e2tInstance.Address == E2TAddress && e2tInstance.State == entities.ToBeDeleted })).Return(nil) + + nodeb1 := &entities.NodebInfo{RanName:"test1", AssociatedE2TInstanceAddress:E2TAddress2, ConnectionStatus:entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + nodeb2 := &entities.NodebInfo{RanName:"test2", AssociatedE2TInstanceAddress:E2TAddress, ConnectionStatus:entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol:entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + readerMock.On("GetNodeb", "test2").Return(nodeb2, nil) + + data := models.NewRoutingManagerDeleteRequestModel(E2TAddress, []string{"test2"}, nil) + marshaled, _ := json.Marshal(data) + body := bytes.NewBuffer(marshaled) + respBody := ioutil.NopCloser(bytes.NewBufferString("")) + httpClientMock.On("Delete", "e2t", "application/json", body).Return(&http.Response{StatusCode: http.StatusCreated, Body: respBody}, nil) + + writerMock.On("RemoveE2TInstance", E2TAddress).Return(nil) + readerMock.On("GetE2TAddresses").Return([]string{E2TAddress}, nil) + writerMock.On("SaveE2TAddresses", []string{}).Return(nil) + + nodeb1new := *nodeb1 + nodeb1new.AssociatedE2TInstanceAddress = "" + nodeb1new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + nodeb2new := *nodeb2 + nodeb2new.AssociatedE2TInstanceAddress = "" + nodeb2new.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &nodeb2new).Return(nil) + + test := TestStruct{ + description: "namespace, 2 pods in Oran", + namespace: "oran", + objs: []runtime.Object{pod("oran", "e2t_2"), pod("some-namespace", "POD_Test_1")}, + } + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := shutdownManager.Shutdown(e2tInstance1) + + assert.Nil(t, err) + readerMock.AssertExpectations(t) + writerMock.AssertExpectations(t) + httpClientMock.AssertExpectations(t) + }) +}*/ \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/managers/endc_setup_failure_response_manager.go b/setup/e2mgr/E2Manager/managers/endc_setup_failure_response_manager.go new file mode 100644 index 0000000..8ef22c9 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/endc_setup_failure_response_manager.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/converters" + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type EndcSetupFailureResponseManager struct { + converter converters.IEndcSetupFailureResponseConverter +} + +func NewEndcSetupFailureResponseManager(converter converters.IEndcSetupFailureResponseConverter) *EndcSetupFailureResponseManager { + return &EndcSetupFailureResponseManager{ + converter: converter, + } +} + +func (m *EndcSetupFailureResponseManager) PopulateNodebByPdu(logger *logger.Logger, nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo, payload []byte) error { + + failureResponse, err := m.converter.UnpackEndcSetupFailureResponseAndExtract(payload) + + if err != nil { + logger.Errorf("#EndcSetupFailureResponseManager.PopulateNodebByPdu - RAN name: %s - Unpack and extract failed. Error: %v", nodebInfo.RanName, err) + return err + } + + logger.Infof("#EndcSetupFailureResponseManager.PopulateNodebByPdu - RAN name: %s - Unpacked payload and extracted protobuf successfully", nodebInfo.RanName) + + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nodebInfo.SetupFailure = failureResponse + nodebInfo.FailureType = entities.Failure_ENDC_X2_SETUP_FAILURE + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/endc_setup_failure_response_manager_test.go b/setup/e2mgr/E2Manager/managers/endc_setup_failure_response_manager_test.go new file mode 100644 index 0000000..3474561 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/endc_setup_failure_response_manager_test.go @@ -0,0 +1,70 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/converters" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "math/rand" + "testing" +) + +func TestPopulateNodebByPduFailure(t *testing.T) { + logger := tests.InitLog(t) + nodebInfo := &entities.NodebInfo{} + nodebIdentity := &entities.NbIdentity{} + converter := converters.NewEndcSetupFailureResponseConverter(logger) + handler := NewEndcSetupFailureResponseManager(converter) + err := handler.PopulateNodebByPdu(logger, nodebIdentity, nodebInfo, createRandomPayload()) + assert.NotNil(t, err) +} + +func TestPopulateNodebByPduSuccess(t *testing.T) { + logger := tests.InitLog(t) + nodebInfo := &entities.NodebInfo{} + nodebIdentity := &entities.NbIdentity{} + converter := converters.NewEndcSetupFailureResponseConverter(logger) + handler := NewEndcSetupFailureResponseManager(converter) + err := handler.PopulateNodebByPdu(logger, nodebIdentity, nodebInfo, createSetupFailureResponsePayload(t)) + assert.Nil(t, err) + assert.Equal(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus) + assert.Equal(t, entities.Failure_ENDC_X2_SETUP_FAILURE, nodebInfo.FailureType) + +} + +func createSetupFailureResponsePayload(t *testing.T) []byte { + packedPdu := "4024001a0000030005400200000016400100001140087821a00000008040" + var payload []byte + _, err := fmt.Sscanf(packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + return payload +} + +func createRandomPayload() []byte { + payload := make([]byte, 20) + rand.Read(payload) + return payload +} diff --git a/setup/e2mgr/E2Manager/managers/endc_setup_response_manager.go b/setup/e2mgr/E2Manager/managers/endc_setup_response_manager.go new file mode 100644 index 0000000..a6118c4 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/endc_setup_response_manager.go @@ -0,0 +1,57 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/converters" + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type EndcSetupResponseManager struct{ + converter converters.IEndcSetupResponseConverter +} + +func NewEndcSetupResponseManager(converter converters.IEndcSetupResponseConverter) *EndcSetupResponseManager { + return &EndcSetupResponseManager{ + converter: converter, + } +} + +func (m *EndcSetupResponseManager) PopulateNodebByPdu(logger *logger.Logger, nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo, payload []byte) error { + + gnbId, gnb, err := m.converter.UnpackEndcSetupResponseAndExtract(payload) + + if err != nil { + logger.Errorf("#EndcSetupResponseManager.PopulateNodebByPdu - RAN name: %s - Unpack and extract failed. Error: %v", nodebInfo.RanName, err) + return err + } + + logger.Infof("#EndcSetupResponseManager.PopulateNodebByPdu - RAN name: %s - Unpacked payload and extracted protobuf successfully", nodebInfo.RanName) + + nbIdentity.GlobalNbId = gnbId + nodebInfo.GlobalNbId = gnbId + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nodebInfo.NodeType = entities.Node_GNB + nodebInfo.Configuration = &entities.NodebInfo_Gnb{Gnb: gnb} + + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/endc_setup_response_manager_test.go b/setup/e2mgr/E2Manager/managers/endc_setup_response_manager_test.go new file mode 100644 index 0000000..5ed9323 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/endc_setup_response_manager_test.go @@ -0,0 +1,63 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/converters" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestSetupResponsePopulateNodebByPduFailure(t *testing.T) { + logger := tests.InitLog(t) + nodebInfo := &entities.NodebInfo{} + nodebIdentity := &entities.NbIdentity{} + converter:= converters.NewEndcSetupResponseConverter(logger) + handler := NewEndcSetupResponseManager(converter) + err := handler.PopulateNodebByPdu(logger, nodebIdentity, nodebInfo, createRandomPayload()) + assert.NotNil(t, err) +} + +func TestSetupResponsePopulateNodebByPduSuccess(t *testing.T) { + logger := tests.InitLog(t) + nodebInfo := &entities.NodebInfo{} + nodebIdentity := &entities.NbIdentity{} + converter:= converters.NewEndcSetupResponseConverter(logger) + handler := NewEndcSetupResponseManager(converter) + err := handler.PopulateNodebByPdu(logger, nodebIdentity, nodebInfo, createSetupResponsePayload(t)) + assert.Nil(t, err) + assert.Equal(t, entities.ConnectionStatus_CONNECTED, nodebInfo.ConnectionStatus) + assert.Equal(t, entities.Node_GNB, nodebInfo.NodeType) + +} + +func createSetupResponsePayload(t *testing.T) []byte { + packedPdu := "202400808e00000100f600808640000200fc00090002f829504a952a0a00fd007200010c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a000211e148033e4e5e4c0005001e3f271f2e3d4ff03d44d34e4f003e4e5e4400010000150400000a00021a0044033e4e5e000000002c001e3f271f2e3d4ff0031e3f274400010000150400000a00020000" + var payload []byte + _, err := fmt.Sscanf(packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + return payload +} diff --git a/setup/e2mgr/E2Manager/managers/i_setup_response_manager.go b/setup/e2mgr/E2Manager/managers/i_setup_response_manager.go new file mode 100644 index 0000000..885d558 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/i_setup_response_manager.go @@ -0,0 +1,30 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type ISetupResponseManager interface { + PopulateNodebByPdu(logger *logger.Logger, nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo, payload []byte) error +} diff --git a/setup/e2mgr/E2Manager/managers/kubernetes_manager.go b/setup/e2mgr/E2Manager/managers/kubernetes_manager.go new file mode 100644 index 0000000..12037bf --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/kubernetes_manager.go @@ -0,0 +1,87 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "k8s.io/client-go/kubernetes" +) + +type KubernetesManager struct { + Logger *logger.Logger + ClientSet kubernetes.Interface + Config *configuration.Configuration +} + +func NewKubernetesManager(logger *logger.Logger, config *configuration.Configuration) *KubernetesManager { + return &KubernetesManager{ + Logger: logger, + //ClientSet: createClientSet(logger, config), + Config: config, + } +} + +/*func createClientSet(logger *logger.Logger, config *configuration.Configuration) kubernetes.Interface { + + absConfigPath,err := filepath.Abs(config.Kubernetes.ConfigPath) + if err != nil { + logger.Errorf("#KubernetesManager.init - error: %s", err) + return nil + } + + kubernetesConfig, err := clientcmd.BuildConfigFromFlags("", absConfigPath) + if err != nil { + logger.Errorf("#KubernetesManager.init - error: %s", err) + return nil + } + + clientSet, err := kubernetes.NewForConfig(kubernetesConfig) + if err != nil { + logger.Errorf("#KubernetesManager.init - error: %s", err) + return nil + } + return clientSet +}*/ + +/*func (km KubernetesManager) DeletePod(podName string) error { + km.Logger.Infof("#KubernetesManager.DeletePod - POD name: %s ", podName) + + if km.ClientSet == nil { + km.Logger.Errorf("#KubernetesManager.DeletePod - no kubernetesManager connection") + return e2managererrors.NewInternalError() + } + + if len(podName) == 0 { + km.Logger.Warnf("#KubernetesManager.DeletePod - empty pod name") + return e2managererrors.NewInternalError() + } + + err := km.ClientSet.CoreV1().Pods(km.Config.Kubernetes.KubeNamespace).Delete(podName, &metaV1.DeleteOptions{}) + + if err != nil { + km.Logger.Errorf("#KubernetesManager.DeletePod - POD %s can't be deleted, error: %s", podName, err) + return err + } + + km.Logger.Infof("#KubernetesManager.DeletePod - POD %s was deleted", podName) + return nil +}*/ \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/managers/kubernetes_manager_test.go b/setup/e2mgr/E2Manager/managers/kubernetes_manager_test.go new file mode 100644 index 0000000..ef9bcb4 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/kubernetes_manager_test.go @@ -0,0 +1,152 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers +/* + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "github.com/stretchr/testify/assert" + "k8s.io/api/core/v1" + metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/client-go/kubernetes/fake" + "testing" +) + +type TestStruct struct { + description string + namespace string + expected []string + objs []runtime.Object +} + +func initKubernetesManagerTest(t *testing.T) *KubernetesManager { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{} + config.Kubernetes.KubeNamespace = "oran" + config.Kubernetes.ConfigPath = "somePath" + + kubernetesManager := NewKubernetesManager(logger, config) + + return kubernetesManager +} + +func TestDelete_NoPodName(t *testing.T) { + test := TestStruct{ + description: "2 namespace, 2 pods in oran", + namespace: "oran", + objs: []runtime.Object{pod("oran", "POD_Test_1"), pod("oran", "POD_Test_2"), pod("some-namespace", "POD_Test_1")}, + } + + kubernetesManager := initKubernetesManagerTest(t) + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := kubernetesManager.DeletePod("") + assert.NotNil(t, err) + }) +} + +func TestDelete_NoPods(t *testing.T) { + test := TestStruct{ + description: "no pods", + namespace: "oran", + expected: nil, + objs: nil, + } + + kubernetesManager := initKubernetesManagerTest(t) + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := kubernetesManager.DeletePod("POD_Test") + assert.NotNil(t, err) + }) +} + +func TestDelete_PodExists(t *testing.T) { + test := TestStruct{ + description: "2 namespace, 2 pods in oran", + namespace: "oran", + objs: []runtime.Object{pod("oran", "POD_Test_1"), pod("oran", "POD_Test_2"), pod("some-namespace", "POD_Test_1")}, + } + + kubernetesManager := initKubernetesManagerTest(t) + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := kubernetesManager.DeletePod("POD_Test_1") + assert.Nil(t, err) + }) +} + +func TestDelete_NoPodInNamespace(t *testing.T) { + test := TestStruct{ + description: "2 namespace, 2 pods in oran", + namespace: "oran", + objs: []runtime.Object{pod("oran", "POD_Test_1"), pod("oran", "POD_Test_2"), pod("some-namespace", "POD_Test")}, + } + + kubernetesManager := initKubernetesManagerTest(t) + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := kubernetesManager.DeletePod("POD_Test") + assert.NotNil(t, err) + }) +} + +func TestDelete_NoNamespace(t *testing.T) { + test := TestStruct{ + description: "No oran namespace", + namespace: "oran", + objs: []runtime.Object{pod("some-namespace", "POD_Test_1"), pod("some-namespace", "POD_Test_2"), pod("some-namespace", "POD_Test")}, + } + + kubernetesManager := initKubernetesManagerTest(t) + + t.Run(test.description, func(t *testing.T) { + kubernetesManager.ClientSet = fake.NewSimpleClientset(test.objs...) + + err := kubernetesManager.DeletePod("POD_Test") + assert.NotNil(t, err) + }) +} + +func pod(namespace, image string) *v1.Pod { + + return &v1.Pod{ + ObjectMeta: metaV1.ObjectMeta{ + Name: image, + Namespace: namespace, + Annotations: map[string]string{}, + }, + } +} +*/ \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/managers/notificationmanager/notification_manager.go b/setup/e2mgr/E2Manager/managers/notificationmanager/notification_manager.go new file mode 100644 index 0000000..cd284d5 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/notificationmanager/notification_manager.go @@ -0,0 +1,55 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package notificationmanager + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/providers/rmrmsghandlerprovider" + "e2mgr/rmrCgo" + "time" +) + +type NotificationManager struct { + logger *logger.Logger + notificationHandlerProvider *rmrmsghandlerprovider.NotificationHandlerProvider +} + +func NewNotificationManager(logger *logger.Logger, notificationHandlerProvider *rmrmsghandlerprovider.NotificationHandlerProvider) *NotificationManager { + return &NotificationManager{ + logger: logger, + notificationHandlerProvider: notificationHandlerProvider, + } +} + +func (m NotificationManager) HandleMessage(mbuf *rmrCgo.MBuf) error { + + notificationHandler, err := m.notificationHandlerProvider.GetNotificationHandler(mbuf.MType) + + if err != nil { + m.logger.Errorf("#NotificationManager.HandleMessage - Error: %s", err) + return err + } + + notificationRequest := models.NewNotificationRequest(mbuf.Meid, *mbuf.Payload, time.Now(), *mbuf.XAction, mbuf.GetMsgSrc()) + go notificationHandler.Handle(notificationRequest) + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/notificationmanager/notification_manager_test.go b/setup/e2mgr/E2Manager/managers/notificationmanager/notification_manager_test.go new file mode 100644 index 0000000..ded3f27 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/notificationmanager/notification_manager_test.go @@ -0,0 +1,92 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package notificationmanager + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/providers/rmrmsghandlerprovider" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "testing" +) + +func initNotificationManagerTest(t *testing.T) (*logger.Logger, *mocks.RnibReaderMock, *NotificationManager) { + logger := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + httpClient := &mocks.HttpClientMock{} + + rmrSender := initRmrSender(&mocks.RmrMessengerMock{}, logger) + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) + routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + rmrNotificationHandlerProvider := rmrmsghandlerprovider.NewNotificationHandlerProvider() + rmrNotificationHandlerProvider.Init(logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager,routingManagerClient, e2tAssociationManager) + notificationManager := NewNotificationManager(logger, rmrNotificationHandlerProvider ) + return logger, readerMock, notificationManager +} + +func TestHandleMessageUnexistingMessageType(t *testing.T) { + _, _, nm := initNotificationManagerTest(t) + + mbuf := &rmrCgo.MBuf{MType: 1234} + + err := nm.HandleMessage(mbuf) + assert.NotNil(t, err) +} + +func TestHandleMessageExistingMessageType(t *testing.T) { + _, readerMock, nm := initNotificationManagerTest(t) + payload := []byte("123") + xaction := []byte("test") + mbuf := &rmrCgo.MBuf{MType: rmrCgo.RIC_X2_SETUP_RESP, Meid: "test", Payload: &payload, XAction: &xaction} + readerMock.On("GetNodeb", "test").Return(&entities.NodebInfo{}, fmt.Errorf("Some error")) + err := nm.HandleMessage(mbuf) + assert.Nil(t, err) +} + +// TODO: extract to test_utils +func initRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} + +// TODO: extract to test_utils +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/managers/ran_disconnection_manager.go b/setup/e2mgr/E2Manager/managers/ran_disconnection_manager.go new file mode 100644 index 0000000..ce6d62e --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/ran_disconnection_manager.go @@ -0,0 +1,93 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/services" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type IRanDisconnectionManager interface { + DisconnectRan(inventoryName string) error +} + +type RanDisconnectionManager struct { + logger *logger.Logger + config *configuration.Configuration + rnibDataService services.RNibDataService + ranSetupManager *RanSetupManager + e2tAssociationManager *E2TAssociationManager +} + +func NewRanDisconnectionManager(logger *logger.Logger, config *configuration.Configuration, rnibDataService services.RNibDataService, e2tAssociationManager *E2TAssociationManager) *RanDisconnectionManager { + return &RanDisconnectionManager{ + logger: logger, + config: config, + rnibDataService: rnibDataService, + e2tAssociationManager: e2tAssociationManager, + } +} + +func (m *RanDisconnectionManager) DisconnectRan(inventoryName string) error { + nodebInfo, err := m.rnibDataService.GetNodeb(inventoryName) + + if err != nil { + m.logger.Errorf("#RanDisconnectionManager.DisconnectRan - RAN name: %s - Failed fetching RAN from rNib. Error: %v", inventoryName, err) + return err + } + + connectionStatus := nodebInfo.GetConnectionStatus() + m.logger.Infof("#RanDisconnectionManager.DisconnectRan - RAN name: %s - RAN's connection status: %s", nodebInfo.RanName, connectionStatus) + + + if connectionStatus == entities.ConnectionStatus_SHUT_DOWN { + m.logger.Warnf("#RanDisconnectionManager.DisconnectRan - RAN name: %s - quit. RAN's connection status is SHUT_DOWN", nodebInfo.RanName) + return nil + } + + if connectionStatus == entities.ConnectionStatus_SHUTTING_DOWN { + return m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_SHUT_DOWN) + } + + err = m.updateNodebInfo(nodebInfo, entities.ConnectionStatus_DISCONNECTED) + + if err != nil { + return err + } + + e2tAddress := nodebInfo.AssociatedE2TInstanceAddress + return m.e2tAssociationManager.DissociateRan(e2tAddress, nodebInfo.RanName) +} + +func (m *RanDisconnectionManager) updateNodebInfo(nodebInfo *entities.NodebInfo, connectionStatus entities.ConnectionStatus) error { + + nodebInfo.ConnectionStatus = connectionStatus; + err := m.rnibDataService.UpdateNodebInfo(nodebInfo) + + if err != nil { + m.logger.Errorf("#RanDisconnectionManager.updateNodebInfo - RAN name: %s - Failed updating RAN's connection status to %s in rNib. Error: %v", nodebInfo.RanName, connectionStatus, err) + return err + } + + m.logger.Infof("#RanDisconnectionManager.updateNodebInfo - RAN name: %s - Successfully updated rNib. RAN's current connection status: %s", nodebInfo.RanName, nodebInfo.ConnectionStatus) + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/ran_disconnection_manager_test.go b/setup/e2mgr/E2Manager/managers/ran_disconnection_manager_test.go new file mode 100644 index 0000000..6ef0f54 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/ran_disconnection_manager_test.go @@ -0,0 +1,204 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" + "testing" +) + +const ranName = "test" +const e2tAddress = "10.10.2.15:9800" + +func initRanLostConnectionTest(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock, *mocks.RnibReaderMock, *mocks.RnibWriterMock, *RanDisconnectionManager, *mocks.HttpClientMock) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + rmrMessengerMock := &mocks.RmrMessengerMock{} + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + e2tInstancesManager := NewE2TInstancesManager(rnibDataService, logger) + httpClient := &mocks.HttpClientMock{} + routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) + e2tAssociationManager := NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + ranDisconnectionManager := NewRanDisconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, e2tAssociationManager) + return logger, rmrMessengerMock, readerMock, writerMock, ranDisconnectionManager, httpClient +} + +func TestRanDisconnectionGetNodebFailure(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, _ := initRanLostConnectionTest(t) + + var nodebInfo *entities.NodebInfo + readerMock.On("GetNodeb", ranName).Return(nodebInfo, common.NewInternalError(errors.New("Error"))) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.NotNil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNotCalled(t, "UpdateNodebInfo") +} + +func TestShutdownRan(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, _ := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_SHUT_DOWN} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.Nil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNotCalled(t, "UpdateNodebInfo") +} + +func TestShuttingdownRan(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, _ := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo := *origNodebInfo + updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(rnibErr) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.Nil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) +} + +func TestShuttingDownRanUpdateNodebInfoFailure(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, _ := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_SHUTTING_DOWN} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo := *origNodebInfo + updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_SHUT_DOWN + writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error"))) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.NotNil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) +} + +func TestConnectingRanUpdateNodebInfoFailure(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, _ := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo := *origNodebInfo + updatedNodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo).Return(common.NewInternalError(errors.New("Error"))) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.NotNil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) +} + +func TestConnectingRanDisconnectSucceeds(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, httpClient := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, AssociatedE2TInstanceAddress: E2TAddress} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) + e2tInstance := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{ranName}} + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + e2tInstanceToSave := * e2tInstance + e2tInstanceToSave.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &e2tInstanceToSave).Return(nil) + mockHttpClient(httpClient, clients.DissociateRanE2TInstanceApiSuffix, true) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.Nil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) +} + +func TestConnectingRanDissociateFailsRmError(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, httpClient := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, AssociatedE2TInstanceAddress: E2TAddress} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) + e2tInstance := &entities.E2TInstance{Address: E2TAddress, AssociatedRanList: []string{ranName}} + readerMock.On("GetE2TInstance", E2TAddress).Return(e2tInstance, nil) + e2tInstanceToSave := * e2tInstance + e2tInstanceToSave.AssociatedRanList = []string{} + writerMock.On("SaveE2TInstance", &e2tInstanceToSave).Return(nil) + mockHttpClient(httpClient, clients.DissociateRanE2TInstanceApiSuffix, false) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.Nil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) +} + +func TestConnectingRanDissociateFailsDbError(t *testing.T) { + _, _, readerMock, writerMock, ranDisconnectionManager, _ := initRanLostConnectionTest(t) + + origNodebInfo := &entities.NodebInfo{RanName: ranName, GlobalNbId: &entities.GlobalNbId{PlmnId: "xxx", NbId: "yyy"}, ConnectionStatus: entities.ConnectionStatus_CONNECTING, AssociatedE2TInstanceAddress: e2tAddress} + var rnibErr error + readerMock.On("GetNodeb", ranName).Return(origNodebInfo, rnibErr) + updatedNodebInfo1 := *origNodebInfo + updatedNodebInfo1.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + writerMock.On("UpdateNodebInfo", &updatedNodebInfo1).Return(rnibErr) + updatedNodebInfo2 := *origNodebInfo + updatedNodebInfo2.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + updatedNodebInfo2.AssociatedE2TInstanceAddress = "" + writerMock.On("UpdateNodebInfo", &updatedNodebInfo2).Return(rnibErr) + e2tInstance := &entities.E2TInstance{Address: e2tAddress, AssociatedRanList: []string{ranName}} + readerMock.On("GetE2TInstance", e2tAddress).Return(e2tInstance, common.NewInternalError(errors.New("Error"))) + err := ranDisconnectionManager.DisconnectRan(ranName) + assert.NotNil(t, err) + readerMock.AssertCalled(t, "GetNodeb", ranName) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + writerMock.AssertNotCalled(t, "SaveE2TInstance", ) +} + +func initRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} diff --git a/setup/e2mgr/E2Manager/managers/ran_setup_manager.go b/setup/e2mgr/E2Manager/managers/ran_setup_manager.go new file mode 100644 index 0000000..f855df4 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/ran_setup_manager.go @@ -0,0 +1,131 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/e2managererrors" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +type RanSetupManager struct { + logger *logger.Logger + rnibDataService services.RNibDataService + rmrSender *rmrsender.RmrSender +} + +type IRanSetupManager interface { + ExecuteSetup(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error +} + +func NewRanSetupManager(logger *logger.Logger, rmrSender *rmrsender.RmrSender, rnibDataService services.RNibDataService) *RanSetupManager { + return &RanSetupManager{ + logger: logger, + rnibDataService: rnibDataService, + rmrSender: rmrSender, + } +} + +// Update retries and connection status +func (m *RanSetupManager) updateConnectionStatus(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error { + // Update retries and connection status + nodebInfo.ConnectionStatus = status + err := m.rnibDataService.UpdateNodebInfo(nodebInfo) + if err != nil { + m.logger.Errorf("#RanSetupManager.updateConnectionStatus - Ran name: %s - Failed updating RAN's connection status to %v : %s", nodebInfo.RanName, status, err) + } else { + m.logger.Infof("#RanSetupManager.updateConnectionStatus - Ran name: %s - Successfully updated rNib. RAN's current connection status: %v", nodebInfo.RanName, status) + } + return err +} + +// Decrement retries and connection status (disconnected) +func (m *RanSetupManager) updateConnectionStatusDisconnected(nodebInfo *entities.NodebInfo) error { + // Update retries and connection status + nodebInfo.ConnectionStatus = entities.ConnectionStatus_DISCONNECTED + err := m.rnibDataService.UpdateNodebInfo(nodebInfo) + if err != nil { + m.logger.Errorf("#RanSetupManager.updateConnectionStatusDisconnected - Ran name: %s - Failed updating RAN's connection status to DISCONNECTED : %s", nodebInfo.RanName, err) + } else { + m.logger.Infof("#RanSetupManager.updateConnectionStatusDisconnected - Ran name: %s - Successfully updated rNib. RAN's current connection status: DISCONNECTED", nodebInfo.RanName) + } + return err +} + +func (m *RanSetupManager) prepareSetupRequest(nodebInfo *entities.NodebInfo) (int, *models.E2RequestMessage, error) { + // Build the endc/x2 setup request + switch nodebInfo.E2ApplicationProtocol { + case entities.E2ApplicationProtocol_X2_SETUP_REQUEST: + rmrMsgType := rmrCgo.RIC_X2_SETUP_REQ + request := models.NewE2RequestMessage(nodebInfo.RanName /*tid*/, nodebInfo.Ip, uint16(nodebInfo.Port), nodebInfo.RanName, e2pdus.PackedX2setupRequest) + return rmrMsgType, request, nil + case entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST: + rmrMsgType := rmrCgo.RIC_ENDC_X2_SETUP_REQ + request := models.NewE2RequestMessage(nodebInfo.RanName /*tid*/, nodebInfo.Ip, uint16(nodebInfo.Port), nodebInfo.RanName, e2pdus.PackedEndcX2setupRequest) + return rmrMsgType, request, nil + } + + m.logger.Errorf("#RanSetupManager.prepareSetupRequest - Unsupported nodebInfo.E2ApplicationProtocol %d ", nodebInfo.E2ApplicationProtocol) + return 0, nil, e2managererrors.NewInternalError() +} + +// ExecuteSetup updates the connection status and number of attempts in the nodebInfo and send an endc/x2 setup request to establish a connection with the RAN +func (m *RanSetupManager) ExecuteSetup(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error { + + // Update retries and connection status + if err := m.updateConnectionStatus(nodebInfo, status); err != nil { + return e2managererrors.NewRnibDbError() + } + + // Build the endc/x2 setup request + rmrMsgType, request, err := m.prepareSetupRequest(nodebInfo) + if err != nil { + return err + } + + // Send the endc/x2 setup request + var xAction []byte + var msgSrc unsafe.Pointer + msg := models.NewRmrMessage(rmrMsgType, nodebInfo.RanName, request.GetMessageAsBytes(m.logger), xAction, msgSrc) + + err = m.rmrSender.Send(msg) + + if err != nil { + m.logger.Errorf("#RanSetupManager.ExecuteSetup - failed sending setup request to RMR: %s", err) + + err := m.updateConnectionStatusDisconnected(nodebInfo) + + // Decrement retries and connection status (disconnected) + if err != nil { + return e2managererrors.NewRnibDbError() + } + + return e2managererrors.NewRmrError() + } + + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/ran_setup_manager_test.go b/setup/e2mgr/E2Manager/managers/ran_setup_manager_test.go new file mode 100644 index 0000000..c2dbb35 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/ran_setup_manager_test.go @@ -0,0 +1,219 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/e2pdus" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/rmrCgo" + "e2mgr/services" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "testing" + "unsafe" +) + +func initRanSetupManagerTest(t *testing.T) (*mocks.RmrMessengerMock, *mocks.RnibWriterMock, *RanSetupManager) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, logger) + + readerMock := &mocks.RnibReaderMock{} + + writerMock := &mocks.RnibWriterMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + ranSetupManager := NewRanSetupManager(logger, rmrSender, rnibDataService) + return rmrMessengerMock, writerMock, ranSetupManager +} + +func TestExecuteSetupConnectingX2Setup(t *testing.T) { + rmrMessengerMock, writerMock, mgr := initRanSetupManagerTest(t) + + ranName := "test1" + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var rnibErr error + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + payload := e2pdus.PackedX2setupRequest + xAction := []byte(ranName) + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) + + if err := mgr.ExecuteSetup(initialNodeb, entities.ConnectionStatus_CONNECTING); err != nil { + t.Errorf("want: success, got: error: %s", err) + } + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) + rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1) +} + +func TestExecuteSetupConnectingEndcX2Setup(t *testing.T) { + rmrMessengerMock, writerMock, mgr := initRanSetupManagerTest(t) + + ranName := "test1" + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST} + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST} + var rnibErr error + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + payload := e2pdus.PackedEndcX2setupRequest + xAction := []byte(ranName) + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_ENDC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) + + if err := mgr.ExecuteSetup(initialNodeb, entities.ConnectionStatus_CONNECTING); err != nil { + t.Errorf("want: success, got: error: %s", err) + } + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) + rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1) +} + +func TestExecuteSetupDisconnected(t *testing.T) { + rmrMessengerMock, writerMock, mgr := initRanSetupManagerTest(t) + + ranName := "test1" + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var rnibErr error + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(rnibErr) + + payload := []byte{0} + xAction := []byte(ranName) + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, fmt.Errorf("send failure")) + + if err := mgr.ExecuteSetup(initialNodeb, entities.ConnectionStatus_CONNECTING); err == nil { + t.Errorf("want: failure, got: success") + } + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1) +} + +func TestExecuteSetupConnectingRnibError(t *testing.T) { + rmrMessengerMock, writerMock, mgr := initRanSetupManagerTest(t) + + ranName := "test1" + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var rnibErr = common.NewInternalError(fmt.Errorf("DB error")) + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(rnibErr) + + payload := []byte{0} + xAction := []byte(ranName) + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, fmt.Errorf("send failure")) + + if err := mgr.ExecuteSetup(initialNodeb, entities.ConnectionStatus_CONNECTING); err == nil { + t.Errorf("want: failure, got: success") + } else { + assert.IsType(t, e2managererrors.NewRnibDbError(), err) + } + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) + rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0) +} + +func TestExecuteSetupDisconnectedRnibError(t *testing.T) { + rmrMessengerMock, writerMock, mgr := initRanSetupManagerTest(t) + + ranName := "test1" + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var argNodebDisconnected = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_DISCONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_X2_SETUP_REQUEST} + var rnibErr error + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + writerMock.On("UpdateNodebInfo", argNodebDisconnected).Return(common.NewInternalError(fmt.Errorf("DB error"))) + + payload := []byte{0} + xAction := []byte(ranName) + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, fmt.Errorf("send failure")) + + if err := mgr.ExecuteSetup(initialNodeb, entities.ConnectionStatus_CONNECTING); err == nil { + t.Errorf("want: failure, got: success") + } else { + assert.IsType(t, e2managererrors.NewRnibDbError(), err) + } + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 2) + rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 1) +} + +func TestExecuteSetupUnsupportedProtocol(t *testing.T) { + rmrMessengerMock, writerMock, mgr := initRanSetupManagerTest(t) + + ranName := "test1" + + var initialNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTED, E2ApplicationProtocol: entities.E2ApplicationProtocol_UNKNOWN_E2_APPLICATION_PROTOCOL} + var argNodeb = &entities.NodebInfo{ConnectionStatus: entities.ConnectionStatus_CONNECTING, E2ApplicationProtocol: entities.E2ApplicationProtocol_UNKNOWN_E2_APPLICATION_PROTOCOL} + var rnibErr error + writerMock.On("UpdateNodebInfo", argNodeb).Return(rnibErr) + + payload := e2pdus.PackedX2setupRequest + xAction := []byte(ranName) + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(rmrCgo.RIC_X2_SETUP_REQ, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(msg, nil) + + if err := mgr.ExecuteSetup(initialNodeb, entities.ConnectionStatus_CONNECTING); err == nil { + t.Errorf("want: error, got: success") + } + + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) + rmrMessengerMock.AssertNumberOfCalls(t, "SendMsg", 0) +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#initLog test - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/managers/ran_status_change_manager.go b/setup/e2mgr/E2Manager/managers/ran_status_change_manager.go new file mode 100644 index 0000000..95c6003 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/ran_status_change_manager.go @@ -0,0 +1,62 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/models" + "e2mgr/services/rmrsender" + "encoding/json" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "unsafe" +) + +type RanStatusChangeManager struct { + logger *logger.Logger + rmrSender *rmrsender.RmrSender +} + +func NewRanStatusChangeManager(logger *logger.Logger, rmrSender *rmrsender.RmrSender) *RanStatusChangeManager { + return &RanStatusChangeManager{ + logger: logger, + rmrSender: rmrSender, + } +} + +type IRanStatusChangeManager interface { + Execute(msgType int, msgDirection enums.MessageDirection, nodebInfo *entities.NodebInfo) error +} + +func (m *RanStatusChangeManager) Execute(msgType int, msgDirection enums.MessageDirection, nodebInfo *entities.NodebInfo) error { + + resourceStatusPayload := models.NewResourceStatusPayload(nodebInfo.NodeType, msgDirection) + resourceStatusJson, err := json.Marshal(resourceStatusPayload) + + if err != nil { + m.logger.Errorf("#RanStatusChangeManager.Execute - RAN name: %s - Error marshaling resource status payload: %v", nodebInfo.RanName, err) + return err + } + + var xAction []byte + var msgSrc unsafe.Pointer + rmrMessage := models.NewRmrMessage(msgType, nodebInfo.RanName, resourceStatusJson, xAction, msgSrc) + return m.rmrSender.Send(rmrMessage) +} diff --git a/setup/e2mgr/E2Manager/managers/ran_status_change_manager_test.go b/setup/e2mgr/E2Manager/managers/ran_status_change_manager_test.go new file mode 100644 index 0000000..a0f497b --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/ran_status_change_manager_test.go @@ -0,0 +1,66 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/enums" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/rmrCgo" + "e2mgr/services/rmrsender" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "testing" +) + +func initRanStatusChangeManagerTest(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock, *rmrsender.RmrSender) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Fatalf("#initStatusChangeManagerTest - failed to initialize logger, error: %s", err) + } + + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrSender := initRmrSender(rmrMessengerMock, logger) + + return logger, rmrMessengerMock, rmrSender +} + +func TestMarshalFailure(t *testing.T) { + logger, _, rmrSender := initRanStatusChangeManagerTest(t) + m := NewRanStatusChangeManager(logger, rmrSender) + + nodebInfo := entities.NodebInfo{} + err := m.Execute(123, 4, &nodebInfo) + + assert.NotNil(t, err) +} + +func TestMarshalSuccess(t *testing.T) { + logger, rmrMessengerMock, rmrSender := initRanStatusChangeManagerTest(t) + m := NewRanStatusChangeManager(logger, rmrSender) + + nodebInfo := entities.NodebInfo{NodeType: entities.Node_ENB} + var err error + rmrMessengerMock.On("SendMsg", mock.Anything, true).Return(&rmrCgo.MBuf{}, err) + err = m.Execute(rmrCgo.RAN_CONNECTED, enums.RIC_TO_RAN, &nodebInfo) + + assert.Nil(t, err) +} diff --git a/setup/e2mgr/E2Manager/managers/x2_setup_failure_response_manager.go b/setup/e2mgr/E2Manager/managers/x2_setup_failure_response_manager.go new file mode 100644 index 0000000..faaa892 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/x2_setup_failure_response_manager.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/converters" + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type X2SetupFailureResponseManager struct { + converter converters.IX2SetupFailureResponseConverter +} + +func NewX2SetupFailureResponseManager(converter converters.IX2SetupFailureResponseConverter) *X2SetupFailureResponseManager { + return &X2SetupFailureResponseManager{ + converter: converter, + } +} + +func (m *X2SetupFailureResponseManager) PopulateNodebByPdu(logger *logger.Logger, nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo, payload []byte) error { + + failureResponse, err := m.converter.UnpackX2SetupFailureResponseAndExtract(payload) + + if err != nil { + logger.Errorf("#X2SetupFailureResponseManager.PopulateNodebByPdu - RAN name: %s - Unpack and extract failed. Error: %v", nodebInfo.RanName, err) + return err + } + + logger.Infof("#X2SetupFailureResponseManager.PopulateNodebByPdu - RAN name: %s - Unpacked payload and extracted protobuf successfully", nodebInfo.RanName) + + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED_SETUP_FAILED + nodebInfo.SetupFailure = failureResponse + nodebInfo.FailureType = entities.Failure_X2_SETUP_FAILURE + return nil +} diff --git a/setup/e2mgr/E2Manager/managers/x2_setup_failure_response_manager_test.go b/setup/e2mgr/E2Manager/managers/x2_setup_failure_response_manager_test.go new file mode 100644 index 0000000..23a3c39 --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/x2_setup_failure_response_manager_test.go @@ -0,0 +1,61 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package managers + +import ( + "e2mgr/converters" + "e2mgr/tests" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestPopulateX2NodebByPduFailure(t *testing.T) { + logger := tests.InitLog(t) + nodebInfo := &entities.NodebInfo{} + nodebIdentity := &entities.NbIdentity{} + handler := NewX2SetupFailureResponseManager(converters.NewX2SetupFailureResponseConverter(logger)) + err := handler.PopulateNodebByPdu(logger, nodebIdentity, nodebInfo, createRandomPayload()) + assert.NotNil(t, err) +} + +func TestPopulateX2NodebByPduSuccess(t *testing.T) { + logger := tests.InitLog(t) + nodebInfo := &entities.NodebInfo{} + nodebIdentity := &entities.NbIdentity{} + handler := NewX2SetupFailureResponseManager(converters.NewX2SetupFailureResponseConverter(logger)) + err := handler.PopulateNodebByPdu(logger, nodebIdentity, nodebInfo, createX2SetupFailureResponsePayload(t)) + assert.Nil(t, err) + assert.Equal(t, entities.ConnectionStatus_CONNECTED_SETUP_FAILED, nodebInfo.ConnectionStatus) + assert.Equal(t, entities.Failure_X2_SETUP_FAILURE, nodebInfo.FailureType) + +} + +func createX2SetupFailureResponsePayload(t *testing.T) []byte { + packedPdu := "4006001a0000030005400200000016400100001140087821a00000008040" + var payload []byte + _, err := fmt.Sscanf(packedPdu, "%x", &payload) + if err != nil { + t.Errorf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err) + } + return payload +} diff --git a/setup/e2mgr/E2Manager/managers/x2_setup_response_manager.go b/setup/e2mgr/E2Manager/managers/x2_setup_response_manager.go new file mode 100644 index 0000000..d7e9d0f --- /dev/null +++ b/setup/e2mgr/E2Manager/managers/x2_setup_response_manager.go @@ -0,0 +1,57 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package managers + +import ( + "e2mgr/converters" + "e2mgr/logger" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type X2SetupResponseManager struct { + converter converters.IX2SetupResponseConverter +} + +func NewX2SetupResponseManager(converter converters.IX2SetupResponseConverter) *X2SetupResponseManager { + return &X2SetupResponseManager{ + converter: converter, + } +} + +func (m *X2SetupResponseManager) PopulateNodebByPdu(logger *logger.Logger, nbIdentity *entities.NbIdentity, nodebInfo *entities.NodebInfo, payload []byte) error { + + enbId, enb, err := m.converter.UnpackX2SetupResponseAndExtract(payload) + + if err != nil { + logger.Errorf("#X2SetupResponseManager.PopulateNodebByPdu - RAN name: %s - Unpack and extract failed. %v", nodebInfo.RanName, err) + return err + } + + logger.Infof("#X2SetupResponseManager.PopulateNodebByPdu - RAN name: %s - Unpacked payload and extracted protobuf successfully", nodebInfo.RanName) + + nbIdentity.GlobalNbId = enbId + nodebInfo.GlobalNbId = enbId + nodebInfo.ConnectionStatus = entities.ConnectionStatus_CONNECTED + nodebInfo.NodeType = entities.Node_ENB + nodebInfo.Configuration = &entities.NodebInfo_Enb{Enb: enb} + + return nil +} diff --git a/setup/e2mgr/E2Manager/mocks/e2t_controller_mock.go b/setup/e2mgr/E2Manager/mocks/e2t_controller_mock.go new file mode 100644 index 0000000..e26c3ec --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/e2t_controller_mock.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "github.com/stretchr/testify/mock" + "net/http" +) + +type E2TControllerMock struct { + mock.Mock +} + +func (m *E2TControllerMock) HandleRequest(writer http.ResponseWriter, request *http.Request) { + m.Called() +} + +func (m *E2TControllerMock) GetE2TInstances(writer http.ResponseWriter, request *http.Request) { + m.Called() +} diff --git a/setup/e2mgr/E2Manager/mocks/e2t_instances_manager_mock.go b/setup/e2mgr/E2Manager/mocks/e2t_instances_manager_mock.go new file mode 100644 index 0000000..c81137f --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/e2t_instances_manager_mock.go @@ -0,0 +1,96 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/mock" +) + +type E2TInstancesManagerMock struct { + mock.Mock +} + +func (m *E2TInstancesManagerMock) GetE2TInstance(e2tAddress string) (*entities.E2TInstance, error) { + args := m.Called(e2tAddress) + + return args.Get(0).(*entities.E2TInstance), args.Error(1) +} + +func (m *E2TInstancesManagerMock) AddE2TInstance(e2tInstanceAddress string, podName string) error { + args := m.Called(e2tInstanceAddress, podName) + return args.Error(0) +} + +func (m *E2TInstancesManagerMock) RemoveE2TInstance(e2tAddress string) error { + args := m.Called(e2tAddress) + return args.Error(0) +} + +func (m *E2TInstancesManagerMock) SelectE2TInstance() (string, error) { + args := m.Called() + return args.String(0), args.Error(1) +} + +func (m *E2TInstancesManagerMock) AddRansToInstance(e2tAddress string, ranNames []string) error { + args := m.Called(e2tAddress, ranNames) + return args.Error(0) + +} + +func (m *E2TInstancesManagerMock) RemoveRanFromInstance(ranName string, e2tAddress string) error { + args := m.Called(ranName, e2tAddress) + return args.Error(0) + +} + +func (m *E2TInstancesManagerMock) GetE2TInstances() ([]*entities.E2TInstance, error) { + args := m.Called() + + return args.Get(0).([]*entities.E2TInstance), args.Error(1) +} + +func (m *E2TInstancesManagerMock) GetE2TInstancesNoLogs() ([]*entities.E2TInstance, error) { + args := m.Called() + + return args.Get(0).([]*entities.E2TInstance), args.Error(1) +} + +func (m *E2TInstancesManagerMock) ResetKeepAliveTimestamp(e2tAddress string) error { + args := m.Called(e2tAddress) + return args.Error(0) + +} + +func (m *E2TInstancesManagerMock) SetE2tInstanceState(e2tAddress string, currentState entities.E2TInstanceState, newState entities.E2TInstanceState) error { + args := m.Called(e2tAddress, currentState, newState) + return args.Error(0) +} + +func (m *E2TInstancesManagerMock) GetE2TAddresses() ([]string, error) { + args := m.Called() + return args.Get(0).([]string), args.Error(1) +} + +func (m *E2TInstancesManagerMock) ClearRansOfAllE2TInstances() error { + args := m.Called() + return args.Error(0) +} diff --git a/setup/e2mgr/E2Manager/mocks/e2t_shutdown_manager_mock.go b/setup/e2mgr/E2Manager/mocks/e2t_shutdown_manager_mock.go new file mode 100644 index 0000000..c560f1d --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/e2t_shutdown_manager_mock.go @@ -0,0 +1,35 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/mock" +) + +type E2TShutdownManagerMock struct { + mock.Mock +} + +func (m *E2TShutdownManagerMock) Shutdown(e2tInstance *entities.E2TInstance) error { + args := m.Called(e2tInstance) + return args.Error(0) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/mocks/http_client_mock.go b/setup/e2mgr/E2Manager/mocks/http_client_mock.go new file mode 100644 index 0000000..7c5dcad --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/http_client_mock.go @@ -0,0 +1,40 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "github.com/stretchr/testify/mock" + "io" + "net/http" +) + +type HttpClientMock struct { + mock.Mock +} + +func (c *HttpClientMock) Post(url, contentType string, body io.Reader) (resp *http.Response, err error) { + args := c.Called(url, contentType, body) + return args.Get(0).(*http.Response), args.Error(1) +} + +func (c *HttpClientMock) Delete(url, contentType string, body io.Reader) (resp *http.Response, err error) { + args := c.Called(url, contentType, body) + return args.Get(0).(*http.Response), args.Error(1) +} diff --git a/setup/e2mgr/E2Manager/mocks/nodeb_controller_mock.go b/setup/e2mgr/E2Manager/mocks/nodeb_controller_mock.go new file mode 100644 index 0000000..a164383 --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/nodeb_controller_mock.go @@ -0,0 +1,83 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "github.com/gorilla/mux" + "github.com/stretchr/testify/mock" + "net/http" +) + +type NodebControllerMock struct { + mock.Mock +} + +func (c *NodebControllerMock) GetNodeb(writer http.ResponseWriter, r *http.Request) { + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(http.StatusOK) + + vars := mux.Vars(r) + ranName := vars["ranName"] + + writer.Write([]byte(ranName)) + c.Called() +} + +func (c *NodebControllerMock) GetNodebIdList(writer http.ResponseWriter, r *http.Request) { + c.Called() +} + +func (c *NodebControllerMock) Shutdown(writer http.ResponseWriter, r *http.Request) { + c.Called() +} + +func (c *NodebControllerMock) X2Reset(writer http.ResponseWriter, r *http.Request) { + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(http.StatusOK) + + vars := mux.Vars(r) + ranName := vars["ranName"] + + writer.Write([]byte(ranName)) + + c.Called() +} + +func (c *NodebControllerMock) X2Setup(writer http.ResponseWriter, r *http.Request) { + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(http.StatusOK) + + c.Called() +} + +func (c *NodebControllerMock) EndcSetup(writer http.ResponseWriter, r *http.Request) { + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(http.StatusOK) + + c.Called() +} + +func (c *NodebControllerMock) UpdateGnb(writer http.ResponseWriter, r *http.Request) { + writer.Header().Set("Content-Type", "application/json") + writer.WriteHeader(http.StatusOK) + + c.Called() +} diff --git a/setup/e2mgr/E2Manager/mocks/ran_reconnection_manager_mock.go b/setup/e2mgr/E2Manager/mocks/ran_reconnection_manager_mock.go new file mode 100644 index 0000000..18edaaf --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/ran_reconnection_manager_mock.go @@ -0,0 +1,33 @@ +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "github.com/stretchr/testify/mock" +) + +type RanDisconnectionManagerMock struct { + mock.Mock +} + +func (m *RanDisconnectionManagerMock) DisconnectRan(inventoryName string) error { + args := m.Called(inventoryName) + + return args.Error(0) +} diff --git a/setup/e2mgr/E2Manager/mocks/ran_setup_manager_mock.go b/setup/e2mgr/E2Manager/mocks/ran_setup_manager_mock.go new file mode 100644 index 0000000..f9c1704 --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/ran_setup_manager_mock.go @@ -0,0 +1,35 @@ +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/mock" +) + +type RanSetupManagerMock struct { + mock.Mock +} + +func (m *RanSetupManagerMock) ExecuteSetup(nodebInfo *entities.NodebInfo, status entities.ConnectionStatus) error { + args := m.Called(nodebInfo, status) + + return args.Error(0) +} diff --git a/setup/e2mgr/E2Manager/mocks/rmrMessengerMock.go b/setup/e2mgr/E2Manager/mocks/rmrMessengerMock.go new file mode 100644 index 0000000..732f696 --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/rmrMessengerMock.go @@ -0,0 +1,68 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package mocks + +import ( + "e2mgr/logger" + "e2mgr/rmrCgo" + "github.com/stretchr/testify/mock" +) + +type RmrMessengerMock struct { + mock.Mock +} + +func (m *RmrMessengerMock) Init(port string, maxMsgSize int, flags int, logger *logger.Logger) rmrCgo.RmrMessenger{ + args := m.Called(port, maxMsgSize, flags, logger) + return args.Get(0).(rmrCgo.RmrMessenger) +} + +func (m *RmrMessengerMock) SendMsg(msg *rmrCgo.MBuf, printLogs bool) (*rmrCgo.MBuf, error){ + args := m.Called(msg, printLogs) + return args.Get(0).(*rmrCgo.MBuf), args.Error(1) +} + +func (m *RmrMessengerMock) WhSendMsg(msg *rmrCgo.MBuf, printLogs bool) (*rmrCgo.MBuf, error){ + args := m.Called(msg, printLogs) + return args.Get(0).(*rmrCgo.MBuf), args.Error(1) +} + +func (m *RmrMessengerMock) RecvMsg() (*rmrCgo.MBuf, error){ + args := m.Called() + return args.Get(0).(*rmrCgo.MBuf), args.Error(1) +} + +func (m *RmrMessengerMock) RtsMsg(msg *rmrCgo.MBuf){ + m.Called( ) +} + +func (m *RmrMessengerMock) FreeMsg(){ + m.Called( ) +} + +func (m *RmrMessengerMock) IsReady() bool{ + args := m.Called( ) + return args.Bool(0) +} + +func (m *RmrMessengerMock) Close(){ + m.Called( ) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/mocks/rnibReaderMock.go b/setup/e2mgr/E2Manager/mocks/rnibReaderMock.go new file mode 100644 index 0000000..59c635e --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/rnibReaderMock.go @@ -0,0 +1,158 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/mock" +) + +type RnibReaderMock struct { + mock.Mock +} + +func (m *RnibReaderMock) GetNodeb(inventoryName string) (*entities.NodebInfo, error) { + args := m.Called(inventoryName) + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).(*entities.NodebInfo), errArg.(error); + } + + return args.Get(0).(*entities.NodebInfo), nil +} + +func (m *RnibReaderMock) GetNodebByGlobalNbId(nodeType entities.Node_Type, globalNbId *entities.GlobalNbId) (*entities.NodebInfo, error) { + args := m.Called(nodeType, globalNbId) + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).(*entities.NodebInfo), errArg.(error); + } + + return args.Get(0).(*entities.NodebInfo), nil +} + +func (m *RnibReaderMock) GetCellList(inventoryName string) (*entities.Cells, error) { + args := m.Called(inventoryName) + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).(*entities.Cells), errArg.(error); + } + + return args.Get(0).(*entities.Cells), nil +} + +func (m *RnibReaderMock) GetListGnbIds() ([]*entities.NbIdentity, error) { + args := m.Called() + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).([]*entities.NbIdentity), errArg.(error); + } + + return args.Get(0).([]*entities.NbIdentity), nil +} + +func (m *RnibReaderMock) GetListEnbIds() ([]*entities.NbIdentity, error) { + args := m.Called() + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).([]*entities.NbIdentity), errArg.(error); + } + + return args.Get(0).([]*entities.NbIdentity), nil + +} + +func (m *RnibReaderMock) GetCountGnbList() (int, error) { + args := m.Called() + + errArg := args.Get(1); + if errArg != nil { + return args.Int(0), errArg.(error); + } + + return args.Int(0), nil + +} + +func (m *RnibReaderMock) GetCell(inventoryName string, pci uint32) (*entities.Cell, error) { + args := m.Called(inventoryName, pci) + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).(*entities.Cell), errArg.(error); + } + + return args.Get(0).(*entities.Cell), nil +} + +func (m *RnibReaderMock) GetCellById(cellType entities.Cell_Type, cellId string) (*entities.Cell, error) { + args := m.Called(cellType, cellId) + + errArg := args.Get(1); + if errArg != nil { + return args.Get(0).(*entities.Cell), errArg.(error); + } + + return args.Get(0).(*entities.Cell), nil +} + +func (m *RnibReaderMock) GetListNodebIds() ([]*entities.NbIdentity, error) { + args := m.Called() + + errArg := args.Get(1) + + if errArg != nil { + return args.Get(0).([]*entities.NbIdentity), errArg.(error) + } + + return args.Get(0).([]*entities.NbIdentity), nil +} + +func (m *RnibReaderMock) GetRanLoadInformation(inventoryName string) (*entities.RanLoadInformation, error) { + args := m.Called() + + errArg := args.Get(1) + + if errArg != nil { + return args.Get(0).(*entities.RanLoadInformation), errArg.(error) + } + + return args.Get(0).(*entities.RanLoadInformation), nil +} + +func (m *RnibReaderMock) GetE2TInstance(e2taddress string) (*entities.E2TInstance, error) { + args := m.Called(e2taddress) + return args.Get(0).(*entities.E2TInstance), args.Error(1) +} + +func (m *RnibReaderMock) GetE2TInstances(addresses []string) ([]*entities.E2TInstance, error) { + args := m.Called(addresses) + return args.Get(0).([]*entities.E2TInstance), args.Error(1) +} + +func (m *RnibReaderMock) GetE2TAddresses() ([]string, error) { + args := m.Called() + return args.Get(0).([]string), args.Error(1) +} diff --git a/setup/e2mgr/E2Manager/mocks/rnibWriterMock.go b/setup/e2mgr/E2Manager/mocks/rnibWriterMock.go new file mode 100644 index 0000000..5c602bb --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/rnibWriterMock.go @@ -0,0 +1,94 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/mock" +) + +type RnibWriterMock struct { + mock.Mock +} + +func (rnibWriterMock *RnibWriterMock) SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error { + args := rnibWriterMock.Called(nbIdentity, nb) + + errArg := args.Get(0) + + if errArg != nil { + return errArg.(error) + } + + return nil +} + +func (rnibWriterMock *RnibWriterMock) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error { + args := rnibWriterMock.Called(nodebInfo) + + errArg := args.Get(0) + + if errArg != nil { + return errArg.(error) + } + + return nil +} + +func (rnibWriterMock *RnibWriterMock) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error { + args := rnibWriterMock.Called(inventoryName, ranLoadInformation) + + errArg := args.Get(0) + + if errArg != nil { + return errArg.(error) + } + + return nil +} + +func (rnibWriterMock *RnibWriterMock) SaveE2TInstance(e2tInstance *entities.E2TInstance) error { + args := rnibWriterMock.Called(e2tInstance) + + return args.Error(0) +} + +func (rnibWriterMock *RnibWriterMock) SaveE2TAddresses(addresses []string) error { + args := rnibWriterMock.Called(addresses) + + return args.Error(0) +} + +func (rnibWriterMock *RnibWriterMock) RemoveE2TInstance(address string) error { + args := rnibWriterMock.Called(address) + + return args.Error(0) +} + +func (rnibWriterMock *RnibWriterMock) UpdateGnbCells(nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) error { + args := rnibWriterMock.Called(nodebInfo, servedNrCells) + return args.Error(0) +} + +func (rnibWriterMock *RnibWriterMock) RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error { + args := rnibWriterMock.Called(inventoryName, servedNrCells) + return args.Error(0) +} + diff --git a/setup/e2mgr/E2Manager/mocks/root_controller_mock.go b/setup/e2mgr/E2Manager/mocks/root_controller_mock.go new file mode 100644 index 0000000..b27bce7 --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/root_controller_mock.go @@ -0,0 +1,34 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "github.com/stretchr/testify/mock" + "net/http" +) + +type RootControllerMock struct { + mock.Mock +} + +func (rc *RootControllerMock) HandleHealthCheckRequest(writer http.ResponseWriter, request *http.Request) { + rc.Called() +} diff --git a/setup/e2mgr/E2Manager/mocks/routing_manager_client_mock.go b/setup/e2mgr/E2Manager/mocks/routing_manager_client_mock.go new file mode 100644 index 0000000..717703d --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/routing_manager_client_mock.go @@ -0,0 +1,58 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import ( + "github.com/stretchr/testify/mock" +) + +type RoutingManagerClientMock struct { + mock.Mock +} + +func (m *RoutingManagerClientMock) AddE2TInstance(e2tAddress string) error { + + args := m.Called(e2tAddress) + return args.Error(0) +} + +func (m *RoutingManagerClientMock) AssociateRanToE2TInstance(e2tAddress string, ranName string) error { + + args := m.Called(e2tAddress, ranName) + return args.Error(0) +} + +func (m *RoutingManagerClientMock) DissociateRanE2TInstance(e2tAddress string, ranName string) error { + + args := m.Called(e2tAddress, ranName) + return args.Error(0) +} + +func (m *RoutingManagerClientMock) DissociateAllRans(e2tAddresses []string) error { + +args := m.Called(e2tAddresses) +return args.Error(0) +} + +func (m *RoutingManagerClientMock) DeleteE2TInstance(e2tAddress string, ransToBeDissociated []string) error { + + args := m.Called(e2tAddress, ransToBeDissociated) + return args.Error(0) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/mocks/sdlInstanceMock.go b/setup/e2mgr/E2Manager/mocks/sdlInstanceMock.go new file mode 100644 index 0000000..00eea6b --- /dev/null +++ b/setup/e2mgr/E2Manager/mocks/sdlInstanceMock.go @@ -0,0 +1,136 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package mocks + +import "github.com/stretchr/testify/mock" + +type MockSdlInstance struct { + mock.Mock +} + +func (m *MockSdlInstance) SubscribeChannel(cb func(string, ...string), channels ...string) error { + a := m.Called(cb, channels) + return a.Error(0) +} + +func (m *MockSdlInstance) UnsubscribeChannel(channels ...string) error { + a := m.Called(channels) + return a.Error(0) +} + +func (m *MockSdlInstance) SetAndPublish(channelsAndEvents []string, pairs ...interface{}) error { + a := m.Called(channelsAndEvents, pairs) + return a.Error(0) +} + +func (m *MockSdlInstance) SetIfAndPublish(channelsAndEvents []string, key string, oldData, newData interface{}) (bool, error) { + a := m.Called(channelsAndEvents, key, oldData, newData) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) SetIfNotExistsAndPublish(channelsAndEvents []string, key string, data interface{}) (bool, error) { + a := m.Called(channelsAndEvents, key, data) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) RemoveAndPublish(channelsAndEvents []string, keys []string) error { + a := m.Called(channelsAndEvents, keys) + return a.Error(0) +} + +func (m *MockSdlInstance) RemoveIfAndPublish(channelsAndEvents []string, key string, data interface{}) (bool, error) { + a := m.Called(channelsAndEvents, key, data) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) RemoveAllAndPublish(channelsAndEvents []string) error { + a := m.Called(channelsAndEvents) + return a.Error(0) +} + +func (m *MockSdlInstance) Set(pairs ...interface{}) error { + a := m.Called(pairs) + return a.Error(0) +} + +func (m *MockSdlInstance) Get(keys []string) (map[string]interface{}, error) { + a := m.Called(keys) + return a.Get(0).(map[string]interface{}), a.Error(1) +} + +func (m *MockSdlInstance) GetAll() ([]string, error) { + a := m.Called() + return a.Get(0).([]string), a.Error(1) +} + +func (m *MockSdlInstance) Close() error { + a := m.Called() + return a.Error(0) +} + +func (m *MockSdlInstance) Remove(keys []string) error { + a := m.Called(keys) + return a.Error(0) +} + +func (m *MockSdlInstance) RemoveAll() error { + a := m.Called() + return a.Error(0) +} + +func (m *MockSdlInstance) SetIf(key string, oldData, newData interface{}) (bool, error) { + a := m.Called(key, oldData, newData) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) SetIfNotExists(key string, data interface{}) (bool, error) { + a := m.Called(key, data) + return a.Bool(0), a.Error(1) +} +func (m *MockSdlInstance) RemoveIf(key string, data interface{}) (bool, error) { + a := m.Called(key, data) + return a.Bool(0), a.Error(1) +} + +func (m *MockSdlInstance) AddMember(group string, member ...interface{}) error{ + a := m.Called(group, member) + return a.Error(0) +} + +func (m *MockSdlInstance) RemoveMember(group string, member ...interface{}) error { + a := m.Called(group, member) + return a.Error(0) +} +func (m *MockSdlInstance) RemoveGroup(group string) error { + a := m.Called(group) + return a.Error(0) +} +func (m *MockSdlInstance) GetMembers(group string) ([]string, error) { + a := m.Called(group) + return a.Get(0).([]string), a.Error(1) +} +func (m *MockSdlInstance) IsMember(group string, member interface{}) (bool, error){ + a := m.Called(group, member) + return a.Bool(0), a.Error(1) +} +func (m *MockSdlInstance) GroupSize(group string) (int64, error){ + a := m.Called(group,) + return int64(a.Int(0)), a.Error(1) +} diff --git a/setup/e2mgr/E2Manager/models/e2_request_message.go b/setup/e2mgr/E2Manager/models/e2_request_message.go new file mode 100644 index 0000000..9430e28 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/e2_request_message.go @@ -0,0 +1,54 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +import ( + "e2mgr/logger" + "fmt" +) + +type E2RequestMessage struct { + transactionId string + ranIp string + ranPort uint16 + ranName string + payload []byte +} + +func (e2RequestMessage E2RequestMessage) RanName() string { + return e2RequestMessage.ranName +} + +func (e2RequestMessage E2RequestMessage) TransactionId() string { + return e2RequestMessage.transactionId +} + +func NewE2RequestMessage(transactionId string, ranIp string, ranPort uint16, ranName string, payload []byte) *E2RequestMessage { + return &E2RequestMessage{transactionId: transactionId, ranIp: ranIp, ranPort: ranPort, ranName: ranName, payload: payload} +} + +// TODO: this shouldn't receive logger +func (e2RequestMessage E2RequestMessage) GetMessageAsBytes(logger *logger.Logger) []byte { + messageStringWithoutPayload := fmt.Sprintf("%s|%d|%s|%d|", e2RequestMessage.ranIp, e2RequestMessage.ranPort, e2RequestMessage.ranName, len(e2RequestMessage.payload)) + logger.Debugf("#e2_request_message.GetMessageAsBytes - messageStringWithoutPayload: %s", messageStringWithoutPayload) + messageBytesWithoutPayload := []byte(messageStringWithoutPayload) + return append(messageBytesWithoutPayload, e2RequestMessage.payload...) +} diff --git a/setup/e2mgr/E2Manager/models/e2_request_message_test.go b/setup/e2mgr/E2Manager/models/e2_request_message_test.go new file mode 100644 index 0000000..e7ca8c7 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/e2_request_message_test.go @@ -0,0 +1,52 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models_test + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/tests" + "encoding/hex" + "github.com/stretchr/testify/assert" + "testing" +) + +const transactionId = "transactionId" +const expectedMessageAsBytesHex = "31302e302e302e337c333830317c746573747c347c01020304" + +func TestNewE2RequestMessage(t *testing.T){ + e2 :=models.NewE2RequestMessage(transactionId, tests.RanIp, uint16(tests.Port), tests.RanName, tests.DummyPayload) + assert.NotNil(t, e2) + assert.IsType(t, *e2, models.E2RequestMessage{}) + assert.Equal(t, tests.RanName, e2.RanName()) + assert.Equal(t, transactionId, e2.TransactionId()) +} + +func TestGetMessageAsBytes(t *testing.T){ + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#nodeb_controller_test.TestHandleRequestSuccess - failed to initialize logger, error: %s", err) + } + + e2 := models.NewE2RequestMessage(transactionId, tests.RanIp, uint16(tests.Port), tests.RanName, tests.DummyPayload) + bytes := e2.GetMessageAsBytes(log) + assert.Equal(t, expectedMessageAsBytesHex, hex.EncodeToString(bytes)) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/models/e2_setup_request_message.go b/setup/e2mgr/E2Manager/models/e2_setup_request_message.go new file mode 100644 index 0000000..32d05ca --- /dev/null +++ b/setup/e2mgr/E2Manager/models/e2_setup_request_message.go @@ -0,0 +1,285 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "encoding/xml" + "errors" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "strconv" + "strings" +) + +type Gnb struct { + Text string `xml:",chardata"` + GlobalGNBID struct { + Text string `xml:",chardata"` + PlmnID string `xml:"plmn-id"` + GnbID struct { + Text string `xml:",chardata"` + GnbID string `xml:"gnb-ID"` + } `xml:"gnb-id"` + } `xml:"global-gNB-ID"` +} + +type EnGnb struct { + Text string `xml:",chardata"` + GlobalGNBID struct { + Text string `xml:",chardata"` + PlmnID string `xml:"pLMN-Identity"` + GnbID struct { + Text string `xml:",chardata"` + GnbID string `xml:"gNB-ID"` + } `xml:"gNB-ID"` + } `xml:"global-gNB-ID"` +} + +type NgEnbId struct { + Text string `xml:",chardata"` + EnbIdMacro string `xml:"enb-ID-macro"` + EnbIdShortMacro string `xml:"enb-ID-shortmacro"` + EnbIdLongMacro string `xml:"enb-ID-longmacro"` +} + +type NgEnb struct { + Text string `xml:",chardata"` + GlobalNgENBID struct { + Text string `xml:",chardata"` + PlmnID string `xml:"plmn-id"` + EnbID NgEnbId `xml:"enb-id"` + } `xml:"global-ng-eNB-ID"` +} + +type EnbId struct { + Text string `xml:",chardata"` + MacroEnbId string `xml:"macro-eNB-ID"` + HomeEnbId string `xml:"home-eNB-ID"` + ShortMacroEnbId string `xml:"short-Macro-eNB-ID"` + LongMacroEnbId string `xml:"long-Macro-eNB-ID"` +} + +type Enb struct { + Text string `xml:",chardata"` + GlobalENBID struct { + Text string `xml:",chardata"` + PlmnID string `xml:"pLMN-Identity"` + EnbID EnbId `xml:"eNB-ID"` + } `xml:"global-eNB-ID"` +} + +type GlobalE2NodeId struct { + Text string `xml:",chardata"` + GNB Gnb `xml:"gNB"` + EnGNB EnGnb `xml:"en-gNB"` + NgENB NgEnb `xml:"ng-eNB"` + ENB Enb `xml:"eNB"` +} + +type E2SetupRequest struct { + Text string `xml:",chardata"` + ProtocolIEs struct { + Text string `xml:",chardata"` + E2setupRequestIEs []struct { + Text string `xml:",chardata"` + ID string `xml:"id"` + Criticality struct { + Text string `xml:",chardata"` + Reject string `xml:"reject"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + GlobalE2nodeID GlobalE2NodeId `xml:"GlobalE2node-ID"` + RANfunctionsList RANfunctionsList `xml:"RANfunctions-List"` + } `xml:"value"` + } `xml:"E2setupRequestIEs"` + } `xml:"protocolIEs"` +} + +type E2SetupRequestMessage struct { + XMLName xml.Name `xml:"E2SetupRequestMessage"` + Text string `xml:",chardata"` + E2APPDU struct { + Text string `xml:",chardata"` + InitiatingMessage struct { + Text string `xml:",chardata"` + ProcedureCode string `xml:"procedureCode"` + Criticality struct { + Text string `xml:",chardata"` + Reject string `xml:"reject"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + E2setupRequest E2SetupRequest `xml:"E2setupRequest"` + } `xml:"value"` + } `xml:"initiatingMessage"` + } `xml:"E2AP-PDU"` +} + +type RanFunctionItem struct { + Text string `xml:",chardata"` + RanFunctionID string `xml:"ranFunctionID"` + RanFunctionDefinition string `xml:"ranFunctionDefinition"` + RanFunctionRevision string `xml:"ranFunctionRevision"` +} + +type RANfunctionsList struct { + Text string `xml:",chardata"` + ProtocolIESingleContainer []struct { + Text string `xml:",chardata"` + ID string `xml:"id"` + Criticality struct { + Text string `xml:",chardata"` + Reject string `xml:"reject"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + RANfunctionItem RanFunctionItem `xml:"RANfunction-Item"` + } `xml:"value"` + } `xml:"ProtocolIE-SingleContainer"` +} + +func (m *E2SetupRequestMessage) ExtractRanFunctionsList() ([]*entities.RanFunction, error) { + + setupRequestIes := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs + + if len(setupRequestIes) < 2 { + return nil, nil + } + + list := setupRequestIes[1].Value.RANfunctionsList.ProtocolIESingleContainer + funcs := make([]*entities.RanFunction, len(list)) + for i := 0; i < len(funcs); i++ { + funcs[i] = &entities.RanFunction{} + id, err := strconv.ParseUint(list[i].Value.RANfunctionItem.RanFunctionID, 10, 32) + if err != nil { + return nil, errors.New(fmt.Sprintf("#e2_setup_request_message.ExtractRanFunctionsList - Failed parse uint RanFunctionID from %s", list[i].Value.RANfunctionItem.RanFunctionID)) + } + funcs[i].RanFunctionId = uint32(id) + rev, err := strconv.ParseUint(list[i].Value.RANfunctionItem.RanFunctionRevision, 10, 32) + if err != nil { + return nil, errors.New(fmt.Sprintf("#e2_setup_request_message.ExtractRanFunctionsList - Failed parse uint RanFunctionRevision from %s", list[i].Value.RANfunctionItem.RanFunctionRevision)) + } + funcs[i].RanFunctionDefinition = m.trimSpaces(list[i].Value.RANfunctionItem.RanFunctionDefinition) + funcs[i].RanFunctionRevision = uint32(rev) + } + return funcs, nil +} + +func (m *E2SetupRequestMessage) getGlobalE2NodeId() GlobalE2NodeId { + return m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID +} + +//func (m *E2SetupRequestMessage) GetNodeType() entities.Node_Type { +// globalE2NodeId := m.getGlobalE2NodeId() +// if id := globalE2NodeId.GNB.GlobalGNBID.PlmnID; id != "" { +// return entities.Node_GNB +// } +// if id := globalE2NodeId.EnGNB.GlobalGNBID.PlmnID; id != "" { +// return entities.Node_GNB +// } +// if id := globalE2NodeId.ENB.GlobalENBID.PlmnID; id != "" { +// return entities.Node_ENB +// } +// if id := globalE2NodeId.NgENB.GlobalNgENBID.PlmnID; id != "" { +// return entities.Node_ENB +// } +// return entities.Node_UNKNOWN +//} + +func (m *E2SetupRequestMessage) GetPlmnId() string { + globalE2NodeId := m.getGlobalE2NodeId() + if id := globalE2NodeId.GNB.GlobalGNBID.PlmnID; id != "" { + return m.trimSpaces(id) + } + if id := globalE2NodeId.EnGNB.GlobalGNBID.PlmnID; id != "" { + return m.trimSpaces(id) + } + if id := globalE2NodeId.ENB.GlobalENBID.PlmnID; id != "" { + return m.trimSpaces(id) + } + if id := globalE2NodeId.NgENB.GlobalNgENBID.PlmnID; id != "" { + return m.trimSpaces(id) + } + return "" +} + +func (m *E2SetupRequestMessage) getInnerEnbId(enbId EnbId) string { + + if id := enbId.HomeEnbId; id != "" { + return id + } + + if id := enbId.LongMacroEnbId; id != "" { + return id + } + + if id := enbId.MacroEnbId; id != "" { + return id + } + + if id := enbId.ShortMacroEnbId; id != "" { + return id + } + + return "" +} + +func (m *E2SetupRequestMessage) getInnerNgEnbId(enbId NgEnbId) string { + if id := enbId.EnbIdLongMacro; id != "" { + return id + } + + if id := enbId.EnbIdMacro; id != "" { + return id + } + + if id := enbId.EnbIdShortMacro; id != "" { + return id + } + + return "" +} + +func (m *E2SetupRequestMessage) GetNbId() string { + globalE2NodeId := m.getGlobalE2NodeId() + + if id := globalE2NodeId.GNB.GlobalGNBID.GnbID.GnbID; id != "" { + return m.trimSpaces(id) + } + + if id := globalE2NodeId.EnGNB.GlobalGNBID.GnbID.GnbID; id != "" { + return m.trimSpaces(id) + } + + if id := m.getInnerEnbId(globalE2NodeId.ENB.GlobalENBID.EnbID); id != "" { + return m.trimSpaces(id) + } + + if id := m.getInnerNgEnbId(globalE2NodeId.NgENB.GlobalNgENBID.EnbID); id != "" { + return m.trimSpaces(id) + } + + return "" +} + +func (m *E2SetupRequestMessage) trimSpaces(str string) string { + return strings.NewReplacer(" ", "", "\n", "").Replace(str) +} diff --git a/setup/e2mgr/E2Manager/models/e2_setup_response_message.go b/setup/e2mgr/E2Manager/models/e2_setup_response_message.go new file mode 100644 index 0000000..798f784 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/e2_setup_response_message.go @@ -0,0 +1,244 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "encoding/xml" +) + +type TimeToWait = int + +var TimeToWaitEnum = struct { + V60s TimeToWait + V20s TimeToWait + V10s TimeToWait + V5s TimeToWait + V2s TimeToWait + V1s TimeToWait +}{60, 20, 10, 5, 2, 1} + +var timeToWaitMap = map[TimeToWait]interface{}{ + TimeToWaitEnum.V60s: struct { + XMLName xml.Name `xml:"TimeToWait"` + Text string `xml:",chardata"` + V60s string `xml:"v60s"` + }{}, + TimeToWaitEnum.V20s: struct { + XMLName xml.Name `xml:"TimeToWait"` + Text string `xml:",chardata"` + V20s string `xml:"v20s"` + }{}, + TimeToWaitEnum.V10s: struct { + XMLName xml.Name `xml:"TimeToWait"` + Text string `xml:",chardata"` + V10s string `xml:"v10s"` + }{}, + TimeToWaitEnum.V5s: struct { + XMLName xml.Name `xml:"TimeToWait"` + Text string `xml:",chardata"` + V5s string `xml:"v5s"` + }{}, + TimeToWaitEnum.V2s: struct { + XMLName xml.Name `xml:"TimeToWait"` + Text string `xml:",chardata"` + V2s string `xml:"v2s"` + }{}, + TimeToWaitEnum.V1s: struct { + XMLName xml.Name `xml:"TimeToWait"` + Text string `xml:",chardata"` + V1s string `xml:"v1s"` + }{}, +} + +func NewE2SetupSuccessResponseMessage(plmnId string, ricId string, request *E2SetupRequestMessage) E2SetupResponseMessage { + outcome := SuccessfulOutcome{} + outcome.ProcedureCode = "1" + + setupRequestIes := request.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs + + outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs = make([]E2setupResponseIEs, len(setupRequestIes)) + outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[0].ID = "4" + outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[0].Value = GlobalRICID{GlobalRICID: struct { + Text string `xml:",chardata"` + PLMNIdentity string `xml:"pLMN-Identity"` + RicID string `xml:"ric-ID"` + }{PLMNIdentity: plmnId, RicID: ricId}} + + if len(setupRequestIes) < 2 { + return E2SetupResponseMessage{E2APPDU: E2APPDU{Outcome: outcome}} + } + + functionsIdList := extractRanFunctionsIDList(request) + + outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].ID = "9" + outcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].Value = RANfunctionsIDList{RANfunctionsIDList: struct { + Text string `xml:",chardata"` + ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"` + }{ProtocolIESingleContainer: functionsIdList}} + + return E2SetupResponseMessage{E2APPDU: E2APPDU{Outcome: outcome}} +} + +func NewE2SetupFailureResponseMessage(timeToWait TimeToWait) E2SetupResponseMessage { + outcome := UnsuccessfulOutcome{} + outcome.Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs = make([]E2setupFailureIEs, 2) + outcome.ProcedureCode = "1" + outcome.Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs[0].ID = "1" + outcome.Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs[0].Value.Value = Cause{} + outcome.Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs[1].ID = "31" + outcome.Value.E2setupFailure.ProtocolIEs.E2setupFailureIEs[1].Value.Value = timeToWaitMap[timeToWait] + return E2SetupResponseMessage{E2APPDU: E2APPDU{Outcome: outcome}} +} + +type E2SetupResponseMessage struct { + XMLName xml.Name `xml:"E2SetupSuccessResponseMessage"` + Text string `xml:",chardata"` + E2APPDU E2APPDU +} + +type E2APPDU struct { + XMLName xml.Name `xml:"E2AP-PDU"` + Text string `xml:",chardata"` + Outcome interface{} +} + +type SuccessfulOutcome struct { + XMLName xml.Name `xml:"successfulOutcome"` + Text string `xml:",chardata"` + ProcedureCode string `xml:"procedureCode"` + Criticality struct { + Text string `xml:",chardata"` + Reject string `xml:"reject"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + E2setupResponse struct { + Text string `xml:",chardata"` + ProtocolIEs struct { + Text string `xml:",chardata"` + E2setupResponseIEs []E2setupResponseIEs `xml:"E2setupResponseIEs"` + } `xml:"protocolIEs"` + } `xml:"E2setupResponse"` + } `xml:"value"` +} + +type E2setupResponseIEs struct { + Text string `xml:",chardata"` + ID string `xml:"id"` + Criticality struct { + Text string `xml:",chardata"` + Reject string `xml:"reject"` + } `xml:"criticality"` + Value interface{} `xml:"value"` +} + +type GlobalRICID struct { + Text string `xml:",chardata"` + GlobalRICID struct { + Text string `xml:",chardata"` + PLMNIdentity string `xml:"pLMN-Identity"` + RicID string `xml:"ric-ID"` + } `xml:"GlobalRIC-ID"` +} + +type RANfunctionsIDList struct { + Text string `xml:",chardata"` + RANfunctionsIDList struct { + Text string `xml:",chardata"` + ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"` + } `xml:"RANfunctionsID-List"` +} + +type ProtocolIESingleContainer struct { + Text string `xml:",chardata"` + ID string `xml:"id"` + Criticality struct { + Text string `xml:",chardata"` + Ignore string `xml:"ignore"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + RANfunctionIDItem struct { + Text string `xml:",chardata"` + RanFunctionID string `xml:"ranFunctionID"` + RanFunctionRevision string `xml:"ranFunctionRevision"` + } `xml:"RANfunctionID-Item"` + } `xml:"value"` +} + +type UnsuccessfulOutcome struct { + XMLName xml.Name `xml:"unsuccessfulOutcome"` + Text string `xml:",chardata"` + ProcedureCode string `xml:"procedureCode"` + Criticality struct { + Text string `xml:",chardata"` + Reject string `xml:"reject"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + E2setupFailure struct { + Text string `xml:",chardata"` + ProtocolIEs struct { + Text string `xml:",chardata"` + E2setupFailureIEs []E2setupFailureIEs `xml:"E2setupFailureIEs"` + } `xml:"protocolIEs"` + } `xml:"E2setupFailure"` + } `xml:"value"` +} + +type E2setupFailureIEs struct { + Text string `xml:",chardata"` + ID string `xml:"id"` + Criticality struct { + Text string `xml:",chardata"` + Ignore string `xml:"ignore"` + } `xml:"criticality"` + Value struct { + Text string `xml:",chardata"` + Value interface{} + } `xml:"value"` +} + +type Cause struct { + XMLName xml.Name `xml:"Cause"` + Text string `xml:",chardata"` + Transport struct { + Text string `xml:",chardata"` + TransportResourceUnavailable string `xml:"transport-resource-unavailable"` + } `xml:"transport"` +} + +func extractRanFunctionsIDList(request *E2SetupRequestMessage) []ProtocolIESingleContainer { + + list := &request.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[1].Value.RANfunctionsList + ids := make([]ProtocolIESingleContainer, len(list.ProtocolIESingleContainer)) + for i := 0; i < len(ids); i++ { + ids[i] = convertToRANfunctionID(list, i) + } + return ids +} + +func convertToRANfunctionID(list *RANfunctionsList, i int) ProtocolIESingleContainer { + id := ProtocolIESingleContainer{} + id.ID = "6" + id.Value.RANfunctionIDItem.RanFunctionID = list.ProtocolIESingleContainer[i].Value.RANfunctionItem.RanFunctionID + id.Value.RANfunctionIDItem.RanFunctionRevision = list.ProtocolIESingleContainer[i].Value.RANfunctionItem.RanFunctionRevision + return id +} diff --git a/setup/e2mgr/E2Manager/models/e2_term_init_payload.go b/setup/e2mgr/E2Manager/models/e2_term_init_payload.go new file mode 100644 index 0000000..a1b5616 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/e2_term_init_payload.go @@ -0,0 +1,27 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +type E2TermInitPayload struct { + Address string `json:"address"` + Fqdn string `json:"fqdn"` + PodName string `json:"pod_name"` +} diff --git a/setup/e2mgr/E2Manager/models/e2t_keep_alive_payload.go b/setup/e2mgr/E2Manager/models/e2t_keep_alive_payload.go new file mode 100644 index 0000000..4560368 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/e2t_keep_alive_payload.go @@ -0,0 +1,25 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +type E2TKeepAlivePayload struct { + Address string `json:"address"` +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/models/error_response.go b/setup/e2mgr/E2Manager/models/error_response.go new file mode 100644 index 0000000..5dfb2b8 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/error_response.go @@ -0,0 +1,26 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +type ErrorResponse struct { + Code int `json:"errorCode"` + Message string `json:"errorMessage"` +} diff --git a/setup/e2mgr/E2Manager/models/get_e2t_instances_response.go b/setup/e2mgr/E2Manager/models/get_e2t_instances_response.go new file mode 100644 index 0000000..12d9997 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/get_e2t_instances_response.go @@ -0,0 +1,52 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "e2mgr/e2managererrors" + "encoding/json" +) + +type E2TInstancesResponse []*E2TInstanceResponseModel + +type E2TInstanceResponseModel struct { + E2TAddress string `json:"e2tAddress"` + RanNames []string `json:"ranNames"` +} + +func NewE2TInstanceResponseModel(e2tAddress string, ranNames []string) *E2TInstanceResponseModel { + return &E2TInstanceResponseModel{ + E2TAddress: e2tAddress, + RanNames: ranNames, + } +} + +func (response E2TInstancesResponse) Marshal() ([]byte, error) { + + data, err := json.Marshal(response) + + if err != nil { + return nil, e2managererrors.NewInternalError() + } + + return data, nil + +} diff --git a/setup/e2mgr/E2Manager/models/get_nodeb_id_list_response.go b/setup/e2mgr/E2Manager/models/get_nodeb_id_list_response.go new file mode 100644 index 0000000..7ed83aa --- /dev/null +++ b/setup/e2mgr/E2Manager/models/get_nodeb_id_list_response.go @@ -0,0 +1,48 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +import ( + "e2mgr/e2managererrors" + "e2mgr/utils" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type GetNodebIdListResponse struct { + nodebIdList []*entities.NbIdentity +} + +func NewGetNodebIdListResponse(nodebIdList []*entities.NbIdentity) *GetNodebIdListResponse { + return &GetNodebIdListResponse{ + nodebIdList: nodebIdList, + } +} + +func (response *GetNodebIdListResponse) Marshal() ([]byte, error) { + pmList := utils.ConvertNodebIdListToProtoMessageList(response.nodebIdList) + result, err := utils.MarshalProtoMessageListToJsonArray(pmList) + + if err != nil { + return nil, e2managererrors.NewInternalError(); + } + + return []byte(result), nil +} diff --git a/setup/e2mgr/E2Manager/models/get_nodeb_request.go b/setup/e2mgr/E2Manager/models/get_nodeb_request.go new file mode 100644 index 0000000..1df6fda --- /dev/null +++ b/setup/e2mgr/E2Manager/models/get_nodeb_request.go @@ -0,0 +1,25 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +type GetNodebRequest struct { + RanName string +} diff --git a/setup/e2mgr/E2Manager/models/get_nodeb_response.go b/setup/e2mgr/E2Manager/models/get_nodeb_response.go new file mode 100644 index 0000000..1eaa32a --- /dev/null +++ b/setup/e2mgr/E2Manager/models/get_nodeb_response.go @@ -0,0 +1,49 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +import ( + "e2mgr/e2managererrors" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/jsonpb" +) + +type GetNodebResponse struct { + nodebInfo *entities.NodebInfo +} + +func NewGetNodebResponse(nodebInfo *entities.NodebInfo) *GetNodebResponse { + return &GetNodebResponse{ + nodebInfo: nodebInfo, + } +} + +func (response *GetNodebResponse) Marshal() ([]byte, error) { + m := jsonpb.Marshaler{} + result, err := m.MarshalToString(response.nodebInfo) + + if err != nil { + return nil, e2managererrors.NewInternalError() + } + + return []byte(result), nil + +} diff --git a/setup/e2mgr/E2Manager/models/i_response.go b/setup/e2mgr/E2Manager/models/i_response.go new file mode 100644 index 0000000..9620297 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/i_response.go @@ -0,0 +1,25 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +type IResponse interface { + Marshal() ([]byte, error) +} diff --git a/setup/e2mgr/E2Manager/models/notification_request.go b/setup/e2mgr/E2Manager/models/notification_request.go new file mode 100644 index 0000000..73ee06b --- /dev/null +++ b/setup/e2mgr/E2Manager/models/notification_request.go @@ -0,0 +1,50 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +import ( + "time" + "unsafe" +) + +type NotificationRequest struct { + RanName string + Len int + Payload []byte + StartTime time.Time + TransactionId []byte + msgSrc unsafe.Pointer +} + +func NewNotificationRequest(ranName string, payload []byte, startTime time.Time, transactionId []byte, msgSrc unsafe.Pointer) *NotificationRequest { + return &NotificationRequest{ + ranName, + len(payload), + payload, + startTime, + transactionId, + msgSrc, + } +} + +func (r NotificationRequest) GetMsgSrc() unsafe.Pointer{ + return r.msgSrc +} diff --git a/setup/e2mgr/E2Manager/models/red_button_partial_success_response.go b/setup/e2mgr/E2Manager/models/red_button_partial_success_response.go new file mode 100644 index 0000000..115bcef --- /dev/null +++ b/setup/e2mgr/E2Manager/models/red_button_partial_success_response.go @@ -0,0 +1,48 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "e2mgr/e2managererrors" + "encoding/json" +) + +type RedButtonPartialSuccessResponseModel struct { + Message string `json:"message"` +} + +func NewRedButtonPartialSuccessResponseModel(message string) *RedButtonPartialSuccessResponseModel { + return &RedButtonPartialSuccessResponseModel{ + Message: message, + } +} + +func (response RedButtonPartialSuccessResponseModel) Marshal() ([]byte, error) { + + data, err := json.Marshal(response) + + if err != nil { + return nil, e2managererrors.NewInternalError() + } + + return data, nil + +} diff --git a/setup/e2mgr/E2Manager/models/request_interface.go b/setup/e2mgr/E2Manager/models/request_interface.go new file mode 100644 index 0000000..951a95f --- /dev/null +++ b/setup/e2mgr/E2Manager/models/request_interface.go @@ -0,0 +1,25 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +type Request interface { + +} diff --git a/setup/e2mgr/E2Manager/models/reset_request.go b/setup/e2mgr/E2Manager/models/reset_request.go new file mode 100644 index 0000000..c41ee79 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/reset_request.go @@ -0,0 +1,26 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +type ResetRequest struct { + RanName string + Cause string `json:"cause"` +} diff --git a/setup/e2mgr/E2Manager/models/resource_status_payload.go b/setup/e2mgr/E2Manager/models/resource_status_payload.go new file mode 100644 index 0000000..22d7b22 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/resource_status_payload.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +import ( + "e2mgr/enums" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type ResourceStatusPayload struct { + NodeType entities.Node_Type `json:"nodeType"` + MessageDirection enums.MessageDirection `json:"messageDirection"` +} + +func NewResourceStatusPayload(nodeType entities.Node_Type, messageDirection enums.MessageDirection) *ResourceStatusPayload { + return &ResourceStatusPayload{ + NodeType: nodeType, + MessageDirection: messageDirection, + } +} diff --git a/setup/e2mgr/E2Manager/models/rmr_message.go b/setup/e2mgr/E2Manager/models/rmr_message.go new file mode 100644 index 0000000..905823e --- /dev/null +++ b/setup/e2mgr/E2Manager/models/rmr_message.go @@ -0,0 +1,45 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +import "unsafe" + +type RmrMessage struct { + MsgType int + RanName string + Payload []byte + XAction []byte + msgSrc unsafe.Pointer +} + +func NewRmrMessage(msgType int, ranName string, payload []byte, xAction []byte, msgSrc unsafe.Pointer) *RmrMessage { + return &RmrMessage{ + msgType, + ranName, + payload, + xAction, + msgSrc, + } +} + +func (m RmrMessage) GetMsgSrc() unsafe.Pointer{ + return m.msgSrc +} diff --git a/setup/e2mgr/E2Manager/models/routing_manager_delete_request_model.go b/setup/e2mgr/E2Manager/models/routing_manager_delete_request_model.go new file mode 100644 index 0000000..e9d9763 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/routing_manager_delete_request_model.go @@ -0,0 +1,34 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +type RoutingManagerDeleteRequestModel struct { + E2TAddress string `json:"E2TAddress"` + RanNameListToBeDissociated []string `json:"ranNamelistTobeDissociated,omitempty"` + RanAssocList RoutingManagerE2TDataList `json:"ranAssocList,omitempty"` +} + +func NewRoutingManagerDeleteRequestModel(e2tAddress string, ranNameListToBeDissociated []string, ranAssocList RoutingManagerE2TDataList) *RoutingManagerDeleteRequestModel { + return &RoutingManagerDeleteRequestModel{ + E2TAddress: e2tAddress, + RanNameListToBeDissociated: ranNameListToBeDissociated, + RanAssocList: ranAssocList, + } +} diff --git a/setup/e2mgr/E2Manager/models/routing_manager_e2t_data.go b/setup/e2mgr/E2Manager/models/routing_manager_e2t_data.go new file mode 100644 index 0000000..9e8e313 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/routing_manager_e2t_data.go @@ -0,0 +1,41 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +type RoutingManagerE2TData struct { + E2TAddress string `json:"E2TAddress"` + RanNamelist []string `json:"ranNamelist,omitempty"` +} + +func NewRoutingManagerE2TData (e2tAddress string, ranNameList ...string) *RoutingManagerE2TData { + data := &RoutingManagerE2TData{ + E2TAddress: e2tAddress, + } + + if len(ranNameList) == 0 { + return data + } + + for _, ranName := range ranNameList { + data.RanNamelist = append(data.RanNamelist, ranName) + } + + return data +} diff --git a/setup/e2mgr/E2Manager/models/routing_manager_e2t_data_list.go b/setup/e2mgr/E2Manager/models/routing_manager_e2t_data_list.go new file mode 100644 index 0000000..4179d83 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/routing_manager_e2t_data_list.go @@ -0,0 +1,22 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +type RoutingManagerE2TDataList []*RoutingManagerE2TData diff --git a/setup/e2mgr/E2Manager/models/setup_request.go b/setup/e2mgr/E2Manager/models/setup_request.go new file mode 100644 index 0000000..d7da6e3 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/setup_request.go @@ -0,0 +1,27 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package models + +type SetupRequest struct { + RanIp string `json:"ranIp"` + RanPort uint16 `json:"ranPort"` + RanName string `json:"ranName"` +} diff --git a/setup/e2mgr/E2Manager/models/update_gnb_request.go b/setup/e2mgr/E2Manager/models/update_gnb_request.go new file mode 100644 index 0000000..7c039d6 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/update_gnb_request.go @@ -0,0 +1,27 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + +type UpdateGnbRequest struct { + RanName string + *entities.Gnb +} diff --git a/setup/e2mgr/E2Manager/models/update_gnb_response.go b/setup/e2mgr/E2Manager/models/update_gnb_response.go new file mode 100644 index 0000000..59131e5 --- /dev/null +++ b/setup/e2mgr/E2Manager/models/update_gnb_response.go @@ -0,0 +1,48 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "e2mgr/e2managererrors" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/jsonpb" +) + +type UpdateGnbResponse struct { + nodebInfo *entities.NodebInfo +} + +func NewUpdateGnbResponse(nodebInfo *entities.NodebInfo) *UpdateGnbResponse { + return &UpdateGnbResponse{ + nodebInfo: nodebInfo, + } +} + +func (response *UpdateGnbResponse) Marshal() ([]byte, error) { + m := jsonpb.Marshaler{} + result, err := m.MarshalToString(response.nodebInfo) + + if err != nil { + return nil, e2managererrors.NewInternalError() + } + + return []byte(result), nil + +} diff --git a/setup/e2mgr/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go b/setup/e2mgr/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go new file mode 100644 index 0000000..f5572cd --- /dev/null +++ b/setup/e2mgr/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider.go @@ -0,0 +1,83 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package httpmsghandlerprovider + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/handlers/httpmsghandlers" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/services" + "e2mgr/services/rmrsender" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" +) + +type IncomingRequest string + +const ( + ShutdownRequest IncomingRequest = "Shutdown" + ResetRequest IncomingRequest = "Reset" + X2SetupRequest IncomingRequest = "X2SetupRequest" + EndcSetupRequest IncomingRequest = "EndcSetupRequest" + GetNodebRequest IncomingRequest = "GetNodebRequest" + GetNodebIdListRequest IncomingRequest = "GetNodebIdListRequest" + GetE2TInstancesRequest IncomingRequest = "GetE2TInstancesRequest" + UpdateGnbRequest IncomingRequest = "UpdateGnbRequest" +) + +type IncomingRequestHandlerProvider struct { + requestMap map[IncomingRequest]httpmsghandlers.RequestHandler + logger *logger.Logger +} + +func NewIncomingRequestHandlerProvider(logger *logger.Logger, rmrSender *rmrsender.RmrSender, config *configuration.Configuration, rNibDataService services.RNibDataService, ranSetupManager *managers.RanSetupManager, e2tInstancesManager managers.IE2TInstancesManager, e2tAssociationManager *managers.E2TAssociationManager, rmClient clients.IRoutingManagerClient) *IncomingRequestHandlerProvider { + + return &IncomingRequestHandlerProvider{ + requestMap: initRequestHandlerMap(logger, rmrSender, config, rNibDataService, ranSetupManager, e2tInstancesManager, e2tAssociationManager, rmClient), + logger: logger, + } +} + +func initRequestHandlerMap(logger *logger.Logger, rmrSender *rmrsender.RmrSender, config *configuration.Configuration, rNibDataService services.RNibDataService, ranSetupManager *managers.RanSetupManager, e2tInstancesManager managers.IE2TInstancesManager, e2tAssociationManager *managers.E2TAssociationManager, rmClient clients.IRoutingManagerClient) map[IncomingRequest]httpmsghandlers.RequestHandler { + + return map[IncomingRequest]httpmsghandlers.RequestHandler{ + ShutdownRequest: httpmsghandlers.NewDeleteAllRequestHandler(logger, rmrSender, config, rNibDataService, e2tInstancesManager, rmClient), + ResetRequest: httpmsghandlers.NewX2ResetRequestHandler(logger, rmrSender, rNibDataService), + X2SetupRequest: httpmsghandlers.NewSetupRequestHandler(logger, rNibDataService, ranSetupManager, entities.E2ApplicationProtocol_X2_SETUP_REQUEST, e2tInstancesManager, e2tAssociationManager), + EndcSetupRequest: httpmsghandlers.NewSetupRequestHandler(logger, rNibDataService, ranSetupManager, entities.E2ApplicationProtocol_ENDC_X2_SETUP_REQUEST, e2tInstancesManager, e2tAssociationManager), + GetNodebRequest: httpmsghandlers.NewGetNodebRequestHandler(logger, rNibDataService), + GetNodebIdListRequest: httpmsghandlers.NewGetNodebIdListRequestHandler(logger, rNibDataService), + GetE2TInstancesRequest: httpmsghandlers.NewGetE2TInstancesRequestHandler(logger, e2tInstancesManager), + UpdateGnbRequest: httpmsghandlers.NewUpdateGnbRequestHandler(logger, rNibDataService), + } +} + +func (provider IncomingRequestHandlerProvider) GetHandler(requestType IncomingRequest) (httpmsghandlers.RequestHandler, error) { + handler, ok := provider.requestMap[requestType] + + if !ok { + provider.logger.Errorf("#incoming_request_handler_provider.GetHandler - Cannot find handler for request type: %s", requestType) + return nil, e2managererrors.NewInternalError() + } + + return handler, nil +} diff --git a/setup/e2mgr/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go b/setup/e2mgr/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go new file mode 100644 index 0000000..e06105f --- /dev/null +++ b/setup/e2mgr/E2Manager/providers/httpmsghandlerprovider/incoming_request_handler_provider_test.go @@ -0,0 +1,122 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package httpmsghandlerprovider + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/e2managererrors" + "e2mgr/handlers/httpmsghandlers" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "github.com/stretchr/testify/assert" + "reflect" + "testing" +) + +func getRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} + +func setupTest(t *testing.T) *IncomingRequestHandlerProvider { + rmrMessengerMock := &mocks.RmrMessengerMock{} + log := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + config.RoutingManager.BaseUrl = "http://10.10.2.15:12020/routingmanager" + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + rnibDataService := services.NewRnibDataService(log, config, readerMock, writerMock) + rmrSender := getRmrSender(rmrMessengerMock, log) + ranSetupManager := managers.NewRanSetupManager(log, rmrSender, rnibDataService) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, log) + httpClientMock := &mocks.HttpClientMock{} + rmClient := clients.NewRoutingManagerClient(log, config, httpClientMock) + e2tAssociationManager := managers.NewE2TAssociationManager(log, rnibDataService, e2tInstancesManager, rmClient) + return NewIncomingRequestHandlerProvider(log, rmrSender, configuration.ParseConfiguration(), rnibDataService, ranSetupManager, e2tInstancesManager, e2tAssociationManager, rmClient) +} + +func TestNewIncomingRequestHandlerProvider(t *testing.T) { + provider := setupTest(t) + + assert.NotNil(t, provider) +} + +func TestShutdownRequestHandler(t *testing.T) { + provider := setupTest(t) + handler, err := provider.GetHandler(ShutdownRequest) + + assert.NotNil(t, provider) + assert.Nil(t, err) + + _, ok := handler.(*httpmsghandlers.DeleteAllRequestHandler) + + assert.True(t, ok) +} + +func TestX2SetupRequestHandler(t *testing.T) { + provider := setupTest(t) + handler, err := provider.GetHandler(X2SetupRequest) + + assert.NotNil(t, provider) + assert.Nil(t, err) + + _, ok := handler.(*httpmsghandlers.SetupRequestHandler) + + assert.True(t, ok) +} + +func TestEndcSetupRequestHandler(t *testing.T) { + provider := setupTest(t) + handler, err := provider.GetHandler(EndcSetupRequest) + + assert.NotNil(t, provider) + assert.Nil(t, err) + + _, ok := handler.(*httpmsghandlers.SetupRequestHandler) + + assert.True(t, ok) +} + +func TestGetShutdownHandlerFailure(t *testing.T) { + provider := setupTest(t) + _, actual := provider.GetHandler("test") + expected := &e2managererrors.InternalError{} + + assert.NotNil(t, actual) + if reflect.TypeOf(actual) != reflect.TypeOf(expected) { + t.Errorf("Error actual = %v, and Expected = %v.", actual, expected) + } +} + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go b/setup/e2mgr/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go new file mode 100644 index 0000000..8a93331 --- /dev/null +++ b/setup/e2mgr/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider.go @@ -0,0 +1,106 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmrmsghandlerprovider + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/converters" + "e2mgr/handlers/rmrmsghandlers" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "fmt" +) + +type NotificationHandlerProvider struct { + notificationHandlers map[int]rmrmsghandlers.NotificationHandler +} + +func NewNotificationHandlerProvider() *NotificationHandlerProvider { + return &NotificationHandlerProvider{ + notificationHandlers: map[int]rmrmsghandlers.NotificationHandler{}, + } +} + +// TODO: check whether it has been initialized +func (provider NotificationHandlerProvider) GetNotificationHandler(messageType int) (rmrmsghandlers.NotificationHandler, error) { + handler, ok := provider.notificationHandlers[messageType] + + if !ok { + return nil, fmt.Errorf("notification handler not found for message %d", messageType) + } + + return handler, nil +} + +func (provider *NotificationHandlerProvider) Register(msgType int, handler rmrmsghandlers.NotificationHandler) { + provider.notificationHandlers[msgType] = handler +} + +func (provider *NotificationHandlerProvider) Init(logger *logger.Logger, config *configuration.Configuration, rnibDataService services.RNibDataService, rmrSender *rmrsender.RmrSender, ranSetupManager *managers.RanSetupManager, e2tInstancesManager managers.IE2TInstancesManager, routingManagerClient clients.IRoutingManagerClient, e2tAssociationManager *managers.E2TAssociationManager) { + + // Init converters + x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger) + x2SetupFailureResponseConverter := converters.NewX2SetupFailureResponseConverter(logger) + endcSetupResponseConverter := converters.NewEndcSetupResponseConverter(logger) + endcSetupFailureResponseConverter := converters.NewEndcSetupFailureResponseConverter(logger) + //enbLoadInformationExtractor := converters.NewEnbLoadInformationExtractor(logger) + x2ResetResponseExtractor := converters.NewX2ResetResponseExtractor(logger) + + // Init managers + ranReconnectionManager := managers.NewRanDisconnectionManager(logger, config, rnibDataService, e2tAssociationManager) + ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender) + x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter) + x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter) + endcSetupResponseManager := managers.NewEndcSetupResponseManager(endcSetupResponseConverter) + endcSetupFailureResponseManager := managers.NewEndcSetupFailureResponseManager(endcSetupFailureResponseConverter) + + // Init handlers + x2SetupResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP) + x2SetupFailureResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupFailureResponseManager, nil, rmrCgo.RIC_X2_SETUP_FAILURE) + endcSetupResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_ENDC_X2_SETUP_RESP) + endcSetupFailureResponseHandler := rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupFailureResponseManager, nil, rmrCgo.RIC_ENDC_X2_SETUP_FAILURE) + ranLostConnectionHandler := rmrmsghandlers.NewRanLostConnectionHandler(logger, ranReconnectionManager) + //enbLoadInformationNotificationHandler := rmrmsghandlers.NewEnbLoadInformationNotificationHandler(logger, rnibDataService, enbLoadInformationExtractor) + x2EnbConfigurationUpdateHandler := rmrmsghandlers.NewX2EnbConfigurationUpdateHandler(logger, rmrSender) + endcConfigurationUpdateHandler := rmrmsghandlers.NewEndcConfigurationUpdateHandler(logger, rmrSender) + x2ResetResponseHandler := rmrmsghandlers.NewX2ResetResponseHandler(logger, rnibDataService, ranStatusChangeManager, x2ResetResponseExtractor) + x2ResetRequestNotificationHandler := rmrmsghandlers.NewX2ResetRequestNotificationHandler(logger, rnibDataService, ranStatusChangeManager, rmrSender) + e2TermInitNotificationHandler := rmrmsghandlers.NewE2TermInitNotificationHandler(logger, ranReconnectionManager, e2tInstancesManager, routingManagerClient) + e2TKeepAliveResponseHandler := rmrmsghandlers.NewE2TKeepAliveResponseHandler(logger, rnibDataService, e2tInstancesManager) + e2SetupRequestNotificationHandler := rmrmsghandlers.NewE2SetupRequestNotificationHandler(logger, config, e2tInstancesManager, rmrSender, rnibDataService, e2tAssociationManager) + + provider.Register(rmrCgo.RIC_X2_SETUP_RESP, x2SetupResponseHandler) + provider.Register(rmrCgo.RIC_X2_SETUP_FAILURE, x2SetupFailureResponseHandler) + provider.Register(rmrCgo.RIC_ENDC_X2_SETUP_RESP, endcSetupResponseHandler) + provider.Register(rmrCgo.RIC_ENDC_X2_SETUP_FAILURE, endcSetupFailureResponseHandler) + provider.Register(rmrCgo.RIC_SCTP_CONNECTION_FAILURE, ranLostConnectionHandler) + //provider.Register(rmrCgo.RIC_ENB_LOAD_INFORMATION, enbLoadInformationNotificationHandler) + provider.Register(rmrCgo.RIC_ENB_CONF_UPDATE, x2EnbConfigurationUpdateHandler) + provider.Register(rmrCgo.RIC_ENDC_CONF_UPDATE, endcConfigurationUpdateHandler) + provider.Register(rmrCgo.RIC_X2_RESET_RESP, x2ResetResponseHandler) + provider.Register(rmrCgo.RIC_X2_RESET, x2ResetRequestNotificationHandler) + provider.Register(rmrCgo.RIC_E2_TERM_INIT, e2TermInitNotificationHandler) + provider.Register(rmrCgo.E2_TERM_KEEP_ALIVE_RESP, e2TKeepAliveResponseHandler) + provider.Register(rmrCgo.RIC_E2_SETUP_REQ, e2SetupRequestNotificationHandler) +} diff --git a/setup/e2mgr/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go b/setup/e2mgr/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go new file mode 100644 index 0000000..8415547 --- /dev/null +++ b/setup/e2mgr/E2Manager/providers/rmrmsghandlerprovider/notification_handler_provider_test.go @@ -0,0 +1,163 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrmsghandlerprovider + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/converters" + "e2mgr/handlers/rmrmsghandlers" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/mocks" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "fmt" + "strings" + "testing" + + "e2mgr/rmrCgo" +) + +/* + * Verify support for known providers. + */ + +func initTestCase(t *testing.T) (*logger.Logger, *configuration.Configuration, services.RNibDataService, *rmrsender.RmrSender, *managers.RanSetupManager, managers.IE2TInstancesManager, clients.IRoutingManagerClient, *managers.E2TAssociationManager) { + logger := initLog(t) + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + httpClient := &mocks.HttpClientMock{} + + rmrSender := initRmrSender(&mocks.RmrMessengerMock{}, logger) + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) + routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + + return logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager +} + +func TestGetNotificationHandlerSuccess(t *testing.T) { + + logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager := initTestCase(t) + + ranDisconnectionManager := managers.NewRanDisconnectionManager(logger, configuration.ParseConfiguration(), rnibDataService, e2tAssociationManager) + ranStatusChangeManager := managers.NewRanStatusChangeManager(logger, rmrSender) + + x2SetupResponseConverter := converters.NewX2SetupResponseConverter(logger) + x2SetupResponseManager := managers.NewX2SetupResponseManager(x2SetupResponseConverter) + + x2SetupFailureResponseConverter := converters.NewX2SetupFailureResponseConverter(logger) + x2SetupFailureResponseManager := managers.NewX2SetupFailureResponseManager(x2SetupFailureResponseConverter) + + endcSetupResponseConverter := converters.NewEndcSetupResponseConverter(logger) + endcSetupResponseManager := managers.NewEndcSetupResponseManager(endcSetupResponseConverter) + + + endcSetupFailureResponseConverter := converters.NewEndcSetupFailureResponseConverter(logger) + endcSetupFailureResponseManager := managers.NewEndcSetupFailureResponseManager(endcSetupFailureResponseConverter) + + + var testCases = []struct { + msgType int + handler rmrmsghandlers.NotificationHandler + }{ + {rmrCgo.RIC_X2_SETUP_RESP, rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_RESP)}, + {rmrCgo.RIC_X2_SETUP_FAILURE, rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, x2SetupFailureResponseManager, ranStatusChangeManager, rmrCgo.RIC_X2_SETUP_FAILURE)}, + {rmrCgo.RIC_ENDC_X2_SETUP_RESP, rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupResponseManager, ranStatusChangeManager, rmrCgo.RIC_ENDC_X2_SETUP_RESP)}, + {rmrCgo.RIC_ENDC_X2_SETUP_FAILURE, rmrmsghandlers.NewSetupResponseNotificationHandler(logger, rnibDataService, endcSetupFailureResponseManager, ranStatusChangeManager, rmrCgo.RIC_ENDC_X2_SETUP_FAILURE),}, + {rmrCgo.RIC_SCTP_CONNECTION_FAILURE, rmrmsghandlers.NewRanLostConnectionHandler(logger, ranDisconnectionManager)}, + //{rmrCgo.RIC_ENB_LOAD_INFORMATION, rmrmsghandlers.NewEnbLoadInformationNotificationHandler(logger, rnibDataService, converters.NewEnbLoadInformationExtractor(logger))}, + {rmrCgo.RIC_ENB_CONF_UPDATE, rmrmsghandlers.NewX2EnbConfigurationUpdateHandler(logger, rmrSender)}, + {rmrCgo.RIC_ENDC_CONF_UPDATE, rmrmsghandlers.NewEndcConfigurationUpdateHandler(logger, rmrSender)}, + {rmrCgo.RIC_E2_TERM_INIT, rmrmsghandlers.NewE2TermInitNotificationHandler(logger, ranDisconnectionManager, e2tInstancesManager, routingManagerClient)}, + {rmrCgo.E2_TERM_KEEP_ALIVE_RESP, rmrmsghandlers.NewE2TKeepAliveResponseHandler(logger, rnibDataService, e2tInstancesManager)}, + {rmrCgo.RIC_X2_RESET_RESP, rmrmsghandlers.NewX2ResetResponseHandler(logger, rnibDataService, ranStatusChangeManager, converters.NewX2ResetResponseExtractor(logger))}, + {rmrCgo.RIC_X2_RESET, rmrmsghandlers.NewX2ResetRequestNotificationHandler(logger, rnibDataService, ranStatusChangeManager, rmrSender)}, + } + + for _, tc := range testCases { + + provider := NewNotificationHandlerProvider() + provider.Init(logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager) + t.Run(fmt.Sprintf("%d", tc.msgType), func(t *testing.T) { + handler, err := provider.GetNotificationHandler(tc.msgType) + if err != nil { + t.Errorf("want: handler for message type %d, got: error %s", tc.msgType, err) + } + //Note struct is empty, so it will match any other empty struct. + // https://golang.org/ref/spec#Comparison_operators: Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal. + if /*handler != tc.handler &&*/ strings.Compare(fmt.Sprintf("%T", handler), fmt.Sprintf("%T", tc.handler)) != 0 { + t.Errorf("want: handler %T for message type %d, got: %T", tc.handler, tc.msgType, handler) + } + }) + } +} + +/* + * Verify handling of a request for an unsupported message. + */ + +func TestGetNotificationHandlerFailure(t *testing.T) { + + var testCases = []struct { + msgType int + errorText string + }{ + {9999 /*unknown*/, "notification handler not found"}, + } + for _, tc := range testCases { + + logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager := initTestCase(t) + provider := NewNotificationHandlerProvider() + provider.Init(logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager) + t.Run(fmt.Sprintf("%d", tc.msgType), func(t *testing.T) { + _, err := provider.GetNotificationHandler(tc.msgType) + if err == nil { + t.Errorf("want: no handler for message type %d, got: success", tc.msgType) + } + if !strings.Contains(fmt.Sprintf("%s", err), tc.errorText) { + t.Errorf("want: error [%s] for message type %d, got: %s", tc.errorText, tc.msgType, err) + } + }) + } +} + +// TODO: extract to test_utils +func initRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} + +// TODO: extract to test_utils +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#delete_all_request_handler_test.TestHandleSuccessFlow - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/rNibWriter/rNibWriter.go b/setup/e2mgr/E2Manager/rNibWriter/rNibWriter.go new file mode 100644 index 0000000..a44f388 --- /dev/null +++ b/setup/e2mgr/E2Manager/rNibWriter/rNibWriter.go @@ -0,0 +1,369 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rNibWriter + +import ( + "encoding/json" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/proto" +) + +const E2TAddressesKey = "E2TAddresses" + +type rNibWriterInstance struct { + sdl common.ISdlInstance +} + +/* +RNibWriter interface allows saving data to the redis DB +*/ +type RNibWriter interface { + SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error + UpdateNodebInfo(nodebInfo *entities.NodebInfo) error + SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error + SaveE2TInstance(e2tInstance *entities.E2TInstance) error + SaveE2TAddresses(addresses []string) error + RemoveE2TInstance(e2tAddress string) error + UpdateGnbCells(nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) error + RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error +} + +/* +GetRNibWriter returns reference to RNibWriter +*/ + +func GetRNibWriter(sdl common.ISdlInstance) RNibWriter { + return &rNibWriterInstance{sdl: sdl} +} + + +func (w *rNibWriterInstance) RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error { + cellKeysToRemove := buildCellKeysToRemove(inventoryName, servedNrCells) + err := w.sdl.Remove(cellKeysToRemove) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +/* +SaveNodeb saves nodeB entity data in the redis DB according to the specified data model +*/ +func (w *rNibWriterInstance) SaveNodeb(nbIdentity *entities.NbIdentity, entity *entities.NodebInfo) error { + isNotEmptyIdentity := isNotEmpty(nbIdentity) + + if isNotEmptyIdentity && entity.GetNodeType() == entities.Node_UNKNOWN { + return common.NewValidationError(fmt.Sprintf("#rNibWriter.saveNodeB - Unknown responding node type, entity: %v", entity)) + } + data, err := proto.Marshal(entity) + if err != nil { + return common.NewInternalError(err) + } + var pairs []interface{} + key, rNibErr := common.ValidateAndBuildNodeBNameKey(nbIdentity.InventoryName) + if rNibErr != nil { + return rNibErr + } + pairs = append(pairs, key, data) + + if isNotEmptyIdentity { + key, rNibErr = common.ValidateAndBuildNodeBIdKey(entity.GetNodeType().String(), nbIdentity.GlobalNbId.GetPlmnId(), nbIdentity.GlobalNbId.GetNbId()) + if rNibErr != nil { + return rNibErr + } + pairs = append(pairs, key, data) + } + + if entity.GetEnb() != nil { + pairs, rNibErr = appendEnbCells(nbIdentity.InventoryName, entity.GetEnb().GetServedCells(), pairs) + if rNibErr != nil { + return rNibErr + } + } + if entity.GetGnb() != nil { + pairs, rNibErr = appendGnbCells(nbIdentity.InventoryName, entity.GetGnb().GetServedNrCells(), pairs) + if rNibErr != nil { + return rNibErr + } + } + err = w.sdl.Set(pairs) + if err != nil { + return common.NewInternalError(err) + } + + ranNameIdentity := &entities.NbIdentity{InventoryName: nbIdentity.InventoryName} + + if isNotEmptyIdentity { + nbIdData, err := proto.Marshal(ranNameIdentity) + if err != nil { + return common.NewInternalError(err) + } + err = w.sdl.RemoveMember(entities.Node_UNKNOWN.String(), nbIdData) + if err != nil { + return common.NewInternalError(err) + } + } else { + nbIdentity = ranNameIdentity + } + + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + return common.NewInternalError(err) + } + err = w.sdl.AddMember(entity.GetNodeType().String(), nbIdData) + if err != nil { + return common.NewInternalError(err) + } + return nil +} + +func (w *rNibWriterInstance) UpdateGnbCells(nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) error { + + pairs, err := buildUpdateNodebInfoPairs(nodebInfo) + + if err != nil { + return err + } + + pairs, err = appendGnbCells(nodebInfo.RanName, servedNrCells, pairs) + + if err != nil { + return err + } + + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +func buildCellKeysToRemove(inventoryName string, servedNrCellsToRemove []*entities.ServedNRCell) []string { + + cellKeysToRemove := []string{} + + for _, cell := range servedNrCellsToRemove { + + key, _ := common.ValidateAndBuildNrCellIdKey(cell.GetServedNrCellInformation().GetCellId()) + + if len(key) != 0 { + cellKeysToRemove = append(cellKeysToRemove, key) + } + + key, _ = common.ValidateAndBuildCellNamePciKey(inventoryName, cell.GetServedNrCellInformation().GetNrPci()) + + if len(key) != 0 { + cellKeysToRemove = append(cellKeysToRemove, key) + } + } + + return cellKeysToRemove +} + +func buildUpdateNodebInfoPairs(nodebInfo *entities.NodebInfo) ([]interface{}, error) { + nodebNameKey, rNibErr := common.ValidateAndBuildNodeBNameKey(nodebInfo.GetRanName()) + + if rNibErr != nil { + return []interface{}{}, rNibErr + } + + nodebIdKey, buildNodebIdKeyError := common.ValidateAndBuildNodeBIdKey(nodebInfo.GetNodeType().String(), nodebInfo.GlobalNbId.GetPlmnId(), nodebInfo.GlobalNbId.GetNbId()) + + data, err := proto.Marshal(nodebInfo) + + if err != nil { + return []interface{}{}, common.NewInternalError(err) + } + + pairs := []interface{}{nodebNameKey, data} + + if buildNodebIdKeyError == nil { + pairs = append(pairs, nodebIdKey, data) + } + + return pairs, nil +} + +/* +UpdateNodebInfo... +*/ +func (w *rNibWriterInstance) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error { + + pairs, err := buildUpdateNodebInfoPairs(nodebInfo) + + if err != nil { + return err + } + + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +/* +SaveRanLoadInformation stores ran load information for the provided ran +*/ +func (w *rNibWriterInstance) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error { + + key, rnibErr := common.ValidateAndBuildRanLoadInformationKey(inventoryName) + + if rnibErr != nil { + return rnibErr + } + + data, err := proto.Marshal(ranLoadInformation) + + if err != nil { + return common.NewInternalError(err) + } + + var pairs []interface{} + pairs = append(pairs, key, data) + + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +func (w *rNibWriterInstance) SaveE2TInstance(e2tInstance *entities.E2TInstance) error { + + key, rnibErr := common.ValidateAndBuildE2TInstanceKey(e2tInstance.Address) + + if rnibErr != nil { + return rnibErr + } + + data, err := json.Marshal(e2tInstance) + + if err != nil { + return common.NewInternalError(err) + } + + var pairs []interface{} + pairs = append(pairs, key, data) + + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +func (w *rNibWriterInstance) SaveE2TAddresses(addresses []string) error { + + data, err := json.Marshal(addresses) + + if err != nil { + return common.NewInternalError(err) + } + + var pairs []interface{} + pairs = append(pairs, E2TAddressesKey, data) + + err = w.sdl.Set(pairs) + + if err != nil { + return common.NewInternalError(err) + } + + return nil +} + +func (w *rNibWriterInstance) RemoveE2TInstance(address string) error { + key, rNibErr := common.ValidateAndBuildE2TInstanceKey(address) + if rNibErr != nil { + return rNibErr + } + err := w.sdl.Remove([]string{key}) + + if err != nil { + return common.NewInternalError(err) + } + return nil +} + +/* +Close the writer +*/ +func Close() { + //Nothing to do +} + +func appendEnbCells(inventoryName string, cells []*entities.ServedCellInfo, pairs []interface{}) ([]interface{}, error) { + for _, cell := range cells { + cellEntity := entities.Cell{Type: entities.Cell_LTE_CELL, Cell: &entities.Cell_ServedCellInfo{ServedCellInfo: cell}} + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + return pairs, common.NewInternalError(err) + } + key, rNibErr := common.ValidateAndBuildCellIdKey(cell.GetCellId()) + if rNibErr != nil { + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + key, rNibErr = common.ValidateAndBuildCellNamePciKey(inventoryName, cell.GetPci()) + if rNibErr != nil { + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + } + return pairs, nil +} + +func appendGnbCells(inventoryName string, cells []*entities.ServedNRCell, pairs []interface{}) ([]interface{}, error) { + for _, cell := range cells { + cellEntity := entities.Cell{Type: entities.Cell_NR_CELL, Cell: &entities.Cell_ServedNrCell{ServedNrCell: cell}} + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + return pairs, common.NewInternalError(err) + } + key, rNibErr := common.ValidateAndBuildNrCellIdKey(cell.GetServedNrCellInformation().GetCellId()) + if rNibErr != nil { + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + key, rNibErr = common.ValidateAndBuildCellNamePciKey(inventoryName, cell.GetServedNrCellInformation().GetNrPci()) + if rNibErr != nil { + return pairs, rNibErr + } + pairs = append(pairs, key, cellData) + } + return pairs, nil +} + +func isNotEmpty(nbIdentity *entities.NbIdentity) bool { + return nbIdentity.GlobalNbId != nil && nbIdentity.GlobalNbId.PlmnId != "" && nbIdentity.GlobalNbId.NbId != "" +} diff --git a/setup/e2mgr/E2Manager/rNibWriter/rNibWriter_test.go b/setup/e2mgr/E2Manager/rNibWriter/rNibWriter_test.go new file mode 100644 index 0000000..257bb85 --- /dev/null +++ b/setup/e2mgr/E2Manager/rNibWriter/rNibWriter_test.go @@ -0,0 +1,814 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rNibWriter + +import ( + "e2mgr/mocks" + "encoding/json" + "errors" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/proto" + "github.com/stretchr/testify/assert" + "testing" + "time" +) + +var namespace = "namespace" +const ( + RanName = "test" +) + +func initSdlInstanceMock(namespace string) (w RNibWriter, sdlInstanceMock *mocks.MockSdlInstance) { + sdlInstanceMock = new(mocks.MockSdlInstance) + w = GetRNibWriter(sdlInstanceMock) + return +} + +func generateNodebInfo(inventoryName string, nodeType entities.Node_Type, plmnId string, nbId string) *entities.NodebInfo { + nodebInfo := &entities.NodebInfo{ + RanName: inventoryName, + GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId, NbId: nbId}, + NodeType: nodeType, + ConnectionStatus: entities.ConnectionStatus_CONNECTED, + } + + if nodeType == entities.Node_ENB { + nodebInfo.Configuration = &entities.NodebInfo_Enb{ + Enb: &entities.Enb{}, + } + } else if nodeType == entities.Node_GNB { + nodebInfo.Configuration = &entities.NodebInfo_Gnb{ + Gnb: &entities.Gnb{}, + } + } + + return nodebInfo +} + +func generateServedNrCells(cellIds ...string) []*entities.ServedNRCell { + + servedNrCells := []*entities.ServedNRCell{} + + for i, v := range cellIds { + servedNrCells = append(servedNrCells, &entities.ServedNRCell{ServedNrCellInformation: &entities.ServedNRCellInformation{ + CellId: v, + ChoiceNrMode: &entities.ServedNRCellInformation_ChoiceNRMode{ + Fdd: &entities.ServedNRCellInformation_ChoiceNRMode_FddInfo{ + + }, + }, + NrMode: entities.Nr_FDD, + NrPci: uint32(i + 1), + ServedPlmns: []string{"whatever"}, + }}) + } + + return servedNrCells +} + +func TestRemoveServedNrCellsSuccess(t *testing.T) { + w, sdlInstanceMock := initSdlInstanceMock(namespace) + servedNrCellsToRemove := generateServedNrCells("whatever1", "whatever2") + sdlInstanceMock.On("Remove", buildCellKeysToRemove(RanName, servedNrCellsToRemove)).Return(nil) + err := w.RemoveServedNrCells(RanName, servedNrCellsToRemove) + assert.Nil(t, err) +} + +func TestRemoveServedNrCellsFailure(t *testing.T) { + w, sdlInstanceMock := initSdlInstanceMock(namespace) + servedNrCellsToRemove := generateServedNrCells("whatever1", "whatever2") + sdlInstanceMock.On("Remove", buildCellKeysToRemove(RanName, servedNrCellsToRemove)).Return(errors.New("expected error")) + err := w.RemoveServedNrCells(RanName, servedNrCellsToRemove) + assert.IsType(t, &common.InternalError{}, err) +} + +func TestUpdateGnbCellsInvalidNodebInfoFailure(t *testing.T) { + w, sdlInstanceMock := initSdlInstanceMock(namespace) + servedNrCells := generateServedNrCells("test1", "test2") + nodebInfo := &entities.NodebInfo{} + sdlInstanceMock.AssertNotCalled(t, "Set") + rNibErr := w.UpdateGnbCells(nodebInfo, servedNrCells) + assert.IsType(t, &common.ValidationError{}, rNibErr) +} + +func TestUpdateGnbCellsInvalidCellFailure(t *testing.T) { + inventoryName := "name" + plmnId := "02f829" + nbId := "4a952a0a" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + servedNrCells := []*entities.ServedNRCell{{ServedNrCellInformation: &entities.ServedNRCellInformation{}}} + nodebInfo := generateNodebInfo(inventoryName, entities.Node_GNB, plmnId, nbId) + nodebInfo.GetGnb().ServedNrCells = servedNrCells + sdlInstanceMock.AssertNotCalled(t, "Set") + rNibErr := w.UpdateGnbCells(nodebInfo, servedNrCells) + assert.IsType(t, &common.ValidationError{}, rNibErr) +} + +func getUpdateGnbCellsSetExpected(t *testing.T, nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) []interface{} { + + nodebInfoData, err := proto.Marshal(nodebInfo) + if err != nil { + t.Fatalf("#rNibWriter_test.getUpdateGnbCellsSetExpected - Failed to marshal NodeB entity. Error: %s", err) + } + + nodebNameKey, _ := common.ValidateAndBuildNodeBNameKey(nodebInfo.RanName) + nodebIdKey, _ := common.ValidateAndBuildNodeBIdKey(nodebInfo.NodeType.String(), nodebInfo.GlobalNbId.PlmnId, nodebInfo.GlobalNbId.NbId) + setExpected := []interface{}{nodebNameKey, nodebInfoData, nodebIdKey, nodebInfoData} + + for _, v := range servedNrCells { + + cellEntity := entities.Cell{Type: entities.Cell_NR_CELL, Cell: &entities.Cell_ServedNrCell{ServedNrCell: v}} + cellData, err := proto.Marshal(&cellEntity) + + if err != nil { + t.Fatalf("#rNibWriter_test.getUpdateGnbCellsSetExpected - Failed to marshal cell entity. Error: %s", err) + } + + nrCellIdKey, _ := common.ValidateAndBuildNrCellIdKey(v.GetServedNrCellInformation().GetCellId()) + cellNamePciKey, _ := common.ValidateAndBuildCellNamePciKey(nodebInfo.RanName, v.GetServedNrCellInformation().GetNrPci()) + setExpected = append(setExpected, nrCellIdKey, cellData, cellNamePciKey, cellData) + } + + return setExpected +} + +func TestUpdateGnbCellsSdlFailure(t *testing.T) { + inventoryName := "name" + plmnId := "02f829" + nbId := "4a952a0a" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + servedNrCells := generateServedNrCells("test1", "test2") + nodebInfo := generateNodebInfo(inventoryName, entities.Node_GNB, plmnId, nbId) + nodebInfo.GetGnb().ServedNrCells = servedNrCells + setExpected := getUpdateGnbCellsSetExpected(t, nodebInfo, servedNrCells) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(errors.New("expected error")) + rNibErr := w.UpdateGnbCells(nodebInfo, servedNrCells) + assert.IsType(t, &common.InternalError{}, rNibErr) +} + +func TestUpdateGnbCellsSuccess(t *testing.T) { + inventoryName := "name" + plmnId := "02f829" + nbId := "4a952a0a" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + servedNrCells := generateServedNrCells("test1", "test2") + nodebInfo := generateNodebInfo(inventoryName, entities.Node_GNB, plmnId, nbId) + nodebInfo.GetGnb().ServedNrCells = servedNrCells + setExpected := getUpdateGnbCellsSetExpected(t, nodebInfo, servedNrCells) + var e error + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + rNibErr := w.UpdateGnbCells(nodebInfo, servedNrCells) + assert.Nil(t, rNibErr) +} + +func TestUpdateNodebInfoSuccess(t *testing.T) { + inventoryName := "name" + plmnId := "02f829" + nbId := "4a952a0a" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nodebInfo := generateNodebInfo(inventoryName, entities.Node_ENB, plmnId, nbId) + data, err := proto.Marshal(nodebInfo) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + var setExpected []interface{} + + nodebNameKey := fmt.Sprintf("RAN:%s", inventoryName) + nodebIdKey := fmt.Sprintf("ENB:%s:%s", plmnId, nbId) + setExpected = append(setExpected, nodebNameKey, data) + setExpected = append(setExpected, nodebIdKey, data) + + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + rNibErr := w.UpdateNodebInfo(nodebInfo) + assert.Nil(t, rNibErr) +} + +func TestUpdateNodebInfoMissingInventoryNameFailure(t *testing.T) { + inventoryName := "name" + plmnId := "02f829" + nbId := "4a952a0a" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nodebInfo := &entities.NodebInfo{} + data, err := proto.Marshal(nodebInfo) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + var setExpected []interface{} + + nodebNameKey := fmt.Sprintf("RAN:%s", inventoryName) + nodebIdKey := fmt.Sprintf("ENB:%s:%s", plmnId, nbId) + setExpected = append(setExpected, nodebNameKey, data) + setExpected = append(setExpected, nodebIdKey, data) + + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + rNibErr := w.UpdateNodebInfo(nodebInfo) + + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.ValidationError{}, rNibErr) +} + +func TestUpdateNodebInfoMissingGlobalNbId(t *testing.T) { + inventoryName := "name" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nodebInfo := &entities.NodebInfo{} + nodebInfo.RanName = inventoryName + data, err := proto.Marshal(nodebInfo) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + var setExpected []interface{} + + nodebNameKey := fmt.Sprintf("RAN:%s", inventoryName) + setExpected = append(setExpected, nodebNameKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + rNibErr := w.UpdateNodebInfo(nodebInfo) + + assert.Nil(t, rNibErr) +} + +func TestSaveEnb(t *testing.T) { + name := "name" + ranName := "RAN:" + name + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + cell := &entities.ServedCellInfo{CellId: "aaff", Pci: 3} + cellEntity := entities.Cell{Type: entities.Cell_LTE_CELL, Cell: &entities.Cell_ServedCellInfo{ServedCellInfo: cell}} + enb.ServedCells = []*entities.ServedCellInfo{cell} + nb.Configuration = &entities.NodebInfo_Enb{Enb: &enb} + data, err := proto.Marshal(&nb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal Cell entity. Error: %v", err) + } + var setExpected []interface{} + setExpected = append(setExpected, ranName, data) + setExpected = append(setExpected, "ENB:02f829:4a952a0a", data) + setExpected = append(setExpected, fmt.Sprintf("CELL:%s", cell.GetCellId()), cellData) + setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", name, cell.GetPci()), cellData) + + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + nbIdData, err := proto.Marshal(&entities.NbIdentity{InventoryName: name}) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal nbIdentity entity. Error: %v", err) + } + sdlInstanceMock.On("RemoveMember", entities.Node_UNKNOWN.String(), []interface{}{nbIdData}).Return(e) + + nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} + nbIdData, err = proto.Marshal(nbIdentity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal NodeB Identity entity. Error: %v", err) + } + sdlInstanceMock.On("AddMember", "ENB", []interface{}{nbIdData}).Return(e) + + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.Nil(t, rNibErr) +} + +func TestSaveEnbCellIdValidationFailure(t *testing.T) { + name := "name" + w, _ := initSdlInstanceMock(namespace) + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + cell := &entities.ServedCellInfo{Pci: 3} + enb.ServedCells = []*entities.ServedCellInfo{cell} + nb.Configuration = &entities.NodebInfo_Enb{Enb: &enb} + + nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.ValidationError{}, rNibErr) + assert.Equal(t, "#utils.ValidateAndBuildCellIdKey - an empty cell id received", rNibErr.Error()) +} + +func TestSaveEnbInventoryNameValidationFailure(t *testing.T) { + w, _ := initSdlInstanceMock(namespace) + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_ENB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + enb := entities.Enb{} + cell := &entities.ServedCellInfo{CellId: "aaa", Pci: 3} + enb.ServedCells = []*entities.ServedCellInfo{cell} + nb.Configuration = &entities.NodebInfo_Enb{Enb: &enb} + + nbIdentity := &entities.NbIdentity{InventoryName: "", GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.ValidationError{}, rNibErr) + assert.Equal(t, "#utils.ValidateAndBuildNodeBNameKey - an empty inventory name received", rNibErr.Error()) +} + +func TestSaveGnbCellIdValidationFailure(t *testing.T) { + name := "name" + w, _ := initSdlInstanceMock(namespace) + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_GNB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + gnb := entities.Gnb{} + cellInfo := &entities.ServedNRCellInformation{NrPci: 2} + cell := &entities.ServedNRCell{ServedNrCellInformation: cellInfo} + gnb.ServedNrCells = []*entities.ServedNRCell{cell} + nb.Configuration = &entities.NodebInfo_Gnb{Gnb: &gnb} + + nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.ValidationError{}, rNibErr) + assert.Equal(t, "#utils.ValidateAndBuildNrCellIdKey - an empty cell id received", rNibErr.Error()) +} + +func TestSaveGnb(t *testing.T) { + name := "name" + ranName := "RAN:" + name + w, sdlInstanceMock := initSdlInstanceMock(namespace) + nb := entities.NodebInfo{} + nb.NodeType = entities.Node_GNB + nb.ConnectionStatus = 1 + nb.Ip = "localhost" + nb.Port = 5656 + gnb := entities.Gnb{} + cellInfo := &entities.ServedNRCellInformation{NrPci: 2, CellId: "ccdd"} + cell := &entities.ServedNRCell{ServedNrCellInformation: cellInfo} + cellEntity := entities.Cell{Type: entities.Cell_NR_CELL, Cell: &entities.Cell_ServedNrCell{ServedNrCell: cell}} + gnb.ServedNrCells = []*entities.ServedNRCell{cell} + nb.Configuration = &entities.NodebInfo_Gnb{Gnb: &gnb} + data, err := proto.Marshal(&nb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal NodeB entity. Error: %v", err) + } + var e error + + cellData, err := proto.Marshal(&cellEntity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal Cell entity. Error: %v", err) + } + var setExpected []interface{} + setExpected = append(setExpected, ranName, data) + setExpected = append(setExpected, "GNB:02f829:4a952a0a", data) + setExpected = append(setExpected, fmt.Sprintf("NRCELL:%s", cell.GetServedNrCellInformation().GetCellId()), cellData) + setExpected = append(setExpected, fmt.Sprintf("PCI:%s:%02x", name, cell.GetServedNrCellInformation().GetNrPci()), cellData) + + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} + nbIdData, err := proto.Marshal(nbIdentity) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveGnb - Failed to marshal NodeB Identity entity. Error: %v", err) + } + sdlInstanceMock.On("AddMember", "GNB", []interface{}{nbIdData}).Return(e) + + nbIdData, err = proto.Marshal(&entities.NbIdentity{InventoryName: name}) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEnb - Failed to marshal nbIdentity entity. Error: %v", err) + } + sdlInstanceMock.On("RemoveMember", entities.Node_UNKNOWN.String(), []interface{}{nbIdData}).Return(e) + + rNibErr := w.SaveNodeb(nbIdentity, &nb) + assert.Nil(t, rNibErr) +} + +func TestSaveRanLoadInformationSuccess(t *testing.T) { + inventoryName := "name" + loadKey, validationErr := common.ValidateAndBuildRanLoadInformationKey(inventoryName) + + if validationErr != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationSuccess - Failed to build ran load infromation key. Error: %v", validationErr) + } + + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + ranLoadInformation := generateRanLoadInformation() + data, err := proto.Marshal(ranLoadInformation) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err) + } + + var e error + var setExpected []interface{} + setExpected = append(setExpected, loadKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + rNibErr := w.SaveRanLoadInformation(inventoryName, ranLoadInformation) + assert.Nil(t, rNibErr) +} + +func TestSaveRanLoadInformationMarshalNilFailure(t *testing.T) { + inventoryName := "name2" + w, _ := initSdlInstanceMock(namespace) + + expectedErr := common.NewInternalError(errors.New("proto: Marshal called with nil")) + err := w.SaveRanLoadInformation(inventoryName, nil) + assert.Equal(t, expectedErr, err) +} + +func TestSaveRanLoadInformationEmptyInventoryNameFailure(t *testing.T) { + inventoryName := "" + w, _ := initSdlInstanceMock(namespace) + + err := w.SaveRanLoadInformation(inventoryName, nil) + assert.NotNil(t, err) + assert.IsType(t, &common.ValidationError{}, err) +} + +func TestSaveRanLoadInformationSdlFailure(t *testing.T) { + inventoryName := "name2" + + loadKey, validationErr := common.ValidateAndBuildRanLoadInformationKey(inventoryName) + + if validationErr != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationSuccess - Failed to build ran load infromation key. Error: %v", validationErr) + } + + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + ranLoadInformation := generateRanLoadInformation() + data, err := proto.Marshal(ranLoadInformation) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveRanLoadInformation - Failed to marshal RanLoadInformation entity. Error: %v", err) + } + + expectedErr := errors.New("expected error") + var setExpected []interface{} + setExpected = append(setExpected, loadKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) + + rNibErr := w.SaveRanLoadInformation(inventoryName, ranLoadInformation) + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.InternalError{}, rNibErr) +} + +func generateCellLoadInformation() *entities.CellLoadInformation { + cellLoadInformation := entities.CellLoadInformation{} + + cellLoadInformation.CellId = "123" + + ulInterferenceOverloadIndication := entities.UlInterferenceOverloadIndication_HIGH_INTERFERENCE + cellLoadInformation.UlInterferenceOverloadIndications = []entities.UlInterferenceOverloadIndication{ulInterferenceOverloadIndication} + + ulHighInterferenceInformation := entities.UlHighInterferenceInformation{ + TargetCellId: "456", + UlHighInterferenceIndication: "xxx", + } + + cellLoadInformation.UlHighInterferenceInfos = []*entities.UlHighInterferenceInformation{&ulHighInterferenceInformation} + + cellLoadInformation.RelativeNarrowbandTxPower = &entities.RelativeNarrowbandTxPower{ + RntpPerPrb: "xxx", + RntpThreshold: entities.RntpThreshold_NEG_4, + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V1_ANT_PRT, + PB: 1, + PdcchInterferenceImpact: 2, + EnhancedRntp: &entities.EnhancedRntp{ + EnhancedRntpBitmap: "xxx", + RntpHighPowerThreshold: entities.RntpThreshold_NEG_2, + EnhancedRntpStartTime: &entities.StartTime{StartSfn: 500, StartSubframeNumber: 5}, + }, + } + + cellLoadInformation.AbsInformation = &entities.AbsInformation{ + Mode: entities.AbsInformationMode_ABS_INFO_FDD, + AbsPatternInfo: "xxx", + NumberOfCellSpecificAntennaPorts: entities.NumberOfCellSpecificAntennaPorts_V2_ANT_PRT, + MeasurementSubset: "xxx", + } + + cellLoadInformation.InvokeIndication = entities.InvokeIndication_ABS_INFORMATION + + cellLoadInformation.ExtendedUlInterferenceOverloadInfo = &entities.ExtendedUlInterferenceOverloadInfo{ + AssociatedSubframes: "xxx", + ExtendedUlInterferenceOverloadIndications: cellLoadInformation.UlInterferenceOverloadIndications, + } + + compInformationItem := &entities.CompInformationItem{ + CompHypothesisSets: []*entities.CompHypothesisSet{{CellId: "789", CompHypothesis: "xxx"}}, + BenefitMetric: 50, + } + + cellLoadInformation.CompInformation = &entities.CompInformation{ + CompInformationItems: []*entities.CompInformationItem{compInformationItem}, + CompInformationStartTime: &entities.StartTime{StartSfn: 123, StartSubframeNumber: 456}, + } + + cellLoadInformation.DynamicDlTransmissionInformation = &entities.DynamicDlTransmissionInformation{ + State: entities.NaicsState_NAICS_ACTIVE, + TransmissionModes: "xxx", + PB: 2, + PAList: []entities.PA{entities.PA_DB_NEG_3}, + } + + return &cellLoadInformation +} + +func generateRanLoadInformation() *entities.RanLoadInformation { + ranLoadInformation := entities.RanLoadInformation{} + + ranLoadInformation.LoadTimestamp = uint64(time.Now().UnixNano()) + + cellLoadInformation := generateCellLoadInformation() + ranLoadInformation.CellLoadInfos = []*entities.CellLoadInformation{cellLoadInformation} + + return &ranLoadInformation +} + +func TestSaveNilEntityFailure(t *testing.T) { + w, _ := initSdlInstanceMock(namespace) + expectedErr := common.NewInternalError(errors.New("proto: Marshal called with nil")) + nbIdentity := &entities.NbIdentity{} + actualErr := w.SaveNodeb(nbIdentity, nil) + assert.Equal(t, expectedErr, actualErr) +} + +func TestSaveUnknownTypeEntityFailure(t *testing.T) { + w, _ := initSdlInstanceMock(namespace) + expectedErr := common.NewValidationError("#rNibWriter.saveNodeB - Unknown responding node type, entity: ip:\"localhost\" port:5656 ") + nbIdentity := &entities.NbIdentity{InventoryName: "name", GlobalNbId: &entities.GlobalNbId{PlmnId: "02f829", NbId: "4a952a0a"}} + nb := &entities.NodebInfo{} + nb.Port = 5656 + nb.Ip = "localhost" + actualErr := w.SaveNodeb(nbIdentity, nb) + assert.Equal(t, expectedErr, actualErr) +} + +func TestSaveEntityFailure(t *testing.T) { + name := "name" + plmnId := "02f829" + nbId := "4a952a0a" + + w, sdlInstanceMock := initSdlInstanceMock(namespace) + gnb := entities.NodebInfo{} + gnb.NodeType = entities.Node_GNB + data, err := proto.Marshal(&gnb) + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveEntityFailure - Failed to marshal NodeB entity. Error: %v", err) + } + nbIdentity := &entities.NbIdentity{InventoryName: name, GlobalNbId: &entities.GlobalNbId{PlmnId: plmnId, NbId: nbId}} + setExpected := []interface{}{"RAN:" + name, data} + setExpected = append(setExpected, "GNB:"+plmnId+":"+nbId, data) + expectedErr := errors.New("expected error") + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) + rNibErr := w.SaveNodeb(nbIdentity, &gnb) + assert.NotEmpty(t, rNibErr) +} + +func TestGetRNibWriter(t *testing.T) { + received, _ := initSdlInstanceMock(namespace) + assert.NotEmpty(t, received) +} + +func TestSaveE2TInstanceSuccess(t *testing.T) { + address := "10.10.2.15:9800" + loadKey, validationErr := common.ValidateAndBuildE2TInstanceKey(address) + + if validationErr != nil { + t.Errorf("#rNibWriter_test.TestSaveE2TInstanceSuccess - Failed to build E2T Instance key. Error: %v", validationErr) + } + + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + e2tInstance := generateE2tInstance(address) + data, err := json.Marshal(e2tInstance) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveE2TInstanceSuccess - Failed to marshal E2tInstance entity. Error: %v", err) + } + + var e error + var setExpected []interface{} + setExpected = append(setExpected, loadKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + rNibErr := w.SaveE2TInstance(e2tInstance) + assert.Nil(t, rNibErr) +} + +func TestSaveE2TInstanceNullE2tInstanceFailure(t *testing.T) { + w, _ := initSdlInstanceMock(namespace) + var address string + e2tInstance := entities.NewE2TInstance(address, "test") + err := w.SaveE2TInstance(e2tInstance) + assert.NotNil(t, err) + assert.IsType(t, &common.ValidationError{}, err) +} + +func TestSaveE2TInstanceSdlFailure(t *testing.T) { + address := "10.10.2.15:9800" + loadKey, validationErr := common.ValidateAndBuildE2TInstanceKey(address) + + if validationErr != nil { + t.Errorf("#rNibWriter_test.TestSaveE2TInstanceSdlFailure - Failed to build E2T Instance key. Error: %v", validationErr) + } + + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + e2tInstance := generateE2tInstance(address) + data, err := json.Marshal(e2tInstance) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveE2TInstanceSdlFailure - Failed to marshal E2tInstance entity. Error: %v", err) + } + + expectedErr := errors.New("expected error") + var setExpected []interface{} + setExpected = append(setExpected, loadKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) + + rNibErr := w.SaveE2TInstance(e2tInstance) + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.InternalError{}, rNibErr) +} + +func generateE2tInstance(address string) *entities.E2TInstance { + e2tInstance := entities.NewE2TInstance(address, "pod test") + + e2tInstance.AssociatedRanList = []string{"test1", "test2"} + + return e2tInstance +} + +func TestSaveE2TAddressesSuccess(t *testing.T) { + address := "10.10.2.15:9800" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + e2tAddresses := []string{address} + data, err := json.Marshal(e2tAddresses) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveE2TInfoListSuccess - Failed to marshal E2TInfoList. Error: %v", err) + } + + var e error + var setExpected []interface{} + setExpected = append(setExpected, E2TAddressesKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(e) + + rNibErr := w.SaveE2TAddresses(e2tAddresses) + assert.Nil(t, rNibErr) +} + +func TestSaveE2TAddressesSdlFailure(t *testing.T) { + address := "10.10.2.15:9800" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + e2tAddresses := []string{address} + data, err := json.Marshal(e2tAddresses) + + if err != nil { + t.Errorf("#rNibWriter_test.TestSaveE2TInfoListSdlFailure - Failed to marshal E2TInfoList. Error: %v", err) + } + + expectedErr := errors.New("expected error") + var setExpected []interface{} + setExpected = append(setExpected, E2TAddressesKey, data) + sdlInstanceMock.On("Set", []interface{}{setExpected}).Return(expectedErr) + + rNibErr := w.SaveE2TAddresses(e2tAddresses) + assert.NotNil(t, rNibErr) + assert.IsType(t, &common.InternalError{}, rNibErr) +} + +func TestRemoveE2TInstanceSuccess(t *testing.T) { + address := "10.10.2.15:9800" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + e2tAddresses := []string{fmt.Sprintf("E2TInstance:%s", address)} + var e error + sdlInstanceMock.On("Remove", e2tAddresses).Return(e) + + rNibErr := w.RemoveE2TInstance(address) + assert.Nil(t, rNibErr) + sdlInstanceMock.AssertExpectations(t) +} + +func TestRemoveE2TInstanceSdlFailure(t *testing.T) { + address := "10.10.2.15:9800" + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + e2tAddresses := []string{fmt.Sprintf("E2TInstance:%s", address)} + expectedErr := errors.New("expected error") + sdlInstanceMock.On("Remove", e2tAddresses).Return(expectedErr) + + rNibErr := w.RemoveE2TInstance(address) + assert.IsType(t, &common.InternalError{}, rNibErr) +} + +func TestRemoveE2TInstanceEmptyAddressFailure(t *testing.T) { + w, sdlInstanceMock := initSdlInstanceMock(namespace) + + rNibErr := w.RemoveE2TInstance("") + assert.IsType(t, &common.ValidationError{}, rNibErr) + sdlInstanceMock.AssertExpectations(t) +} + +//Integration tests +// +//func TestSaveEnbGnbInteg(t *testing.T){ +// for i := 0; i<10; i++{ +// Init("e2Manager", 1) +// w := GetRNibWriter() +// nb := entities.NodebInfo{} +// nb.NodeType = entities.Node_ENB +// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTED +// nb.Ip = "localhost" +// nb.Port = uint32(5656 + i) +// enb := entities.Enb{} +// cell1 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",111 + i), Pci:uint32(11 + i)} +// cell2 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",222 + i), Pci:uint32(22 + i)} +// cell3 := &entities.ServedCellInfo{CellId:fmt.Sprintf("%02x",333 + i), Pci:uint32(33 + i)} +// enb.ServedCells = []*entities.ServedCellInfo{cell1, cell2, cell3} +// nb.Configuration = &entities.NodebInfo_Enb{Enb:&enb} +// plmnId := 0x02f828 +// nbId := 0x4a952a0a +// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameEnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId + i), NbId:fmt.Sprintf("%02x", nbId + i)}} +// err := w.SaveNodeb(nbIdentity, &nb) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err) +// } +// +// nb1 := entities.NodebInfo{} +// nb1.NodeType = entities.Node_GNB +// nb1.ConnectionStatus = entities.ConnectionStatus_CONNECTED +// nb1.Ip = "localhost" +// nb1.Port = uint32(6565 + i) +// gnb := entities.Gnb{} +// gCell1 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",1111 + i), NrPci:uint32(1 + i)}} +// gCell2 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",2222 + i), NrPci:uint32(2 + i)}} +// gCell3 := &entities.ServedNRCell{ServedNrCellInformation:&entities.ServedNRCellInformation{CellId:fmt.Sprintf("%02x",3333 + i), NrPci:uint32(3 + i)}} +// gnb.ServedNrCells = []*entities.ServedNRCell{gCell1, gCell2, gCell3,} +// nb1.Configuration = &entities.NodebInfo_Gnb{Gnb:&gnb} +// nbIdentity = &entities.NbIdentity{InventoryName: fmt.Sprintf("nameGnb%d" ,i), GlobalNbId:&entities.GlobalNbId{PlmnId:fmt.Sprintf("%02x", plmnId - i), NbId:fmt.Sprintf("%02x", nbId - i)}} +// err = w.SaveNodeb(nbIdentity, &nb1) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err) +// } +// } +//} +// +//func TestSaveNbRanNamesInteg(t *testing.T){ +// for i := 0; i<10; i++{ +// Init("e2Manager", 1) +// w := GetRNibWriter() +// nb := entities.NodebInfo{} +// nb.ConnectionStatus = entities.ConnectionStatus_CONNECTING +// nb.Ip = "localhost" +// nb.Port = uint32(5656 + i) +// nbIdentity := &entities.NbIdentity{InventoryName: fmt.Sprintf("nameOnly%d" ,i)} +// err := w.SaveNodeb(nbIdentity, &nb) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveEnbInteg - Failed to save NodeB entity. Error: %v", err) +// } +// } +//} +// +//func TestSaveRanLoadInformationInteg(t *testing.T){ +// Init("e2Manager", 1) +// w := GetRNibWriter() +// ranLoadInformation := generateRanLoadInformation() +// err := w.SaveRanLoadInformation("ran_integ", ranLoadInformation) +// if err != nil{ +// t.Errorf("#rNibWriter_test.TestSaveRanLoadInformationInteg - Failed to save RanLoadInformation entity. Error: %v", err) +// } +//} diff --git a/setup/e2mgr/E2Manager/resources/configuration.yaml b/setup/e2mgr/E2Manager/resources/configuration.yaml new file mode 100644 index 0000000..d79565b --- /dev/null +++ b/setup/e2mgr/E2Manager/resources/configuration.yaml @@ -0,0 +1,19 @@ +logging: + logLevel: info +http: + port: 3800 +rmr: + port: 3801 + maxMsgSize: 65536 +routingManager: + baseUrl: http://10.0.2.15:12020/ric/v1/handles/ +notificationResponseBuffer: 100 +bigRedButtonTimeoutSec: 5 +maxRnibConnectionAttempts: 3 +rnibRetryIntervalMs: 10 +keepAliveResponseTimeoutMs: 4500 +keepAliveDelayMs: 1500 +e2tInstanceDeletionTimeoutMs: 15000 +globalRicId: + plmnId: 131014 + ricNearRtId: 556670 \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/resources/rmr.verbose b/setup/e2mgr/E2Manager/resources/rmr.verbose new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/setup/e2mgr/E2Manager/resources/rmr.verbose @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/rmrCgo/rmrCgoApi.go b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoApi.go new file mode 100644 index 0000000..5ec09b9 --- /dev/null +++ b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoApi.go @@ -0,0 +1,161 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrCgo + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_si +// #include +// #include +import "C" +import ( + "fmt" + "github.com/pkg/errors" + "strings" + "time" + "unsafe" + + "e2mgr/logger" +) + +func (*Context) Init(port string, maxMsgSize int, flags int, logger *logger.Logger) RmrMessenger { + pp := C.CString(port) + defer C.free(unsafe.Pointer(pp)) + logger.Debugf("#rmrCgoApi.Init - Going to initiate RMR router") + ctx := NewContext(maxMsgSize, flags, C.rmr_init(pp, C.int(maxMsgSize), C.int(flags)), logger) + start := time.Now() + //TODO use time.Ticker() + for !ctx.IsReady() { + time.Sleep(time.Second) + if time.Since(start) >= time.Minute { + logger.Debugf("#rmrCgoApi.Init - Routing table is not ready") + start = time.Now() + } + } + logger.Infof("#rmrCgoApi.Init - RMR router has been initiated") + + // Configure the rmr to make rounds of attempts to send a message before notifying the application that it should retry. + // Each round is about 1000 attempts with a short sleep between each round. + C.rmr_set_stimeout(ctx.RmrCtx, C.int(1000)) + r := RmrMessenger(ctx) + return r +} + +func (ctx *Context) SendMsg(msg *MBuf, printLogs bool) (*MBuf, error) { + ctx.checkContextInitialized() + ctx.Logger.Debugf("#rmrCgoApi.SendMsg - Going to send message. MBuf: %v", *msg) + allocatedCMBuf := ctx.getAllocatedCRmrMBuf(ctx.Logger, msg, ctx.MaxMsgSize) + state := allocatedCMBuf.state + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to get allocated message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + + if printLogs { + //TODO: if debug enabled + transactionId := string(*msg.XAction) + tmpTid := strings.TrimSpace(transactionId) + ctx.Logger.Infof("[E2 Manager -> RMR] #rmrCgoApi.SendMsg - Going to send message %v for transaction id: %s", *msg, tmpTid) + } + + currCMBuf := C.rmr_send_msg(ctx.RmrCtx, allocatedCMBuf) + defer C.rmr_free_msg(currCMBuf) + + state = currCMBuf.state + + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to send message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + + return convertToMBuf(ctx.Logger, currCMBuf), nil +} + +func (ctx *Context) WhSendMsg(msg *MBuf, printLogs bool) (*MBuf, error) { + ctx.checkContextInitialized() + ctx.Logger.Debugf("#rmrCgoApi.WhSendMsg - Going to wormhole send message. MBuf: %v", *msg) + + whid := C.rmr_wh_open(ctx.RmrCtx, (*C.char)(msg.GetMsgSrc())) // open direct connection, returns wormhole ID + ctx.Logger.Infof("#rmrCgoApi.WhSendMsg - The wormhole id %v has been received", whid) + defer C.rmr_wh_close(ctx.RmrCtx, whid) + + allocatedCMBuf := ctx.getAllocatedCRmrMBuf(ctx.Logger, msg, ctx.MaxMsgSize) + state := allocatedCMBuf.state + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.WhSendMsg - Failed to get allocated message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + + if printLogs { + transactionId := string(*msg.XAction) + tmpTid := strings.TrimSpace(transactionId) + ctx.Logger.Infof("[E2 Manager -> RMR] #rmrCgoApi.WhSendMsg - Going to send message %v for transaction id: %s", *msg, tmpTid) + } + + currCMBuf := C.rmr_wh_send_msg(ctx.RmrCtx, whid, allocatedCMBuf) + defer C.rmr_free_msg(currCMBuf) + + state = currCMBuf.state + + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.WhSendMsg - Failed to send message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + + return convertToMBuf(ctx.Logger, currCMBuf), nil +} + + +func (ctx *Context) RecvMsg() (*MBuf, error) { + ctx.checkContextInitialized() + ctx.Logger.Debugf("#rmrCgoApi.RecvMsg - Going to receive message") + allocatedCMBuf := C.rmr_alloc_msg(ctx.RmrCtx, C.int(ctx.MaxMsgSize)) + + currCMBuf := C.rmr_rcv_msg(ctx.RmrCtx, allocatedCMBuf) + defer C.rmr_free_msg(currCMBuf) + + state := currCMBuf.state + + if state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.RecvMsg - Failed to receive message. state: %v - %s", state, states[int(state)]) + ctx.Logger.Errorf(errorMessage) + return nil, errors.New(errorMessage) + } + + mbuf := convertToMBuf(ctx.Logger, currCMBuf) + + if mbuf.MType != E2_TERM_KEEP_ALIVE_RESP { + + transactionId := string(*mbuf.XAction) + tmpTid := strings.TrimSpace(transactionId) + ctx.Logger.Infof("[RMR -> E2 Manager] #rmrCgoApi.RecvMsg - message %v has been received for transaction id: %s", *mbuf, tmpTid) + } + return mbuf, nil +} + +func (ctx *Context) IsReady() bool { + ctx.Logger.Debugf("#rmrCgoApi.IsReady - Going to check if routing table is initialized") + return int(C.rmr_ready(ctx.RmrCtx)) != 0 +} + +func (ctx *Context) Close() { + ctx.Logger.Debugf("#rmrCgoApi.Close - Going to close RMR context") + C.rmr_close(ctx.RmrCtx) + time.Sleep(100 * time.Millisecond) +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/rmrCgo/rmrCgoApi_test.go b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoApi_test.go new file mode 100644 index 0000000..77ccb33 --- /dev/null +++ b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoApi_test.go @@ -0,0 +1,138 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrCgo_test + +import ( + "bytes" + "e2mgr/logger" + "e2mgr/rmrCgo" + "e2mgr/tests" + "encoding/json" + "github.com/stretchr/testify/assert" + "io/ioutil" + "testing" + "unsafe" +) + +var ( + log *logger.Logger + msgr rmrCgo.RmrMessenger +) + +func TestLogger(t *testing.T) { + log := initLog(t) + data := map[string]interface{}{"messageType": 1001, "ranIp": "10.0.0.3", "ranPort": 879, "ranName": "test1"} + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data) + req := tests.GetHttpRequest() + boo, _ := ioutil.ReadAll(req.Body) + log.Debugf("#rmr_c_go_api_test.TestLogger - request header: %v\n; request body: %s\n", req.Header, string(boo)) +} + +func TestNewMBufSuccess(t *testing.T) { + var msgSrc unsafe.Pointer + msg := rmrCgo.NewMBuf(tests.MessageType, len(tests.DummyPayload), "RanName", &tests.DummyPayload, &tests.DummyXAction, msgSrc) + assert.NotNil(t, msg) + assert.NotEmpty(t, msg.Payload) + assert.NotEmpty(t, msg.XAction) + assert.Equal(t, msg.MType, tests.MessageType) + assert.Equal(t, msg.Meid, "RanName") + assert.Equal(t, msg.Len, len(tests.DummyPayload)) +} + +/*func TestIsReadySuccess(t *testing.T) { + log := initLog(t) + + initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) + if msgr == nil || !msgr.IsReady() { + t.Errorf("#rmr_c_go_api_test.TestIsReadySuccess - The rmr router is not ready") + } + msgr.Close() +} +func TestSendRecvMsgSuccess(t *testing.T) { + log := initLog(t) + + initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) + if msgr == nil || !msgr.IsReady() { + t.Errorf("#rmr_c_go_api_test.TestSendRecvMsgSuccess - The rmr router is not ready") + } + msg := rmrCgo.NewMBuf(1, tests.MaxMsgSize, "test 1", &tests.DummyPayload, &tests.DummyXAction) + log.Debugf("#rmr_c_go_api_test.TestSendRecvMsgSuccess - Going to send the message: %#v\n", msg) + result, err := msgr.SendMsg(msg, true) + + assert.Nil(t, err) + assert.NotNil(t, result) + + msgR, err := msgr.RecvMsg() + + assert.Nil(t, err) + assert.NotNil(t, msgR) + msgr.Close() +} + +func TestSendMsgRmrInvalidMsgNumError(t *testing.T) { + log := initLog(t) + + initRmr(tests.GetPort(), tests.MaxMsgSize, tests.Flags, log) + if msgr == nil || !msgr.IsReady() { + t.Errorf("#rmr_c_go_api_test.TestSendMsgRmrInvalidMsgNumError - The rmr router is not ready") + } + + msg := rmrCgo.NewMBuf(10, tests.MaxMsgSize, "test 1", &tests.DummyPayload, &tests.DummyXAction) + log.Debugf("#rmr_c_go_api_test.TestSendMsgRmrInvalidMsgNumError - Going to send the message: %#v\n", msg) + result, err := msgr.SendMsg(msg, true) + + assert.NotNil(t, err) + assert.Nil(t, result) + + msgr.Close() +} + +func TestSendMsgRmrInvalidPortError(t *testing.T) { + log := initLog(t) + + initRmr("tcp:"+strconv.Itoa(5555), tests.MaxMsgSize, tests.Flags, log) + if msgr == nil || !msgr.IsReady() { + t.Errorf("#rmr_c_go_api_test.TestSendMsgRmrInvalidPortError - The rmr router is not ready") + } + + msg := rmrCgo.NewMBuf(1, tests.MaxMsgSize, "test 1", &tests.DummyPayload, &tests.DummyXAction) + log.Debugf("#rmr_c_go_api_test.TestSendMsgRmrInvalidPortError - Going to send the message: %#v\n", msg) + result, err := msgr.SendMsg(msg, true) + + assert.NotNil(t, err) + assert.Nil(t, result) + + msgr.Close() +} + +func initRmr(port string, maxMsgSize int, flags int, log *logger.Logger) { + var ctx *rmrCgo.Context + msgr = ctx.Init(port, maxMsgSize, flags, log) +}*/ + +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#rmr_c_go_api_test.initLog - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/rmrCgo/rmrCgoTypes.go b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoTypes.go new file mode 100644 index 0000000..13bfa16 --- /dev/null +++ b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoTypes.go @@ -0,0 +1,159 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrCgo + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_si +// #include +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "fmt" + "unsafe" +) + +func NewMBuf(mType int, len int, meid string, payload *[]byte, xAction *[]byte, msgSrc unsafe.Pointer) *MBuf { + return &MBuf{ + mType, + len, + meid, + payload, + xAction, + msgSrc, + } +} + +func NewContext(maxMsgSize int, flags int, ctx unsafe.Pointer, logger *logger.Logger) *Context { + return &Context{ + MaxMsgSize: maxMsgSize, + Flags: flags, + RmrCtx: ctx, + Logger: logger, + } +} + +//TODO: consider declaring using its own type +const ( + // messages + RIC_X2_SETUP_REQ = C.RIC_X2_SETUP_REQ + RIC_X2_SETUP_RESP = C.RIC_X2_SETUP_RESP + RIC_X2_SETUP_FAILURE = C.RIC_X2_SETUP_FAILURE + RIC_ENDC_X2_SETUP_REQ = C.RIC_ENDC_X2_SETUP_REQ + RIC_ENDC_X2_SETUP_RESP = C.RIC_ENDC_X2_SETUP_RESP + RIC_ENDC_X2_SETUP_FAILURE = C.RIC_ENDC_X2_SETUP_FAILURE + RIC_SCTP_CONNECTION_FAILURE = C.RIC_SCTP_CONNECTION_FAILURE + RIC_ENB_LOAD_INFORMATION = C.RIC_ENB_LOAD_INFORMATION + RIC_ENB_CONF_UPDATE = C.RIC_ENB_CONF_UPDATE + RIC_ENB_CONFIGURATION_UPDATE_ACK = C.RIC_ENB_CONF_UPDATE_ACK + RIC_ENB_CONFIGURATION_UPDATE_FAILURE = C.RIC_ENB_CONF_UPDATE_FAILURE + RIC_ENDC_CONF_UPDATE = C.RIC_ENDC_CONF_UPDATE + RIC_ENDC_CONF_UPDATE_ACK = C.RIC_ENDC_CONF_UPDATE_ACK + RIC_ENDC_CONF_UPDATE_FAILURE = C.RIC_ENDC_CONF_UPDATE_FAILURE + RIC_SCTP_CLEAR_ALL = C.RIC_SCTP_CLEAR_ALL + RIC_X2_RESET_RESP = C.RIC_X2_RESET_RESP + RIC_X2_RESET = C.RIC_X2_RESET + RIC_E2_TERM_INIT = C.E2_TERM_INIT + RAN_CONNECTED = C.RAN_CONNECTED + RAN_RESTARTED = C.RAN_RESTARTED + RAN_RECONFIGURED = C.RAN_RECONFIGURED + E2_TERM_KEEP_ALIVE_REQ = C.E2_TERM_KEEP_ALIVE_REQ + E2_TERM_KEEP_ALIVE_RESP = C.E2_TERM_KEEP_ALIVE_RESP + RIC_E2_SETUP_REQ = C.RIC_E2_SETUP_REQ + RIC_E2_SETUP_RESP = C.RIC_E2_SETUP_RESP + RIC_E2_SETUP_FAILURE = C.RIC_E2_SETUP_FAILURE +) + +const ( + RMR_MAX_XACTION_LEN = int(C.RMR_MAX_XID) + RMR_MAX_MEID_LEN = int(C.RMR_MAX_MEID) + RMR_MAX_SRC_LEN = int(C.RMR_MAX_SRC) + + //states + RMR_OK = C.RMR_OK + RMR_ERR_BADARG = C.RMR_ERR_BADARG + RMR_ERR_NOENDPT = C.RMR_ERR_NOENDPT + RMR_ERR_EMPTY = C.RMR_ERR_EMPTY + RMR_ERR_NOHDR = C.RMR_ERR_NOHDR + RMR_ERR_SENDFAILED = C.RMR_ERR_SENDFAILED + RMR_ERR_CALLFAILED = C.RMR_ERR_CALLFAILED + RMR_ERR_NOWHOPEN = C.RMR_ERR_NOWHOPEN + RMR_ERR_WHID = C.RMR_ERR_WHID + RMR_ERR_OVERFLOW = C.RMR_ERR_OVERFLOW + RMR_ERR_RETRY = C.RMR_ERR_RETRY + RMR_ERR_RCVFAILED = C.RMR_ERR_RCVFAILED + RMR_ERR_TIMEOUT = C.RMR_ERR_TIMEOUT + RMR_ERR_UNSET = C.RMR_ERR_UNSET + RMR_ERR_TRUNC = C.RMR_ERR_TRUNC + RMR_ERR_INITFAILED = C.RMR_ERR_INITFAILED +) + +var states = map[int]string{ + RMR_OK: "state is good", + RMR_ERR_BADARG: "argument passd to function was unusable", + RMR_ERR_NOENDPT: "send/call could not find an endpoint based on msg type", + RMR_ERR_EMPTY: "msg received had no payload; attempt to send an empty message", + RMR_ERR_NOHDR: "message didn't contain a valid header", + RMR_ERR_SENDFAILED: "send failed; errno has nano reason", + RMR_ERR_CALLFAILED: "unable to send call() message", + RMR_ERR_NOWHOPEN: "no wormholes are open", + RMR_ERR_WHID: "wormhole id was invalid", + RMR_ERR_OVERFLOW: "operation would have busted through a buffer/field size", + RMR_ERR_RETRY: "request (send/call/rts) failed, but caller should retry (EAGAIN for wrappers)", + RMR_ERR_RCVFAILED: "receive failed (hard error)", + RMR_ERR_TIMEOUT: "message processing call timed out", + RMR_ERR_UNSET: "the message hasn't been populated with a transport buffer", + RMR_ERR_TRUNC: "received message likely truncated", + RMR_ERR_INITFAILED: "initialisation of something (probably message) failed", +} + +type MBuf struct { + MType int + Len int + Meid string //Managed entity id (RAN name) + Payload *[]byte + XAction *[]byte + msgSrc unsafe.Pointer +} + +func (m MBuf) String() string { + return fmt.Sprintf("{ MType: %d, Len: %d, Meid: %q, Xaction: %q, Payload: [%x] }", m.MType, m.Len, m.Meid, m.XAction, m.Payload) +} + +func (m MBuf) GetMsgSrc() unsafe.Pointer { + return m.msgSrc +} + +type Context struct { + MaxMsgSize int + Flags int + RmrCtx unsafe.Pointer + Logger *logger.Logger +} + +type RmrMessenger interface { + Init(port string, maxMsgSize int, flags int, logger *logger.Logger) RmrMessenger + SendMsg(msg *MBuf, printLogs bool) (*MBuf, error) + WhSendMsg(msg *MBuf, printLogs bool) (*MBuf, error) + RecvMsg() (*MBuf, error) + IsReady() bool + Close() +} diff --git a/setup/e2mgr/E2Manager/rmrCgo/rmrCgoUtils.go b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoUtils.go new file mode 100644 index 0000000..f26d168 --- /dev/null +++ b/setup/e2mgr/E2Manager/rmrCgo/rmrCgoUtils.go @@ -0,0 +1,113 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrCgo + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_si +// #include +// #include +import "C" +import ( + "e2mgr/logger" + "bytes" + "encoding/binary" + "strings" + "unsafe" +) + +func convertToMBuf(logger *logger.Logger, m *C.rmr_mbuf_t) *MBuf { + payloadArr := C.GoBytes(unsafe.Pointer(m.payload),C.int(m.len)) + xActionArr := C.GoBytes(unsafe.Pointer(m.xaction),C.int(RMR_MAX_XACTION_LEN)) + + // Trim padding (space and 0) + xActionStr := strings.TrimRight(string(xActionArr),"\040\000") + xActionArr = []byte(xActionStr) + + mbuf := &MBuf{ + MType: int(m.mtype), + Len: int(m.len), + Payload: &payloadArr, + XAction: &xActionArr, + msgSrc: C.CBytes(make([]byte, RMR_MAX_SRC_LEN)), + } + + C.rmr_get_src(m, (*C.uchar)(mbuf.msgSrc)) // Capture message source + + meidBuf := make([]byte, RMR_MAX_MEID_LEN) + if meidCstr := C.rmr_get_meid(m, (*C.uchar)(unsafe.Pointer(&meidBuf[0]))); meidCstr != nil { + mbuf.Meid = strings.TrimRight(string(meidBuf), "\000") + } + + return mbuf +} + +func (ctx *Context) getAllocatedCRmrMBuf(logger *logger.Logger, mBuf *MBuf, maxMsgSize int) (cMBuf *C.rmr_mbuf_t) { + var xActionBuf [RMR_MAX_XACTION_LEN]byte + var meidBuf[RMR_MAX_MEID_LEN]byte + + cMBuf = C.rmr_alloc_msg(ctx.RmrCtx, C.int(maxMsgSize)) + cMBuf.mtype = C.int(mBuf.MType) + cMBuf.len = C.int(mBuf.Len) + + payloadLen := len(*mBuf.Payload) + xActionLen := len(*mBuf.XAction) + + //Add padding + copy(xActionBuf[:], *mBuf.XAction) + for i:= xActionLen; i < RMR_MAX_XACTION_LEN; i++{ + xActionBuf[i] = '\040' //space + } + + // Add padding + copy(meidBuf[:], mBuf.Meid) + for i:= len(mBuf.Meid); i < RMR_MAX_MEID_LEN; i++{ + meidBuf[i] = 0 + } + + payloadArr := (*[1 << 30]byte)(unsafe.Pointer(cMBuf.payload))[:payloadLen:payloadLen] + xActionArr := (*[1 << 30]byte)(unsafe.Pointer(cMBuf.xaction))[:RMR_MAX_XACTION_LEN:RMR_MAX_XACTION_LEN] + + err := binary.Read(bytes.NewReader(*mBuf.Payload), binary.LittleEndian, payloadArr) + if err != nil { + ctx.Logger.Errorf( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to read payload to allocated RMR message buffer") + } + err = binary.Read(bytes.NewReader(xActionBuf[:]), binary.LittleEndian, xActionArr) + if err != nil { + ctx.Logger.Errorf( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to read xAction data to allocated RMR message buffer") + } + len := C.rmr_bytes2meid(cMBuf, (*C.uchar)(unsafe.Pointer(&meidBuf[0])), C.int(RMR_MAX_MEID_LEN)) + if int(len) != RMR_MAX_MEID_LEN { + ctx.Logger.Errorf( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to copy meid data to allocated RMR message buffer") + } + return cMBuf +} + +//TODO: change to assert or return error +func (ctx *Context) checkContextInitialized() { + if ctx.RmrCtx == nil { + if ctx.Logger != nil { + ctx.Logger.DPanicf("#rmrCgoUtils.checkContextInitialized - The RMR router has not been initialized") + } + panic("#rmrCgoUtils.checkContextInitialized - The RMR router has not been initialized. To initialize router please call Init() method") + } +} diff --git a/setup/e2mgr/E2Manager/router.txt b/setup/e2mgr/E2Manager/router.txt new file mode 100644 index 0000000..6f54f44 --- /dev/null +++ b/setup/e2mgr/E2Manager/router.txt @@ -0,0 +1,28 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10070|10.0.2.15:38000 +rte|10071|10.0.2.15:38000 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:3801 +rte|10370|10.0.2.15:3801 +rte|10371|10.0.2.15:38000 +rte|10372|10.0.2.15:38000 +rte|10080|10.0.2.15:3801 +rte|10081|10.0.2.15:38000 +rte|10082|10.0.2.15:38000 +rte|1090|10.0.2.15:38000 +rte|1200|10.0.2.15:4801 +rte|1210|10.0.2.15:4801 +rte|1220|10.0.2.15:4801 +rte|10090|10.0.2.15:38000 +rte|1101|10.0.2.15:38000 +rte|12002|10.0.2.15:38000 +rte|12003|10.0.2.15:38000 +mse|12002,10.0.2.15:38000|-1|gnb:208-092-303030 +mse|12003,10.0.2.15:38000|-1|gnb:208-092-303030 +newrt|end diff --git a/setup/e2mgr/E2Manager/services/rmrreceiver/rmr_receiver.go b/setup/e2mgr/E2Manager/services/rmrreceiver/rmr_receiver.go new file mode 100644 index 0000000..0a8eb8d --- /dev/null +++ b/setup/e2mgr/E2Manager/services/rmrreceiver/rmr_receiver.go @@ -0,0 +1,58 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrreceiver + +import ( + "e2mgr/logger" + "e2mgr/managers/notificationmanager" + "e2mgr/rmrCgo" +) + +type RmrReceiver struct { + logger *logger.Logger + nManager *notificationmanager.NotificationManager + messenger rmrCgo.RmrMessenger +} + +func NewRmrReceiver(logger *logger.Logger, messenger rmrCgo.RmrMessenger, nManager *notificationmanager.NotificationManager) *RmrReceiver { + return &RmrReceiver{ + logger: logger, + nManager: nManager, + messenger: messenger, + } +} + +func (r *RmrReceiver) ListenAndHandle() { + + for { + mbuf, err := r.messenger.RecvMsg() + + if err != nil { + r.logger.Errorf("#RmrReceiver.ListenAndHandle - error: %s", err) + continue + } + + r.logger.Debugf("#RmrReceiver.ListenAndHandle - Going to handle received message: %#v\n", mbuf) + + // TODO: go routine? + _ = r.nManager.HandleMessage(mbuf) + } +} \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/services/rmrreceiver/rmr_receiver_test.go b/setup/e2mgr/E2Manager/services/rmrreceiver/rmr_receiver_test.go new file mode 100644 index 0000000..b79c581 --- /dev/null +++ b/setup/e2mgr/E2Manager/services/rmrreceiver/rmr_receiver_test.go @@ -0,0 +1,80 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrreceiver + +import ( + "e2mgr/clients" + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/managers" + "e2mgr/managers/notificationmanager" + "e2mgr/mocks" + "e2mgr/providers/rmrmsghandlerprovider" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "e2mgr/tests" + "fmt" + "testing" + "time" +) + +func TestListenAndHandle(t *testing.T) { + log, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#rmr_service_test.TestListenAndHandle - failed to initialize logger, error: %s", err) + } + rmrReceiver := initRmrReceiver(log) + go rmrReceiver.ListenAndHandle() + time.Sleep(time.Microsecond * 10) +} + +func initRmrMessenger(log *logger.Logger) rmrCgo.RmrMessenger { + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", tests.GetPort(), tests.MaxMsgSize, tests.Flags, log).Return(&rmrMessenger) + + // TODO: that's not good since we don't actually test anything. if the error is populated then the loop will just continue and it's sort of a "workaround" for that method to be called + var buf *rmrCgo.MBuf + e := fmt.Errorf("test error") + rmrMessengerMock.On("RecvMsg").Return(buf, e) + return rmrMessenger +} + +func initRmrReceiver(logger *logger.Logger) *RmrReceiver { + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + httpClient := &mocks.HttpClientMock{} + + rnibDataService := services.NewRnibDataService(logger, config, readerMock, writerMock) + rmrMessenger := initRmrMessenger(logger) + rmrSender := rmrsender.NewRmrSender(logger, rmrMessenger) + ranSetupManager := managers.NewRanSetupManager(logger, rmrSender, rnibDataService) + e2tInstancesManager := managers.NewE2TInstancesManager(rnibDataService, logger) + routingManagerClient := clients.NewRoutingManagerClient(logger, config, httpClient) + e2tAssociationManager := managers.NewE2TAssociationManager(logger, rnibDataService, e2tInstancesManager, routingManagerClient) + rmrNotificationHandlerProvider := rmrmsghandlerprovider.NewNotificationHandlerProvider() + rmrNotificationHandlerProvider.Init(logger, config, rnibDataService, rmrSender, ranSetupManager, e2tInstancesManager, routingManagerClient, e2tAssociationManager) + notificationManager := notificationmanager.NewNotificationManager(logger, rmrNotificationHandlerProvider) + return NewRmrReceiver(logger, rmrMessenger, notificationManager) +} diff --git a/setup/e2mgr/E2Manager/services/rmrsender/rmr_sender.go b/setup/e2mgr/E2Manager/services/rmrsender/rmr_sender.go new file mode 100644 index 0000000..5df261d --- /dev/null +++ b/setup/e2mgr/E2Manager/services/rmrsender/rmr_sender.go @@ -0,0 +1,80 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrsender + +import ( + "e2mgr/logger" + "e2mgr/models" + "e2mgr/rmrCgo" +) + +type RmrSender struct { + logger *logger.Logger + messenger rmrCgo.RmrMessenger +} + +func NewRmrSender(logger *logger.Logger, messenger rmrCgo.RmrMessenger) *RmrSender { + return &RmrSender{ + logger: logger, + messenger: messenger, + } +} + +func (r *RmrSender) WhSend(rmrMessage *models.RmrMessage) error { + msg := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + + _, err := r.messenger.WhSendMsg(msg, true) + + if err != nil { + r.logger.Errorf("#RmrSender.WhSend - RAN name: %s , Message type: %d - Failed sending message. Error: %v", rmrMessage.RanName, rmrMessage.MsgType, err) + return err + } + + r.logger.Infof("#RmrSender.WhSend - RAN name: %s , Message type: %d - Successfully sent RMR message", rmrMessage.RanName, rmrMessage.MsgType) + return nil +} + +func (r *RmrSender) Send(rmrMessage *models.RmrMessage) error { + msg := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + + _, err := r.messenger.SendMsg(msg, true) + + if err != nil { + r.logger.Errorf("#RmrSender.Send - RAN name: %s , Message type: %d - Failed sending message. Error: %v", rmrMessage.RanName, rmrMessage.MsgType, err) + return err + } + + r.logger.Infof("#RmrSender.Send - RAN name: %s , Message type: %d - Successfully sent RMR message", rmrMessage.RanName, rmrMessage.MsgType) + return nil +} + +func (r *RmrSender) SendWithoutLogs(rmrMessage *models.RmrMessage) error { + msg := rmrCgo.NewMBuf(rmrMessage.MsgType, len(rmrMessage.Payload), rmrMessage.RanName, &rmrMessage.Payload, &rmrMessage.XAction, rmrMessage.GetMsgSrc()) + + _, err := r.messenger.SendMsg(msg, false) + + if err != nil { + r.logger.Errorf("#RmrSender.Send - RAN name: %s , Message type: %d - Failed sending message. Error: %v", rmrMessage.RanName, rmrMessage.MsgType, err) + return err + } + + return nil +} diff --git a/setup/e2mgr/E2Manager/services/rmrsender/rmr_sender_test.go b/setup/e2mgr/E2Manager/services/rmrsender/rmr_sender_test.go new file mode 100644 index 0000000..0c0129c --- /dev/null +++ b/setup/e2mgr/E2Manager/services/rmrsender/rmr_sender_test.go @@ -0,0 +1,94 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmrsender + +import ( + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/models" + "e2mgr/rmrCgo" + "fmt" + "github.com/stretchr/testify/assert" + "testing" + "unsafe" +) + +func initRmrSenderTest(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock) { + log := initLog(t) + rmrMessengerMock := &mocks.RmrMessengerMock{} + rmrMessengerMock.On("IsReady").Return(true) + rmrMessengerMock.On("Close").Return() + return log, rmrMessengerMock +} + +//func TestRmrSender_CloseContext(t *testing.T) { +// logger, rmrMessengerMock := initRmrSenderTest(t) +// +// rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) +// rmrSender := NewRmrSender(logger, &rmrMessenger) +// +// rmrSender.CloseContext() +// time.Sleep(time.Microsecond * 10) +//} + +func TestRmrSenderSendSuccess(t *testing.T) { + logger, rmrMessengerMock := initRmrSenderTest(t) + + ranName := "test" + payload := []byte("some payload") + var xAction []byte + var msgSrc unsafe.Pointer + mbuf := rmrCgo.NewMBuf(123, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mbuf, true).Return(&rmrCgo.MBuf{}, nil) + rmrMsg := models.NewRmrMessage(123, ranName, payload, xAction, nil) + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrSender := NewRmrSender(logger, rmrMessenger) + err := rmrSender.Send(rmrMsg) + assert.Nil(t, err) + rmrMessengerMock.AssertCalled(t, "SendMsg",mbuf, true) + +} + +func TestRmrSenderSendFailure(t *testing.T) { + logger, rmrMessengerMock := initRmrSenderTest(t) + + ranName := "test" + payload := []byte("some payload") + var xAction []byte + var msgSrc unsafe.Pointer + mbuf := rmrCgo.NewMBuf(123, len(payload), ranName, &payload, &xAction, msgSrc) + rmrMessengerMock.On("SendMsg", mbuf, true).Return(mbuf, fmt.Errorf("rmr send failure")) + rmrMsg := models.NewRmrMessage(123, ranName, payload, xAction, nil) + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrSender := NewRmrSender(logger, rmrMessenger) + err := rmrSender.Send(rmrMsg) + rmrMessengerMock.AssertCalled(t, "SendMsg",mbuf, true) + assert.NotNil(t, err) +} + +// TODO: extract to test_utils +func initLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Fatalf("#initLog - failed to initialize logger, error: %s", err) + } + return log +} diff --git a/setup/e2mgr/E2Manager/services/rnib_data_service.go b/setup/e2mgr/E2Manager/services/rnib_data_service.go new file mode 100644 index 0000000..7235028 --- /dev/null +++ b/setup/e2mgr/E2Manager/services/rnib_data_service.go @@ -0,0 +1,310 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package services + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/rNibWriter" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/reader" + "net" + "time" +) + +type RNibDataService interface { + SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error + UpdateNodebInfo(nodebInfo *entities.NodebInfo) error + SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error + GetNodeb(ranName string) (*entities.NodebInfo, error) + GetListNodebIds() ([]*entities.NbIdentity, error) + PingRnib() bool + GetE2TInstance(address string) (*entities.E2TInstance, error) + GetE2TInstances(addresses []string) ([]*entities.E2TInstance, error) + GetE2TAddresses() ([]string, error) + SaveE2TInstance(e2tInstance *entities.E2TInstance) error + SaveE2TAddresses(addresses []string) error + GetE2TInstanceNoLogs(address string) (*entities.E2TInstance, error) + GetE2TInstancesNoLogs(addresses []string) ([]*entities.E2TInstance, error) + SaveE2TInstanceNoLogs(e2tInstance *entities.E2TInstance) error + GetE2TAddressesNoLogs() ([]string, error) + RemoveE2TInstance(e2tAddress string) error + UpdateGnbCells(nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) error + RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error +} + +type rNibDataService struct { + logger *logger.Logger + rnibReader reader.RNibReader + rnibWriter rNibWriter.RNibWriter + maxAttempts int + retryInterval time.Duration +} + +func NewRnibDataService(logger *logger.Logger, config *configuration.Configuration, rnibReader reader.RNibReader, rnibWriter rNibWriter.RNibWriter) *rNibDataService { + return &rNibDataService{ + logger: logger, + rnibReader: rnibReader, + rnibWriter: rnibWriter, + maxAttempts: config.MaxRnibConnectionAttempts, + retryInterval: time.Duration(config.RnibRetryIntervalMs) * time.Millisecond, + } +} + +func (w *rNibDataService) RemoveServedNrCells(inventoryName string, servedNrCells []*entities.ServedNRCell) error { + err := w.retry("RemoveServedNrCells", func() (err error) { + err = w.rnibWriter.RemoveServedNrCells(inventoryName, servedNrCells) + return + }) + + return err +} + +func (w *rNibDataService) UpdateGnbCells(nodebInfo *entities.NodebInfo, servedNrCells []*entities.ServedNRCell) error { + w.logger.Infof("#RnibDataService.UpdateGnbCells - nodebInfo: %s, servedNrCells: %s", nodebInfo, servedNrCells) + + err := w.retry("UpdateGnbCells", func() (err error) { + err = w.rnibWriter.UpdateGnbCells(nodebInfo, servedNrCells) + return + }) + + return err +} + +func (w *rNibDataService) UpdateNodebInfo(nodebInfo *entities.NodebInfo) error { + w.logger.Infof("#RnibDataService.UpdateNodebInfo - nodebInfo: %s", nodebInfo) + + err := w.retry("UpdateNodebInfo", func() (err error) { + err = w.rnibWriter.UpdateNodebInfo(nodebInfo) + return + }) + + return err +} + +func (w *rNibDataService) SaveNodeb(nbIdentity *entities.NbIdentity, nb *entities.NodebInfo) error { + w.logger.Infof("#RnibDataService.SaveNodeb - nbIdentity: %s, nodebInfo: %s", nbIdentity, nb) + + err := w.retry("SaveNodeb", func() (err error) { + err = w.rnibWriter.SaveNodeb(nbIdentity, nb) + return + }) + + return err +} + +func (w *rNibDataService) SaveRanLoadInformation(inventoryName string, ranLoadInformation *entities.RanLoadInformation) error { + w.logger.Infof("#RnibDataService.SaveRanLoadInformation - inventoryName: %s, ranLoadInformation: %s", inventoryName, ranLoadInformation) + + err := w.retry("SaveRanLoadInformation", func() (err error) { + err = w.rnibWriter.SaveRanLoadInformation(inventoryName, ranLoadInformation) + return + }) + + return err +} + +func (w *rNibDataService) GetNodeb(ranName string) (*entities.NodebInfo, error) { + + var nodeb *entities.NodebInfo = nil + + err := w.retry("GetNodeb", func() (err error) { + nodeb, err = w.rnibReader.GetNodeb(ranName) + return + }) + + if err == nil { + w.logger.Infof("#RnibDataService.GetNodeb - RAN name: %s, connection status: %s, associated E2T: %s", nodeb.RanName, nodeb.ConnectionStatus, nodeb.AssociatedE2TInstanceAddress) + } + + return nodeb, err +} + +func (w *rNibDataService) GetListNodebIds() ([]*entities.NbIdentity, error) { + var nodeIds []*entities.NbIdentity = nil + + err := w.retry("GetListNodebIds", func() (err error) { + nodeIds, err = w.rnibReader.GetListNodebIds() + return + }) + + if err == nil { + w.logger.Infof("#RnibDataService.GetListNodebIds - RANs count: %d", len(nodeIds)) + } + + return nodeIds, err +} + +func (w *rNibDataService) GetE2TInstance(address string) (*entities.E2TInstance, error) { + var e2tInstance *entities.E2TInstance = nil + + err := w.retry("GetE2TInstance", func() (err error) { + e2tInstance, err = w.rnibReader.GetE2TInstance(address) + return + }) + + if err == nil { + w.logger.Infof("#RnibDataService.GetE2TInstance - E2T instance address: %s, state: %s, associated RANs count: %d, keep Alive ts: %d", e2tInstance.Address, e2tInstance.State, len(e2tInstance.AssociatedRanList), e2tInstance.KeepAliveTimestamp) + } + + return e2tInstance, err +} + +func (w *rNibDataService) GetE2TInstanceNoLogs(address string) (*entities.E2TInstance, error) { + var e2tInstance *entities.E2TInstance = nil + + err := w.retry("GetE2TInstance", func() (err error) { + e2tInstance, err = w.rnibReader.GetE2TInstance(address) + return + }) + + return e2tInstance, err +} + +func (w *rNibDataService) GetE2TInstances(addresses []string) ([]*entities.E2TInstance, error) { + w.logger.Infof("#RnibDataService.GetE2TInstances - addresses: %s", addresses) + var e2tInstances []*entities.E2TInstance = nil + + err := w.retry("GetE2TInstance", func() (err error) { + e2tInstances, err = w.rnibReader.GetE2TInstances(addresses) + return + }) + + return e2tInstances, err +} + +func (w *rNibDataService) GetE2TInstancesNoLogs(addresses []string) ([]*entities.E2TInstance, error) { + + var e2tInstances []*entities.E2TInstance = nil + + err := w.retry("GetE2TInstance", func() (err error) { + e2tInstances, err = w.rnibReader.GetE2TInstances(addresses) + return + }) + + return e2tInstances, err +} + +func (w *rNibDataService) GetE2TAddresses() ([]string, error) { + + var e2tAddresses []string = nil + + err := w.retry("GetE2TAddresses", func() (err error) { + e2tAddresses, err = w.rnibReader.GetE2TAddresses() + return + }) + + if err == nil { + w.logger.Infof("#RnibDataService.GetE2TAddresses - addresses: %s", e2tAddresses) + } + + return e2tAddresses, err +} + +func (w *rNibDataService) GetE2TAddressesNoLogs() ([]string, error) { + + var e2tAddresses []string = nil + + err := w.retry("GetE2TAddresses", func() (err error) { + e2tAddresses, err = w.rnibReader.GetE2TAddresses() + return + }) + + return e2tAddresses, err +} + +func (w *rNibDataService) SaveE2TInstance(e2tInstance *entities.E2TInstance) error { + w.logger.Infof("#RnibDataService.SaveE2TInstance - E2T instance address: %s, podName: %s, state: %s, associated RANs count: %d, keep Alive ts: %d", e2tInstance.Address, e2tInstance.PodName, e2tInstance.State, len(e2tInstance.AssociatedRanList), e2tInstance.KeepAliveTimestamp) + + return w.SaveE2TInstanceNoLogs(e2tInstance) +} + +func (w *rNibDataService) SaveE2TInstanceNoLogs(e2tInstance *entities.E2TInstance) error { + + err := w.retry("SaveE2TInstance", func() (err error) { + err = w.rnibWriter.SaveE2TInstance(e2tInstance) + return + }) + + return err +} + +func (w *rNibDataService) SaveE2TAddresses(addresses []string) error { + w.logger.Infof("#RnibDataService.SaveE2TAddresses - addresses: %s", addresses) + + err := w.retry("SaveE2TAddresses", func() (err error) { + err = w.rnibWriter.SaveE2TAddresses(addresses) + return + }) + + return err +} + +func (w *rNibDataService) RemoveE2TInstance(e2tAddress string) error { + w.logger.Infof("#RnibDataService.RemoveE2TInstance - e2tAddress: %s", e2tAddress) + + err := w.retry("RemoveE2TInstance", func() (err error) { + err = w.rnibWriter.RemoveE2TInstance(e2tAddress) + return + }) + + return err +} + +func (w *rNibDataService) PingRnib() bool { + err := w.retry("GetListNodebIds", func() (err error) { + _, err = w.rnibReader.GetListNodebIds() + return + }) + + return !isRnibConnectionError(err) +} + +func (w *rNibDataService) retry(rnibFunc string, f func() error) (err error) { + attempts := w.maxAttempts + + for i := 1; ; i++ { + err = f() + if err == nil { + return + } + if !isRnibConnectionError(err) { + return err + } + if i >= attempts { + w.logger.Errorf("#RnibDataService.retry - after %d attempts of %s, last error: %s", attempts, rnibFunc, err) + return err + } + time.Sleep(w.retryInterval) + + w.logger.Infof("#RnibDataService.retry - retrying %d %s after error: %s", i, rnibFunc, err) + } +} + +func isRnibConnectionError(err error) bool { + internalErr, ok := err.(*common.InternalError) + if !ok { + return false + } + _, ok = internalErr.Err.(*net.OpError) + + return ok +} diff --git a/setup/e2mgr/E2Manager/services/rnib_data_service_test.go b/setup/e2mgr/E2Manager/services/rnib_data_service_test.go new file mode 100644 index 0000000..ab67a32 --- /dev/null +++ b/setup/e2mgr/E2Manager/services/rnib_data_service_test.go @@ -0,0 +1,314 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package services + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/mocks" + "fmt" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/common" + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/stretchr/testify/assert" + "net" + "strings" + "testing" +) + +func setupRnibDataServiceTest(t *testing.T) (*rNibDataService, *mocks.RnibReaderMock, *mocks.RnibWriterMock) { + return setupRnibDataServiceTestWithMaxAttempts(t, 3) +} + +func setupRnibDataServiceTestWithMaxAttempts(t *testing.T, maxAttempts int) (*rNibDataService, *mocks.RnibReaderMock, *mocks.RnibWriterMock) { + logger, err := logger.InitLogger(logger.DebugLevel) + if err != nil { + t.Errorf("#... - failed to initialize logger, error: %s", err) + } + + config := &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: maxAttempts} + + readerMock := &mocks.RnibReaderMock{} + + + writerMock := &mocks.RnibWriterMock{} + + + rnibDataService := NewRnibDataService(logger, config, readerMock, writerMock) + assert.NotNil(t, rnibDataService) + + return rnibDataService, readerMock, writerMock +} + +func TestSuccessfulSaveNodeb(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + nodebInfo := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(nil) + + rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + writerMock.AssertNumberOfCalls(t, "SaveNodeb", 1) +} + +func TestConnFailureSaveNodeb(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + nodebInfo := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(mockErr) + + rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + writerMock.AssertNumberOfCalls(t, "SaveNodeb", 3) +} + +func TestNonConnFailureSaveNodeb(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + nodebInfo := &entities.NodebInfo{} + nbIdentity := &entities.NbIdentity{} + mockErr := &common.InternalError{Err: fmt.Errorf("non connection failure")} + writerMock.On("SaveNodeb", nbIdentity, nodebInfo).Return(mockErr) + + rnibDataService.SaveNodeb(nbIdentity, nodebInfo) + writerMock.AssertNumberOfCalls(t, "SaveNodeb", 1) +} + +func TestSuccessfulUpdateNodebInfo(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + nodebInfo := &entities.NodebInfo{} + writerMock.On("UpdateNodebInfo", nodebInfo).Return(nil) + + rnibDataService.UpdateNodebInfo(nodebInfo) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 1) +} + +func TestConnFailureUpdateNodebInfo(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + nodebInfo := &entities.NodebInfo{} + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + writerMock.On("UpdateNodebInfo", nodebInfo).Return(mockErr) + + rnibDataService.UpdateNodebInfo(nodebInfo) + writerMock.AssertNumberOfCalls(t, "UpdateNodebInfo", 3) +} + +func TestSuccessfulSaveRanLoadInformation(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + var ranName string = "abcd" + ranLoadInformation := &entities.RanLoadInformation{} + writerMock.On("SaveRanLoadInformation", ranName, ranLoadInformation).Return(nil) + + rnibDataService.SaveRanLoadInformation(ranName, ranLoadInformation) + writerMock.AssertNumberOfCalls(t, "SaveRanLoadInformation", 1) +} + +func TestConnFailureSaveRanLoadInformation(t *testing.T) { + rnibDataService, _, writerMock := setupRnibDataServiceTest(t) + + var ranName string = "abcd" + ranLoadInformation := &entities.RanLoadInformation{} + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + writerMock.On("SaveRanLoadInformation", ranName, ranLoadInformation).Return(mockErr) + + rnibDataService.SaveRanLoadInformation(ranName, ranLoadInformation) + writerMock.AssertNumberOfCalls(t, "SaveRanLoadInformation", 3) +} + +func TestSuccessfulGetNodeb(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + invName := "abcd" + nodebInfo := &entities.NodebInfo{} + readerMock.On("GetNodeb", invName).Return(nodebInfo, nil) + + res, err := rnibDataService.GetNodeb(invName) + readerMock.AssertNumberOfCalls(t, "GetNodeb", 1) + assert.Equal(t, nodebInfo, res) + assert.Nil(t, err) +} + +func TestConnFailureGetNodeb(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + invName := "abcd" + var nodeb *entities.NodebInfo = nil + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + readerMock.On("GetNodeb", invName).Return(nodeb, mockErr) + + res, err := rnibDataService.GetNodeb(invName) + readerMock.AssertNumberOfCalls(t, "GetNodeb", 3) + assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.Equal(t, nodeb, res) +} + +func TestSuccessfulGetNodebIdList(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + nodeIds := []*entities.NbIdentity{} + readerMock.On("GetListNodebIds").Return(nodeIds, nil) + + res, err := rnibDataService.GetListNodebIds() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 1) + assert.Equal(t, nodeIds, res) + assert.Nil(t, err) +} + +func TestConnFailureGetNodebIdList(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + var nodeIds []*entities.NbIdentity = nil + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + readerMock.On("GetListNodebIds").Return(nodeIds, mockErr) + + res, err := rnibDataService.GetListNodebIds() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 3) + assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.Equal(t, nodeIds, res) +} + +func TestConnFailureTwiceGetNodebIdList(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + invName := "abcd" + var nodeb *entities.NodebInfo = nil + var nodeIds []*entities.NbIdentity = nil + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + readerMock.On("GetNodeb", invName).Return(nodeb, mockErr) + readerMock.On("GetListNodebIds").Return(nodeIds, mockErr) + + res, err := rnibDataService.GetListNodebIds() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 3) + assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.Equal(t, nodeIds, res) + + res2, err := rnibDataService.GetNodeb(invName) + readerMock.AssertNumberOfCalls(t, "GetNodeb", 3) + assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.Equal(t, nodeb, res2) +} + +func TestConnFailureWithAnotherConfig(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTestWithMaxAttempts(t, 5) + + var nodeIds []*entities.NbIdentity = nil + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + readerMock.On("GetListNodebIds").Return(nodeIds, mockErr) + + res, err := rnibDataService.GetListNodebIds() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 5) + assert.True(t, strings.Contains(err.Error(), "connection error", )) + assert.Equal(t, nodeIds, res) +} + +func TestPingRnibConnFailure(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + var nodeIds []*entities.NbIdentity = nil + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + readerMock.On("GetListNodebIds").Return(nodeIds, mockErr) + + res := rnibDataService.PingRnib() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 3) + assert.False(t, res) +} + +func TestPingRnibOkNoError(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + var nodeIds []*entities.NbIdentity = nil + readerMock.On("GetListNodebIds").Return(nodeIds, nil) + + res := rnibDataService.PingRnib() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 1) + assert.True(t, res) +} + +func TestPingRnibOkOtherError(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + var nodeIds []*entities.NbIdentity = nil + mockErr := &common.InternalError{Err: fmt.Errorf("non connection error")} + readerMock.On("GetListNodebIds").Return(nodeIds, mockErr) + + res := rnibDataService.PingRnib() + readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 1) + assert.True(t, res) +} + +//func TestConnFailureThenSuccessGetNodebIdList(t *testing.T) { +// rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) +// +// var nilNodeIds []*entities.NbIdentity = nil +// nodeIds := []*entities.NbIdentity{} +// mockErr := &common.InternalError{Err: &net.OpError{Err:fmt.Errorf("connection error")}} +// //readerMock.On("GetListNodebIds").Return(nilNodeIds, mockErr) +// //readerMock.On("GetListNodebIds").Return(nodeIds, nil) +// +// res, err := rnibDataService.GetListNodebIds() +// readerMock.AssertNumberOfCalls(t, "GetListNodebIds", 2) +// assert.True(t, strings.Contains(err.Error(),"connection failure", )) +// assert.Equal(t, nodeIds, res) +//} + +func TestGetE2TInstanceConnFailure(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + address := "10.10.5.20:3200" + var e2tInstance *entities.E2TInstance = nil + mockErr := &common.InternalError{Err: &net.OpError{Err: fmt.Errorf("connection error")}} + readerMock.On("GetE2TInstance", address).Return(e2tInstance, mockErr) + + res, err := rnibDataService.GetE2TInstance(address) + readerMock.AssertNumberOfCalls(t, "GetE2TInstance", 3) + assert.Nil(t, res) + assert.NotNil(t, err) +} + +func TestGetE2TInstanceOkNoError(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + address := "10.10.5.20:3200" + e2tInstance := &entities.E2TInstance{} + readerMock.On("GetE2TInstance", address).Return(e2tInstance, nil) + + res, err := rnibDataService.GetE2TInstance(address) + readerMock.AssertNumberOfCalls(t, "GetE2TInstance", 1) + assert.Nil(t, err) + assert.Equal(t, e2tInstance, res) +} + +func TestGetE2TInstanceOkOtherError(t *testing.T) { + rnibDataService, readerMock, _ := setupRnibDataServiceTest(t) + + address := "10.10.5.20:3200" + var e2tInstance *entities.E2TInstance = nil + mockErr := &common.InternalError{Err: fmt.Errorf("non connection error")} + readerMock.On("GetE2TInstance", address).Return(e2tInstance, mockErr) + + res, err := rnibDataService.GetE2TInstance(address) + readerMock.AssertNumberOfCalls(t, "GetE2TInstance", 1) + assert.Nil(t, res) + assert.NotNil(t, err) +} diff --git a/setup/e2mgr/E2Manager/tests/dataProvider.go b/setup/e2mgr/E2Manager/tests/dataProvider.go new file mode 100644 index 0000000..dfa637e --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/dataProvider.go @@ -0,0 +1,58 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package tests + +import ( + "bytes" + "encoding/json" + "net/http" + "strconv" +) + +const ( + MaxMsgSize int = 4096 + Port int = 3801 + Flags int = 0 + MessageType int = 1001 + RanPort uint16 = 879 + RanName string = "test" + RanIp string = "10.0.0.3" +) + +var ( + DummyPayload = []byte{1, 2, 3, 4} + DummyXAction = []byte{5, 6, 7, 8} +) + +func GetPort() string { + return "tcp:" + strconv.Itoa(Port) +} + +func GetHttpRequest() *http.Request { + data := map[string]interface{}{ + "ranIp": RanIp, + "ranPort": RanPort, + "ranName": RanName, + } + b := new(bytes.Buffer) + _ = json.NewEncoder(b).Encode(data) + req, _ := http.NewRequest("POST", "https://localhost:3800/request", b) + return req +} diff --git a/setup/e2mgr/E2Manager/tests/payloadProvider.go b/setup/e2mgr/E2Manager/tests/payloadProvider.go new file mode 100644 index 0000000..36756a1 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/payloadProvider.go @@ -0,0 +1,83 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package tests + +// #cgo CFLAGS: -I../3rdparty/asn1codec/inc/ -I../3rdparty/asn1codec/e2ap_engine/ +// #cgo LDFLAGS: -L ../3rdparty/asn1codec/lib/ -L../3rdparty/asn1codec/e2ap_engine/ -le2ap_codec -lasncodec +// #include +// #include +// +// bool +// build_pack_x2_reset_response(size_t* packed_buf_size, unsigned char* packed_buf, size_t err_buf_size, char* err_buf){ +// bool rc = true; +// E2AP_PDU_t *pdu = calloc(1, sizeof(E2AP_PDU_t)); +// SuccessfulOutcome_t *successfulOutcome = calloc(1, sizeof(SuccessfulOutcome_t)); +// ResetResponse_t *resetResponse; +// ResetResponse_IEs_t *resetResponse_IEs = calloc(1, sizeof(ResetResponse_IEs_t)); +// +// assert(pdu != 0); +// assert(successfulOutcome != 0); +// assert(resetResponse_IEs != 0); +// +// pdu->present = E2AP_PDU_PR_successfulOutcome; +// pdu->choice.successfulOutcome = successfulOutcome; +// +// successfulOutcome->procedureCode = ProcedureCode_id_reset; +// successfulOutcome->criticality = Criticality_reject; +// successfulOutcome->value.present = SuccessfulOutcome__value_PR_ResetResponse; +// resetResponse = &successfulOutcome->value.choice.ResetResponse; +// +// CriticalityDiagnostics_IE_List_t *critList = calloc(1, sizeof(CriticalityDiagnostics_IE_List_t)); +// assert(critList != 0); +// resetResponse_IEs->id = ProtocolIE_ID_id_CriticalityDiagnostics; +// resetResponse_IEs->criticality = Criticality_ignore; +// resetResponse_IEs->value.present = ResetResponse_IEs__value_PR_CriticalityDiagnostics; +// ASN_SEQUENCE_ADD(resetResponse_IEs->value.choice.CriticalityDiagnostics.iEsCriticalityDiagnostics,critList); +// +// CriticalityDiagnostics_IE_List__Member *member= calloc(1, sizeof(CriticalityDiagnostics_IE_List__Member)); +// assert(member != 0); +// ASN_SEQUENCE_ADD(critList ,member); +// +// ASN_SEQUENCE_ADD(&resetResponse->protocolIEs, resetResponse_IEs); +// +// rc = per_pack_pdu(pdu, packed_buf_size, packed_buf,err_buf_size, err_buf); +// +// ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, pdu); +// return rc; +// } +import "C" +import ( + "errors" + "fmt" + "unsafe" +) +const PackedBufferSize = 4096 + +func BuildPackedX2ResetResponse()([]byte, error){ + payloadSize := C.ulong(PackedBufferSize) + packedBuffer := [PackedBufferSize]C.uchar{} + errorBuffer := [PackedBufferSize]C.char{} + res := bool(C.build_pack_x2_reset_response(&payloadSize, &packedBuffer[0], PackedBufferSize, &errorBuffer[0])) + if !res { + return nil, errors.New(fmt.Sprintf("packing error: %s", C.GoString(&errorBuffer[0]))) + } + return C.GoBytes(unsafe.Pointer(&packedBuffer), C.int(payloadSize)), nil +} diff --git a/setup/e2mgr/E2Manager/tests/resources/setupRequest_en-gNB.xml b/setup/e2mgr/E2Manager/tests/resources/setupRequest_en-gNB.xml new file mode 100644 index 0000000..8d49521 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/resources/setupRequest_en-gNB.xml @@ -0,0 +1,68 @@ + + + 1 + + + + + + + + 3 + + + + + + + + 13 10 14 + + 11000101110001101100011111111000 + + + + + + + + 10 + + + + + + + 8 + + + + + + 1 + 334455 + 0 + + + + + 8 + + + + + + 7 + 334455 + 0 + + + + + + + + + + + \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/tests/resources/setupRequest_enb.xml b/setup/e2mgr/E2Manager/tests/resources/setupRequest_enb.xml new file mode 100644 index 0000000..3502012 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/resources/setupRequest_enb.xml @@ -0,0 +1,68 @@ + + + 1 + + + + + + + + 3 + + + + + + + + 63 59 AB + + 101010101010101010 + + + + + + + + 10 + + + + + + + 8 + + + + + + 1 + 334455 + 0 + + + + + 8 + + + + + + 7 + 334455 + 0 + + + + + + + + + + + \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/tests/resources/setupRequest_gnb.xml b/setup/e2mgr/E2Manager/tests/resources/setupRequest_gnb.xml new file mode 100644 index 0000000..b947ae2 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/resources/setupRequest_gnb.xml @@ -0,0 +1,68 @@ + + + 1 + + + + + + + + 3 + + + + + + + + 13 10 14 + + 10011001101010101011 + + + + + + + + 10 + + + + + + + 8 + + + + + + 1 + 334455 + 0 + + + + + 8 + + + + + + 7 + 334455 + 0 + + + + + + + + + + + \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/tests/resources/setupRequest_gnb_without_functions.xml b/setup/e2mgr/E2Manager/tests/resources/setupRequest_gnb_without_functions.xml new file mode 100644 index 0000000..db28387 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/resources/setupRequest_gnb_without_functions.xml @@ -0,0 +1,34 @@ + + + 1 + + + + + + + + 3 + + + + + + + + 13 F1 84 + + + 00000000000000010000001000000001 + + + + + + + + + + + + \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/tests/resources/setupRequest_ng-eNB.xml b/setup/e2mgr/E2Manager/tests/resources/setupRequest_ng-eNB.xml new file mode 100644 index 0000000..6bcd1f1 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/resources/setupRequest_ng-eNB.xml @@ -0,0 +1,68 @@ + + + 1 + + + + + + + + 3 + + + + + + + + 13 10 14 + + 101010101010101010 + + + + + + + + 10 + + + + + + + 8 + + + + + + 1 + 334455 + 0 + + + + + 8 + + + + + + 7 + 334455 + 0 + + + + + + + + + + + \ No newline at end of file diff --git a/setup/e2mgr/E2Manager/tests/utils.go b/setup/e2mgr/E2Manager/tests/utils.go new file mode 100644 index 0000000..8b3ab95 --- /dev/null +++ b/setup/e2mgr/E2Manager/tests/utils.go @@ -0,0 +1,62 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package tests + +import ( + "e2mgr/configuration" + "e2mgr/logger" + "e2mgr/mocks" + "e2mgr/rmrCgo" + "e2mgr/services" + "e2mgr/services/rmrsender" + "testing" +) + +func InitLog(t *testing.T) *logger.Logger { + log, err := logger.InitLogger(logger.InfoLevel) + if err != nil { + t.Errorf("#test.utils.InitLog - failed to initialize logger, error: %s", err) + } + return log +} + +func InitRmrSender(rmrMessengerMock *mocks.RmrMessengerMock, log *logger.Logger) *rmrsender.RmrSender { + rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock) + rmrMessengerMock.On("Init", GetPort(), MaxMsgSize, Flags, log).Return(&rmrMessenger) + return rmrsender.NewRmrSender(log, rmrMessenger) +} + +func InitRnibDataService(t *testing.T) services.RNibDataService{ + + logger := InitLog(t) + config := InitConfiguration() + + readerMock := &mocks.RnibReaderMock{} + writerMock := &mocks.RnibWriterMock{} + + return services.NewRnibDataService(logger, config, readerMock, writerMock) +} + +func InitConfiguration() *configuration.Configuration{ + return &configuration.Configuration{RnibRetryIntervalMs: 10, MaxRnibConnectionAttempts: 3} +} + + diff --git a/setup/e2mgr/E2Manager/utils/proto_utils.go b/setup/e2mgr/E2Manager/utils/proto_utils.go new file mode 100644 index 0000000..e1192f2 --- /dev/null +++ b/setup/e2mgr/E2Manager/utils/proto_utils.go @@ -0,0 +1,56 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package utils + +import ( + "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities" + "github.com/golang/protobuf/jsonpb" + "github.com/golang/protobuf/proto" + "strings" +) + +func ConvertNodebIdListToProtoMessageList(l []*entities.NbIdentity) []proto.Message { + protoMessageList := make([]proto.Message, len(l)) + + for i, d := range l { + protoMessageList[i] = d + } + + return protoMessageList +} + +func MarshalProtoMessageListToJsonArray(msgList []proto.Message) (string, error){ + m := jsonpb.Marshaler{} + ms := "[" + + for _, msg := range msgList { + s, err :=m.MarshalToString(msg) + + if (err != nil) { + return s, err; + } + + + ms+=s+"," + } + + return strings.TrimSuffix(ms,",") +"]", nil +} diff --git a/setup/e2mgr/E2Manager/utils/time_utils.go b/setup/e2mgr/E2Manager/utils/time_utils.go new file mode 100644 index 0000000..ca3139b --- /dev/null +++ b/setup/e2mgr/E2Manager/utils/time_utils.go @@ -0,0 +1,26 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package utils + +import "time" + +func ElapsedTime(startTime time.Time) float64 { + return float64(time.Since(startTime)) / float64(time.Millisecond) +} diff --git a/setup/e2mgr/INFO.yaml b/setup/e2mgr/INFO.yaml new file mode 100644 index 0000000..c57762f --- /dev/null +++ b/setup/e2mgr/INFO.yaml @@ -0,0 +1,63 @@ +--- +project: 'ric_plt_e2mgr' +project_creation_date: '2019-11-08' +project_category: '' +lifecycle_state: 'Incubation' +project_lead: &oran_ric_plt_e2mgr_ptl + name: 'Thoralf Czichy' + email: 'thoralf.czichy@nokia.com' + id: 'czichy' + company: 'Nokia' + timezone: 'America/New_York' +primary_contact: *oran_ric_plt_e2mgr_ptl +issue_tracking: + type: 'jira' + url: 'https://jira.o-ran-sc.org/projects/' + key: 'ric_plt_e2mgr' +mailing_list: + type: 'groups.io' + url: 'technical-discuss@lists.o-ran-sc.org' + tag: '[]' +realtime_discussion: + type: 'irc' + server: 'freenode.net' + channel: '#oran' +meetings: + - type: 'gotomeeting+irc' + agenda: 'https://wiki.o-ran-sc.org/display/' + url: '' + server: 'freenode.net' + channel: '#oran' + repeats: '' + time: '' +repositories: + - ric-plt/e2mgr +committers: + - <<: *oran_ric_plt_e2mgr_ptl + - name: 'Adi Enzel' + email: 'aa7133@att.com' + company: 'att' + id: 'adienzel' + timezone: 'Unknown/Unknown' + - name: 'Shuky Har-Noy' + email: 'shuky.har-noy@intl.att.com' + company: 'intl.att' + id: 'ss412g' + timezone: 'Unknown/Unknown' + - name: 'Yaki Ratz' + email: 'yaki.ratz@gmail.com' + company: 'gmail' + id: 'yakiratz' + timezone: 'Unknown/Unknown' + - name: 'Hila Anina' + email: 'hanina@intl.att.com' + company: 'intl.att' + id: 'hanina' + timezone: 'Unknown/Unknown' +tsc: + # yamllint disable rule:line-length + approval: 'missing' + changes: + - type: '' + name: '' + link: '' diff --git a/setup/e2mgr/LICENSES.txt b/setup/e2mgr/LICENSES.txt new file mode 100644 index 0000000..d323379 --- /dev/null +++ b/setup/e2mgr/LICENSES.txt @@ -0,0 +1,31 @@ +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the "Software License"); +you may not use this software except in compliance with the Software +License. You may obtain a copy of the Software License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the Software License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the Software License for the specific language governing permissions +and limitations under the Software License. + + + +Unless otherwise specified, all documentation contained herein is licensed +under the Creative Commons License, Attribution 4.0 Intl. (the +"Documentation License"); you may not use this documentation except in +compliance with the Documentation License. You may obtain a copy of the +Documentation License at + +https://creativecommons.org/licenses/by/4.0/ + +Unless required by applicable law or agreed to in writing, documentation +distributed under the Documentation License is distributed on an "AS IS" +BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the Documentation License for the specific language governing +permissions and limitations under the Documentation License. + +This source code is part of the near-RT RIC (RAN Intelligent Controller) +platform project (RICP). diff --git a/setup/e2mgr/Swagger/E2M_API_2020-04-23.yaml b/setup/e2mgr/Swagger/E2M_API_2020-04-23.yaml new file mode 100644 index 0000000..92a39da --- /dev/null +++ b/setup/e2mgr/Swagger/E2M_API_2020-04-23.yaml @@ -0,0 +1,1615 @@ +openapi: 3.0.0 +info: + title: E2 Manager Service + description: E2 Manager Service APIs + version: 4.4.4 +servers: + - url: 'http://{apiRoot}/v1' + variables: + apiRoot: + default: 'localhost:3800' +paths: + '/nodeb/{ranName}': + get: + tags: + - nodeb + summary: Get RAN by name + operationId: getNb + parameters: + - name: ranName + in: path + required: true + description: Name of RAN to return + schema: + type: string + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/GetNodebResponse' + '400': + description: The specified RAN name is invalid + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '404': + description: A RAN with the specified name was not found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '/nodeb/{ranName}/update': + put: + summary: Update GNB + tags: + - nodeb + operationId: UpdateGnb + parameters: + - name: ranName + in: path + required: true + description: Name of GNB RAN to update + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGnbRequest' + required: true + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateGnbResponse' + '400': + description: Invalid input + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '500': + description: Internal error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' + + '/nodeb/shutdown': + put: + tags: + - nodeb + summary: Close all connections to the RANs + responses: + '200': + description: 'Operation succeeded internally, outbound calls failed' + content: + application/json: + schema: + $ref: '#/components/schemas/RedButtonPartialSuccessResponseModel' + '204': + description: Successful operation + '500': + description: Internal Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '/nodeb/ids': + get: + tags: + - nodeb + summary: Get RANs identities list + operationId: getNodebIdList + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NodebIdentity' + '500': + description: Internal Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' + '/health': + get: + tags: + - Health Check + summary: E2 Manager Service Health Check + responses: + '200': + description: OK + '/e2t/list': + get: + tags: + - e2t + summary: Gets a list of all E2T Instances address and their associated RANs + responses: + '200': + description: Successful operation + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/E2tIdentity' + '500': + description: Internal Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ErrorResponse' +components: + schemas: + UpdateGnbRequest: + type: object + required: + - servedNrCells + properties: + servedNrCells: + items: + required: + - servedNrCellInformation + properties: + nrNeighbourInfos: + items: + required: + - choiceNrMode + - nrCgi + - nrMode + - nrPci + properties: + choiceNrMode: + properties: + fdd: + properties: + dlarFcnFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + ularFcnFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + tdd: + properties: + arFcnNrFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + configuredStac: + type: string + nrCgi: + type: string + nrMode: + oneOf: + - type: string + - type: integer + nrPci: + type: integer + stac5g: + type: string + additionalProperties: false + type: object + type: array + servedNrCellInformation: + required: + - cellId + - choiceNrMode + - nrMode + - nrPci + - servedPlmns + properties: + cellId: + type: string + choiceNrMode: + properties: + fdd: + properties: + dlFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + dlTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + ulFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + ulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + tdd: + properties: + nrFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + transmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + configuredStac: + type: string + nrMode: + oneOf: + - type: string + - type: integer + nrPci: + type: integer + servedPlmns: + items: + type: string + type: array + stac5g: + type: string + additionalProperties: false + type: object + additionalProperties: false + type: object + type: array + additionalProperties: false + UpdateGnbResponse: + properties: + connectionStatus: + oneOf: + - type: string + - type: integer + failureType: + oneOf: + - type: string + - type: integer + globalNbId: + properties: + nbId: + type: string + plmnId: + type: string + additionalProperties: false + type: object + gnb: + properties: + servedNrCells: + items: + properties: + nrNeighbourInfos: + items: + properties: + choiceNrMode: + properties: + fdd: + properties: + dlarFcnFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + ularFcnFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + tdd: + properties: + arFcnNrFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + configuredStac: + type: string + nrCgi: + type: string + nrMode: + oneOf: + - type: string + - type: integer + nrPci: + type: integer + stac5g: + type: string + additionalProperties: false + type: object + type: array + servedNrCellInformation: + properties: + cellId: + type: string + choiceNrMode: + properties: + fdd: + properties: + dlFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + dlTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + ulFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + ulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + tdd: + properties: + nrFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + transmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + configuredStac: + type: string + nrMode: + oneOf: + - type: string + - type: integer + nrPci: + type: integer + servedPlmns: + items: + type: string + type: array + stac5g: + type: string + additionalProperties: false + type: object + additionalProperties: false + type: object + type: array + ranFunctions: + items: + properties: + ranFunctionId: + type: integer + ranFunctionDefinition: + type: string + ranFunctionRevision: + type: integer + additionalProperties: false + type: object + type: array + additionalProperties: false + type: object + ip: + type: string + nodeType: + oneOf: + - type: string + - type: integer + port: + type: integer + ranName: + type: string + setupFailure: + properties: + criticalityDiagnostics: + properties: + informationElementCriticalityDiagnostics: + items: + properties: + ieCriticality: + oneOf: + - type: string + - type: integer + ieId: + type: integer + typeOfError: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + type: array + procedureCode: + type: integer + procedureCriticality: + oneOf: + - type: string + - type: integer + triggeringMessage: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + miscellaneousCause: + oneOf: + - type: string + - type: integer + networkLayerCause: + oneOf: + - type: string + - type: integer + protocolCause: + oneOf: + - type: string + - type: integer + timeToWait: + oneOf: + - type: string + - type: integer + transportLayerCause: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + NodebIdentity: + properties: + globalNbId: + properties: + nbId: + type: string + plmnId: + type: string + type: object + inventoryName: + type: string + type: object + GetNodebResponse: + properties: + connectionStatus: + oneOf: + - type: string + - type: integer + enb: + properties: + enbType: + oneOf: + - type: string + - type: integer + guGroupIds: + items: + type: string + type: array + servedCells: + items: + properties: + bandwidthReducedSi: + oneOf: + - type: string + - type: integer + broadcastPlmns: + items: + type: string + type: array + cellId: + type: string + choiceEutraMode: + properties: + fdd: + properties: + dlTransmissionBandwidth: + oneOf: + - type: string + - type: integer + dlearFcn: + type: integer + ulTransmissionBandwidth: + oneOf: + - type: string + - type: integer + ulearFcn: + type: integer + additionalProperties: false + type: object + tdd: + properties: + additionalSpecialSubframeExtensionInfo: + properties: + additionalSpecialSubframePatternsExtension: + oneOf: + - type: string + - type: integer + cyclicPrefixDl: + oneOf: + - type: string + - type: integer + cyclicPrefixUl: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalSpecialSubframeInfo: + properties: + additionalSpecialSubframePatterns: + oneOf: + - type: string + - type: integer + cyclicPrefixDl: + oneOf: + - type: string + - type: integer + cyclicPrefixUl: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + earFcn: + type: integer + specialSubframeInfo: + properties: + cyclicPrefixDl: + oneOf: + - type: string + - type: integer + cyclicPrefixUl: + oneOf: + - type: string + - type: integer + specialSubframePatterns: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + subframeAssignment: + oneOf: + - type: string + - type: integer + transmissionBandwidth: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + csgId: + type: string + eutraMode: + oneOf: + - type: string + - type: integer + freqBandIndicatorPriority: + oneOf: + - type: string + - type: integer + mbmsServiceAreaIdentities: + items: + type: string + type: array + mbsfnSubframeInfos: + items: + properties: + radioframeAllocationOffset: + type: integer + radioframeAllocationPeriod: + oneOf: + - type: string + - type: integer + subframeAllocation: + type: string + subframeAllocationType: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + type: array + multibandInfos: + items: + type: integer + type: array + neighbourInfos: + items: + properties: + earFcn: + type: integer + ecgi: + type: string + pci: + type: integer + tac: + type: string + additionalProperties: false + type: object + type: array + numberOfAntennaPorts: + oneOf: + - type: string + - type: integer + pci: + type: integer + prachConfiguration: + properties: + highSpeedFlag: + type: boolean + prachConfigurationIndex: + type: integer + prachFrequencyOffset: + type: integer + rootSequenceIndex: + type: integer + zeroCorrelationZoneConfiguration: + type: integer + additionalProperties: false + type: object + tac: + type: string + additionalProperties: false + type: object + type: array + additionalProperties: false + type: object + failureType: + oneOf: + - type: string + - type: integer + globalNbId: + properties: + nbId: + type: string + plmnId: + type: string + additionalProperties: false + type: object + gnb: + properties: + servedNrCells: + items: + properties: + nrNeighbourInfos: + items: + properties: + choiceNrMode: + properties: + fdd: + properties: + dlarFcnFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + ularFcnFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + tdd: + properties: + arFcnNrFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + configuredStac: + type: string + nrCgi: + type: string + nrMode: + oneOf: + - type: string + - type: integer + nrPci: + type: integer + stac5g: + type: string + additionalProperties: false + type: object + type: array + servedNrCellInformation: + properties: + cellId: + type: string + choiceNrMode: + properties: + fdd: + properties: + dlFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + dlTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + ulFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + ulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + tdd: + properties: + nrFreqInfo: + properties: + frequencyBands: + items: + properties: + nrFrequencyBand: + type: integer + supportedSulBands: + items: + type: integer + type: array + additionalProperties: false + type: object + type: array + nrArFcn: + oneOf: + - type: integer + sulInformation: + properties: + sulArFcn: + oneOf: + - type: integer + sulTransmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + transmissionBandwidth: + properties: + ncnrb: + oneOf: + - type: string + - type: integer + nrscs: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + additionalProperties: false + type: object + configuredStac: + type: string + nrMode: + oneOf: + - type: string + - type: integer + nrPci: + type: integer + servedPlmns: + items: + type: string + type: array + stac5g: + type: string + additionalProperties: false + type: object + additionalProperties: false + type: object + type: array + ranFunctions: + items: + properties: + ranFunctionId: + type: integer + ranFunctionDefinition: + type: string + ranFunctionRevision: + type: integer + additionalProperties: false + type: object + type: array + additionalProperties: false + type: object + ip: + type: string + nodeType: + oneOf: + - type: string + - type: integer + port: + type: integer + ranName: + type: string + setupFailure: + properties: + criticalityDiagnostics: + properties: + informationElementCriticalityDiagnostics: + items: + properties: + ieCriticality: + oneOf: + - type: string + - type: integer + ieId: + type: integer + typeOfError: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + type: array + procedureCode: + type: integer + procedureCriticality: + oneOf: + - type: string + - type: integer + triggeringMessage: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + miscellaneousCause: + oneOf: + - type: string + - type: integer + networkLayerCause: + oneOf: + - type: string + - type: integer + protocolCause: + oneOf: + - type: string + - type: integer + timeToWait: + oneOf: + - type: string + - type: integer + transportLayerCause: + oneOf: + - type: string + - type: integer + additionalProperties: false + type: object + additionalProperties: false + type: object + ErrorResponse: + type: object + required: + - errorCode + - errorMessage + properties: + errorCode: + type: string + description: >- + 401 - corrupted json, 402 - validation error, 403 - RAN in wrong + state, 404 - resource not found, 500 - RNIB error, 501 - internal + problem, 502 - RMR error, 503 - Routing Manager Unavailable + errorMessage: + type: string + description: Human readable text + RedButtonPartialSuccessResponseModel: + type: object + required: + - message + properties: + message: + type: string + description: Partial success reason + E2tIdentity: + type: object + required: + - e2tAddress + - ranNames + properties: + e2tAddress: + type: string + ranNames: + items: + type: string + type: array + E2tErrorResponse: + type: object + required: + - errorCode + - errorMessage + properties: + errorCode: + type: string + description: '500 - RNIB error, 501 - internal problem' + errorMessage: + type: string + description: Human readable text diff --git a/setup/e2mgr/docs/_static/logo.png b/setup/e2mgr/docs/_static/logo.png new file mode 100755 index 0000000..c3b6ce5 Binary files /dev/null and b/setup/e2mgr/docs/_static/logo.png differ diff --git a/setup/e2mgr/docs/conf.py b/setup/e2mgr/docs/conf.py new file mode 100644 index 0000000..e06c3ac --- /dev/null +++ b/setup/e2mgr/docs/conf.py @@ -0,0 +1,6 @@ +from docs_conf.conf import * +linkcheck_ignore = [ + 'http://localhost.*', + 'http://127.0.0.1.*', + 'https://gerrit.o-ran-sc.org.*' +] diff --git a/setup/e2mgr/docs/conf.yaml b/setup/e2mgr/docs/conf.yaml new file mode 100644 index 0000000..80647a9 --- /dev/null +++ b/setup/e2mgr/docs/conf.yaml @@ -0,0 +1,3 @@ +--- +project_cfg: oran +project: ric-plt/e2mgr diff --git a/setup/e2mgr/docs/favicon.ico b/setup/e2mgr/docs/favicon.ico new file mode 100755 index 0000000..00b0fd0 Binary files /dev/null and b/setup/e2mgr/docs/favicon.ico differ diff --git a/setup/e2mgr/docs/index.rst b/setup/e2mgr/docs/index.rst new file mode 100755 index 0000000..a9046c8 --- /dev/null +++ b/setup/e2mgr/docs/index.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 + + +Welcome to O-RAN SC ric-plt/e2mgr Documentation +=============================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + overview.rst + release-notes.rst + + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/setup/e2mgr/docs/overview.rst b/setup/e2mgr/docs/overview.rst new file mode 100755 index 0000000..8772b2c --- /dev/null +++ b/setup/e2mgr/docs/overview.rst @@ -0,0 +1,10 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 + + +..please write your project overview +..please delete this content after editing + + +ric-plt/e2mgr Overview +====================== diff --git a/setup/e2mgr/docs/release-notes.rst b/setup/e2mgr/docs/release-notes.rst new file mode 100644 index 0000000..1f255bb --- /dev/null +++ b/setup/e2mgr/docs/release-notes.rst @@ -0,0 +1,103 @@ +.. +.. Copyright (c) 2019 AT&T Intellectual Property. +.. Copyright (c) 2019 Nokia. +.. +.. Licensed under the Creative Commons Attribution 4.0 International +.. Public License (the "License"); you may not use this file except +.. in compliance with the License. You may obtain a copy of the License at +.. +.. https://creativecommons.org/licenses/by/4.0/ +.. +.. Unless required by applicable law or agreed to in writing, documentation +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. + +Release-Notes +============= + + +This document provides the release notes for the Bronze release of E2Manager + +.. contents:: + :depth: 3 + :local: + + +Version history +--------------- + ++--------------------+--------------------+--------------------+--------------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2019-10-31 | 2.0.7 | Shuky Har-Noy | First draft | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2019-12-02 | 2.0.10 | Shuky Har-Noy | Amber Release | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2020-06-14 | 4.4.12 | Shuky Har-Noy | Bronze Release | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ + + + + +Summary +------- +The Bronze release of E2Manager supports the following flows: + - E2 Setup From RAN to RIC + +X2 flows are not supported anymore + + +The Amber release of E2Manager supports the following flows: + - ENDC Setup + - X2 Setup + - ENDC Configuration Update + - X2 Configuration Update + - Reset + - Shutdown + - Load Information + +Release Data +------------ + ++--------------------------------------+--------------------------------------+ +| **Project** | RAN Intelligent Controller | +| | | ++--------------------------------------+--------------------------------------+ +| **Repo/commit-ID** | ric-plt/e2mgr | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | Bronze | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-06-14 | +| | | ++--------------------------------------+--------------------------------------+ +| **Purpose of the delivery** | open-source E2Manager | +| | | ++--------------------------------------+--------------------------------------+ + + ++--------------------------------------+--------------------------------------+ +| **Project** | RAN Intelligent Controller | +| | | ++--------------------------------------+--------------------------------------+ +| **Repo/commit-ID** | ric-plt/e2mgr | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | Amber | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2019-12-02 | +| | | ++--------------------------------------+--------------------------------------+ +| **Purpose of the delivery** | open-source E2Manager | +| | | ++--------------------------------------+--------------------------------------+ diff --git a/setup/e2mgr/docs/requirements-docs.txt b/setup/e2mgr/docs/requirements-docs.txt new file mode 100644 index 0000000..09a0c1c --- /dev/null +++ b/setup/e2mgr/docs/requirements-docs.txt @@ -0,0 +1,5 @@ +sphinx +sphinx-rtd-theme +sphinxcontrib-httpdomain +recommonmark +lfdocs-conf diff --git a/setup/e2mgr/releases/container-release-ric-plt-e2mgr.yaml b/setup/e2mgr/releases/container-release-ric-plt-e2mgr.yaml new file mode 100644 index 0000000..2adb5f6 --- /dev/null +++ b/setup/e2mgr/releases/container-release-ric-plt-e2mgr.yaml @@ -0,0 +1,10 @@ +--- +distribution_type: container +container_release_tag: 4.4.12 +container_pull_registry: nexus3.o-ran-sc.org:10004 +container_push_registry: nexus3.o-ran-sc.org:10002 +project: ric-plt/e2mgr +ref: bc966a778e96ab13590722c140489e8ef053a6f0 +containers: + - name: ric-plt-e2mgr + version: 4.4.12 diff --git a/setup/e2mgr/tools/KubernetesSimulator/Dockerfile b/setup/e2mgr/tools/KubernetesSimulator/Dockerfile new file mode 100644 index 0000000..0d5073b --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/Dockerfile @@ -0,0 +1,33 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu16-c-go:2-u16.04-nng as ubuntu + +WORKDIR /opt/kubsimulator +COPY . . +ENV PATH=$PATH:/usr/local/go/bin:/usr/lib/go-1.12/bin + +RUN go build main.go + + +FROM ubuntu:16.04 +COPY --from=ubuntu /opt/kubsimulator/main /opt/kubsimulator/main +COPY --from=ubuntu /opt/kubsimulator/resources /opt/kubsimulator/resources + +WORKDIR /opt/kubsimulator +CMD exec ./main diff --git a/setup/e2mgr/tools/KubernetesSimulator/api/swagger.yaml b/setup/e2mgr/tools/KubernetesSimulator/api/swagger.yaml new file mode 100755 index 0000000..2af6699 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/api/swagger.yaml @@ -0,0 +1,54 @@ +# ========================LICENSE_START================================= +# O-RAN-SC +# +# Copyright (C) 2019 AT&T Intellectual Property and Nokia +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ========================LICENSE_END=================================== + +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). + + +openapi: 3.0.0 +info: + title: Kubernetes Simulator + description: Kubernetes Simulator APIs + version: 0.0.1 +servers: + - url: 'http://{apiRoot}/api/v1' + variables: + apiRoot: + default: 'localhost:59009' +paths: + '/namespaces/{namespace}/pods/{pod}': + delete: + summary: Delete Pod + tags: + - Delete Pod + operationId: DeletePod + parameters: + - name: namespace + in: path + required: true + schema: + type: string + - name: pod + in: path + required: true + description: pod to delete + schema: + type: string + responses: + '200': + description: Successful operation diff --git a/setup/e2mgr/tools/KubernetesSimulator/configuration/configuration.go b/setup/e2mgr/tools/KubernetesSimulator/configuration/configuration.go new file mode 100644 index 0000000..ffb8913 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/configuration/configuration.go @@ -0,0 +1,57 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package configuration + +import ( + "fmt" + "github.com/spf13/viper" +) + +type Configuration struct { + Http struct { + Port int + } + +} + +func ParseConfiguration() *Configuration{ + viper.SetConfigType("yaml") + viper.SetConfigName("configuration") + viper.AddConfigPath("KubernetesSimulator/resources/") + viper.AddConfigPath("./resources/") //For production + viper.AddConfigPath("../resources/") //For test under Docker + viper.AddConfigPath("../../resources/") //For test under Docker + err := viper.ReadInConfig() + if err != nil { + panic(fmt.Sprintf("#configuration.ParseConfiguration - failed to read configuration file: %s\n", err)) + } + + config := Configuration{} + config.fillHttpConfig(viper.Sub("http")) + return &config +} + +func (c *Configuration)fillHttpConfig(httpConfig *viper.Viper) { + if httpConfig == nil { + panic(fmt.Sprintf("#configuration.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n")) + } + c.Http.Port = httpConfig.GetInt("port") +} diff --git a/setup/e2mgr/tools/KubernetesSimulator/configuration/configuration_test.go b/setup/e2mgr/tools/KubernetesSimulator/configuration/configuration_test.go new file mode 100644 index 0000000..8510699 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/configuration/configuration_test.go @@ -0,0 +1,76 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package configuration + +import ( + "github.com/stretchr/testify/assert" + "gopkg.in/yaml.v2" + "io/ioutil" + "os" + "testing" +) + +func TestParseConfigurationSuccess(t *testing.T) { + config := ParseConfiguration() + assert.Equal(t, 59009, config.Http.Port) +} + +func TestParseConfigurationFileNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + assert.Panics(t, func() { ParseConfiguration() }) +} + +func TestHttpConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{} + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n", + func() { ParseConfiguration() }) +} diff --git a/setup/e2mgr/tools/KubernetesSimulator/go.mod b/setup/e2mgr/tools/KubernetesSimulator/go.mod new file mode 100644 index 0000000..5bfe420 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/go.mod @@ -0,0 +1,13 @@ +module kubsimulator + +go 1.12 + +require ( + github.com/gorilla/mux v1.7.0 + github.com/pkg/errors v0.8.1 + github.com/spf13/viper v1.6.1 + github.com/stretchr/testify v1.4.0 + go.uber.org/atomic v1.5.0 + go.uber.org/zap v1.13.0 + gopkg.in/yaml.v2 v2.2.4 +) diff --git a/setup/e2mgr/tools/KubernetesSimulator/go.sum b/setup/e2mgr/tools/KubernetesSimulator/go.sum new file mode 100644 index 0000000..0d7ed5a --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/go.sum @@ -0,0 +1,174 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.7.0 h1:tOSd0UKHQd6urX6ApfOn4XdBMY6Sh1MfxV3kmaazO+U= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= +github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/setup/e2mgr/tools/KubernetesSimulator/go/controller.go b/setup/e2mgr/tools/KubernetesSimulator/go/controller.go new file mode 100755 index 0000000..212b5c3 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/go/controller.go @@ -0,0 +1,30 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package kubernetes + +import ( + "net/http" +) + +func DeletePod(writer http.ResponseWriter, r *http.Request) { + writer.Header().Set("Content-Type", "application/json; charset=UTF-8") + writer.WriteHeader(http.StatusOK) +} \ No newline at end of file diff --git a/setup/e2mgr/tools/KubernetesSimulator/go/logger.go b/setup/e2mgr/tools/KubernetesSimulator/go/logger.go new file mode 100755 index 0000000..898e021 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/go/logger.go @@ -0,0 +1,56 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package kubernetes + +import ( + "bytes" + "encoding/json" + "io/ioutil" + "log" + "net/http" + "time" +) + +func Logger(inner http.Handler, name string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() + + inner.ServeHTTP(w, r) + + body, err := ioutil.ReadAll(r.Body) + if err != nil { + log.Printf("Error reading body: %v", err) + http.Error(w, "can't read body", http.StatusBadRequest) + return + } + + buffer := new(bytes.Buffer) + _ =json.Compact(buffer, body) + + log.Printf( + "%s %s body: %s elapsed: %s", + r.Method, + r.RequestURI, + buffer, + time.Since(start), + ) + }) +} diff --git a/setup/e2mgr/tools/KubernetesSimulator/go/request.go b/setup/e2mgr/tools/KubernetesSimulator/go/request.go new file mode 100755 index 0000000..d123a5d --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/go/request.go @@ -0,0 +1,28 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package kubernetes + +type Request struct { + + Kind string `json:"kind"` + + ApiVersion string `json:"apiVersion"` +} diff --git a/setup/e2mgr/tools/KubernetesSimulator/go/routers.go b/setup/e2mgr/tools/KubernetesSimulator/go/routers.go new file mode 100755 index 0000000..16b2d5a --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/go/routers.go @@ -0,0 +1,64 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package kubernetes + +import ( + //"fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" +) + +type Route struct { + Name string + Method string + Pattern string + HandlerFunc http.HandlerFunc +} + +type Routes []Route + +func NewRouter() *mux.Router { + router := mux.NewRouter().StrictSlash(true) + for _, route := range routes { + var handler http.Handler + handler = route.HandlerFunc + handler = Logger(handler, route.Name) + + router. + Methods(route.Method). + Path(route.Pattern). + Name(route.Name). + Handler(handler) + } + + return router +} + +var routes = Routes{ + Route{ + "DeletePod", + strings.ToUpper("Delete"), + "/api/v1/namespaces/{namespace}/pods/{pod}", + DeletePod, + }, +} diff --git a/setup/e2mgr/tools/KubernetesSimulator/main.go b/setup/e2mgr/tools/KubernetesSimulator/main.go new file mode 100755 index 0000000..9ea5f23 --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/main.go @@ -0,0 +1,40 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package main + +import ( + "fmt" + "kubsimulator/configuration" + "kubsimulator/go" + "log" + "net/http" +) + +func main() { + config := configuration.ParseConfiguration() + port := config.Http.Port + + log.Printf("Server started on port %d", port) + + router := kubernetes.NewRouter() + + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), router)) +} diff --git a/setup/e2mgr/tools/KubernetesSimulator/resources/configuration.yaml b/setup/e2mgr/tools/KubernetesSimulator/resources/configuration.yaml new file mode 100644 index 0000000..f794b0c --- /dev/null +++ b/setup/e2mgr/tools/KubernetesSimulator/resources/configuration.yaml @@ -0,0 +1,2 @@ +http: + port: 59009 diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/Dockerfile b/setup/e2mgr/tools/RoutingManagerSimulator/Dockerfile new file mode 100644 index 0000000..3619baf --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/Dockerfile @@ -0,0 +1,37 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:9-u18.04 as ubuntu + +WORKDIR /opt/rmsimulator +COPY . . +ENV PATH=$PATH:/usr/local/go/bin:/usr/lib/go-1.12/bin + +RUN apt-get update \ + && apt-get --allow-releaseinfo-change update \ + && apt upgrade -y +RUN go build main.go + + +FROM ubuntu:18.04 +COPY --from=ubuntu /opt/rmsimulator/main /opt/rmsimulator/main +COPY --from=ubuntu /opt/rmsimulator/resources /opt/rmsimulator/resources + +WORKDIR /opt/rmsimulator +#CMD mkdir -p resources/conf exec ./xappmock +CMD exec ./main diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/api/swagger.yaml b/setup/e2mgr/tools/RoutingManagerSimulator/api/swagger.yaml new file mode 100755 index 0000000..505edbb --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/api/swagger.yaml @@ -0,0 +1,384 @@ +# ========================LICENSE_START================================= +# O-RAN-SC +# +# Copyright (C) 2019 AT&T Intellectual Property and Nokia +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ========================LICENSE_END=================================== + +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). + + +swagger: "2.0" +info: + description: "This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound\ + \ API." + version: "0.4.0" + title: "Routing Manager" + license: + name: "Apache 2.0" + url: "http://www.apache.org/licenses/LICENSE-2.0.html" +host: "rtmgr" +basePath: "/ric/v1" +tags: +- name: "handle" + description: "Available handles" +- name: "health" + description: "Health of the system" +schemes: +- "http" +paths: + /health: + get: + tags: + - "health" + summary: "Retrive the health of Routing Manager" + description: "By performing a GET method on the health resource, the API caller\ + \ is able to retrieve the health of Routing Manager" + operationId: "get_health" + consumes: + - "application/json" + produces: + - "application/json" + parameters: [] + responses: + "200": + description: "The health of the system" + schema: + $ref: "#/definitions/health-status" + /handles: + get: + tags: + - "handle" + summary: "Placeholder for further usage" + description: "Placeholder for further usage." + operationId: "get_handles" + consumes: + - "application/json" + produces: + - "application/json" + parameters: [] + responses: + "200": + description: "Dummy response" + /handles/xapp-handle: + post: + tags: + - "handle" + summary: "Provide callback" + description: "By performing a POST method on the xapp-handle resource, the API\ + \ caller is able to perform a callback on Routing Manager." + operationId: "provide_xapp_handle" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "xapp-callback-data" + description: "xApp related callback data" + required: true + schema: + $ref: "#/definitions/xapp-callback-data" + x-exportParamName: "XappCallbackData" + responses: + "201": + description: "Callback received" + "400": + description: "Invalid data" + /handles/xapp-subscription-handle: + post: + tags: + - "handle" + summary: "API for updating about new xapp subscription" + description: "By performing a POST method on the xapp-subscription-handle resource,\ + \ the API caller is able to update the Routing manager about the creation\ + \ of new subscription by an Xapp instance." + operationId: "provide_xapp_subscription_handle" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "xapp-subscription-data" + description: "xApp related subscription data" + required: true + schema: + $ref: "#/definitions/xapp-subscription-data" + x-exportParamName: "XappSubscriptionData" + responses: + "201": + description: "Xapp Subscription data received" + "400": + description: "Invalid data" + delete: + tags: + - "handle" + summary: "API for deleting an xapp subscription" + description: "By performing the delete operation on xapp-subscription-handle\ + \ resource, the API caller will be able to update routing manager about the\ + \ deletion of an xapp's subscription" + operationId: "delete_xapp_subscription_handle" + consumes: + - "application/json" + parameters: + - in: "body" + name: "xapp-subscription-data" + description: "xApp related subscription data" + required: true + schema: + $ref: "#/definitions/xapp-subscription-data" + x-exportParamName: "XappSubscriptionData" + responses: + "200": + description: "Xapp Subscription deleted" + "204": + description: "Content not found" + /handles/xapp-subscription-handle/{subscription_id}: + put: + tags: + - "handle" + summary: "API for updating the subscriber xApp list" + description: "By performing a PUT method on a xapp-subscription-handle/{subscription_id}\ + \ resource, the API caller is able to update the Routing manager about the\ + \ list of subscriber xApps related to the subscription denoted by the {subsription_id}." + operationId: "update_xapp_subscription_handle" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - name: "subscription_id" + in: "path" + description: "Subscription ID" + required: true + type: "integer" + format: "uint16" + x-exportParamName: "SubscriptionId" + - in: "body" + name: "xapp-list" + description: "xApp list" + required: true + schema: + $ref: "#/definitions/xapp-list" + x-exportParamName: "XappList" + responses: + "201": + description: "Xapp list received" + "400": + description: "Invalid data" + /handles/e2t: + post: + tags: + - "handle" + summary: "API for establishing platform routes when a new e2t instance gets\ + \ added to platform" + description: "E2T updates its FQDN to E2M during its initialisation, hence\ + \ after E2M informs routing manager about new E2T instances FQDN. At this\ + \ point Routing Mgr would establish platform routes" + operationId: "create_new_e2t_handle" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "e2t-data" + description: "FQDN of the newly joined E2T instance" + required: true + schema: + $ref: "#/definitions/e2t-data" + x-exportParamName: "E2tData" + responses: + "201": + description: "new e2t instance is considered and platform routes are established" + "400": + description: "Invalid data" + delete: + tags: + - "handle" + summary: "API for clearing routes specific to a particular e2T instance" + description: "E2M would monitor E2T instances using its keep alive based mechanism\ + \ during this time if an E2T instance is detected to be dead, E2M would distribute\ + \ already associated ran's to other available/healthy E2T instances. Here\ + \ E2M would share E2T instance address to be removed OR which is unhealthy\ + \ and list of RAN instances to be dissociated and an association list which\ + \ contains E2T FQDN and associated RAN names" + operationId: "delete_e2t_handle" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "e2t-data" + description: "FQDN of the newly joined E2T instance" + required: true + schema: + $ref: "#/definitions/e2t-delete-data" + x-exportParamName: "E2tData" + responses: + "201": + description: "new e2t instance is considered and platform routes are established" + "400": + description: "Invalid data" + /handles/associate-ran-to-e2t: + post: + tags: + - "handle" + summary: "API for associating a ran to e2t instance" + description: "By performing a POST method on rane2tmapping, the API caller is\ + \ able to update the Routing manager about the ran to e2t mapping which would\ + \ be finally used to distribute routes to corresponding xApp and E2T instance" + operationId: "associate_ran_to_e2t_handle" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "ran-e2t-list" + description: "ran to e2t mapping" + required: true + schema: + $ref: "#/definitions/ran-e2t-map" + x-exportParamName: "RanE2tList" + responses: + "201": + description: "e2t ran mapping recieved, platform routes" + "400": + description: "Invalid data" + /handles/dissociate-ran: + post: + tags: + - "handle" + summary: "API to dissociate ran from e2t" + description: "By performing a POST method on rane2tmapping, routing manager\ + \ will dissociate ran name from e2t instance by updating or clearing routes" + operationId: "dissociate_ran" + consumes: + - "application/json" + produces: + - "application/json" + parameters: + - in: "body" + name: "dissociate-list" + description: "list of RAN to dissociate" + required: true + schema: + $ref: "#/definitions/ran-e2t-map" + x-exportParamName: "DissociateList" + responses: + "201": + description: "ran instances disociated" + "400": + description: "Invalid data" +definitions: + health-status: + type: "object" + properties: + status: + type: "string" + enum: + - "healthy" + - "unhealthy" + example: + status: "healthy" + xapp-callback-data: + type: "object" + properties: + id: + type: "string" + event: + type: "string" + version: + type: "integer" + format: "int64" + xApps: + type: "string" + xapp-subscription-data: + type: "object" + required: + - "address" + - "port" + - "subscription_id" + properties: + address: + type: "string" + port: + type: "integer" + format: "uint16" + minimum: 0 + maximum: 65535 + subscription_id: + type: "integer" + format: "int32" + xapp-list: + type: "array" + items: + $ref: "#/definitions/xapp-element" + xapp-element: + type: "object" + required: + - "address" + - "port" + properties: + address: + type: "string" + port: + type: "integer" + format: "uint16" + minimum: 0 + maximum: 65535 + ran-e2t-map: + type: "array" + items: + $ref: "#/definitions/ran-e2t-element" + ran-e2t-element: + type: "object" + required: + - "E2TAddress" + properties: + E2TAddress: + type: "string" + ranNamelist: + $ref: "#/definitions/ranNamelist" + ranNamelist: + type: "array" + items: + type: "string" + e2t-data: + type: "object" + required: + - "E2TAddress" + properties: + E2TAddress: + type: "string" + ranNamelist: + $ref: "#/definitions/ranNamelist" + e2t-delete-data: + type: "object" + required: + - "E2TAddress" + properties: + E2TAddress: + type: "string" + ranNamelistTobeDissociated: + $ref: "#/definitions/ranNamelist" + ranAssocList: + $ref: "#/definitions/ran-e2t-map" +externalDocs: + description: "Routing Manager" + url: "http://placeholder" diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/configuration/configuration.go b/setup/e2mgr/tools/RoutingManagerSimulator/configuration/configuration.go new file mode 100644 index 0000000..7e2cdef --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/configuration/configuration.go @@ -0,0 +1,57 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package configuration + +import ( + "fmt" + "github.com/spf13/viper" +) + +type Configuration struct { + Http struct { + Port int + } + +} + +func ParseConfiguration() *Configuration{ + viper.SetConfigType("yaml") + viper.SetConfigName("configuration") + viper.AddConfigPath("RoutingManagerSimulator/resources/") + viper.AddConfigPath("./resources/") //For production + viper.AddConfigPath("../resources/") //For test under Docker + viper.AddConfigPath("../../resources/") //For test under Docker + err := viper.ReadInConfig() + if err != nil { + panic(fmt.Sprintf("#configuration.ParseConfiguration - failed to read configuration file: %s\n", err)) + } + + config := Configuration{} + config.fillHttpConfig(viper.Sub("http")) + return &config +} + +func (c *Configuration)fillHttpConfig(httpConfig *viper.Viper) { + if httpConfig == nil { + panic(fmt.Sprintf("#configuration.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n")) + } + c.Http.Port = httpConfig.GetInt("port") +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/configuration/configuration_test.go b/setup/e2mgr/tools/RoutingManagerSimulator/configuration/configuration_test.go new file mode 100644 index 0000000..a12f525 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/configuration/configuration_test.go @@ -0,0 +1,76 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package configuration + +import ( + "github.com/stretchr/testify/assert" + "gopkg.in/yaml.v2" + "io/ioutil" + "os" + "testing" +) + +func TestParseConfigurationSuccess(t *testing.T) { + config := ParseConfiguration() + assert.Equal(t, 12020, config.Http.Port) +} + +func TestParseConfigurationFileNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestParseConfigurationFileNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + assert.Panics(t, func() { ParseConfiguration() }) +} + +func TestHttpConfigNotFoundFailure(t *testing.T) { + configPath := "../resources/configuration.yaml" + configPathTmp := "../resources/configuration.yaml_tmp" + err := os.Rename(configPath, configPathTmp) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + defer func() { + err = os.Rename(configPathTmp, configPath) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to rename configuration file: %s\n", configPath) + } + }() + yamlMap := map[string]interface{}{} + buf, err := yaml.Marshal(yamlMap) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to marshal configuration map\n") + } + err = ioutil.WriteFile("../resources/configuration.yaml", buf, 0644) + if err != nil { + t.Errorf("#TestHttpConfigNotFoundFailure - failed to write configuration file: %s\n", configPath) + } + assert.PanicsWithValue(t, "#configuration.fillHttpConfig - failed to fill HTTP configuration: The entry 'http' not found\n", + func() { ParseConfiguration() }) +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go.mod b/setup/e2mgr/tools/RoutingManagerSimulator/go.mod new file mode 100644 index 0000000..4ca14f1 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go.mod @@ -0,0 +1,13 @@ +module rmsimulator + +go 1.12 + +require ( + github.com/gorilla/mux v1.7.0 + github.com/pkg/errors v0.8.1 + github.com/spf13/viper v1.6.1 + github.com/stretchr/testify v1.4.0 + go.uber.org/atomic v1.5.0 + go.uber.org/zap v1.13.0 + gopkg.in/yaml.v2 v2.2.4 +) diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go.sum b/setup/e2mgr/tools/RoutingManagerSimulator/go.sum new file mode 100644 index 0000000..0d7ed5a --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go.sum @@ -0,0 +1,174 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.7.0 h1:tOSd0UKHQd6urX6ApfOn4XdBMY6Sh1MfxV3kmaazO+U= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= +github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.6.1 h1:VPZzIkznI1YhVMRi6vNFLHSwhnhReBfgTxIPccpfdZk= +github.com/spf13/viper v1.6.1/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfDi5k= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d h1:+R4KGOnez64A81RvjARKc4UT5/tI9ujCIVX+P5KiHuI= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/README.md b/setup/e2mgr/tools/RoutingManagerSimulator/go/README.md new file mode 100755 index 0000000..f146cbf --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/README.md @@ -0,0 +1,25 @@ +# Go API Server for swagger + +This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + +## Overview +This server was generated by the [swagger-codegen] +(https://github.com/swagger-api/swagger-codegen) project. +By using the [OpenAPI-Spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate a server stub. +- + +To see how to make this your own, look here: + +[README](https://github.com/swagger-api/swagger-codegen/blob/master/README.md) + +- API version: 0.4.0 +- Build date: 2019-12-30T10:52:31.803Z + + +### Running the server +To run the server, follow these simple steps: + +``` +go run main.go +``` + diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/api_handle.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/api_handle.go new file mode 100755 index 0000000..cb8936d --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/api_handle.go @@ -0,0 +1,79 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +import ( + "net/http" +) + +func AssociateRanToE2tHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func CreateNewE2tHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func DeleteE2tHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func DeleteXappSubscriptionHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func DissociateRan(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func GetHandles(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func ProvideXappHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func ProvideXappSubscriptionHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} + +func UpdateXappSubscriptionHandle(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/api_health.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/api_health.go new file mode 100755 index 0000000..455f2d2 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/api_health.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +import ( + "net/http" +) + +func GetHealth(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json; charset=UTF-8") + w.WriteHeader(http.StatusOK) +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/logger.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/logger.go new file mode 100755 index 0000000..4e0d47b --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/logger.go @@ -0,0 +1,64 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +import ( + "bytes" + "encoding/json" + "io/ioutil" + "log" + "net/http" + "time" +) + +func Logger(inner http.Handler, name string) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + start := time.Now() + + inner.ServeHTTP(w, r) + + body, err := ioutil.ReadAll(r.Body) + if err != nil { + log.Printf("Error reading body: %v", err) + http.Error(w, "can't read body", http.StatusBadRequest) + return + } + + buffer := new(bytes.Buffer) + _ =json.Compact(buffer, body) + + log.Printf( + "%s %s body: %s elapsed: %s", + r.Method, + r.RequestURI, + buffer, + time.Since(start), + ) + }) +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_e2t_data.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_e2t_data.go new file mode 100755 index 0000000..a939e90 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_e2t_data.go @@ -0,0 +1,36 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type E2tData struct { + + E2TAddress string `json:"E2TAddress"` + + RanNamelist *RanNamelist `json:"ranNamelist,omitempty"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_e2t_delete_data.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_e2t_delete_data.go new file mode 100755 index 0000000..88c21cc --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_e2t_delete_data.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type E2tDeleteData struct { + + E2TAddress string `json:"E2TAddress"` + + RanNamelistTobeDissociated *RanNamelist `json:"ranNamelistTobeDissociated,omitempty"` + + RanAssocList *RanE2tMap `json:"ranAssocList,omitempty"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_health_status.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_health_status.go new file mode 100755 index 0000000..a238b06 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_health_status.go @@ -0,0 +1,34 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type HealthStatus struct { + + Status string `json:"status,omitempty"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_e2t_element.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_e2t_element.go new file mode 100755 index 0000000..1cf7397 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_e2t_element.go @@ -0,0 +1,36 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type RanE2tElement struct { + + E2TAddress string `json:"E2TAddress"` + + RanNamelist *RanNamelist `json:"ranNamelist,omitempty"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_e2t_map.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_e2t_map.go new file mode 100755 index 0000000..8ed6edc --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_e2t_map.go @@ -0,0 +1,32 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type RanE2tMap struct { +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_namelist.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_namelist.go new file mode 100755 index 0000000..ed69175 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_ran_namelist.go @@ -0,0 +1,32 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type RanNamelist struct { +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_callback_data.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_callback_data.go new file mode 100755 index 0000000..1807b1e --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_callback_data.go @@ -0,0 +1,40 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type XappCallbackData struct { + + Id string `json:"id,omitempty"` + + Event string `json:"event,omitempty"` + + Version int64 `json:"version,omitempty"` + + XApps string `json:"xApps,omitempty"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_element.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_element.go new file mode 100755 index 0000000..1439dec --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_element.go @@ -0,0 +1,36 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type XappElement struct { + + Address string `json:"address"` + + Port int32 `json:"port"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_list.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_list.go new file mode 100755 index 0000000..f561145 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_list.go @@ -0,0 +1,32 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type XappList struct { +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_subscription_data.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_subscription_data.go new file mode 100755 index 0000000..b36067d --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/model_xapp_subscription_data.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +type XappSubscriptionData struct { + + Address string `json:"address"` + + Port int32 `json:"port"` + + SubscriptionId int32 `json:"subscription_id"` +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/go/routers.go b/setup/e2mgr/tools/RoutingManagerSimulator/go/routers.go new file mode 100755 index 0000000..d37b9ae --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/go/routers.go @@ -0,0 +1,146 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package swagger + +import ( + "fmt" + "net/http" + "strings" + + "github.com/gorilla/mux" +) + +type Route struct { + Name string + Method string + Pattern string + HandlerFunc http.HandlerFunc +} + +type Routes []Route + +func NewRouter() *mux.Router { + router := mux.NewRouter().StrictSlash(true) + for _, route := range routes { + var handler http.Handler + handler = route.HandlerFunc + handler = Logger(handler, route.Name) + + router. + Methods(route.Method). + Path(route.Pattern). + Name(route.Name). + Handler(handler) + } + + return router +} + +func Index(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "Hello World!") +} + +var routes = Routes{ + Route{ + "Index", + "GET", + "/ric/v1/", + Index, + }, + + Route{ + "AssociateRanToE2tHandle", + strings.ToUpper("Post"), + "/ric/v1/handles/associate-ran-to-e2t", + AssociateRanToE2tHandle, + }, + + Route{ + "CreateNewE2tHandle", + strings.ToUpper("Post"), + "/ric/v1/handles/e2t", + CreateNewE2tHandle, + }, + + Route{ + "DeleteE2tHandle", + strings.ToUpper("Delete"), + "/ric/v1/handles/e2t", + DeleteE2tHandle, + }, + + Route{ + "DeleteXappSubscriptionHandle", + strings.ToUpper("Delete"), + "/ric/v1/handles/xapp-subscription-handle", + DeleteXappSubscriptionHandle, + }, + + Route{ + "DissociateRan", + strings.ToUpper("Post"), + "/ric/v1/handles/dissociate-ran", + DissociateRan, + }, + + Route{ + "GetHandles", + strings.ToUpper("Get"), + "/ric/v1/handles", + GetHandles, + }, + + Route{ + "ProvideXappHandle", + strings.ToUpper("Post"), + "/ric/v1/handles/xapp-handle", + ProvideXappHandle, + }, + + Route{ + "ProvideXappSubscriptionHandle", + strings.ToUpper("Post"), + "/ric/v1/handles/xapp-subscription-handle", + ProvideXappSubscriptionHandle, + }, + + Route{ + "UpdateXappSubscriptionHandle", + strings.ToUpper("Put"), + "/ric/v1/handles/xapp-subscription-handle/{subscription_id}", + UpdateXappSubscriptionHandle, + }, + + Route{ + "GetHealth", + strings.ToUpper("Get"), + "/ric/v1/health", + GetHealth, + }, +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/main.go b/setup/e2mgr/tools/RoutingManagerSimulator/main.go new file mode 100755 index 0000000..f9f4824 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/main.go @@ -0,0 +1,49 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +/* + * Routing Manager + * + * This is the Swagger/OpenAPI 2.0 definition of Routing Manager's Northbound API. + * + * API version: 0.4.0 + * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) + */ + +package main + +import ( + "fmt" + "log" + "net/http" + "rmsimulator/configuration" + "rmsimulator/go" +) + +func main() { + config := configuration.ParseConfiguration() + port := config.Http.Port + + log.Printf("Server started on port %d", port) + + router := swagger.NewRouter() + + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), router)) +} diff --git a/setup/e2mgr/tools/RoutingManagerSimulator/resources/configuration.yaml b/setup/e2mgr/tools/RoutingManagerSimulator/resources/configuration.yaml new file mode 100644 index 0000000..e6fb1c2 --- /dev/null +++ b/setup/e2mgr/tools/RoutingManagerSimulator/resources/configuration.yaml @@ -0,0 +1,2 @@ +http: + port: 12020 diff --git a/setup/e2mgr/tools/xappmock/Dockerfile b/setup/e2mgr/tools/xappmock/Dockerfile new file mode 100644 index 0000000..38db680 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/Dockerfile @@ -0,0 +1,48 @@ +############################################################################## +# +# Copyright (c) 2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## +# +# This source code is part of the near-RT RIC (RAN Intelligent Controller) +# platform project (RICP). +# + +FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu16-c-go:2-u16.04-nng as ubuntu + +WORKDIR /opt/xappmock +COPY . . +ENV PATH=$PATH:/usr/local/go/bin:/usr/lib/go-1.12/bin +# Install RMr library and dev files +RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_1.10.0_amd64.deb/download.deb +RUN dpkg -i rmr_1.10.0_amd64.deb +RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_1.10.0_amd64.deb/download.deb +RUN dpkg -i rmr-dev_1.10.0_amd64.deb + +RUN go build main/xappmock.go + + + +FROM ubuntu:16.04 +COPY --from=ubuntu /opt/xappmock/xappmock /opt/xappmock/xappmock +COPY --from=ubuntu /opt/xappmock/resources /opt/xappmock/resources +COPY --from=ubuntu /usr/local/lib/librmr_nng.so.1 /usr/local/lib/librmr_nng.so.1 +COPY --from=ubuntu /usr/local/lib/libnng.so.1 /usr/local/lib/libnng.so.1 +WORKDIR /opt/xappmock +ENV LD_LIBRARY_PATH=/usr/local/lib +ENV RMR_SEED_RT=resources/router.txt +ENV RMR_PORT=5001 +#CMD mkdir -p resources/conf exec ./xappmock +CMD mkdir -p resources/conf && exec /bin/bash diff --git a/setup/e2mgr/tools/xappmock/dispatcher/dispatcher.go b/setup/e2mgr/tools/xappmock/dispatcher/dispatcher.go new file mode 100644 index 0000000..edb639d --- /dev/null +++ b/setup/e2mgr/tools/xappmock/dispatcher/dispatcher.go @@ -0,0 +1,405 @@ +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package dispatcher + +import ( + "context" + "fmt" + "github.com/pkg/errors" + "reflect" + "sync" + "time" + "xappmock/enums" + "xappmock/logger" + "xappmock/models" + "xappmock/rmr" + "xappmock/sender" +) + +// Id -> Command +var configuration = make(map[string]*models.JsonCommand) + +// Rmr Message Id -> Command +var waitForRmrMessageType = make(map[int]*models.JsonCommand) + +func addRmrMessageToWaitFor(rmrMessageToWaitFor string, command models.JsonCommand) error { + rmrMsgId, err := rmr.MessageIdToUint(rmrMessageToWaitFor) + + if err != nil { + return errors.New(fmt.Sprintf("invalid rmr message id: %s", rmrMessageToWaitFor)) + } + + waitForRmrMessageType[int(rmrMsgId)] = &command + return nil +} + +type Dispatcher struct { + rmrService *rmr.Service + processResult models.ProcessResult + logger *logger.Logger + jsonSender *sender.JsonSender +} + +func (d *Dispatcher) GetProcessResult() models.ProcessResult { + return d.processResult +} + +func New(logger *logger.Logger, rmrService *rmr.Service, jsonSender *sender.JsonSender) *Dispatcher { + return &Dispatcher{ + rmrService: rmrService, + logger: logger, + jsonSender: jsonSender, + } +} + +func (d *Dispatcher) JsonCommandsDecoderCB(cmd models.JsonCommand) error { + if len(cmd.Id) == 0 { + return errors.New(fmt.Sprintf("invalid cmd, no id")) + } + configuration[cmd.Id] = &cmd + return nil + + // if len(cmd.ReceiveCommandId) == 0 { + // return nil + // } + // + // return addRmrMessageToWaitFor(cmd.ReceiveCommandId, cmd) +} + +func (d *Dispatcher) sendNoRepeat(command models.JsonCommand) error { + + if enums.CommandAction(command.Action) == enums.SendRmrMessage && d.processResult.StartTime == nil { + now := time.Now() + d.processResult.StartTime = &now + } + + err := d.jsonSender.SendJsonRmrMessage(command, nil, d.rmrService) + + if err != nil { + d.logger.Errorf("#Dispatcher.sendNoRepeat - error sending rmr message: %s", err) + d.processResult.Err = err + d.processResult.Stats.SentErrorCount.Inc() + return err + } + + d.processResult.Stats.SentCount.Inc() + return nil +} + +func (d *Dispatcher) sendWithRepeat(ctx context.Context, command models.JsonCommand) { + + if enums.CommandAction(command.Action) == enums.SendRmrMessage && d.processResult.StartTime == nil { + now := time.Now() + d.processResult.StartTime = &now + } + + for repeatCount := command.RepeatCount; repeatCount > 0; repeatCount-- { + + select { + case <-ctx.Done(): + return + default: + } + + err := d.jsonSender.SendJsonRmrMessage(command, nil, d.rmrService) + + if err != nil { + d.logger.Errorf("#Dispatcher.sendWithRepeat - error sending rmr message: %s", err) + d.processResult.Stats.SentErrorCount.Inc() + continue + } + + d.processResult.Stats.SentCount.Inc() + time.Sleep(time.Duration(command.RepeatDelayInMs) * time.Millisecond) + } +} + +func getReceiveRmrMessageType(receiveCommandId string) (string, error) { + command, ok := configuration[receiveCommandId] + + if !ok { + return "", errors.New(fmt.Sprintf("invalid receive command id: %s", receiveCommandId)) + } + + if len(command.RmrMessageType) == 0 { + return "", errors.New(fmt.Sprintf("missing RmrMessageType for command id: %s", receiveCommandId)) + } + + return command.RmrMessageType, nil +} + +func (d *Dispatcher) sendHandler(ctx context.Context, sendAndReceiveWg *sync.WaitGroup, command models.JsonCommand) { + + defer sendAndReceiveWg.Done() + var listenAndHandleWg sync.WaitGroup + + if len(command.ReceiveCommandId) > 0 { + rmrMessageToWaitFor, err := getReceiveRmrMessageType(command.ReceiveCommandId) + + if err != nil { + d.processResult.Err = err + return + } + + err = addRmrMessageToWaitFor(rmrMessageToWaitFor, command) + + if err != nil { + d.processResult.Err = err + return + } + + listenAndHandleWg.Add(1) + go d.listenAndHandle(ctx, &listenAndHandleWg, command) + } + + if command.RepeatCount == 0 { + err := d.sendNoRepeat(command) + + if err != nil { + return + } + + } else { + d.sendWithRepeat(ctx, command) + } + + if len(command.ReceiveCommandId) > 0 { + listenAndHandleWg.Wait() + } +} + +func (d *Dispatcher) receiveHandler(ctx context.Context, sendAndReceiveWg *sync.WaitGroup, command models.JsonCommand) { + + defer sendAndReceiveWg.Done() + + err := addRmrMessageToWaitFor(command.RmrMessageType, command) + + if err != nil { + d.processResult.Err = err + return + } + + var listenAndHandleWg sync.WaitGroup + listenAndHandleWg.Add(1) // this is due to the usage of listenAndHandle as a goroutine in the sender case + d.listenAndHandle(ctx, &listenAndHandleWg, command) +} + +func getMergedCommand(cmd *models.JsonCommand) (models.JsonCommand, error) { + var command models.JsonCommand + if len(cmd.Id) == 0 { + return command, errors.New(fmt.Sprintf("invalid command, no id")) + } + + command = *cmd + + conf, ok := configuration[cmd.Id] + + if ok { + command = *conf + mergeConfigurationAndCommand(&command, cmd) + } + + return command, nil +} + +func (d *Dispatcher) ProcessJsonCommand(ctx context.Context, cmd *models.JsonCommand) { + + command, err := getMergedCommand(cmd) + + if err != nil { + d.processResult.Err = err + return + } + + var sendAndReceiveWg sync.WaitGroup + + commandAction := enums.CommandAction(command.Action) + + switch commandAction { + + case enums.SendRmrMessage: + sendAndReceiveWg.Add(1) + go d.sendHandler(ctx, &sendAndReceiveWg, command) + case enums.ReceiveRmrMessage: + sendAndReceiveWg.Add(1) + go d.receiveHandler(ctx, &sendAndReceiveWg, command) + default: + d.processResult = models.ProcessResult{Err: errors.New(fmt.Sprintf("invalid command action %s", command.Action))} + return + } + + sendAndReceiveWg.Wait() +} + +func getResponseCommand(command models.JsonCommand) (*models.JsonCommand, error) { + responseCommand, ok := configuration[command.SendCommandId] + + if !ok { + return nil, errors.New(fmt.Sprintf("invalid SendCommandId %s", command.SendCommandId)) + } + + return responseCommand, nil +} + +func (d *Dispatcher) listenAndHandleNoRepeat(ctx context.Context, command models.JsonCommand) { + for { + select { + case <-ctx.Done(): + return + default: + } + + mbuf, err := d.rmrService.RecvMessage() + + if err != nil { + d.logger.Errorf("#Dispatcher.listenAndHandleNoRepeat - error receiving message: %s", err) + d.processResult.Err = err + d.processResult.Stats.ReceivedErrorCount.Inc() + return + } + + if enums.CommandAction(command.Action) == enums.ReceiveRmrMessage && d.processResult.StartTime == nil { + now := time.Now() + d.processResult.StartTime = &now + } + + messageInfo := models.NewMessageInfo(mbuf.MType, mbuf.Meid, mbuf.Payload, mbuf.XAction) + + _, ok := waitForRmrMessageType[mbuf.MType] + + if !ok { + d.logger.Infof("#Dispatcher.listenAndHandleNoRepeat - received unexpected msg: %s", messageInfo) + d.processResult.Stats.ReceivedUnexpectedCount.Inc() + continue + } + + d.logger.Infof("#Dispatcher.listenAndHandleNoRepeat - received expected msg: %s", messageInfo) + d.processResult.Stats.ReceivedExpectedCount.Inc() + + if len(command.SendCommandId) > 0 { + responseCommand, err := getResponseCommand(command) + + if err != nil { + d.processResult.Err = err + return + } + + _ = d.sendNoRepeat(*responseCommand) + } + + return + } +} + +func (d *Dispatcher) listenAndHandleWithRepeat(ctx context.Context, command models.JsonCommand) { + + var responseCommand *models.JsonCommand + + if len(command.SendCommandId) > 0 { + var err error + responseCommand, err = getResponseCommand(command) + + if err != nil { + d.processResult.Err = err + return + } + } + + for d.processResult.Stats.ReceivedExpectedCount.Load() < int32(command.RepeatCount) { + select { + case <-ctx.Done(): + return + default: + } + + mbuf, err := d.rmrService.RecvMessage() + + if err != nil { + d.logger.Errorf("#Dispatcher.listenAndHandleWithRepeat - error receiving message: %s", err) + d.processResult.Stats.ReceivedErrorCount.Inc() + continue + } + + if enums.CommandAction(command.Action) == enums.ReceiveRmrMessage && d.processResult.StartTime == nil { + now := time.Now() + d.processResult.StartTime = &now + } + + messageInfo := models.NewMessageInfo(mbuf.MType, mbuf.Meid, mbuf.Payload, mbuf.XAction) + + _, ok := waitForRmrMessageType[mbuf.MType] + + if !ok { + d.logger.Infof("#Dispatcher.listenAndHandleWithRepeat - received unexpected msg: %s", messageInfo) + d.processResult.Stats.ReceivedUnexpectedCount.Inc() + continue + } + + d.logger.Infof("#Dispatcher.listenAndHandleWithRepeat - received expected msg: %s", messageInfo) + d.processResult.Stats.ReceivedExpectedCount.Inc() + + if responseCommand != nil { + _ = d.sendNoRepeat(*responseCommand) // TODO: goroutine? + error handling + } + } +} + +func (d *Dispatcher) listenAndHandle(ctx context.Context, listenAndHandleWg *sync.WaitGroup, command models.JsonCommand) { + + defer listenAndHandleWg.Done() + + if command.RepeatCount == 0 { + d.listenAndHandleNoRepeat(ctx, command) + return + } + + d.listenAndHandleWithRepeat(ctx, command) +} + +func mergeConfigurationAndCommand(conf *models.JsonCommand, cmd *models.JsonCommand) { + nFields := reflect.Indirect(reflect.ValueOf(cmd)).NumField() + + for i := 0; i < nFields; i++ { + if fieldValue := reflect.Indirect(reflect.ValueOf(cmd)).Field(i); fieldValue.IsValid() { + switch fieldValue.Kind() { + case reflect.String: + if fieldValue.Len() > 0 { + reflect.Indirect(reflect.ValueOf(conf)).Field(i).Set(fieldValue) + } + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + if fieldValue.Int() != 0 { + reflect.Indirect(reflect.ValueOf(conf)).Field(i).Set(fieldValue) + } + case reflect.Bool: + if fieldValue.Bool() { + reflect.Indirect(reflect.ValueOf(conf)).Field(i).Set(fieldValue) + } + case reflect.Float64, reflect.Float32: + if fieldValue.Float() != 0 { + reflect.Indirect(reflect.ValueOf(conf)).Field(i).Set(fieldValue) + } + default: + reflect.Indirect(reflect.ValueOf(conf)).Field(i).Set(fieldValue) + } + } + } +} diff --git a/setup/e2mgr/tools/xappmock/enums/command_action.go b/setup/e2mgr/tools/xappmock/enums/command_action.go new file mode 100644 index 0000000..63e151d --- /dev/null +++ b/setup/e2mgr/tools/xappmock/enums/command_action.go @@ -0,0 +1,28 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package enums + +type CommandAction string + +const ( + SendRmrMessage CommandAction = "send" + ReceiveRmrMessage CommandAction = "receive" +) diff --git a/setup/e2mgr/tools/xappmock/frontend/configfile.go b/setup/e2mgr/tools/xappmock/frontend/configfile.go new file mode 100644 index 0000000..105d1dc --- /dev/null +++ b/setup/e2mgr/tools/xappmock/frontend/configfile.go @@ -0,0 +1,59 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package frontend + +import ( + "github.com/pkg/errors" + "io/ioutil" + "os" + "path/filepath" + "strings" +) + +func ProcessConfigurationFile(resourcesFolder, inputFolder, suffix string, processor func(data []byte) error) error { + cwd, err := os.Getwd() + if err != nil { + return errors.New(err.Error()) + } + inputDir := filepath.Join(cwd, resourcesFolder, inputFolder) + + files, err := ioutil.ReadDir(inputDir) + if err != nil { + return errors.New(err.Error()) + } + + for _, file := range files { + if file.Mode().IsRegular() && strings.HasSuffix(strings.ToLower(file.Name()), suffix) { + filespec := filepath.Join(inputDir, file.Name()) + + data, err := ioutil.ReadFile(filespec) + if err != nil { + return errors.New(err.Error()) + } + + err = processor(data) + if err != nil { + return err + } + } + } + + return nil +} diff --git a/setup/e2mgr/tools/xappmock/frontend/jsonDecoder.go b/setup/e2mgr/tools/xappmock/frontend/jsonDecoder.go new file mode 100644 index 0000000..844e63d --- /dev/null +++ b/setup/e2mgr/tools/xappmock/frontend/jsonDecoder.go @@ -0,0 +1,57 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package frontend + +import ( + "bytes" + "encoding/json" + "fmt" + "github.com/pkg/errors" + "io" + "xappmock/models" +) + +func DecodeJsonCommand(data []byte) (*models.JsonCommand, error) { + dec := json.NewDecoder(bytes.NewReader(data)) + var cmd models.JsonCommand + if err := dec.Decode(&cmd); err != nil && err != io.EOF { + return nil, errors.New(err.Error()) + } + + return &cmd, nil +} + +func JsonCommandsDecoder(data []byte, processor func(models.JsonCommand) error) error { + dec := json.NewDecoder(bytes.NewReader(data)) + for { + var commands []models.JsonCommand + if err := dec.Decode(&commands); err == io.EOF { + break + } else if err != nil { + return errors.New(err.Error()) + } + for i, cmd := range commands { + if err := processor(cmd); err != nil { + return errors.New(fmt.Sprintf("processing error at #%d, %s", i, err)) + } + } + } + return nil +} diff --git a/setup/e2mgr/tools/xappmock/go.mod b/setup/e2mgr/tools/xappmock/go.mod new file mode 100644 index 0000000..b61ff4a --- /dev/null +++ b/setup/e2mgr/tools/xappmock/go.mod @@ -0,0 +1,9 @@ +module xappmock + +go 1.12 + +require ( + github.com/pkg/errors v0.8.1 + go.uber.org/atomic v1.5.0 + go.uber.org/zap v1.13.0 +) diff --git a/setup/e2mgr/tools/xappmock/go.sum b/setup/e2mgr/tools/xappmock/go.sum new file mode 100644 index 0000000..81ca7d4 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/go.sum @@ -0,0 +1,57 @@ +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.3.0 h1:sFPn2GLc3poCkfrpIXGhBD2X0CMIo4Q/zSULXrj/+uc= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.13.0 h1:nR6NoDBgAf67s68NhaXbsojM+2gxp3S1hWkHDl27pVU= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c h1:IGkKhmfzcztjm6gYkykvu/NiS8kaqbCWAEWWAyf8J5U= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/setup/e2mgr/tools/xappmock/logger/logger.go b/setup/e2mgr/tools/xappmock/logger/logger.go new file mode 100644 index 0000000..17acb4b --- /dev/null +++ b/setup/e2mgr/tools/xappmock/logger/logger.go @@ -0,0 +1,187 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package logger + +import ( + "fmt" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "strings" + "time" +) + +type Logger struct { + Logger *zap.Logger +} + +// Copied from zap logger +// +// A Level is a logging priority. Higher levels are more important. +type LogLevel int8 + +const ( + // DebugLevel logs are typically voluminous, and are usually disabled in + // production. + DebugLevel LogLevel = iota - 1 + // InfoLevel is the default logging priority. + InfoLevel + // WarnLevel logs are more important than Info, but don't need individual + // human review. + WarnLevel + // ErrorLevel logs are high-priority. If an application is running smoothly, + // it shouldn't generate any error-level logs. + ErrorLevel + // DPanicLevel logs are particularly important errors. In development the + // logger panics after writing the message. + DPanicLevel + // PanicLevel logs a message, then panics. + PanicLevel + // FatalLevel logs a message, then calls os.Exit(1). + FatalLevel + + _minLevel = DebugLevel + _maxLevel = FatalLevel +) + +var logLevelTokenToLevel = map[string] LogLevel { + "debug" : DebugLevel, + "info": InfoLevel, + "warn": WarnLevel, + "error": ErrorLevel, + "dpanic": DPanicLevel, + "panic": PanicLevel, + "fatal": FatalLevel, +} + +func LogLevelTokenToLevel(level string) (LogLevel, bool) { + if level, ok := logLevelTokenToLevel[strings.TrimSpace(strings.ToLower(level))];ok { + return level, true + } + return _maxLevel+1, false +} + +func InitLogger(requested LogLevel) (*Logger, error) { + var logger *zap.Logger + var err error + switch requested { + case DebugLevel: + logger, err = initLoggerByLevel(zapcore.DebugLevel) + case InfoLevel: + logger, err = initLoggerByLevel(zapcore.InfoLevel) + case WarnLevel: + logger, err = initLoggerByLevel(zapcore.WarnLevel) + case ErrorLevel: + logger, err = initLoggerByLevel(zapcore.ErrorLevel) + case DPanicLevel: + logger, err = initLoggerByLevel(zapcore.DPanicLevel) + case PanicLevel: + logger, err = initLoggerByLevel(zapcore.PanicLevel) + case FatalLevel: + logger, err = initLoggerByLevel(zapcore.FatalLevel) + default: + err = fmt.Errorf("Invalid logging Level :%d",requested) + } + if err != nil { + return nil, err + } + return &Logger{Logger:logger}, nil + +} +func(l *Logger)Sync() error { + l.Debugf("#logger.Sync - Going to flush buffered log") + return l.Logger.Sync() +} + +func (l *Logger)Infof(formatMsg string, a ...interface{}) { + if l.InfoEnabled() { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Info(msg, zap.Any("mdc", l.getTimeStampMdc())) + } +} + +func (l *Logger)Debugf(formatMsg string, a ...interface{}) { + if l.DebugEnabled(){ + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Debug(msg, zap.Any("mdc", l.getTimeStampMdc())) + } +} + +func (l *Logger)Errorf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Error(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func (l *Logger)Warnf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.Warn(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func (l *Logger) getTimeStampMdc() map[string]string { + timeStr := time.Now().Format("2006-01-02 15:04:05.000") + mdc := map[string]string{"time": timeStr} + return mdc +} + +func (l *Logger)InfoEnabled()bool{ + return l.Logger.Core().Enabled(zap.InfoLevel) +} + +func (l *Logger)DebugEnabled()bool{ + return l.Logger.Core().Enabled(zap.DebugLevel) +} + +func (l *Logger)DPanicf(formatMsg string, a ...interface{}) { + msg := fmt.Sprintf(formatMsg, a...) + l.Logger.DPanic(msg, zap.Any("mdc", l.getTimeStampMdc())) +} + +func initLoggerByLevel(l zapcore.Level) (*zap.Logger, error) { + cfg := zap.Config{ + Encoding: "json", + Level: zap.NewAtomicLevelAt(l), + OutputPaths: []string{"stdout"}, + ErrorOutputPaths: []string{"stderr"}, + EncoderConfig: zapcore.EncoderConfig{ + MessageKey: "msg", + + LevelKey: "crit", + EncodeLevel: zapcore.CapitalLevelEncoder, + + TimeKey: "ts", + EncodeTime: epochMillisIntegerTimeEncoder, + + CallerKey: "id", + EncodeCaller: xAppMockCallerEncoder, + }, + } + return cfg.Build() +} + +func xAppMockCallerEncoder(caller zapcore.EntryCaller, enc zapcore.PrimitiveArrayEncoder) { + enc.AppendString("xAppMock") +} + +func epochMillisIntegerTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { + nanos := t.UnixNano() + millis := int64(nanos) / int64(time.Millisecond) + enc.AppendInt64(millis) +} + diff --git a/setup/e2mgr/tools/xappmock/main/xappmock.go b/setup/e2mgr/tools/xappmock/main/xappmock.go new file mode 100644 index 0000000..18c069e --- /dev/null +++ b/setup/e2mgr/tools/xappmock/main/xappmock.go @@ -0,0 +1,119 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package main + +import ( + "context" + "flag" + "fmt" + "os" + "os/signal" + "strconv" + "time" + "xappmock/dispatcher" + "xappmock/frontend" + "xappmock/logger" + "xappmock/rmr" + "xappmock/sender" +) + +const ( + ENV_RMR_PORT = "RMR_PORT" + RMR_PORT_DEFAULT = 5001 +) + +var rmrService *rmr.Service + +func main() { + + logLevel, _ := logger.LogLevelTokenToLevel("info") + logger, err := logger.InitLogger(logLevel) + if err != nil { + fmt.Printf("#app.main - failed to initialize logger, error: %s", err) + os.Exit(1) + } + + var rmrContext *rmr.Context + var rmrConfig = rmr.Config{Port: RMR_PORT_DEFAULT, MaxMsgSize: rmr.RMR_MAX_MSG_SIZE, MaxRetries: 10, Flags: 0} + + if port, err := strconv.ParseUint(os.Getenv(ENV_RMR_PORT), 10, 16); err == nil { + rmrConfig.Port = int(port) + } else { + logger.Infof("#main - %s: %s, using default (%d).", ENV_RMR_PORT, err, RMR_PORT_DEFAULT) + } + + rmrService = rmr.NewService(rmrConfig, rmrContext) + jsonSender := sender.NewJsonSender(logger) + dispatcherDesc := dispatcher.New(logger, rmrService, jsonSender) + + /* Load configuration file*/ + err = frontend.ProcessConfigurationFile("resources", "conf", ".json", + func(data []byte) error { + return frontend.JsonCommandsDecoder(data, dispatcherDesc.JsonCommandsDecoderCB) + }) + + if err != nil { + logger.Errorf("#main - processing error: %s", err) + os.Exit(1) + } + + logger.Infof("#main - xApp Mock is up and running...") + + flag.Parse() + cmd := flag.Arg(0) /*first remaining argument after flags have been processed*/ + + command, err := frontend.DecodeJsonCommand([]byte(cmd)) + + if err != nil { + logger.Errorf("#main - command decoding error: %s", err) + rmrService.CloseContext() + logger.Infof("#main - xApp Mock is down") + return + } + + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + ctx, cancel := context.WithCancel(context.Background()) + + go func() { + oscall := <-c + logger.Infof("system call:%+v", oscall) + cancel() + rmrService.CloseContext() + }() + + dispatcherDesc.ProcessJsonCommand(ctx, command) + pr := dispatcherDesc.GetProcessResult() + + if pr.Err != nil { + logger.Errorf("#main - command processing Error: %s", pr.Err) + } + + if pr.StartTime != nil { + processElapsedTimeInMs := float64(time.Since(*pr.StartTime)) / float64(time.Millisecond) + logger.Infof("#main - processing (sending/receiving) messages took %.2f ms", processElapsedTimeInMs) + + } + logger.Infof("#main - process stats: %s", pr.Stats) + + rmrService.CloseContext() // TODO: called twice + logger.Infof("#main - xApp Mock is down") +} diff --git a/setup/e2mgr/tools/xappmock/models/json_command.go b/setup/e2mgr/tools/xappmock/models/json_command.go new file mode 100644 index 0000000..64a7f74 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/models/json_command.go @@ -0,0 +1,38 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +type JsonCommand struct { + Id string + RmrMessageType string + SendCommandId string + ReceiveCommandId string + TransactionId string + RanName string + RanIp string + RanPort int + PayloadHeader string + PackedPayload string + Payload string + Action string + RepeatCount int + RepeatDelayInMs int +} diff --git a/setup/e2mgr/tools/xappmock/models/message_info.go b/setup/e2mgr/tools/xappmock/models/message_info.go new file mode 100644 index 0000000..10f5fab --- /dev/null +++ b/setup/e2mgr/tools/xappmock/models/message_info.go @@ -0,0 +1,51 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "fmt" + "time" +) + +// TODO: message command id / source / dest + +type MessageInfo struct { + MessageTimestamp int64 `json:"messageTimestamp"` + MessageType int `json:"messageType"` + Meid string `json:"meid"` + Payload []byte `json:"payload"` + TransactionId string `json:"transactionId"` +} + +func NewMessageInfo(messageType int, meid string, payload []byte, transactionId []byte) MessageInfo { + return MessageInfo{ + MessageTimestamp: time.Now().Unix(), + MessageType: messageType, + Meid: meid, + Payload: payload, + TransactionId: string(transactionId), + } +} + +func (mi MessageInfo) String() string { + return fmt.Sprintf("message timestamp: %d | message type: %d | meid: %s | payload: %x | transaction id: %s", + mi.MessageTimestamp, mi.MessageType, mi.Meid, mi.Payload, mi.TransactionId) +} diff --git a/setup/e2mgr/tools/xappmock/models/process_result.go b/setup/e2mgr/tools/xappmock/models/process_result.go new file mode 100644 index 0000000..4d22fb9 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/models/process_result.go @@ -0,0 +1,46 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package models + +import ( + "fmt" + "go.uber.org/atomic" + "time" +) + +type ProcessStats struct { + SentCount atomic.Int32 + SentErrorCount atomic.Int32 + ReceivedExpectedCount atomic.Int32 + ReceivedUnexpectedCount atomic.Int32 + ReceivedErrorCount atomic.Int32 +} + +type ProcessResult struct { + StartTime *time.Time + Stats ProcessStats + Err error +} + +func (ps ProcessStats) String() string { + return fmt.Sprintf("sent messages: %d | send errors: %d | expected received messages: %d | unexpected received messages: %d | receive errors: %d", + ps.SentCount, ps.SentErrorCount, ps.ReceivedExpectedCount, ps.ReceivedUnexpectedCount, ps.ReceivedErrorCount) +} diff --git a/setup/e2mgr/tools/xappmock/resources/conf/configuration.json b/setup/e2mgr/tools/xappmock/resources/conf/configuration.json new file mode 100644 index 0000000..212a955 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/resources/conf/configuration.json @@ -0,0 +1,75 @@ +[ + { + "id": "X2_SETUP_REQUEST", + "rmrMessageType": "10060", + "transactionId": "e2e$", + "payloadHeader": "$ranIp|$ranPort|$ranName|#packedPayload|", + "packedPayload": "0006002a000002001500080013302300fffff000140017000001f700133023fffff0000000133023000000000001" + }, + { + "id": "X2_SETUP_RESPONSE", + "rmrMessageType": "10061", + "packedPayload": "2006002a000002001500080002f82900007ab000140017000000630002f8290007ab00102002f829000001000133" + }, + { + "id": "RIC_SUBSCRIPTION_REQUEST", + "rmrMessageType": "12010", + "transactionId": "e2e$", + "packedPayload": "00c9002b000003ea7e0005004eec0182ea6300020001ea810015000a0011121300212224264000ea6b000420000000" + }, + { + "id": "RIC_SUBSCRIPTION_RESPONSE", + "rmrMessageType": "12011", + "transactionId": "e2e$", + "packedPayload": "20c9001d000003ea7e0005004eec0182ea6300020001ea6c000700ea6d40020000" + }, + { + "id": "RIC_SUBSCRIPTION_FAILURE", + "rmrMessageType": "12012", + "transactionId": "e2e$", + "packedPayload": "40c9001f000003ea7e00050000010001ea6300020000ea6e000908ea6f400400014100" + }, + { + "id": "RIC_SUBSCRIPTION_DELETE_REQUEST", + "rmrMessageType": "12020", + "transactionId": "e2e$", + "packedPayload": "00ca0012000002ea7e0005004eec0182ea6300020001" + }, + { + "id": "RIC_SUBSCRIPTION_DELETE_RESPONSE", + "rmrMessageType": "12021", + "transactionId": "e2e$", + "packedPayload": "20ca0012000002ea7e0005004eec0182ea6300020001" + }, + { + "id": "RIC_INDICATION", + "rmrMessageType": "12050" + }, + { + "id": "RESOURCE_STATUS_REQUEST", + "rmrMessageType": "10090", + "transactionId": "e2e$", + "packedPayload": "0009003c0000080027000300000e001c00010000260004fe000000001d400d00001f4008000a0b0cabcd8000001e4001000040400100006d4001000091400100" + }, + { + "id": "RESOURCE_STATUS_RESPONSE", + "rmrMessageType": "10091", + "transactionId": "e2e$", + "packedPayload": "20090065000003002700030000000028000300004a00414050000042404b4013302302b030a2800043400700020000000a000043400700040000000a000043400700080000000a000043400700200000000a000043400700400000000a000043400700800000000a00" + }, + { + "id": "RESOURCE_STATUS_FAILURE", + "rmrMessageType": "10092", + "transactionId": "e2e$", + "packedPayload": "400900320000040027000300000e0028000300000c00054001620044401800004540130002f8290007ab500000434006000000000740" + }, + { + "id": "RESOURCE_STATUS_UPDATE", + "rmrMessageType": "10090" + }, + { + "id": "LOAD_INFORMATION", + "rmrMessageType": "10020" + } +] + diff --git a/setup/e2mgr/tools/xappmock/resources/router.txt b/setup/e2mgr/tools/xappmock/resources/router.txt new file mode 100644 index 0000000..015ca2e --- /dev/null +++ b/setup/e2mgr/tools/xappmock/resources/router.txt @@ -0,0 +1,29 @@ +newrt|start +rte|10060|10.0.2.15:38000 +rte|10360|10.0.2.15:38000 +rte|10070|10.0.2.15:38000 +rte|10071|10.0.2.15:3801 +rte|10061|10.0.2.15:3801 +rte|10361|10.0.2.15:3801 +rte|10062|10.0.2.15:3801 +rte|10362|10.0.2.15:3801 +rte|1080|10.0.2.15:3801 +rte|10020|10.0.2.15:5557 +rte|10370|10.0.2.15:3801 +rte|10371|10.0.2.15:38000 +rte|10372|10.0.2.15:38000 +rte|10080|10.0.2.15:3801 +rte|10081|10.0.2.15:38000 +rte|10082|10.0.2.15:38000 +rte|1100|10.0.2.15:3801 +rte|1090|10.0.2.15:38000 +rte|1200|10.0.2.15:4801 +rte|1210|10.0.2.15:4801 +rte|1220|10.0.2.15:4801 +rte|10090|10.0.2.15:38000 +rte|12010|10.0.2.15:38000 +rte|12011|10.0.2.15:5555 +rte|12020|10.0.2.15:38000 +rte|10091|10.0.2.15:4801 +rte|10092|10.0.2.15:4801 +newrt|end diff --git a/setup/e2mgr/tools/xappmock/resp b/setup/e2mgr/tools/xappmock/resp new file mode 100644 index 0000000..01f2657 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/resp @@ -0,0 +1 @@ +20060043000002001500080002f82900007a8000140030010000630002f8290007ab50102002f8290000010001330000640002f9290007ac50203202f82902f929000002000344 diff --git a/setup/e2mgr/tools/xappmock/rmr/rmrCgoApi.go b/setup/e2mgr/tools/xappmock/rmr/rmrCgoApi.go new file mode 100644 index 0000000..489591e --- /dev/null +++ b/setup/e2mgr/tools/xappmock/rmr/rmrCgoApi.go @@ -0,0 +1,106 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmr + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_nng -lnng +// #include +// #include +import "C" +import ( + "fmt" + "github.com/pkg/errors" + "time" + "unsafe" +) + +func (*Context) Init(port string, maxMsgSize int, maxRetries int, flags int) *Messenger { + pp := C.CString(port) + defer C.free(unsafe.Pointer(pp)) + ctx := NewContext(maxMsgSize, maxRetries, flags, C.rmr_init(pp, C.int(maxMsgSize), C.int(flags))) + start := time.Now() + for !ctx.IsReady() { + time.Sleep(time.Second) + if time.Since(start) >= time.Minute { + start = time.Now() + } + } + // Configure the rmr to make rounds of attempts to send a message before notifying the application that it should retry. + // Each round is about 1000 attempts with a short sleep between each round. + C.rmr_set_stimeout(ctx.RmrCtx, C.int(0)) + r := Messenger(ctx) + return &r +} + +func (ctx *Context) SendMsg(msg *MBuf) (*MBuf, error) { + + allocatedCMBuf, err := ctx.getAllocatedCRmrMBuf(msg, ctx.MaxMsgSize) + if err != nil { + return nil, err + } + if state := allocatedCMBuf.state; state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to get allocated message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + defer C.rmr_free_msg(allocatedCMBuf) + + for i := 0; i < ctx.MaxRetries; i++ { + currCMBuf := C.rmr_send_msg(ctx.RmrCtx, allocatedCMBuf) + if state := currCMBuf.state; state != RMR_OK { + if state != RMR_ERR_RETRY { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to send message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + time.Sleep(100 * time.Millisecond) + continue + } + return convertToMBuf(currCMBuf) + } + + return nil, errors.New(fmt.Sprintf("#rmrCgoApi.SendMsg - Too many retries")) +} + +func (ctx *Context) RecvMsg() (*MBuf, error) { + allocatedCMBuf, err := C.rmr_alloc_msg(ctx.RmrCtx, C.int(ctx.MaxMsgSize)) + if err != nil { + return nil, err + } + if state := allocatedCMBuf.state; state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.SendMsg - Failed to get allocated message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + defer C.rmr_free_msg(allocatedCMBuf) + + currCMBuf := C.rmr_rcv_msg(ctx.RmrCtx, allocatedCMBuf) + if state := currCMBuf.state; state != RMR_OK { + errorMessage := fmt.Sprintf("#rmrCgoApi.RecvMsg - Failed to receive message. state: %v - %s", state, states[int(state)]) + return nil, errors.New(errorMessage) + } + + return convertToMBuf(currCMBuf) +} + +func (ctx *Context) IsReady() bool { + return int(C.rmr_ready(ctx.RmrCtx)) != 0 +} + +func (ctx *Context) Close() { + C.rmr_close(ctx.RmrCtx) +} diff --git a/setup/e2mgr/tools/xappmock/rmr/rmrCgoTypes.go b/setup/e2mgr/tools/xappmock/rmr/rmrCgoTypes.go new file mode 100644 index 0000000..3f1ce24 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/rmr/rmrCgoTypes.go @@ -0,0 +1,124 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmr + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_nng -lnng +// #include +// #include +import "C" +import ( + "fmt" + "unsafe" +) + +func NewMBuf(mType int, len int, payload []byte, xAction []byte) *MBuf { + return &MBuf{ + MType: mType, + Len: len, + Payload: payload, + XAction: xAction, + } +} + +func NewContext(maxMsgSize int, maxRetries, flags int, ctx unsafe.Pointer) *Context { + return &Context{ + MaxMsgSize: maxMsgSize, + MaxRetries: maxRetries, + Flags: flags, + RmrCtx: ctx, + } +} + +const ( + RMR_MAX_XACTION_LEN = int(C.RMR_MAX_XID) + RMR_MAX_MSG_SIZE = int(C.RMR_MAX_RCV_BYTES) + RMR_MAX_MEID_LEN = int(C.RMR_MAX_MEID) + + //states + RMR_OK = C.RMR_OK + RMR_ERR_BADARG = C.RMR_ERR_BADARG + RMR_ERR_NOENDPT = C.RMR_ERR_NOENDPT + RMR_ERR_EMPTY = C.RMR_ERR_EMPTY + RMR_ERR_NOHDR = C.RMR_ERR_NOHDR + RMR_ERR_SENDFAILED = C.RMR_ERR_SENDFAILED + RMR_ERR_CALLFAILED = C.RMR_ERR_CALLFAILED + RMR_ERR_NOWHOPEN = C.RMR_ERR_NOWHOPEN + RMR_ERR_WHID = C.RMR_ERR_WHID + RMR_ERR_OVERFLOW = C.RMR_ERR_OVERFLOW + RMR_ERR_RETRY = C.RMR_ERR_RETRY + RMR_ERR_RCVFAILED = C.RMR_ERR_RCVFAILED + RMR_ERR_TIMEOUT = C.RMR_ERR_TIMEOUT + RMR_ERR_UNSET = C.RMR_ERR_UNSET + RMR_ERR_TRUNC = C.RMR_ERR_TRUNC + RMR_ERR_INITFAILED = C.RMR_ERR_INITFAILED +) + +var states = map[int]string{ + RMR_OK: "state is good", + RMR_ERR_BADARG: "argument passd to function was unusable", + RMR_ERR_NOENDPT: "send/call could not find an endpoint based on msg type", + RMR_ERR_EMPTY: "msg received had no payload; attempt to send an empty message", + RMR_ERR_NOHDR: "message didn't contain a valid header", + RMR_ERR_SENDFAILED: "send failed; errno has nano reason", + RMR_ERR_CALLFAILED: "unable to send call() message", + RMR_ERR_NOWHOPEN: "no wormholes are open", + RMR_ERR_WHID: "wormhole id was invalid", + RMR_ERR_OVERFLOW: "operation would have busted through a buffer/field size", + RMR_ERR_RETRY: "request (send/call/rts) failed, but caller should retry (EAGAIN for wrappers)", + RMR_ERR_RCVFAILED: "receive failed (hard error)", + RMR_ERR_TIMEOUT: "message processing call timed out", + RMR_ERR_UNSET: "the message hasn't been populated with a transport buffer", + RMR_ERR_TRUNC: "received message likely truncated", + RMR_ERR_INITFAILED: "initialisation of something (probably message) failed", +} + +type MBuf struct { + MType int + Len int + Meid string //Managed entity id (RAN name)*/ + Payload []byte + XAction []byte +} + +func (m MBuf) String() string { + return fmt.Sprintf("{ MType: %d, Len: %d, Meid: %q, Xaction: %q, Payload: [%x] }", m.MType, m.Len, m.Meid, m.XAction, m.Payload) +} + +type Context struct { + MaxMsgSize int + MaxRetries int + Flags int + RmrCtx unsafe.Pointer +} + +type Messenger interface { + Init(port string, maxMsgSize int, maxRetries int, flags int) *Messenger + SendMsg(msg *MBuf) (*MBuf, error) + RecvMsg() (*MBuf, error) + IsReady() bool + Close() +} +type Config struct { + Port int + MaxMsgSize int + MaxRetries int + Flags int +} diff --git a/setup/e2mgr/tools/xappmock/rmr/rmrCgoUtils.go b/setup/e2mgr/tools/xappmock/rmr/rmrCgoUtils.go new file mode 100644 index 0000000..d2fa040 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/rmr/rmrCgoUtils.go @@ -0,0 +1,119 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + + +package rmr + +// #cgo LDFLAGS: -L/usr/local/lib -lrmr_nng -lnng +// #include +// #include +import "C" +import ( + "bytes" + "encoding/binary" + "fmt" + "github.com/pkg/errors" + "strconv" + "strings" + "unsafe" +) + +/* +Allocates an mBuf and initialize it with the content of C.rmr_mbuf_t. +The xAction field is assigned a a value without trailing spaces. +*/ +func convertToMBuf(m *C.rmr_mbuf_t) (*MBuf, error) { + payloadArr := C.GoBytes(unsafe.Pointer(m.payload), C.int(m.len)) + xActionArr := C.GoBytes(unsafe.Pointer(m.xaction), C.int(RMR_MAX_XACTION_LEN)) + + // Trim padding (space and 0) + xActionStr := strings.TrimRight(string(xActionArr), "\040\000") + xActionArr = []byte(xActionStr) + + mbuf := &MBuf{ + MType: int(m.mtype), + Len: int(m.len), + //Payload: (*[]byte)(unsafe.Pointer(m.payload)), + Payload: payloadArr, + //XAction: (*[]byte)(unsafe.Pointer(m.xaction)), + XAction: xActionArr, + } + + meidBuf := make([]byte, RMR_MAX_MEID_LEN) + if meidCstr := C.rmr_get_meid(m, (*C.uchar)(unsafe.Pointer(&meidBuf[0]))); meidCstr != nil { + mbuf.Meid = strings.TrimRight(string(meidBuf), "\000") + } + + return mbuf, nil +} + +/* +Allocates an C.rmr_mbuf_t and initialize it with the content of mBuf. +The xAction field is padded with trailing spaces upto capacity +*/ +func (ctx *Context) getAllocatedCRmrMBuf(mBuf *MBuf, maxMsgSize int) (cMBuf *C.rmr_mbuf_t, rc error) { + var xActionBuf [RMR_MAX_XACTION_LEN]byte + var meidBuf [RMR_MAX_MEID_LEN]byte + + cMBuf = C.rmr_alloc_msg(ctx.RmrCtx, C.int(maxMsgSize)) + cMBuf.mtype = C.int(mBuf.MType) + cMBuf.len = C.int(mBuf.Len) + + payloadLen := len(mBuf.Payload) + xActionLen := len(mBuf.XAction) + + copy(xActionBuf[:], mBuf.XAction) + for i := xActionLen; i < RMR_MAX_XACTION_LEN; i++ { + xActionBuf[i] = '\040' //space + } + + // Add padding + copy(meidBuf[:], mBuf.Meid) + for i := len(mBuf.Meid); i < RMR_MAX_MEID_LEN; i++ { + meidBuf[i] = 0 + } + + payloadArr := (*[1 << 30]byte)(unsafe.Pointer(cMBuf.payload))[:payloadLen:payloadLen] + xActionArr := (*[1 << 30]byte)(unsafe.Pointer(cMBuf.xaction))[:RMR_MAX_XACTION_LEN:RMR_MAX_XACTION_LEN] + + err := binary.Read(bytes.NewReader(mBuf.Payload), binary.LittleEndian, payloadArr) + if err != nil { + return nil, errors.New(fmt.Sprintf("#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to read payload to allocated RMR message buffer, %s", err)) + } + err = binary.Read(bytes.NewReader(xActionBuf[:]), binary.LittleEndian, xActionArr) + if err != nil { + return nil, errors.New(fmt.Sprintf("#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to read xAction data to allocated RMR message buffer, %s", err)) + } + + len := C.rmr_bytes2meid(cMBuf, (*C.uchar)(unsafe.Pointer(&meidBuf[0])), C.int(RMR_MAX_XACTION_LEN)) + if int(len) != RMR_MAX_MEID_LEN { + return nil, errors.New( + "#rmrCgoUtils.getAllocatedCRmrMBuf - Failed to copy meid data to allocated RMR message buffer") + } + return cMBuf, nil +} + +func MessageIdToUint(id string) (msgId uint64, err error) { + if len(id) == 0 { + msgId, err = 0, nil + } else { + msgId, err = strconv.ParseUint(id, 10, 16) + } + return +} diff --git a/setup/e2mgr/tools/xappmock/rmr/rmrEndPoint.go b/setup/e2mgr/tools/xappmock/rmr/rmrEndPoint.go new file mode 100644 index 0000000..c8c8ae2 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/rmr/rmrEndPoint.go @@ -0,0 +1,51 @@ +// +// Copyright 2019 AT&T Intellectual Property +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package rmr + +import ( + "strconv" +) + +// RmrService holds an instance of RMR messenger as well as its configuration +type Service struct { + messenger *Messenger +} + +// NewRmrService instantiates a new Rmr service instance +func NewService(rmrConfig Config, messenger Messenger) *Service { + return &Service{ + messenger: messenger.Init("tcp:"+strconv.Itoa(rmrConfig.Port), rmrConfig.MaxMsgSize, rmrConfig.MaxRetries, rmrConfig.Flags), + } +} + +func (r *Service) SendMessage(messageType int, ranName string, msg []byte, transactionId []byte) (*MBuf, error) { + mbuf := NewMBuf(messageType, len(msg), msg, transactionId) + mbuf.Meid = ranName + return (*r.messenger).SendMsg(mbuf) +} + +func (r *Service) RecvMessage() (*MBuf, error) { + return (*r.messenger).RecvMsg() +} + +func (r *Service) CloseContext() { + (*r.messenger).Close() + +} diff --git a/setup/e2mgr/tools/xappmock/sender/jsonSender.go b/setup/e2mgr/tools/xappmock/sender/jsonSender.go new file mode 100644 index 0000000..fe92e07 --- /dev/null +++ b/setup/e2mgr/tools/xappmock/sender/jsonSender.go @@ -0,0 +1,179 @@ +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +// Copyright 2019 Nokia +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// This source code is part of the near-RT RIC (RAN Intelligent Controller) +// platform project (RICP). + +package sender + +import ( + "fmt" + "github.com/pkg/errors" + "os" + "reflect" + "strconv" + "strings" + "sync/atomic" + "time" + "unicode" + "xappmock/logger" + "xappmock/models" + "xappmock/rmr" +) + +var counter uint64 + +type JsonSender struct { + logger *logger.Logger +} + +func NewJsonSender(logger *logger.Logger) *JsonSender { + return &JsonSender{ + logger: logger, + } +} + +func (s *JsonSender) SendJsonRmrMessage(command models.JsonCommand /*the copy is modified locally*/, xAction *[]byte, r *rmr.Service) error { + var payload []byte + _, err := fmt.Sscanf(command.PackedPayload, "%x", &payload) + if err != nil { + return errors.New(fmt.Sprintf("convert inputPayloadAsStr to payloadAsByte. Error: %v\n", err)) + } + command.PackedPayload = string(payload) + command.TransactionId = expandTransactionId(command.TransactionId) + if len(command.TransactionId) == 0 { + command.TransactionId = string(*xAction) + } + command.PayloadHeader = s.expandPayloadHeader(command.PayloadHeader, &command) + s.logger.Infof("#JsonSender.SendJsonRmrMessage - command payload header: %s", command.PayloadHeader) + rmrMsgId, err := rmr.MessageIdToUint(command.RmrMessageType) + if err != nil { + return errors.New(fmt.Sprintf("invalid rmr message id: %s", command.RmrMessageType)) + } + + msg := append([]byte(command.PayloadHeader), payload...) + messageInfo := models.NewMessageInfo(int(rmrMsgId), command.RanName, msg, []byte(command.TransactionId)) + s.logger.Infof("#JsonSender.SendJsonRmrMessage - going to send message: %s", messageInfo) + + _, err = r.SendMessage(int(rmrMsgId), command.RanName, msg, []byte(command.TransactionId)) + return err +} + +/* + * transactionId (xAction): The value may have a fixed value or $ or $. + * $ is replaced by a value generated at runtime (possibly unique per message sent). + * If the tag does not exist, then the mock shall use the value taken from the incoming message. + */ +func expandTransactionId(id string) string { + if len(id) == 1 && id[0] == '$' { + return fmt.Sprintf("%d", incAndGetCounter()) + } + if len(id) > 1 && id[len(id)-1] == '$' { + return fmt.Sprintf("%s%d", id[:len(id)-1], incAndGetCounter()) + } + return id +} + +/* + * payloadHeader: A prefix to combine with the payload that will be the message’s payload. The value may include variables of the format $ or # where: + * $ expands to the value of if it exists or the empty string if not. + * # expands to the length of the value of if it exists or omitted if not. + * The intention is to allow the Mock to construct the payload header required by the setup messages (ranIp|ranPort|ranName|payload len|). + * Example: “payloadHeader”: “$ranIp|$ranPort|$ranName|#packedPayload|” + */ + +func (s *JsonSender) expandPayloadHeader(header string, command *models.JsonCommand) string { + var name strings.Builder + var expandedHeader strings.Builder + + r := strings.NewReader(header) + ch, err := r.ReadByte() + for { + if err != nil { + break + } + + switch ch { + case '$': + for { + ch, err = r.ReadByte() //on error ch == 0 + if unicode.IsDigit(rune(ch)) || unicode.IsLetter(rune(ch)) { + if name.Len() == 0 { + name.WriteByte(byte(unicode.ToUpper(rune(ch)))) + } else { + name.WriteByte(ch) + } + } else { + if fieldValue := reflect.Indirect(reflect.ValueOf(command)).FieldByName(name.String()); fieldValue.IsValid() { + switch fieldValue.Kind() { + case reflect.String: + expandedHeader.WriteString(fieldValue.String()) + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + expandedHeader.WriteString(strconv.FormatInt(fieldValue.Int(), 10)) + case reflect.Bool: + expandedHeader.WriteString(strconv.FormatBool(fieldValue.Bool())) + case reflect.Float64, reflect.Float32: + expandedHeader.WriteString(fmt.Sprintf("%g", fieldValue.Float())) + default: + s.logger.Errorf("#JsonSender.expandPayloadHeader - invalid type for $%s, value must be a string, an int, a bool or a float", name.String()) + os.Exit(1) + } + } + name.Reset() + break + } + } + case '#': + for { + ch, err = r.ReadByte() //on error ch == 0 + if unicode.IsDigit(rune(ch)) || unicode.IsLetter(rune(ch)) { + if name.Len() == 0 { + name.WriteByte(byte(unicode.ToUpper(rune(ch)))) + } else { + name.WriteByte(ch) + } + } else { + if fieldValue := reflect.Indirect(reflect.ValueOf(command)).FieldByName(name.String()); fieldValue.IsValid() { + if fieldValue.Kind() == reflect.String { + expandedHeader.WriteString(strconv.FormatInt(int64(len(fieldValue.String())), 10)) + } else { + s.logger.Errorf("#JsonSender.expandPayloadHeader - invalid type for #%s, value must be a string", name.String()) + os.Exit(1) + } + } + name.Reset() + break + } + } + default: + if unicode.IsPrint(rune(ch)) { + expandedHeader.WriteByte(ch) + } + ch, err = r.ReadByte() + } + } + return expandedHeader.String() +} + +func incAndGetCounter() uint64 { + return atomic.AddUint64(&counter, 1) +} + +func init() { + counter = uint64(time.Now().Unix() - 1572000000) +} diff --git a/setup/e2mgr/tox.ini b/setup/e2mgr/tox.ini new file mode 100644 index 0000000..db50ddf --- /dev/null +++ b/setup/e2mgr/tox.ini @@ -0,0 +1,32 @@ +[tox] +minversion = 2.0 +envlist = + docs, + docs-linkcheck, + +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = + sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf + +commands = + sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + + echo "Generated docs available in {toxinidir}/docs/_build/html" + +whitelist_externals = echo + +[testenv:docs-linkcheck] +basepython = python3 +deps = sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf +commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck diff --git a/setup/sample-xapp/Dockerfile b/setup/sample-xapp/Dockerfile new file mode 100644 index 0000000..49081ff --- /dev/null +++ b/setup/sample-xapp/Dockerfile @@ -0,0 +1,128 @@ +##----------------------------------- +# BS Connector +#------------------------------------ +ARG SCHEMA_PATH=schemas +ARG XAPP_DIR=sample-xapp +ARG CONNECTOR_DIR=xapp-bs-connector +ARG STAGE_DIR=/home/${CONNECTOR_DIR} +ARG DBAAS_SERVICE_HOST=10.0.2.12 +ARG DBAAS_SERVICE_PORT="6379" + +#================================================================================== +FROM ubuntu:18.04 as ricbuild + +# to override repo base, pass in repo argument when running docker build: +# docker build --build-arg REPOBASE=http://abc.def.org . .... +ARG REPOBASE=https://gerrit.oran-osc.org/r +ARG SCHEMA_FILE +ARG SCHEMA_PATH +ARG XAPP_DIR +ARG CONNECTOR_DIR +ARG STAGE_DIR + +ARG MDC_VER=0.0.4-1 +ARG RMR_VER=4.0.5 +ARG RNIB_VER=1.0.0 + +ENV RMR_RTG_SVC="9999" \ + RMR_SEED_RT="/home/${CONNECTOR_DIR}/init/routes.txt" \ + LD_LIBRARY_PATH="/usr/local/lib:/usr/local/libexec" \ + VERBOSE=0 \ + CONFIG_FILE=/opt/ric/config/config-file.json \ + DBAAS_SERVICE_HOST=${DBAAS_SERVICE_HOST} \ + DBAAS_SERVICE_PORT=${DBAAS_SERVICE_PORT} + +COPY ${CONNECTOR_DIR} ${STAGE_DIR} +COPY ${XAPP_DIR} /home/${XAPP_DIR} + +WORKDIR ${STAGE_DIR} + +# Install necessary packages +RUN apt-get update \ + && apt-get install -y \ + cmake \ + git \ + build-essential \ + automake \ + autoconf-archive \ + autoconf \ + pkg-config \ + gawk \ + libtool \ + wget \ + zlib1g-dev \ + libffi-dev \ + libcurl4-openssl-dev \ + vim \ + cpputest \ + libboost-all-dev \ + libhiredis-dev \ + && apt-get remove -y --purge python* \ + && apt-get install -y \ + python3 \ + python3-pip \ +# Install mdclog using debian package hosted at packagecloud.io + && wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog_${MDC_VER}_amd64.deb/download.deb \ + && wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog-dev_${MDC_VER}_amd64.deb/download.deb \ + && dpkg -i mdclog_${MDC_VER}_amd64.deb \ + && dpkg -i mdclog-dev_${MDC_VER}_amd64.deb \ + && rm mdclog_${MDC_VER}_amd64.deb mdclog-dev_${MDC_VER}_amd64.deb \ +# Install RMR using debian package hosted at packagecloud.io + && wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_${RMR_VER}_amd64.deb/download.deb \ + && wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_${RMR_VER}_amd64.deb/download.deb \ + && dpkg -i rmr_${RMR_VER}_amd64.deb \ + && dpkg -i rmr-dev_${RMR_VER}_amd64.deb \ + && rm rmr_${RMR_VER}_amd64.deb rmr-dev_${RMR_VER}_amd64.deb \ +# Install RNIB libraries + && wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rnib_${RNIB_VER}_all.deb/download.deb \ + && dpkg -i rnib_${RNIB_VER}_all.deb \ + && rm rnib_${RNIB_VER}_all.deb \ +# Install dbaas + && cd ${STAGE_DIR} \ + && git clone https://gerrit.o-ran-sc.org/r/ric-plt/dbaas \ + && cd dbaas/redismodule \ + && ./autogen.sh \ + && ./configure \ + && make -j ${nproc} all \ + && make install \ + && rm -Rf ${STAGE_DIR}/dbaas \ +# Install sdl + && cd ${STAGE_DIR} \ + && git clone https://gerrit.o-ran-sc.org/r/ric-plt/sdl \ + && cd sdl \ + && ./autogen.sh \ + && ./configure \ + && make -j ${nproc} all \ + && make install \ + && rm -Rf ${STAGE_DIR}/sdl \ +# Install rapidjson + && cd ${STAGE_DIR} \ + && git clone https://github.com/Tencent/rapidjson \ + && cd rapidjson \ + && mkdir build \ + && cd build \ + && cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. \ + && make -j ${nproc} \ + && make install \ + && cd ${STAGE_DIR} \ + && rm -rf rapidjson \ +##----------------------------------- +# Now install the program +#------------------------------------ +# build connector + && export CPATH=$CPATH:/usr/local/include \ + && cd src \ + && make clean \ + && make -j ${nproc} \ + && make install \ + && ldconfig \ + && sysctl -w net.ipv6.conf.lo.disable_ipv6=1 \ +###----------------------------------- +## DRL Agent +##------------------------------------ +## install packages and pip requirements +# && pip3 --no-cache-dir install -U pip \ +# && pip3 --no-cache-dir install -r /home/${XAPP_DIR}/requirements.txt \ + && apt-get autoremove -y \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* diff --git a/setup/sample-xapp/run_xapp.py b/setup/sample-xapp/run_xapp.py new file mode 100644 index 0000000..1af4015 --- /dev/null +++ b/setup/sample-xapp/run_xapp.py @@ -0,0 +1,31 @@ +import logging +from xapp_control import * + + +def main(): + # configure logger and console output + logging.basicConfig(level=logging.DEBUG, filename='/home/xapp-logger.log', filemode='a+', + format='%(asctime)-15s %(levelname)-8s %(message)s') + formatter = logging.Formatter('%(asctime)-15s %(levelname)-8s %(message)s') + console = logging.StreamHandler() + console.setLevel(logging.INFO) + console.setFormatter(formatter) + logging.getLogger('').addHandler(console) + + control_sck = open_control_socket(4200) + + while True: + data_sck = receive_from_socket(control_sck) + if len(data_sck) <= 0: + if len(data_sck) == 0: + continue + else: + logging.info('Negative value for socket') + break + else: + logging.info('Received data: ' + repr(data_sck)) + + +if __name__ == '__main__': + main() + diff --git a/setup/sample-xapp/run_xapp.sh b/setup/sample-xapp/run_xapp.sh new file mode 100755 index 0000000..b7f2bf8 --- /dev/null +++ b/setup/sample-xapp/run_xapp.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# release previously opened sockets +kill -9 `pidof python3` + +# Run agent, sleep, run connector +echo "[`date`] Run xApp" > /home/container.log +cd /home/sample-xapp && python3 run_xapp.py & + +echo "[`date`] Pause 10 s" >> /home/container.log +sleep 10 + +echo "[`date`] Run connector" >> /home/container.log +cd /home/xapp-bs-connector && ./run_xapp.sh + diff --git a/setup/sample-xapp/xapp_control.py b/setup/sample-xapp/xapp_control.py new file mode 100644 index 0000000..7562f7b --- /dev/null +++ b/setup/sample-xapp/xapp_control.py @@ -0,0 +1,50 @@ +import socket + + +# open control socket +def open_control_socket(port: int): + + print('Waiting for xApp connection on port ' + str(port)) + + server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + # host = socket.gethostname() + # bind to INADDR_ANY + server.bind(('', port)) + + server.listen(5) + + control_sck, client_addr = server.accept() + print('xApp connected: ' + client_addr[0] + ':' + str(client_addr[1])) + + return control_sck + + +# send through socket +def send_socket(socket, msg: str): + bytes_num = socket.send(msg.encode('utf-8')) + print('Socket sent ' + str(bytes_num) + ' bytes') + + +# receive data from socker +def receive_from_socket(socket) -> str: + + ack = 'Indication ACK\n' + + data = socket.recv(4096) + + try: + data = data.decode('utf-8') + except UnicodeDecodeError: + return '' + + if ack in data: + data = data[len(ack):] + + if len(data) > 0: + # print("Received: ", str(data)) + + return data.strip() + else: + return '' + diff --git a/setup/xapp-bs-connector/.gitignore b/setup/xapp-bs-connector/.gitignore new file mode 100644 index 0000000..61dab10 --- /dev/null +++ b/setup/xapp-bs-connector/.gitignore @@ -0,0 +1,10 @@ +src/**/*.o +src/hw_xapp_main +asn1c_defs/*.o +*.deb + +dbaas/ +sdl/ + +.DS_Store +._* diff --git a/setup/xapp-bs-connector/.readthedocs.yaml b/setup/xapp-bs-connector/.readthedocs.yaml new file mode 100644 index 0000000..1994898 --- /dev/null +++ b/setup/xapp-bs-connector/.readthedocs.yaml @@ -0,0 +1,42 @@ +# vim: ts=4 expandtab sw=4: +#================================================================================== +# Copyright (c) 2019-2020 Nokia +# Copyright (c) 2018-2020 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#================================================================================== + +# NOTE: this exists only to support the RTD scraper(s). Future: change requirements +# so this can be moved inside of docs/ rather than polluting the top level. + +--- +# .readthedocs.yml +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details +# Required +version: 2 + +formats: + - htmlzip + +build: + image: latest + +python: + version: 3.7 + install: + - requirements: docs/requirements-docs.txt + +sphinx: + configuration: docs/conf.py + diff --git a/setup/xapp-bs-connector/INFO.yaml b/setup/xapp-bs-connector/INFO.yaml new file mode 100644 index 0000000..857e978 --- /dev/null +++ b/setup/xapp-bs-connector/INFO.yaml @@ -0,0 +1,58 @@ +--- +project: 'ric_app_hw' +project_creation_date: '2020-03-10' +project_category: '' +lifecycle_state: 'Incubation' +project_lead: &oran_ric_app_hw_ptl + name: 'Matti Hiltunen' + email: 'hiltunen@research.att.com' + id: 'MattiHiltunen' + company: 'AT&T Labs-Research' + timezone: 'America/New_York' +primary_contact: *oran_ric_app_hw_ptl +issue_tracking: + type: 'jira' + url: 'https://jira.o-ran-sc.org/projects/' + key: 'ric_app_hw' +mailing_list: + type: 'groups.io' + url: 'https://lists.o-ran-sc.org/g/main' + tag: '[]' +realtime_discussion: + type: 'irc' + server: 'freenode.net' + channel: '#oran' +meetings: + - type: 'gotomeeting+irc' + agenda: 'https://wiki.o-ran-sc.org/display/' + url: '' + server: 'freenode.net' + channel: '#oran' + repeats: '' + time: '' +repositories: + - ric-app/hw +committers: + - <<: *oran_ric_app_hw_ptl + - name: 'Scott Daniels' + email: 'daniels@research.att.com' + company: 'ATT' + id: 'escottdaniels' + timezone: 'America/New_York' + - name: 'Ron Shacham' + email: 'rshacham@research.att.com' + company: 'ATT' + id: 'rshacham' + timezone: 'America/New_York' + - name: 'Shraboni Jana' + email: 'sj492a@att.com' + company: 'ATT' + id: 'sjana' + timezone: 'America/New_York' +tsc: + # yamllint disable rule:line-length + approval: 'https://wiki.o-ran-sc.org/display/TOC#ORANSCTechnicalOversightCommittee(TOC)-20200304' + changes: + - type: '' + name: '' + link: '' diff --git a/setup/xapp-bs-connector/README b/setup/xapp-bs-connector/README new file mode 100644 index 0000000..d567811 --- /dev/null +++ b/setup/xapp-bs-connector/README @@ -0,0 +1,42 @@ +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + +This repository consists of HelloWorld Xapp developed in C++. Its envisioned to be the most simplest example Xapp. +It is required to have following features + +1) E2 Subscription Handling +2) A1 Policy Handling +3) DB Access: SDL and RNIB +4) RMR Health Check/A1 Health Check +5) Helloworld E2SM +6) RNIB GNB Retrival +7) .... + + + + +Steps for installation/running HWXapp. +$ cd init +$ source ./xapp_env.sh +$cd ../src +$ make +$ ./hw_xapp_main + +Steps for running test scripts. +$cd test +$make +$./hw_unit_tests diff --git a/setup/xapp-bs-connector/asn1c_defs/ANY.c b/setup/xapp-bs-connector/asn1c_defs/ANY.c new file mode 100644 index 0000000..0b81557 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ANY.c @@ -0,0 +1,450 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs = { + sizeof(ANY_t), + offsetof(ANY_t, _asn_ctx), + ASN_OSUBV_ANY +}; +asn_TYPE_operation_t asn_OP_ANY = { + OCTET_STRING_free, + OCTET_STRING_print, + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + ANY_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + 0, + 0, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + ANY_decode_uper, + ANY_encode_uper, + ANY_decode_aper, + ANY_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + 0, /* Random fill is not defined for ANY type */ + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_ANY = { + "ANY", + "ANY", + &asn_OP_ANY, + 0, 0, 0, 0, + { 0, 0, asn_generic_no_constraint }, /* No constraints */ + 0, 0, /* No members */ + &asn_SPC_ANY_specs, +}; + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +asn_enc_rval_t +ANY_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + if(flags & XER_F_CANONICAL) { + /* + * Canonical XER-encoding of ANY type is not supported. + */ + ASN__ENCODE_FAILED; + } + + /* Dump as binary */ + return OCTET_STRING_encode_xer(td, sptr, ilevel, flags, cb, app_key); +} + +struct _callback_arg { + uint8_t *buffer; + size_t offset; + size_t size; +}; + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key); + +int +ANY_fromType(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + struct _callback_arg arg; + asn_enc_rval_t erval = {0,0,0}; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + arg.offset = arg.size = 0; + arg.buffer = 0; + + erval = der_encode(td, sptr, ANY__consume_bytes, &arg); + if(erval.encoded == -1) { + if(arg.buffer) FREEMEM(arg.buffer); + return -1; + } + assert((size_t)erval.encoded == arg.offset); + + if(st->buf) FREEMEM(st->buf); + st->buf = arg.buffer; + st->size = arg.offset; + + return 0; +} + +int +ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr) { + uint8_t *buffer = NULL; + ssize_t erval; + + if(!st || !td) { + errno = EINVAL; + return -1; + } + + if(!sptr) { + if(st->buf) FREEMEM(st->buf); + st->size = 0; + return 0; + } + + erval = aper_encode_to_new_buffer(td, td->encoding_constraints.per_constraints, sptr, (void**)&buffer); + + if(erval == -1) { + if(buffer) FREEMEM(buffer); + return -1; + } + assert((size_t)erval > 0); + + if(st->buf) FREEMEM(st->buf); + st->buf = buffer; + st->size = erval; + + return 0; +} + +ANY_t * +ANY_new_fromType(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +ANY_t * +ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr) { + ANY_t tmp; + ANY_t *st; + + if(!td || !sptr) { + errno = EINVAL; + return 0; + } + + memset(&tmp, 0, sizeof(tmp)); + + if(ANY_fromType_aper(&tmp, td, sptr)) return 0; + + st = (ANY_t *)CALLOC(1, sizeof(ANY_t)); + if(st) { + *st = tmp; + return st; + } else { + FREEMEM(tmp.buf); + return 0; + } +} + +int +ANY_to_type(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = ber_decode(0, td, (void **)&newst, st->buf, st->size); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +int +ANY_to_type_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void **struct_ptr) { + asn_dec_rval_t rval; + void *newst = 0; + + if(!st || !td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + if(st->buf == 0) { + /* Nothing to convert, make it empty. */ + *struct_ptr = (void *)0; + return 0; + } + + rval = aper_decode(0, td, (void **)&newst, st->buf, st->size, 0, 0); + if(rval.code == RC_OK) { + *struct_ptr = newst; + return 0; + } else { + /* Remove possibly partially decoded data. */ + ASN_STRUCT_FREE(*td, newst); + return -1; + } +} + +static int ANY__consume_bytes(const void *buffer, size_t size, void *key) { + struct _callback_arg *arg = (struct _callback_arg *)key; + + if((arg->offset + size) >= arg->size) { + size_t nsize = (arg->size ? arg->size << 2 : 16) + size; + void *p = REALLOC(arg->buffer, nsize); + if(!p) return -1; + arg->buffer = (uint8_t *)p; + arg->size = nsize; + } + + memcpy(arg->buffer + arg->offset, buffer, size); + arg->offset += size; + assert(arg->offset < arg->size); + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +ANY_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("UPER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +ANY_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_ANY_specs; + size_t consumed_myself = 0; + int repeat; + ANY_t *st = (ANY_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + + /* + * Allocate the structure. + */ + if(!st) { + st = (ANY_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("APER Decoding ANY type"); + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = aper_get_length(pd, -1, 0, &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length len %" ASN_PRI_SIZE ", %s (%s)", raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len; + len_bits = len_bytes * 8; + + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += len_bits; + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + RETURN(RC_OK); +} + +asn_enc_rval_t +ANY_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const ANY_t *st = (const ANY_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + const uint8_t *buf; + size_t size; + int ret; + + (void)constraints; + + if(!st || (!st->buf && st->size)) ASN__ENCODE_FAILED; + + buf = st->buf; + size = st->size; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ret = per_put_many_bits(po, buf, may_save * 8); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save; + size -= may_save; + assert(!(may_save & 0x07) || !size); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size); + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + diff --git a/setup/xapp-bs-connector/asn1c_defs/ANY.h b/setup/xapp-bs-connector/asn1c_defs/ANY.h new file mode 100644 index 0000000..b30381f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ANY.h @@ -0,0 +1,65 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_ANY_H +#define ASN_TYPE_ANY_H + +#include /* Implemented via OCTET STRING type */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ANY { + uint8_t *buf; /* BER-encoded ANY contents */ + int size; /* Size of the above buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} ANY_t; + +extern asn_TYPE_descriptor_t asn_DEF_ANY; +extern asn_TYPE_operation_t asn_OP_ANY; +extern asn_OCTET_STRING_specifics_t asn_SPC_ANY_specs; + +asn_struct_free_f ANY_free; +asn_struct_print_f ANY_print; +ber_type_decoder_f ANY_decode_ber; +der_type_encoder_f ANY_encode_der; +xer_type_encoder_f ANY_encode_xer; +per_type_decoder_f ANY_decode_uper; +per_type_encoder_f ANY_encode_uper; +per_type_decoder_f ANY_decode_aper; +per_type_encoder_f ANY_encode_aper; + +#define ANY_free OCTET_STRING_free +#define ANY_print OCTET_STRING_print +#define ANY_compare OCTET_STRING_compare +#define ANY_constraint asn_generic_no_constraint +#define ANY_decode_ber OCTET_STRING_decode_ber +#define ANY_encode_der OCTET_STRING_encode_der +#define ANY_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* Convert another ASN.1 type into the ANY. This implies DER encoding. */ +int ANY_fromType(ANY_t *, asn_TYPE_descriptor_t *td, void *struct_ptr); +int ANY_fromType_aper(ANY_t *st, asn_TYPE_descriptor_t *td, void *sptr); +ANY_t *ANY_new_fromType(asn_TYPE_descriptor_t *td, void *struct_ptr); +ANY_t *ANY_new_fromType_aper(asn_TYPE_descriptor_t *td, void *sptr); + +/* Convert the contents of the ANY type into the specified type. */ +int ANY_to_type(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); +int ANY_to_type_aper(ANY_t *, asn_TYPE_descriptor_t *td, void **struct_ptr); + +#define ANY_fromBuf(s, buf, size) OCTET_STRING_fromBuf((s), (buf), (size)) +#define ANY_new_fromBuf(buf, size) OCTET_STRING_new_fromBuf( \ + &asn_DEF_ANY, (buf), (size)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_TYPE_ANY_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/BIT_STRING.c b/setup/xapp-bs-connector/asn1c_defs/BIT_STRING.c new file mode 100644 index 0000000..e8d7354 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/BIT_STRING.c @@ -0,0 +1,656 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BIT STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BIT_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs = { + sizeof(BIT_STRING_t), + offsetof(BIT_STRING_t, _asn_ctx), + ASN_OSUBV_BIT +}; +asn_TYPE_operation_t asn_OP_BIT_STRING = { + OCTET_STRING_free, /* Implemented in terms of OCTET STRING */ + BIT_STRING_print, + BIT_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_decode_xer_binary, + BIT_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BIT_STRING_decode_oer, + BIT_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BIT_STRING_decode_uper, /* Unaligned PER decoder */ + BIT_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BIT_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BIT_STRING = { + "BIT STRING", + "BIT_STRING", + &asn_OP_BIT_STRING, + asn_DEF_BIT_STRING_tags, + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + asn_DEF_BIT_STRING_tags, /* Same as above */ + sizeof(asn_DEF_BIT_STRING_tags) + / sizeof(asn_DEF_BIT_STRING_tags[0]), + { 0, 0, BIT_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_BIT_STRING_specs +}; + +/* + * BIT STRING generic constraint. + */ +int +BIT_STRING_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + + if(st && st->buf) { + if((st->size == 0 && st->bits_unused) + || st->bits_unused < 0 || st->bits_unused > 7) { + ASN__CTFAIL(app_key, td, sptr, + "%s: invalid padding byte (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static const char *_bit_pattern[16] = { + "0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", + "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111" +}; + +asn_enc_rval_t +BIT_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + char scratch[128]; + char *p = scratch; + char *scend = scratch + (sizeof(scratch) - 10); + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + int xcan = (flags & XER_F_CANONICAL); + uint8_t *buf; + uint8_t *end; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + buf = st->buf; + end = buf + st->size - 1; /* Last byte is special */ + + /* + * Binary dump + */ + for(; buf < end; buf++) { + int v = *buf; + int nline = xcan?0:(((buf - st->buf) % 8) == 0); + if(p >= scend || nline) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + if(nline) ASN__TEXT_INDENT(1, ilevel); + } + memcpy(p + 0, _bit_pattern[v >> 4], 4); + memcpy(p + 4, _bit_pattern[v & 0x0f], 4); + p += 8; + } + + if(!xcan && ((buf - st->buf) % 8) == 0) + ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + + if(buf == end) { + int v = *buf; + int ubits = st->bits_unused; + int i; + for(i = 7; i >= ubits; i--) + *p++ = (v & (1 << i)) ? 0x31 : 0x30; + ASN__CALLBACK(scratch, p - scratch); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + + +/* + * BIT STRING specific contents printer. + */ +int +BIT_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + char scratch[64]; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + uint8_t *buf; + uint8_t *end; + char *p = scratch; + + (void)td; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + ilevel++; + buf = st->buf; + end = buf + st->size; + + /* + * Hexadecimal dump. + */ + for(; buf < end; buf++) { + if((buf - st->buf) % 16 == 0 && (st->size > 16) + && buf != st->buf) { + _i_INDENT(1); + /* Dump the string */ + if(cb(scratch, p - scratch, app_key) < 0) return -1; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Eat the tailing space */ + + if((st->size > 16)) { + _i_INDENT(1); + } + + /* Dump the incomplete 16-bytes row */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + if(st->bits_unused) { + int ret = snprintf(scratch, sizeof(scratch), " (%d bit%s unused)", + st->bits_unused, st->bits_unused == 1 ? "" : "s"); + assert(ret > 0 && ret < (ssize_t)sizeof(scratch)); + if(ret > 0 && ret < (ssize_t)sizeof(scratch) + && cb(scratch, ret, app_key) < 0) + return -1; + } + + return 0; +} + +/* + * Non-destructively remove the trailing 0-bits from the given bit string. + */ +static const BIT_STRING_t * +BIT_STRING__compactify(const BIT_STRING_t *st, BIT_STRING_t *tmp) { + const uint8_t *b; + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + + if(st->size == 0) { + assert(st->bits_unused == 0); + return st; + } else { + for(b = &st->buf[st->size - 1]; b > st->buf && *b == 0; b--) { + ; + } + /* b points to the last byte which may contain data */ + if(*b) { + int unused = 7; + uint8_t v = *b; + v &= -(int8_t)v; + if(v & 0x0F) unused -= 4; + if(v & 0x33) unused -= 2; + if(v & 0x55) unused -= 1; + tmp->size = b-st->buf + 1; + tmp->bits_unused = unused; + } else { + tmp->size = b-st->buf; + tmp->bits_unused = 0; + } + + assert(b >= st->buf); + } + + unconst.c_buf = st->buf; + tmp->buf = unconst.nc_buf; + return tmp; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +BIT_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + /* + * Remove information about trailing bits, since + * X.680 (08/2015) #22.7 "ensure that different semantics are not" + * "associated with [values that differ only in] the trailing 0 bits." + */ + BIT_STRING_t compact_a, compact_b; + const BIT_STRING_t *a = BIT_STRING__compactify(aptr, &compact_a); + const BIT_STRING_t *b = BIT_STRING__compactify(bptr, &compact_b); + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + + assert(specs && specs->subvariant == ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + /* Figure out how many unused bits */ + if(a->bits_unused > b->bits_unused) { + return -1; + } else if(a->bits_unused < b->bits_unused) { + return 1; + } else { + return 0; + } + } + } else { + return ret; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +#undef RETURN +#define RETURN(_code) \ + do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +static asn_per_constraint_t asn_DEF_BIT_STRING_constraint_size = { + APC_SEMI_CONSTRAINED, -1, -1, 0, 0}; + +asn_dec_rval_t +BIT_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + + (void)opt_codec_ctx; + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + + if(specs->subvariant != ASN_OSUBV_BIT) { + ASN_DEBUG("Subvariant %d is not BIT OSUBV_BIT", specs->subvariant); + RETURN(RC_FAIL); + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + st->size = (csiz->upper_bound + 7) >> 3; + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + ASN_DEBUG("Encoding BIT STRING size %ld", csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, csiz->upper_bound); + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += csiz->upper_bound; + st->buf[st->size] = 0; + st->bits_unused = (8 - (csiz->upper_bound & 0x7)) & 0x7; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, len_bits); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +BIT_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + BIT_STRING_t compact_bstr; /* Do not modify this directly! */ + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + size_t size_in_bits; + const uint8_t *buf; + int ret; + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(specs->subvariant == ASN_OSUBV_BIT) { + if((st->size == 0 && st->bits_unused) || (st->bits_unused & ~7)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + + if(pc) { + csiz = &pc->size; + } else { + csiz = &asn_DEF_BIT_STRING_constraint_size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + /* Figure out the size without the trailing bits */ + st = BIT_STRING__compactify(st, &compact_bstr); + size_in_bits = 8 * st->size - st->bits_unused; + + ASN_DEBUG( + "Encoding %s into %" ASN_PRI_SIZE " bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_bits, csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_bits > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_BIT_STRING_constraint_size; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + int add_trailer = (ssize_t)size_in_bits < csiz->lower_bound; + ASN_DEBUG( + "Encoding %" ASN_PRI_SIZE " bytes (%ld), length (in %d bits) trailer %d; actual " + "value %" ASN_PRI_SSIZE "", + st->size, size_in_bits - csiz->lower_bound, csiz->effective_bits, + add_trailer, + add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound); + ret = per_put_few_bits( + po, add_trailer ? 0 : (ssize_t)size_in_bits - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = per_put_many_bits(po, st->buf, size_in_bits); + if(ret) ASN__ENCODE_FAILED; + if(add_trailer) { + static const uint8_t zeros[16]; + size_t trailing_zero_bits = csiz->lower_bound - size_in_bits; + while(trailing_zero_bits > 0) { + if(trailing_zero_bits > 8 * sizeof(zeros)) { + ret = per_put_many_bits(po, zeros, 8 * sizeof(zeros)); + trailing_zero_bits -= 8 * sizeof(zeros); + } else { + ret = per_put_many_bits(po, zeros, trailing_zero_bits); + trailing_zero_bits = 0; + } + if(ret) ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + do { + int need_eom = 0; + ssize_t maySave = uper_put_length(po, size_in_bits, &need_eom); + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "", maySave, size_in_bits); + + ret = per_put_many_bits(po, buf, maySave); + if(ret) ASN__ENCODE_FAILED; + + buf += maySave >> 3; + size_in_bits -= maySave; + assert(!(maySave & 0x07) || !size_in_bits); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_bits); + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +BIT_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_BIT_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + static unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_bits, rnd_len; + BIT_STRING_t *st; + + if(max_length == 0) return result_skipped; + + switch(specs->subvariant) { + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + break; + default: + break; + } + + /* Figure out how far we should go */ + rnd_bits = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length < (size_t)pc->lower_bound) { + return result_skipped; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_bits = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_bits = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_bits from the table */ + if(rnd_bits < max_length) { + break; + } + /* Fall through */ + default: + rnd_bits = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_bits = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_bits = asn_random_between(0, max_length - 1); + } + } else if(rnd_bits >= max_length) { + rnd_bits = asn_random_between(0, max_length - 1); + } + + rnd_len = (rnd_bits + 7) / 8; + buf = CALLOC(1, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[rnd_len]; + + for(b = buf; b < bend; b++) { + *(uint8_t *)b = asn_random_between(0, 255); + } + *b = 0; /* Zero-terminate just in case. */ + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = rnd_len; + st->bits_unused = (8 - (rnd_bits & 0x7)) & 0x7; + if(st->bits_unused) { + assert(st->size > 0); + st->buf[st->size-1] &= 0xff << st->bits_unused; + } + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/BIT_STRING.h b/setup/xapp-bs-connector/asn1c_defs/BIT_STRING.h new file mode 100644 index 0000000..c1bdbbc --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/BIT_STRING.h @@ -0,0 +1,48 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BIT_STRING_H_ +#define _BIT_STRING_H_ + +#include /* Some help from OCTET STRING */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct BIT_STRING_s { + uint8_t *buf; /* BIT STRING body */ + size_t size; /* Size of the above buffer */ + + int bits_unused;/* Unused trailing bits in the last octet (0..7) */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} BIT_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_BIT_STRING; +extern asn_TYPE_operation_t asn_OP_BIT_STRING; +extern asn_OCTET_STRING_specifics_t asn_SPC_BIT_STRING_specs; + +asn_struct_print_f BIT_STRING_print; /* Human-readable output */ +asn_struct_compare_f BIT_STRING_compare; +asn_constr_check_f BIT_STRING_constraint; +xer_type_encoder_f BIT_STRING_encode_xer; +oer_type_decoder_f BIT_STRING_decode_oer; +oer_type_encoder_f BIT_STRING_encode_oer; +per_type_decoder_f BIT_STRING_decode_uper; +per_type_encoder_f BIT_STRING_encode_uper; +asn_random_fill_f BIT_STRING_random_fill; + +#define BIT_STRING_free OCTET_STRING_free +#define BIT_STRING_decode_ber OCTET_STRING_decode_ber +#define BIT_STRING_encode_der OCTET_STRING_encode_der +#define BIT_STRING_decode_xer OCTET_STRING_decode_xer_binary +#define BIT_STRING_decode_aper OCTET_STRING_decode_aper +#define BIT_STRING_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _BIT_STRING_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/BOOLEAN.c b/setup/xapp-bs-connector/asn1c_defs/BOOLEAN.c new file mode 100644 index 0000000..25831e2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/BOOLEAN.c @@ -0,0 +1,492 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * BOOLEAN basic type description. + */ +static const ber_tlv_tag_t asn_DEF_BOOLEAN_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)) +}; +asn_TYPE_operation_t asn_OP_BOOLEAN = { + BOOLEAN_free, + BOOLEAN_print, + BOOLEAN_compare, + BOOLEAN_decode_ber, + BOOLEAN_encode_der, + BOOLEAN_decode_xer, + BOOLEAN_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + BOOLEAN_decode_oer, + BOOLEAN_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + BOOLEAN_decode_uper, /* Unaligned PER decoder */ + BOOLEAN_encode_uper, /* Unaligned PER encoder */ + BOOLEAN_decode_aper, /* Aligned PER decoder */ + BOOLEAN_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + BOOLEAN_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_BOOLEAN = { + "BOOLEAN", + "BOOLEAN", + &asn_OP_BOOLEAN, + asn_DEF_BOOLEAN_tags, + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + asn_DEF_BOOLEAN_tags, /* Same as above */ + sizeof(asn_DEF_BOOLEAN_tags) / sizeof(asn_DEF_BOOLEAN_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode BOOLEAN type. + */ +asn_dec_rval_t +BOOLEAN_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **bool_value, + const void *buf_ptr, size_t size, int tag_mode) { + BOOLEAN_t *st = (BOOLEAN_t *)*bool_value; + asn_dec_rval_t rval; + ber_tlv_len_t length; + ber_tlv_len_t lidx; + + if(st == NULL) { + st = (BOOLEAN_t *)(*bool_value = CALLOC(1, sizeof(*st))); + if(st == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as BOOLEAN (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("Boolean length is %d bytes", (int)length); + + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * Compute boolean value. + */ + for(*st = 0, lidx = 0; + (lidx < length) && *st == 0; lidx++) { + /* + * Very simple approach: read bytes until the end or + * value is already TRUE. + * BOOLEAN is not supposed to contain meaningful data anyway. + */ + *st |= ((const uint8_t *)buf_ptr)[lidx]; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s, value=%d", + (long)rval.consumed, (long)length, + td->name, *st); + + return rval; +} + +asn_enc_rval_t +BOOLEAN_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + + erval.encoded = der_write_tags(td, 1, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb) { + uint8_t bool_value; + + bool_value = *st ? 0xff : 0; /* 0xff mandated by DER */ + + if(cb(&bool_value, 1, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } + + erval.encoded += 1; + + ASN__ENCODED_OK(erval); +} + + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +BOOLEAN__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + BOOLEAN_t *st = (BOOLEAN_t *)sptr; + const char *p = (const char *)chunk_buf; + + (void)td; + + if(chunk_size && p[0] == 0x3c /* '<' */) { + switch(xer_check_tag(chunk_buf, chunk_size, "false")) { + case XCT_BOTH: + /* "" */ + *st = 0; + break; + case XCT_UNKNOWN_BO: + if(xer_check_tag(chunk_buf, chunk_size, "true") + != XCT_BOTH) + return XPBD_BROKEN_ENCODING; + /* "" */ + *st = 1; /* Or 0xff as in DER?.. */ + break; + default: + return XPBD_BROKEN_ENCODING; + } + return XPBD_BODY_CONSUMED; + } else { + return XPBD_BROKEN_ENCODING; + } +} + + +asn_dec_rval_t +BOOLEAN_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size, + BOOLEAN__xer_body_decode); +} + +asn_enc_rval_t +BOOLEAN_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = {0, 0, 0}; + + (void)ilevel; + (void)flags; + + if(!st) ASN__ENCODE_FAILED; + + if(*st) { + ASN__CALLBACK("", 7); + } else { + ASN__CALLBACK("", 8); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +int +BOOLEAN_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + const char *buf; + size_t buflen; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st) { + if(*st) { + buf = "TRUE"; + buflen = 4; + } else { + buf = "FALSE"; + buflen = 5; + } + } else { + buf = ""; + buflen = 8; + } + + return (cb(buf, buflen, app_key) < 0) ? -1 : 0; +} + +void +BOOLEAN_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(BOOLEAN_t)); + break; + } + } +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: *st = 1; break; + case 0: *st = 0; break; + case -1: default: ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + + +asn_enc_rval_t +BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +BOOLEAN_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + BOOLEAN_t *st = (BOOLEAN_t *)*sptr; + + (void)opt_codec_ctx; + (void)constraints; + (void)td; + + if(!st) { + st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + /* + * Extract a single bit + */ + switch(per_get_few_bits(pd, 1)) { + case 1: + *st = 1; + break; + case 0: + *st = 0; + break; + case -1: + default: + ASN__DECODE_STARVED; + } + + ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE"); + + rv.code = RC_OK; + rv.consumed = 1; + return rv; +} + +asn_enc_rval_t +BOOLEAN_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const BOOLEAN_t *st = (const BOOLEAN_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + + (void)constraints; + + if(!st) ASN__ENCODE_FAILED; + + if(per_put_few_bits(po, *st ? 1 : 0, 1)) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +#ifndef ASN_DISABLE_OER_SUPPORT + +/* + * Encode as Canonical OER. + */ +asn_enc_rval_t +BOOLEAN_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 1, 0, 0 }; + const BOOLEAN_t *st = sptr; + uint8_t bool_value = *st ? 0xff : 0; /* 0xff mandated by OER */ + + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(cb(&bool_value, 1, app_key) < 0) { + ASN__ENCODE_FAILED; + } else { + ASN__ENCODED_OK(er); + } +} + +asn_dec_rval_t +BOOLEAN_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t ok = {RC_OK, 1}; + BOOLEAN_t *st; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; /* Constraints are unused in OER */ + + if(size < 1) { + ASN__DECODE_STARVED; + } + + if(!(st = *sptr)) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + *st = *(const uint8_t *)ptr; + + return ok; +} + + + +#endif + +int +BOOLEAN_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const BOOLEAN_t *a = aptr; + const BOOLEAN_t *b = bptr; + + (void)td; + + if(a && b) { + if(!*a == !*b) { /* TRUE can be encoded by any non-zero byte. */ + return 0; + } else if(!*a) { + return -1; + } else { + return 1; + } + } else if(!a) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +BOOLEAN_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + BOOLEAN_t *st = *sptr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (BOOLEAN_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_CONSTRAINED) { + *st = asn_random_between(pc->lower_bound, pc->upper_bound); + return result_ok; + } + } + + /* Simulate booleans that are sloppily set and biased. */ + switch(asn_random_between(0, 7)) { + case 0: + case 1: + case 2: + *st = 0; break; + case 3: *st = -1; break; + case 4: *st = 1; break; + case 5: *st = INT_MIN; break; + case 6: *st = INT_MAX; break; + default: + *st = asn_random_between(INT_MIN, INT_MAX); + break; + } + return result_ok; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/BOOLEAN.h b/setup/xapp-bs-connector/asn1c_defs/BOOLEAN.h new file mode 100644 index 0000000..620acf7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/BOOLEAN.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BOOLEAN_H_ +#define _BOOLEAN_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The underlying integer may contain various values, but everything + * non-zero is capped to 0xff by the DER encoder. The BER decoder may + * yield non-zero values different from 1, beware. + */ +typedef int BOOLEAN_t; + +extern asn_TYPE_descriptor_t asn_DEF_BOOLEAN; +extern asn_TYPE_operation_t asn_OP_BOOLEAN; + +asn_struct_free_f BOOLEAN_free; +asn_struct_print_f BOOLEAN_print; +asn_struct_compare_f BOOLEAN_compare; +ber_type_decoder_f BOOLEAN_decode_ber; +der_type_encoder_f BOOLEAN_encode_der; +oer_type_decoder_f BOOLEAN_decode_oer; +oer_type_encoder_f BOOLEAN_encode_oer; +per_type_decoder_f BOOLEAN_decode_uper; +per_type_encoder_f BOOLEAN_encode_uper; +per_type_decoder_f BOOLEAN_decode_aper; +per_type_encoder_f BOOLEAN_encode_aper; +xer_type_decoder_f BOOLEAN_decode_xer; +xer_type_encoder_f BOOLEAN_encode_xer; +asn_random_fill_f BOOLEAN_random_fill; + +#define BOOLEAN_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _BOOLEAN_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/Cause.c b/setup/xapp-bs-connector/asn1c_defs/Cause.c new file mode 100644 index 0000000..216f970 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/Cause.c @@ -0,0 +1,92 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "Cause.h" + +asn_per_constraints_t asn_PER_type_Cause_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_Cause_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricRequest), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRIC, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.ricService), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseRICservice, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricService" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.transport), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseTransport, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "transport" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.protocol), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseProtocol, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocol" + }, + { ATF_NOFLAGS, 0, offsetof(struct Cause, choice.misc), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CauseMisc, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "misc" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_Cause_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* misc */ +}; +asn_CHOICE_specifics_t asn_SPC_Cause_specs_1 = { + sizeof(struct Cause), + offsetof(struct Cause, _asn_ctx), + offsetof(struct Cause, present), + sizeof(((struct Cause *)0)->present), + asn_MAP_Cause_tag2el_1, + 5, /* Count of tags in the map */ + 0, 0, + 5 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_Cause = { + "Cause", + "Cause", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_Cause_constr_1, CHOICE_constraint }, + asn_MBR_Cause_1, + 5, /* Elements count */ + &asn_SPC_Cause_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/Cause.h b/setup/xapp-bs-connector/asn1c_defs/Cause.h new file mode 100644 index 0000000..0311e82 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/Cause.h @@ -0,0 +1,68 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _Cause_H_ +#define _Cause_H_ + + +#include + +/* Including external dependencies */ +#include "CauseRIC.h" +#include "CauseRICservice.h" +#include "CauseTransport.h" +#include "CauseProtocol.h" +#include "CauseMisc.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Cause_PR { + Cause_PR_NOTHING, /* No components present */ + Cause_PR_ricRequest, + Cause_PR_ricService, + Cause_PR_transport, + Cause_PR_protocol, + Cause_PR_misc + /* Extensions may appear below */ + +} Cause_PR; + +/* Cause */ +typedef struct Cause { + Cause_PR present; + union Cause_u { + CauseRIC_t ricRequest; + CauseRICservice_t ricService; + CauseTransport_t transport; + CauseProtocol_t protocol; + CauseMisc_t misc; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} Cause_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_Cause; +extern asn_CHOICE_specifics_t asn_SPC_Cause_specs_1; +extern asn_TYPE_member_t asn_MBR_Cause_1[5]; +extern asn_per_constraints_t asn_PER_type_Cause_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _Cause_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseMisc.c b/setup/xapp-bs-connector/asn1c_defs/CauseMisc.c new file mode 100644 index 0000000..98cb877 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseMisc.c @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CauseMisc.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseMisc_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseMisc_value2enum_1[] = { + { 0, 27, "control-processing-overload" }, + { 1, 16, "hardware-failure" }, + { 2, 15, "om-intervention" }, + { 3, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseMisc_enum2value_1[] = { + 0, /* control-processing-overload(0) */ + 1, /* hardware-failure(1) */ + 2, /* om-intervention(2) */ + 3 /* unspecified(3) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1 = { + asn_MAP_CauseMisc_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseMisc_enum2value_1, /* N => "tag"; sorted by N */ + 4, /* Number of elements in the maps */ + 5, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseMisc_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseMisc = { + "CauseMisc", + "CauseMisc", + &asn_OP_NativeEnumerated, + asn_DEF_CauseMisc_tags_1, + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + asn_DEF_CauseMisc_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseMisc_tags_1) + /sizeof(asn_DEF_CauseMisc_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseMisc_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseMisc_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseMisc.h b/setup/xapp-bs-connector/asn1c_defs/CauseMisc.h new file mode 100644 index 0000000..fe9470a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseMisc.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CauseMisc_H_ +#define _CauseMisc_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseMisc { + CauseMisc_control_processing_overload = 0, + CauseMisc_hardware_failure = 1, + CauseMisc_om_intervention = 2, + CauseMisc_unspecified = 3 + /* + * Enumeration is extensible + */ +} e_CauseMisc; + +/* CauseMisc */ +typedef long CauseMisc_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseMisc_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseMisc; +extern const asn_INTEGER_specifics_t asn_SPC_CauseMisc_specs_1; +asn_struct_free_f CauseMisc_free; +asn_struct_print_f CauseMisc_print; +asn_constr_check_f CauseMisc_constraint; +ber_type_decoder_f CauseMisc_decode_ber; +der_type_encoder_f CauseMisc_encode_der; +xer_type_decoder_f CauseMisc_decode_xer; +xer_type_encoder_f CauseMisc_encode_xer; +per_type_decoder_f CauseMisc_decode_uper; +per_type_encoder_f CauseMisc_encode_uper; +per_type_decoder_f CauseMisc_decode_aper; +per_type_encoder_f CauseMisc_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseMisc_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseProtocol.c b/setup/xapp-bs-connector/asn1c_defs/CauseProtocol.c new file mode 100644 index 0000000..007c664 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseProtocol.c @@ -0,0 +1,65 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CauseProtocol.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 6 } /* (0..6,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseProtocol_value2enum_1[] = { + { 0, 21, "transfer-syntax-error" }, + { 1, 28, "abstract-syntax-error-reject" }, + { 2, 39, "abstract-syntax-error-ignore-and-notify" }, + { 3, 42, "message-not-compatible-with-receiver-state" }, + { 4, 14, "semantic-error" }, + { 5, 49, "abstract-syntax-error-falsely-constructed-message" }, + { 6, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseProtocol_enum2value_1[] = { + 5, /* abstract-syntax-error-falsely-constructed-message(5) */ + 2, /* abstract-syntax-error-ignore-and-notify(2) */ + 1, /* abstract-syntax-error-reject(1) */ + 3, /* message-not-compatible-with-receiver-state(3) */ + 4, /* semantic-error(4) */ + 0, /* transfer-syntax-error(0) */ + 6 /* unspecified(6) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1 = { + asn_MAP_CauseProtocol_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseProtocol_enum2value_1, /* N => "tag"; sorted by N */ + 7, /* Number of elements in the maps */ + 8, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseProtocol_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseProtocol = { + "CauseProtocol", + "CauseProtocol", + &asn_OP_NativeEnumerated, + asn_DEF_CauseProtocol_tags_1, + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + asn_DEF_CauseProtocol_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseProtocol_tags_1) + /sizeof(asn_DEF_CauseProtocol_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseProtocol_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseProtocol_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseProtocol.h b/setup/xapp-bs-connector/asn1c_defs/CauseProtocol.h new file mode 100644 index 0000000..d074a19 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseProtocol.h @@ -0,0 +1,59 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CauseProtocol_H_ +#define _CauseProtocol_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseProtocol { + CauseProtocol_transfer_syntax_error = 0, + CauseProtocol_abstract_syntax_error_reject = 1, + CauseProtocol_abstract_syntax_error_ignore_and_notify = 2, + CauseProtocol_message_not_compatible_with_receiver_state = 3, + CauseProtocol_semantic_error = 4, + CauseProtocol_abstract_syntax_error_falsely_constructed_message = 5, + CauseProtocol_unspecified = 6 + /* + * Enumeration is extensible + */ +} e_CauseProtocol; + +/* CauseProtocol */ +typedef long CauseProtocol_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseProtocol_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseProtocol; +extern const asn_INTEGER_specifics_t asn_SPC_CauseProtocol_specs_1; +asn_struct_free_f CauseProtocol_free; +asn_struct_print_f CauseProtocol_print; +asn_constr_check_f CauseProtocol_constraint; +ber_type_decoder_f CauseProtocol_decode_ber; +der_type_encoder_f CauseProtocol_encode_der; +xer_type_decoder_f CauseProtocol_decode_xer; +xer_type_encoder_f CauseProtocol_encode_xer; +per_type_decoder_f CauseProtocol_decode_uper; +per_type_encoder_f CauseProtocol_encode_uper; +per_type_decoder_f CauseProtocol_decode_aper; +per_type_encoder_f CauseProtocol_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseProtocol_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseRIC.c b/setup/xapp-bs-connector/asn1c_defs/CauseRIC.c new file mode 100644 index 0000000..81ca48b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseRIC.c @@ -0,0 +1,73 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CauseRIC.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRIC_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 4, 4, 0, 10 } /* (0..10,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRIC_value2enum_1[] = { + { 0, 23, "ran-function-id-Invalid" }, + { 1, 20, "action-not-supported" }, + { 2, 17, "excessive-actions" }, + { 3, 16, "duplicate-action" }, + { 4, 15, "duplicate-event" }, + { 5, 23, "function-resource-limit" }, + { 6, 18, "request-id-unknown" }, + { 7, 46, "inconsistent-action-subsequent-action-sequence" }, + { 8, 23, "control-message-invalid" }, + { 9, 23, "call-process-id-invalid" }, + { 10, 11, "unspecified" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRIC_enum2value_1[] = { + 1, /* action-not-supported(1) */ + 9, /* call-process-id-invalid(9) */ + 8, /* control-message-invalid(8) */ + 3, /* duplicate-action(3) */ + 4, /* duplicate-event(4) */ + 2, /* excessive-actions(2) */ + 5, /* function-resource-limit(5) */ + 7, /* inconsistent-action-subsequent-action-sequence(7) */ + 0, /* ran-function-id-Invalid(0) */ + 6, /* request-id-unknown(6) */ + 10 /* unspecified(10) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1 = { + asn_MAP_CauseRIC_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRIC_enum2value_1, /* N => "tag"; sorted by N */ + 11, /* Number of elements in the maps */ + 12, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRIC_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRIC = { + "CauseRIC", + "CauseRIC", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRIC_tags_1, + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + asn_DEF_CauseRIC_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRIC_tags_1) + /sizeof(asn_DEF_CauseRIC_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRIC_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRIC_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseRIC.h b/setup/xapp-bs-connector/asn1c_defs/CauseRIC.h new file mode 100644 index 0000000..9b8f9ec --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseRIC.h @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CauseRIC_H_ +#define _CauseRIC_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRIC { + CauseRIC_ran_function_id_Invalid = 0, + CauseRIC_action_not_supported = 1, + CauseRIC_excessive_actions = 2, + CauseRIC_duplicate_action = 3, + CauseRIC_duplicate_event = 4, + CauseRIC_function_resource_limit = 5, + CauseRIC_request_id_unknown = 6, + CauseRIC_inconsistent_action_subsequent_action_sequence = 7, + CauseRIC_control_message_invalid = 8, + CauseRIC_call_process_id_invalid = 9, + CauseRIC_unspecified = 10 + /* + * Enumeration is extensible + */ +} e_CauseRIC; + +/* CauseRIC */ +typedef long CauseRIC_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRIC_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRIC; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRIC_specs_1; +asn_struct_free_f CauseRIC_free; +asn_struct_print_f CauseRIC_print; +asn_constr_check_f CauseRIC_constraint; +ber_type_decoder_f CauseRIC_decode_ber; +der_type_encoder_f CauseRIC_encode_der; +xer_type_decoder_f CauseRIC_decode_xer; +xer_type_encoder_f CauseRIC_encode_xer; +per_type_decoder_f CauseRIC_decode_uper; +per_type_encoder_f CauseRIC_encode_uper; +per_type_decoder_f CauseRIC_decode_aper; +per_type_encoder_f CauseRIC_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRIC_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseRICservice.c b/setup/xapp-bs-connector/asn1c_defs/CauseRICservice.c new file mode 100644 index 0000000..fc06d4c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseRICservice.c @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CauseRICservice.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseRICservice_value2enum_1[] = { + { 0, 21, "function-not-required" }, + { 1, 19, "excessive-functions" }, + { 2, 18, "ric-resource-limit" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseRICservice_enum2value_1[] = { + 1, /* excessive-functions(1) */ + 0, /* function-not-required(0) */ + 2 /* ric-resource-limit(2) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1 = { + asn_MAP_CauseRICservice_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseRICservice_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseRICservice_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseRICservice = { + "CauseRICservice", + "CauseRICservice", + &asn_OP_NativeEnumerated, + asn_DEF_CauseRICservice_tags_1, + sizeof(asn_DEF_CauseRICservice_tags_1) + /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ + asn_DEF_CauseRICservice_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseRICservice_tags_1) + /sizeof(asn_DEF_CauseRICservice_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseRICservice_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseRICservice_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseRICservice.h b/setup/xapp-bs-connector/asn1c_defs/CauseRICservice.h new file mode 100644 index 0000000..98989eb --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseRICservice.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CauseRICservice_H_ +#define _CauseRICservice_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseRICservice { + CauseRICservice_function_not_required = 0, + CauseRICservice_excessive_functions = 1, + CauseRICservice_ric_resource_limit = 2 + /* + * Enumeration is extensible + */ +} e_CauseRICservice; + +/* CauseRICservice */ +typedef long CauseRICservice_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseRICservice_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseRICservice; +extern const asn_INTEGER_specifics_t asn_SPC_CauseRICservice_specs_1; +asn_struct_free_f CauseRICservice_free; +asn_struct_print_f CauseRICservice_print; +asn_constr_check_f CauseRICservice_constraint; +ber_type_decoder_f CauseRICservice_decode_ber; +der_type_encoder_f CauseRICservice_encode_der; +xer_type_decoder_f CauseRICservice_decode_xer; +xer_type_encoder_f CauseRICservice_encode_xer; +per_type_decoder_f CauseRICservice_decode_uper; +per_type_encoder_f CauseRICservice_encode_uper; +per_type_decoder_f CauseRICservice_decode_aper; +per_type_encoder_f CauseRICservice_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseRICservice_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseTransport.c b/setup/xapp-bs-connector/asn1c_defs/CauseTransport.c new file mode 100644 index 0000000..de4d52a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseTransport.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CauseTransport.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_CauseTransport_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_CauseTransport_value2enum_1[] = { + { 0, 11, "unspecified" }, + { 1, 30, "transport-resource-unavailable" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_CauseTransport_enum2value_1[] = { + 1, /* transport-resource-unavailable(1) */ + 0 /* unspecified(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1 = { + asn_MAP_CauseTransport_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_CauseTransport_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_CauseTransport_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_CauseTransport = { + "CauseTransport", + "CauseTransport", + &asn_OP_NativeEnumerated, + asn_DEF_CauseTransport_tags_1, + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + asn_DEF_CauseTransport_tags_1, /* Same as above */ + sizeof(asn_DEF_CauseTransport_tags_1) + /sizeof(asn_DEF_CauseTransport_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CauseTransport_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_CauseTransport_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CauseTransport.h b/setup/xapp-bs-connector/asn1c_defs/CauseTransport.h new file mode 100644 index 0000000..1a7ad59 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CauseTransport.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CauseTransport_H_ +#define _CauseTransport_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum CauseTransport { + CauseTransport_unspecified = 0, + CauseTransport_transport_resource_unavailable = 1 + /* + * Enumeration is extensible + */ +} e_CauseTransport; + +/* CauseTransport */ +typedef long CauseTransport_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_CauseTransport_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_CauseTransport; +extern const asn_INTEGER_specifics_t asn_SPC_CauseTransport_specs_1; +asn_struct_free_f CauseTransport_free; +asn_struct_print_f CauseTransport_print; +asn_constr_check_f CauseTransport_constraint; +ber_type_decoder_f CauseTransport_decode_ber; +der_type_encoder_f CauseTransport_encode_der; +xer_type_decoder_f CauseTransport_decode_xer; +xer_type_encoder_f CauseTransport_encode_xer; +per_type_decoder_f CauseTransport_decode_uper; +per_type_encoder_f CauseTransport_encode_uper; +per_type_decoder_f CauseTransport_decode_aper; +per_type_encoder_f CauseTransport_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _CauseTransport_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/Criticality.c b/setup/xapp-bs-connector/asn1c_defs/Criticality.c new file mode 100644 index 0000000..e3e69c8 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/Criticality.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "Criticality.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Criticality_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Criticality_value2enum_1[] = { + { 0, 6, "reject" }, + { 1, 6, "ignore" }, + { 2, 6, "notify" } +}; +static const unsigned int asn_MAP_Criticality_enum2value_1[] = { + 1, /* ignore(1) */ + 2, /* notify(2) */ + 0 /* reject(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1 = { + asn_MAP_Criticality_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Criticality_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Criticality_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Criticality = { + "Criticality", + "Criticality", + &asn_OP_NativeEnumerated, + asn_DEF_Criticality_tags_1, + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + asn_DEF_Criticality_tags_1, /* Same as above */ + sizeof(asn_DEF_Criticality_tags_1) + /sizeof(asn_DEF_Criticality_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Criticality_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Criticality_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/Criticality.h b/setup/xapp-bs-connector/asn1c_defs/Criticality.h new file mode 100644 index 0000000..2df73f9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/Criticality.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _Criticality_H_ +#define _Criticality_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Criticality { + Criticality_reject = 0, + Criticality_ignore = 1, + Criticality_notify = 2 +} e_Criticality; + +/* Criticality */ +typedef long Criticality_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Criticality_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Criticality; +extern const asn_INTEGER_specifics_t asn_SPC_Criticality_specs_1; +asn_struct_free_f Criticality_free; +asn_struct_print_f Criticality_print; +asn_constr_check_f Criticality_constraint; +ber_type_decoder_f Criticality_decode_ber; +der_type_encoder_f Criticality_encode_der; +xer_type_decoder_f Criticality_decode_xer; +xer_type_encoder_f Criticality_encode_xer; +per_type_decoder_f Criticality_decode_uper; +per_type_encoder_f Criticality_encode_uper; +per_type_decoder_f Criticality_decode_aper; +per_type_encoder_f Criticality_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Criticality_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-Item.c b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-Item.c new file mode 100644 index 0000000..54b3fc9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-Item.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CriticalityDiagnostics-IE-Item.h" + +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iECriticality), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iECriticality" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, iE_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iE-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct CriticalityDiagnostics_IE_Item, typeOfError), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TypeOfError, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "typeOfError" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* iECriticality */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* iE-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* typeOfError */ +}; +asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_Item), + offsetof(struct CriticalityDiagnostics_IE_Item, _asn_ctx), + asn_MAP_CriticalityDiagnostics_IE_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item = { + "CriticalityDiagnostics-IE-Item", + "CriticalityDiagnostics-IE-Item", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_IE_Item_1, + 3, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_IE_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-Item.h b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-Item.h new file mode 100644 index 0000000..3aa9196 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-Item.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CriticalityDiagnostics_IE_Item_H_ +#define _CriticalityDiagnostics_IE_Item_H_ + + +#include + +/* Including external dependencies */ +#include "Criticality.h" +#include "ProtocolIE-ID.h" +#include "TypeOfError.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* CriticalityDiagnostics-IE-Item */ +typedef struct CriticalityDiagnostics_IE_Item { + Criticality_t iECriticality; + ProtocolIE_ID_t iE_ID; + TypeOfError_t typeOfError; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-List.c b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-List.c new file mode 100644 index 0000000..09410ff --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CriticalityDiagnostics-IE-List.h" + +#include "CriticalityDiagnostics-IE-Item.h" +asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 256 } /* (SIZE(1..256)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics_IE_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_IE_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1 = { + sizeof(struct CriticalityDiagnostics_IE_List), + offsetof(struct CriticalityDiagnostics_IE_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List = { + "CriticalityDiagnostics-IE-List", + "CriticalityDiagnostics-IE-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_IE_List_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_IE_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_CriticalityDiagnostics_IE_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_CriticalityDiagnostics_IE_List_1, + 1, /* Single element */ + &asn_SPC_CriticalityDiagnostics_IE_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-List.h b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-List.h new file mode 100644 index 0000000..3bbb58b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics-IE-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CriticalityDiagnostics_IE_List_H_ +#define _CriticalityDiagnostics_IE_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct CriticalityDiagnostics_IE_Item; + +/* CriticalityDiagnostics-IE-List */ +typedef struct CriticalityDiagnostics_IE_List { + A_SEQUENCE_OF(struct CriticalityDiagnostics_IE_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_IE_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_List; +extern asn_SET_OF_specifics_t asn_SPC_CriticalityDiagnostics_IE_List_specs_1; +extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_List_1[1]; +extern asn_per_constraints_t asn_PER_type_CriticalityDiagnostics_IE_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_IE_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics.c b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics.c new file mode 100644 index 0000000..d9b8977 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics.c @@ -0,0 +1,94 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "CriticalityDiagnostics.h" + +#include "RICrequestID.h" +#include "CriticalityDiagnostics-IE-List.h" +static asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_1[] = { + { ATF_POINTER, 5, offsetof(struct CriticalityDiagnostics, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_POINTER, 4, offsetof(struct CriticalityDiagnostics, triggeringMessage), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_TriggeringMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggeringMessage" + }, + { ATF_POINTER, 3, offsetof(struct CriticalityDiagnostics, procedureCriticality), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "procedureCriticality" + }, + { ATF_POINTER, 2, offsetof(struct CriticalityDiagnostics, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_POINTER, 1, offsetof(struct CriticalityDiagnostics, iEsCriticalityDiagnostics), + (ASN_TAG_CLASS_CONTEXT | (4 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_CriticalityDiagnostics_IE_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "iEsCriticalityDiagnostics" + }, +}; +static const int asn_MAP_CriticalityDiagnostics_oms_1[] = { 0, 1, 2, 3, 4 }; +static const ber_tlv_tag_t asn_DEF_CriticalityDiagnostics_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_CriticalityDiagnostics_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* triggeringMessage */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* procedureCriticality */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iEsCriticalityDiagnostics */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_specs_1 = { + sizeof(struct CriticalityDiagnostics), + offsetof(struct CriticalityDiagnostics, _asn_ctx), + asn_MAP_CriticalityDiagnostics_tag2el_1, + 5, /* Count of tags in the map */ + asn_MAP_CriticalityDiagnostics_oms_1, /* Optional members */ + 5, 0, /* Root/Additions */ + 5, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics = { + "CriticalityDiagnostics", + "CriticalityDiagnostics", + &asn_OP_SEQUENCE, + asn_DEF_CriticalityDiagnostics_tags_1, + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + asn_DEF_CriticalityDiagnostics_tags_1, /* Same as above */ + sizeof(asn_DEF_CriticalityDiagnostics_tags_1) + /sizeof(asn_DEF_CriticalityDiagnostics_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_CriticalityDiagnostics_1, + 5, /* Elements count */ + &asn_SPC_CriticalityDiagnostics_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics.h b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics.h new file mode 100644 index 0000000..8c67719 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/CriticalityDiagnostics.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _CriticalityDiagnostics_H_ +#define _CriticalityDiagnostics_H_ + + +#include + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "TriggeringMessage.h" +#include "Criticality.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICrequestID; +struct CriticalityDiagnostics_IE_List; + +/* CriticalityDiagnostics */ +typedef struct CriticalityDiagnostics { + ProcedureCode_t *procedureCode; /* OPTIONAL */ + TriggeringMessage_t *triggeringMessage; /* OPTIONAL */ + Criticality_t *procedureCriticality; /* OPTIONAL */ + struct RICrequestID *ricRequestorID; /* OPTIONAL */ + struct CriticalityDiagnostics_IE_List *iEsCriticalityDiagnostics; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} CriticalityDiagnostics_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics; + +#ifdef __cplusplus +} +#endif + +#endif /* _CriticalityDiagnostics_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2AP-PDU.c b/setup/xapp-bs-connector/asn1c_defs/E2AP-PDU.c new file mode 100644 index 0000000..c14802f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2AP-PDU.c @@ -0,0 +1,75 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2AP-PDU.h" + +#include "InitiatingMessage.h" +#include "SuccessfulOutcome.h" +#include "UnsuccessfulOutcome.h" +static asn_per_constraints_t asn_PER_type_E2AP_PDU_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2AP_PDU_1[] = { + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.initiatingMessage), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_InitiatingMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "initiatingMessage" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.successfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_SuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "successfulOutcome" + }, + { ATF_POINTER, 0, offsetof(struct E2AP_PDU, choice.unsuccessfulOutcome), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_UnsuccessfulOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "unsuccessfulOutcome" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2AP_PDU_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initiatingMessage */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* successfulOutcome */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* unsuccessfulOutcome */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2AP_PDU_specs_1 = { + sizeof(struct E2AP_PDU), + offsetof(struct E2AP_PDU, _asn_ctx), + offsetof(struct E2AP_PDU, present), + sizeof(((struct E2AP_PDU *)0)->present), + asn_MAP_E2AP_PDU_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2AP_PDU = { + "E2AP-PDU", + "E2AP-PDU", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2AP_PDU_constr_1, CHOICE_constraint }, + asn_MBR_E2AP_PDU_1, + 3, /* Elements count */ + &asn_SPC_E2AP_PDU_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2AP-PDU.h b/setup/xapp-bs-connector/asn1c_defs/E2AP-PDU.h new file mode 100644 index 0000000..52a19b1 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2AP-PDU.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2AP_PDU_H_ +#define _E2AP_PDU_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2AP_PDU_PR { + E2AP_PDU_PR_NOTHING, /* No components present */ + E2AP_PDU_PR_initiatingMessage, + E2AP_PDU_PR_successfulOutcome, + E2AP_PDU_PR_unsuccessfulOutcome + /* Extensions may appear below */ + +} E2AP_PDU_PR; + +/* Forward declarations */ +struct InitiatingMessage; +struct SuccessfulOutcome; +struct UnsuccessfulOutcome; + +/* E2AP-PDU */ +typedef struct E2AP_PDU { + E2AP_PDU_PR present; + union E2AP_PDU_u { + struct InitiatingMessage *initiatingMessage; + struct SuccessfulOutcome *successfulOutcome; + struct UnsuccessfulOutcome *unsuccessfulOutcome; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2AP_PDU_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2AP_PDU; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2AP_PDU_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition-Format1.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition-Format1.c new file mode 100644 index 0000000..484e72e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition-Format1.c @@ -0,0 +1,126 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-ActionDefinition-Format1.h" + +#include "RANparameter-Item.h" +static int +memb_ranParameter_List_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* Determine the number of elements */ + size = _A_CSEQUENCE_FROM_VOID(sptr)->count; + + if((size >= 1 && size <= 255)) { + /* Perform validation of the inner elements */ + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_type_ranParameter_List_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ranParameter_List_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 8, 8, 1, 255 } /* (SIZE(1..255)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_ranParameter_List_2[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANparameter_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ranParameter_List_tags_2[] = { + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_ranParameter_List_specs_2 = { + sizeof(struct E2SM_HelloWorld_ActionDefinition_Format1__ranParameter_List), + offsetof(struct E2SM_HelloWorld_ActionDefinition_Format1__ranParameter_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_ranParameter_List_2 = { + "ranParameter-List", + "ranParameter-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_ranParameter_List_tags_2, + sizeof(asn_DEF_ranParameter_List_tags_2) + /sizeof(asn_DEF_ranParameter_List_tags_2[0]) - 1, /* 1 */ + asn_DEF_ranParameter_List_tags_2, /* Same as above */ + sizeof(asn_DEF_ranParameter_List_tags_2) + /sizeof(asn_DEF_ranParameter_List_tags_2[0]), /* 2 */ + { 0, &asn_PER_type_ranParameter_List_constr_2, SEQUENCE_OF_constraint }, + asn_MBR_ranParameter_List_2, + 1, /* Single element */ + &asn_SPC_ranParameter_List_specs_2 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ActionDefinition_Format1_1[] = { + { ATF_POINTER, 1, offsetof(struct E2SM_HelloWorld_ActionDefinition_Format1, ranParameter_List), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + 0, + &asn_DEF_ranParameter_List_2, + 0, + { 0, &asn_PER_memb_ranParameter_List_constr_2, memb_ranParameter_List_constraint_1 }, + 0, 0, /* No default value */ + "ranParameter-List" + }, +}; +static const int asn_MAP_E2SM_HelloWorld_ActionDefinition_Format1_oms_1[] = { 0 }; +static const ber_tlv_tag_t asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_ActionDefinition_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ranParameter-List */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_ActionDefinition_Format1_specs_1 = { + sizeof(struct E2SM_HelloWorld_ActionDefinition_Format1), + offsetof(struct E2SM_HelloWorld_ActionDefinition_Format1, _asn_ctx), + asn_MAP_E2SM_HelloWorld_ActionDefinition_Format1_tag2el_1, + 1, /* Count of tags in the map */ + asn_MAP_E2SM_HelloWorld_ActionDefinition_Format1_oms_1, /* Optional members */ + 1, 0, /* Root/Additions */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1 = { + "E2SM-HelloWorld-ActionDefinition-Format1", + "E2SM-HelloWorld-ActionDefinition-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1, + sizeof(asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_HelloWorld_ActionDefinition_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_ActionDefinition_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition-Format1.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition-Format1.h new file mode 100644 index 0000000..0419ffe --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition-Format1.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_ActionDefinition_Format1_H_ +#define _E2SM_HelloWorld_ActionDefinition_Format1_H_ + + +#include + +/* Including external dependencies */ +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RANparameter_Item; + +/* E2SM-HelloWorld-ActionDefinition-Format1 */ +typedef struct E2SM_HelloWorld_ActionDefinition_Format1 { + struct E2SM_HelloWorld_ActionDefinition_Format1__ranParameter_List { + A_SEQUENCE_OF(struct RANparameter_Item) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } *ranParameter_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_ActionDefinition_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_ActionDefinition_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ActionDefinition_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_ActionDefinition_Format1_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition.c new file mode 100644 index 0000000..668b36e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-ActionDefinition.h" + +#include "E2SM-HelloWorld-ActionDefinition-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_HelloWorld_ActionDefinition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ActionDefinition_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_HelloWorld_ActionDefinition, choice.actionDefinition_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_HelloWorld_ActionDefinition_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "actionDefinition-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_ActionDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* actionDefinition-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_HelloWorld_ActionDefinition_specs_1 = { + sizeof(struct E2SM_HelloWorld_ActionDefinition), + offsetof(struct E2SM_HelloWorld_ActionDefinition, _asn_ctx), + offsetof(struct E2SM_HelloWorld_ActionDefinition, present), + sizeof(((struct E2SM_HelloWorld_ActionDefinition *)0)->present), + asn_MAP_E2SM_HelloWorld_ActionDefinition_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ActionDefinition = { + "E2SM-HelloWorld-ActionDefinition", + "E2SM-HelloWorld-ActionDefinition", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_HelloWorld_ActionDefinition_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_HelloWorld_ActionDefinition_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_ActionDefinition_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition.h new file mode 100644 index 0000000..4a5fc84 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ActionDefinition.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_ActionDefinition_H_ +#define _E2SM_HelloWorld_ActionDefinition_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_HelloWorld_ActionDefinition_PR { + E2SM_HelloWorld_ActionDefinition_PR_NOTHING, /* No components present */ + E2SM_HelloWorld_ActionDefinition_PR_actionDefinition_Format1 + /* Extensions may appear below */ + +} E2SM_HelloWorld_ActionDefinition_PR; + +/* Forward declarations */ +struct E2SM_HelloWorld_ActionDefinition_Format1; + +/* E2SM-HelloWorld-ActionDefinition */ +typedef struct E2SM_HelloWorld_ActionDefinition { + E2SM_HelloWorld_ActionDefinition_PR present; + union E2SM_HelloWorld_ActionDefinition_u { + struct E2SM_HelloWorld_ActionDefinition_Format1 *actionDefinition_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_ActionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ActionDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_ActionDefinition_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader-Format1.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader-Format1.c new file mode 100644 index 0000000..4e3dbe0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader-Format1.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-ControlHeader-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ControlHeader_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_HelloWorld_ControlHeader_Format1, controlHeaderParam), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HW_Header, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "controlHeaderParam" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_ControlHeader_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlHeaderParam */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_ControlHeader_Format1_specs_1 = { + sizeof(struct E2SM_HelloWorld_ControlHeader_Format1), + offsetof(struct E2SM_HelloWorld_ControlHeader_Format1, _asn_ctx), + asn_MAP_E2SM_HelloWorld_ControlHeader_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlHeader_Format1 = { + "E2SM-HelloWorld-ControlHeader-Format1", + "E2SM-HelloWorld-ControlHeader-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1, + sizeof(asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_ControlHeader_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_HelloWorld_ControlHeader_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_ControlHeader_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader-Format1.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader-Format1.h new file mode 100644 index 0000000..f2b5d0a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader-Format1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_ControlHeader_Format1_H_ +#define _E2SM_HelloWorld_ControlHeader_Format1_H_ + + +#include + +/* Including external dependencies */ +#include "HW-Header.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-HelloWorld-ControlHeader-Format1 */ +typedef struct E2SM_HelloWorld_ControlHeader_Format1 { + HW_Header_t controlHeaderParam; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_ControlHeader_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlHeader_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_ControlHeader_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ControlHeader_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_ControlHeader_Format1_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader.c new file mode 100644 index 0000000..86a1c49 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-ControlHeader.h" + +#include "E2SM-HelloWorld-ControlHeader-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_HelloWorld_ControlHeader_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ControlHeader_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_HelloWorld_ControlHeader, choice.controlHeader_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_HelloWorld_ControlHeader_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "controlHeader-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_ControlHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlHeader-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_HelloWorld_ControlHeader_specs_1 = { + sizeof(struct E2SM_HelloWorld_ControlHeader), + offsetof(struct E2SM_HelloWorld_ControlHeader, _asn_ctx), + offsetof(struct E2SM_HelloWorld_ControlHeader, present), + sizeof(((struct E2SM_HelloWorld_ControlHeader *)0)->present), + asn_MAP_E2SM_HelloWorld_ControlHeader_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlHeader = { + "E2SM-HelloWorld-ControlHeader", + "E2SM-HelloWorld-ControlHeader", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_HelloWorld_ControlHeader_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_HelloWorld_ControlHeader_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_ControlHeader_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader.h new file mode 100644 index 0000000..84dbf8b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlHeader.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_ControlHeader_H_ +#define _E2SM_HelloWorld_ControlHeader_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_HelloWorld_ControlHeader_PR { + E2SM_HelloWorld_ControlHeader_PR_NOTHING, /* No components present */ + E2SM_HelloWorld_ControlHeader_PR_controlHeader_Format1 + /* Extensions may appear below */ + +} E2SM_HelloWorld_ControlHeader_PR; + +/* Forward declarations */ +struct E2SM_HelloWorld_ControlHeader_Format1; + +/* E2SM-HelloWorld-ControlHeader */ +typedef struct E2SM_HelloWorld_ControlHeader { + E2SM_HelloWorld_ControlHeader_PR present; + union E2SM_HelloWorld_ControlHeader_u { + struct E2SM_HelloWorld_ControlHeader_Format1 *controlHeader_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_ControlHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_ControlHeader_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage-Format1.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage-Format1.c new file mode 100644 index 0000000..ef07491 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage-Format1.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-ControlMessage-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ControlMessage_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_HelloWorld_ControlMessage_Format1, controlMsgParam), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HW_Message, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "controlMsgParam" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_ControlMessage_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlMsgParam */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_ControlMessage_Format1_specs_1 = { + sizeof(struct E2SM_HelloWorld_ControlMessage_Format1), + offsetof(struct E2SM_HelloWorld_ControlMessage_Format1, _asn_ctx), + asn_MAP_E2SM_HelloWorld_ControlMessage_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlMessage_Format1 = { + "E2SM-HelloWorld-ControlMessage-Format1", + "E2SM-HelloWorld-ControlMessage-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1, + sizeof(asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_ControlMessage_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_HelloWorld_ControlMessage_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_ControlMessage_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage-Format1.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage-Format1.h new file mode 100644 index 0000000..17f8d37 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage-Format1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_ControlMessage_Format1_H_ +#define _E2SM_HelloWorld_ControlMessage_Format1_H_ + + +#include + +/* Including external dependencies */ +#include "HW-Message.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-HelloWorld-ControlMessage-Format1 */ +typedef struct E2SM_HelloWorld_ControlMessage_Format1 { + HW_Message_t controlMsgParam; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_ControlMessage_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlMessage_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_ControlMessage_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ControlMessage_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_ControlMessage_Format1_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage.c new file mode 100644 index 0000000..4ee48f2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-ControlMessage.h" + +#include "E2SM-HelloWorld-ControlMessage-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_HelloWorld_ControlMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_ControlMessage_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_HelloWorld_ControlMessage, choice.controlMessage_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_HelloWorld_ControlMessage_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "controlMessage-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_ControlMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* controlMessage-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_HelloWorld_ControlMessage_specs_1 = { + sizeof(struct E2SM_HelloWorld_ControlMessage), + offsetof(struct E2SM_HelloWorld_ControlMessage, _asn_ctx), + offsetof(struct E2SM_HelloWorld_ControlMessage, present), + sizeof(((struct E2SM_HelloWorld_ControlMessage *)0)->present), + asn_MAP_E2SM_HelloWorld_ControlMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlMessage = { + "E2SM-HelloWorld-ControlMessage", + "E2SM-HelloWorld-ControlMessage", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_HelloWorld_ControlMessage_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_HelloWorld_ControlMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_ControlMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage.h new file mode 100644 index 0000000..62c0c5b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-ControlMessage.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_ControlMessage_H_ +#define _E2SM_HelloWorld_ControlMessage_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_HelloWorld_ControlMessage_PR { + E2SM_HelloWorld_ControlMessage_PR_NOTHING, /* No components present */ + E2SM_HelloWorld_ControlMessage_PR_controlMessage_Format1 + /* Extensions may appear below */ + +} E2SM_HelloWorld_ControlMessage_PR; + +/* Forward declarations */ +struct E2SM_HelloWorld_ControlMessage_Format1; + +/* E2SM-HelloWorld-ControlMessage */ +typedef struct E2SM_HelloWorld_ControlMessage { + E2SM_HelloWorld_ControlMessage_PR present; + union E2SM_HelloWorld_ControlMessage_u { + struct E2SM_HelloWorld_ControlMessage_Format1 *controlMessage_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_ControlMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_ControlMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_ControlMessage_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition-Format1.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition-Format1.c new file mode 100644 index 0000000..c6a9bce --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition-Format1.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-EventTriggerDefinition-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_EventTriggerDefinition_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_HelloWorld_EventTriggerDefinition_Format1, triggerNature), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HW_TriggerNature, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "triggerNature" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_EventTriggerDefinition_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* triggerNature */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_EventTriggerDefinition_Format1_specs_1 = { + sizeof(struct E2SM_HelloWorld_EventTriggerDefinition_Format1), + offsetof(struct E2SM_HelloWorld_EventTriggerDefinition_Format1, _asn_ctx), + asn_MAP_E2SM_HelloWorld_EventTriggerDefinition_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1 = { + "E2SM-HelloWorld-EventTriggerDefinition-Format1", + "E2SM-HelloWorld-EventTriggerDefinition-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1, + sizeof(asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_HelloWorld_EventTriggerDefinition_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_EventTriggerDefinition_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition-Format1.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition-Format1.h new file mode 100644 index 0000000..41346b4 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition-Format1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_EventTriggerDefinition_Format1_H_ +#define _E2SM_HelloWorld_EventTriggerDefinition_Format1_H_ + + +#include + +/* Including external dependencies */ +#include "HW-TriggerNature.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-HelloWorld-EventTriggerDefinition-Format1 */ +typedef struct E2SM_HelloWorld_EventTriggerDefinition_Format1 { + HW_TriggerNature_t triggerNature; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_EventTriggerDefinition_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_EventTriggerDefinition_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_EventTriggerDefinition_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_EventTriggerDefinition_Format1_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition.c new file mode 100644 index 0000000..b9e6d97 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-EventTriggerDefinition.h" + +#include "E2SM-HelloWorld-EventTriggerDefinition-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_HelloWorld_EventTriggerDefinition_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_EventTriggerDefinition_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_HelloWorld_EventTriggerDefinition, choice.eventDefinition_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_HelloWorld_EventTriggerDefinition_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eventDefinition-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_EventTriggerDefinition_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eventDefinition-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_HelloWorld_EventTriggerDefinition_specs_1 = { + sizeof(struct E2SM_HelloWorld_EventTriggerDefinition), + offsetof(struct E2SM_HelloWorld_EventTriggerDefinition, _asn_ctx), + offsetof(struct E2SM_HelloWorld_EventTriggerDefinition, present), + sizeof(((struct E2SM_HelloWorld_EventTriggerDefinition *)0)->present), + asn_MAP_E2SM_HelloWorld_EventTriggerDefinition_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_EventTriggerDefinition = { + "E2SM-HelloWorld-EventTriggerDefinition", + "E2SM-HelloWorld-EventTriggerDefinition", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_HelloWorld_EventTriggerDefinition_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_HelloWorld_EventTriggerDefinition_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_EventTriggerDefinition_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition.h new file mode 100644 index 0000000..007f0e8 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-EventTriggerDefinition.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_EventTriggerDefinition_H_ +#define _E2SM_HelloWorld_EventTriggerDefinition_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_HelloWorld_EventTriggerDefinition_PR { + E2SM_HelloWorld_EventTriggerDefinition_PR_NOTHING, /* No components present */ + E2SM_HelloWorld_EventTriggerDefinition_PR_eventDefinition_Format1 + /* Extensions may appear below */ + +} E2SM_HelloWorld_EventTriggerDefinition_PR; + +/* Forward declarations */ +struct E2SM_HelloWorld_EventTriggerDefinition_Format1; + +/* E2SM-HelloWorld-EventTriggerDefinition */ +typedef struct E2SM_HelloWorld_EventTriggerDefinition { + E2SM_HelloWorld_EventTriggerDefinition_PR present; + union E2SM_HelloWorld_EventTriggerDefinition_u { + struct E2SM_HelloWorld_EventTriggerDefinition_Format1 *eventDefinition_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_EventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_EventTriggerDefinition; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_EventTriggerDefinition_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader-Format1.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader-Format1.c new file mode 100644 index 0000000..2d709fd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader-Format1.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-IndicationHeader-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_IndicationHeader_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_HelloWorld_IndicationHeader_Format1, indicationHeaderParam), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HW_Header, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indicationHeaderParam" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_IndicationHeader_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeaderParam */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_IndicationHeader_Format1_specs_1 = { + sizeof(struct E2SM_HelloWorld_IndicationHeader_Format1), + offsetof(struct E2SM_HelloWorld_IndicationHeader_Format1, _asn_ctx), + asn_MAP_E2SM_HelloWorld_IndicationHeader_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1 = { + "E2SM-HelloWorld-IndicationHeader-Format1", + "E2SM-HelloWorld-IndicationHeader-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1, + sizeof(asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_HelloWorld_IndicationHeader_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_IndicationHeader_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader-Format1.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader-Format1.h new file mode 100644 index 0000000..6cecbe0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader-Format1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_IndicationHeader_Format1_H_ +#define _E2SM_HelloWorld_IndicationHeader_Format1_H_ + + +#include + +/* Including external dependencies */ +#include "HW-Header.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-HelloWorld-IndicationHeader-Format1 */ +typedef struct E2SM_HelloWorld_IndicationHeader_Format1 { + HW_Header_t indicationHeaderParam; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_IndicationHeader_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_IndicationHeader_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_IndicationHeader_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_IndicationHeader_Format1_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader.c new file mode 100644 index 0000000..eaa21dd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-IndicationHeader.h" + +#include "E2SM-HelloWorld-IndicationHeader-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_HelloWorld_IndicationHeader_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_IndicationHeader_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_HelloWorld_IndicationHeader, choice.indicationHeader_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_HelloWorld_IndicationHeader_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indicationHeader-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_IndicationHeader_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationHeader-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_HelloWorld_IndicationHeader_specs_1 = { + sizeof(struct E2SM_HelloWorld_IndicationHeader), + offsetof(struct E2SM_HelloWorld_IndicationHeader, _asn_ctx), + offsetof(struct E2SM_HelloWorld_IndicationHeader, present), + sizeof(((struct E2SM_HelloWorld_IndicationHeader *)0)->present), + asn_MAP_E2SM_HelloWorld_IndicationHeader_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationHeader = { + "E2SM-HelloWorld-IndicationHeader", + "E2SM-HelloWorld-IndicationHeader", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_HelloWorld_IndicationHeader_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_HelloWorld_IndicationHeader_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_IndicationHeader_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader.h new file mode 100644 index 0000000..d1ba457 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationHeader.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_IndicationHeader_H_ +#define _E2SM_HelloWorld_IndicationHeader_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_HelloWorld_IndicationHeader_PR { + E2SM_HelloWorld_IndicationHeader_PR_NOTHING, /* No components present */ + E2SM_HelloWorld_IndicationHeader_PR_indicationHeader_Format1 + /* Extensions may appear below */ + +} E2SM_HelloWorld_IndicationHeader_PR; + +/* Forward declarations */ +struct E2SM_HelloWorld_IndicationHeader_Format1; + +/* E2SM-HelloWorld-IndicationHeader */ +typedef struct E2SM_HelloWorld_IndicationHeader { + E2SM_HelloWorld_IndicationHeader_PR present; + union E2SM_HelloWorld_IndicationHeader_u { + struct E2SM_HelloWorld_IndicationHeader_Format1 *indicationHeader_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_IndicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationHeader; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_IndicationHeader_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage-Format1.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage-Format1.c new file mode 100644 index 0000000..6e883a1 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage-Format1.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-IndicationMessage-Format1.h" + +asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_IndicationMessage_Format1_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2SM_HelloWorld_IndicationMessage_Format1, indicationMsgParam), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_HW_Message, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indicationMsgParam" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_IndicationMessage_Format1_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMsgParam */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_IndicationMessage_Format1_specs_1 = { + sizeof(struct E2SM_HelloWorld_IndicationMessage_Format1), + offsetof(struct E2SM_HelloWorld_IndicationMessage_Format1, _asn_ctx), + asn_MAP_E2SM_HelloWorld_IndicationMessage_Format1_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1 = { + "E2SM-HelloWorld-IndicationMessage-Format1", + "E2SM-HelloWorld-IndicationMessage-Format1", + &asn_OP_SEQUENCE, + asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1, + sizeof(asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1[0]), /* 1 */ + asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1, /* Same as above */ + sizeof(asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1) + /sizeof(asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2SM_HelloWorld_IndicationMessage_Format1_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_IndicationMessage_Format1_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage-Format1.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage-Format1.h new file mode 100644 index 0000000..817e0cb --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage-Format1.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_IndicationMessage_Format1_H_ +#define _E2SM_HelloWorld_IndicationMessage_Format1_H_ + + +#include + +/* Including external dependencies */ +#include "HW-Message.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2SM-HelloWorld-IndicationMessage-Format1 */ +typedef struct E2SM_HelloWorld_IndicationMessage_Format1 { + HW_Message_t indicationMsgParam; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_IndicationMessage_Format1_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1; +extern asn_SEQUENCE_specifics_t asn_SPC_E2SM_HelloWorld_IndicationMessage_Format1_specs_1; +extern asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_IndicationMessage_Format1_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_IndicationMessage_Format1_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage.c b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage.c new file mode 100644 index 0000000..dfdfb4a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage.c @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2SM-HelloWorld-IndicationMessage.h" + +#include "E2SM-HelloWorld-IndicationMessage-Format1.h" +static asn_per_constraints_t asn_PER_type_E2SM_HelloWorld_IndicationMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_E2SM_HelloWorld_IndicationMessage_1[] = { + { ATF_POINTER, 0, offsetof(struct E2SM_HelloWorld_IndicationMessage, choice.indicationMessage_Format1), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_E2SM_HelloWorld_IndicationMessage_Format1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "indicationMessage-Format1" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_E2SM_HelloWorld_IndicationMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* indicationMessage-Format1 */ +}; +static asn_CHOICE_specifics_t asn_SPC_E2SM_HelloWorld_IndicationMessage_specs_1 = { + sizeof(struct E2SM_HelloWorld_IndicationMessage), + offsetof(struct E2SM_HelloWorld_IndicationMessage, _asn_ctx), + offsetof(struct E2SM_HelloWorld_IndicationMessage, present), + sizeof(((struct E2SM_HelloWorld_IndicationMessage *)0)->present), + asn_MAP_E2SM_HelloWorld_IndicationMessage_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationMessage = { + "E2SM-HelloWorld-IndicationMessage", + "E2SM-HelloWorld-IndicationMessage", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_E2SM_HelloWorld_IndicationMessage_constr_1, CHOICE_constraint }, + asn_MBR_E2SM_HelloWorld_IndicationMessage_1, + 1, /* Elements count */ + &asn_SPC_E2SM_HelloWorld_IndicationMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage.h b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage.h new file mode 100644 index 0000000..cd3e8b3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2SM-HelloWorld-IndicationMessage.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2SM_HelloWorld_IndicationMessage_H_ +#define _E2SM_HelloWorld_IndicationMessage_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum E2SM_HelloWorld_IndicationMessage_PR { + E2SM_HelloWorld_IndicationMessage_PR_NOTHING, /* No components present */ + E2SM_HelloWorld_IndicationMessage_PR_indicationMessage_Format1 + /* Extensions may appear below */ + +} E2SM_HelloWorld_IndicationMessage_PR; + +/* Forward declarations */ +struct E2SM_HelloWorld_IndicationMessage_Format1; + +/* E2SM-HelloWorld-IndicationMessage */ +typedef struct E2SM_HelloWorld_IndicationMessage { + E2SM_HelloWorld_IndicationMessage_PR present; + union E2SM_HelloWorld_IndicationMessage_u { + struct E2SM_HelloWorld_IndicationMessage_Format1 *indicationMessage_Format1; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2SM_HelloWorld_IndicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2SM_HelloWorld_IndicationMessage; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2SM_HelloWorld_IndicationMessage_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2setupFailure.c b/setup/xapp-bs-connector/asn1c_defs/E2setupFailure.c new file mode 100644 index 0000000..0fc15cd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2setupFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2setupFailure.h" + +asn_TYPE_member_t asn_MBR_E2setupFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P13, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1 = { + sizeof(struct E2setupFailure), + offsetof(struct E2setupFailure, _asn_ctx), + asn_MAP_E2setupFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupFailure = { + "E2setupFailure", + "E2setupFailure", + &asn_OP_SEQUENCE, + asn_DEF_E2setupFailure_tags_1, + sizeof(asn_DEF_E2setupFailure_tags_1) + /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ + asn_DEF_E2setupFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupFailure_tags_1) + /sizeof(asn_DEF_E2setupFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupFailure_1, + 1, /* Elements count */ + &asn_SPC_E2setupFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2setupFailure.h b/setup/xapp-bs-connector/asn1c_defs/E2setupFailure.h new file mode 100644 index 0000000..c0f0a80 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2setupFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2setupFailure_H_ +#define _E2setupFailure_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupFailure */ +typedef struct E2setupFailure { + ProtocolIE_Container_1412P13_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupFailure_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2setupRequest.c b/setup/xapp-bs-connector/asn1c_defs/E2setupRequest.c new file mode 100644 index 0000000..0f5a3a3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2setupRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2setupRequest.h" + +asn_TYPE_member_t asn_MBR_E2setupRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P11, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1 = { + sizeof(struct E2setupRequest), + offsetof(struct E2setupRequest, _asn_ctx), + asn_MAP_E2setupRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupRequest = { + "E2setupRequest", + "E2setupRequest", + &asn_OP_SEQUENCE, + asn_DEF_E2setupRequest_tags_1, + sizeof(asn_DEF_E2setupRequest_tags_1) + /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ + asn_DEF_E2setupRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupRequest_tags_1) + /sizeof(asn_DEF_E2setupRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupRequest_1, + 1, /* Elements count */ + &asn_SPC_E2setupRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2setupRequest.h b/setup/xapp-bs-connector/asn1c_defs/E2setupRequest.h new file mode 100644 index 0000000..60ac19d --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2setupRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2setupRequest_H_ +#define _E2setupRequest_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupRequest */ +typedef struct E2setupRequest { + ProtocolIE_Container_1412P11_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupRequest_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/E2setupResponse.c b/setup/xapp-bs-connector/asn1c_defs/E2setupResponse.c new file mode 100644 index 0000000..04c0ea6 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2setupResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "E2setupResponse.h" + +asn_TYPE_member_t asn_MBR_E2setupResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P12, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1 = { + sizeof(struct E2setupResponse), + offsetof(struct E2setupResponse, _asn_ctx), + asn_MAP_E2setupResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupResponse = { + "E2setupResponse", + "E2setupResponse", + &asn_OP_SEQUENCE, + asn_DEF_E2setupResponse_tags_1, + sizeof(asn_DEF_E2setupResponse_tags_1) + /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ + asn_DEF_E2setupResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_E2setupResponse_tags_1) + /sizeof(asn_DEF_E2setupResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupResponse_1, + 1, /* Elements count */ + &asn_SPC_E2setupResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/E2setupResponse.h b/setup/xapp-bs-connector/asn1c_defs/E2setupResponse.h new file mode 100644 index 0000000..3feb668 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/E2setupResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _E2setupResponse_H_ +#define _E2setupResponse_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* E2setupResponse */ +typedef struct E2setupResponse { + ProtocolIE_Container_1412P12_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_E2setupResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_E2setupResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _E2setupResponse_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ENB-ID-Choice.c b/setup/xapp-bs-connector/asn1c_defs/ENB-ID-Choice.c new file mode 100644 index 0000000..014dbeb --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ENB-ID-Choice.c @@ -0,0 +1,180 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ENB-ID-Choice.h" + +static int +memb_enb_ID_macro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_enb_ID_shortmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_enb_ID_longmacro_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_enb_ID_macro_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_enb_ID_shortmacro_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_enb_ID_longmacro_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_macro), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enb_ID_macro_constr_2, memb_enb_ID_macro_constraint_1 }, + 0, 0, /* No default value */ + "enb-ID-macro" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_shortmacro), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enb_ID_shortmacro_constr_3, memb_enb_ID_shortmacro_constraint_1 }, + 0, 0, /* No default value */ + "enb-ID-shortmacro" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID_Choice, choice.enb_ID_longmacro), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_enb_ID_longmacro_constr_4, memb_enb_ID_longmacro_constraint_1 }, + 0, 0, /* No default value */ + "enb-ID-longmacro" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enb-ID-macro */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* enb-ID-shortmacro */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* enb-ID-longmacro */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1 = { + sizeof(struct ENB_ID_Choice), + offsetof(struct ENB_ID_Choice, _asn_ctx), + offsetof(struct ENB_ID_Choice, present), + sizeof(((struct ENB_ID_Choice *)0)->present), + asn_MAP_ENB_ID_Choice_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, + 3 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice = { + "ENB-ID-Choice", + "ENB-ID-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENB_ID_Choice_constr_1, CHOICE_constraint }, + asn_MBR_ENB_ID_Choice_1, + 3, /* Elements count */ + &asn_SPC_ENB_ID_Choice_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ENB-ID-Choice.h b/setup/xapp-bs-connector/asn1c_defs/ENB-ID-Choice.h new file mode 100644 index 0000000..0fd9d31 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ENB-ID-Choice.h @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ENB_ID_Choice_H_ +#define _ENB_ID_Choice_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_Choice_PR { + ENB_ID_Choice_PR_NOTHING, /* No components present */ + ENB_ID_Choice_PR_enb_ID_macro, + ENB_ID_Choice_PR_enb_ID_shortmacro, + ENB_ID_Choice_PR_enb_ID_longmacro + /* Extensions may appear below */ + +} ENB_ID_Choice_PR; + +/* ENB-ID-Choice */ +typedef struct ENB_ID_Choice { + ENB_ID_Choice_PR present; + union ENB_ID_Choice_u { + BIT_STRING_t enb_ID_macro; + BIT_STRING_t enb_ID_shortmacro; + BIT_STRING_t enb_ID_longmacro; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID_Choice; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_Choice_1[3]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_Choice_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ENB-ID.c b/setup/xapp-bs-connector/asn1c_defs/ENB-ID.c new file mode 100644 index 0000000..f1b3faf --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ENB-ID.c @@ -0,0 +1,226 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ENB-ID.h" + +static int +memb_macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_home_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 28)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_short_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 18)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_long_Macro_eNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 21)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_macro_eNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_home_eNB_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 28, 28 } /* (SIZE(28..28)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_short_Macro_eNB_ID_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 18, 18 } /* (SIZE(18..18)) */, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_long_Macro_eNB_ID_constr_6 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 21, 21 } /* (SIZE(21..21)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_macro_eNB_ID_constr_2, memb_macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.home_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_home_eNB_ID_constr_3, memb_home_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "home-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.short_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_short_Macro_eNB_ID_constr_5, memb_short_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "short-Macro-eNB-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ENB_ID, choice.long_Macro_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_long_Macro_eNB_ID_constr_6, memb_long_Macro_eNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "long-Macro-eNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* home-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* short-Macro-eNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* long-Macro-eNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1 = { + sizeof(struct ENB_ID), + offsetof(struct ENB_ID, _asn_ctx), + offsetof(struct ENB_ID, present), + sizeof(((struct ENB_ID *)0)->present), + asn_MAP_ENB_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 2 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENB_ID = { + "ENB-ID", + "ENB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENB_ID_constr_1, CHOICE_constraint }, + asn_MBR_ENB_ID_1, + 4, /* Elements count */ + &asn_SPC_ENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ENB-ID.h b/setup/xapp-bs-connector/asn1c_defs/ENB-ID.h new file mode 100644 index 0000000..3f7d554 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ENB-ID.h @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ENB_ID_H_ +#define _ENB_ID_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENB_ID_PR { + ENB_ID_PR_NOTHING, /* No components present */ + ENB_ID_PR_macro_eNB_ID, + ENB_ID_PR_home_eNB_ID, + /* Extensions may appear below */ + ENB_ID_PR_short_Macro_eNB_ID, + ENB_ID_PR_long_Macro_eNB_ID +} ENB_ID_PR; + +/* ENB-ID */ +typedef struct ENB_ID { + ENB_ID_PR present; + union ENB_ID_u { + BIT_STRING_t macro_eNB_ID; + BIT_STRING_t home_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + BIT_STRING_t short_Macro_eNB_ID; + BIT_STRING_t long_Macro_eNB_ID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENB_ID_1[4]; +extern asn_per_constraints_t asn_PER_type_ENB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ENGNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/ENGNB-ID.c new file mode 100644 index 0000000..635de20 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ENGNB-ID.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ENGNB-ID.h" + +static int +memb_gNB_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_gNB_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ENGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ENGNB_ID, choice.gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_gNB_ID_constr_2, memb_gNB_ID_constraint_1 }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_ENGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gNB-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1 = { + sizeof(struct ENGNB_ID), + offsetof(struct ENGNB_ID, _asn_ctx), + offsetof(struct ENGNB_ID, present), + sizeof(((struct ENGNB_ID *)0)->present), + asn_MAP_ENGNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_ENGNB_ID = { + "ENGNB-ID", + "ENGNB-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_ENGNB_ID_constr_1, CHOICE_constraint }, + asn_MBR_ENGNB_ID_1, + 1, /* Elements count */ + &asn_SPC_ENGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ENGNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/ENGNB-ID.h new file mode 100644 index 0000000..fae9914 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ENGNB-ID.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ENGNB_ID_H_ +#define _ENGNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum ENGNB_ID_PR { + ENGNB_ID_PR_NOTHING, /* No components present */ + ENGNB_ID_PR_gNB_ID + /* Extensions may appear below */ + +} ENGNB_ID_PR; + +/* ENGNB-ID */ +typedef struct ENGNB_ID { + ENGNB_ID_PR present; + union ENGNB_ID_u { + BIT_STRING_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ENGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ENGNB_ID; +extern asn_CHOICE_specifics_t asn_SPC_ENGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_ENGNB_ID_1[1]; +extern asn_per_constraints_t asn_PER_type_ENGNB_ID_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _ENGNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ErrorIndication.c b/setup/xapp-bs-connector/asn1c_defs/ErrorIndication.c new file mode 100644 index 0000000..5225be3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ErrorIndication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ErrorIndication.h" + +asn_TYPE_member_t asn_MBR_ErrorIndication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P10, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1 = { + sizeof(struct ErrorIndication), + offsetof(struct ErrorIndication, _asn_ctx), + asn_MAP_ErrorIndication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication = { + "ErrorIndication", + "ErrorIndication", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_tags_1, + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + asn_DEF_ErrorIndication_tags_1, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_tags_1) + /sizeof(asn_DEF_ErrorIndication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_1, + 1, /* Elements count */ + &asn_SPC_ErrorIndication_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ErrorIndication.h b/setup/xapp-bs-connector/asn1c_defs/ErrorIndication.h new file mode 100644 index 0000000..a3db103 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ErrorIndication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ErrorIndication_H_ +#define _ErrorIndication_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ErrorIndication */ +typedef struct ErrorIndication { + ProtocolIE_Container_1412P10_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_specs_1; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ErrorIndication_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GNB-CU-UP-ID.c b/setup/xapp-bs-connector/asn1c_defs/GNB-CU-UP-ID.c new file mode 100644 index 0000000..7fccd5d --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GNB-CU-UP-ID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GNB-CU-UP-ID.h" + +int +GNB_CU_UP_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 68719476735)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GNB_CU_UP_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID = { + "GNB-CU-UP-ID", + "GNB-CU-UP-ID", + &asn_OP_INTEGER, + asn_DEF_GNB_CU_UP_ID_tags_1, + sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + asn_DEF_GNB_CU_UP_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GNB_CU_UP_ID_tags_1) + /sizeof(asn_DEF_GNB_CU_UP_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GNB_CU_UP_ID_constr_1, GNB_CU_UP_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GNB-CU-UP-ID.h b/setup/xapp-bs-connector/asn1c_defs/GNB-CU-UP-ID.h new file mode 100644 index 0000000..231a64e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GNB-CU-UP-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GNB_CU_UP_ID_H_ +#define _GNB_CU_UP_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNB-CU-UP-ID */ +typedef INTEGER_t GNB_CU_UP_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNB_CU_UP_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNB_CU_UP_ID; +asn_struct_free_f GNB_CU_UP_ID_free; +asn_struct_print_f GNB_CU_UP_ID_print; +asn_constr_check_f GNB_CU_UP_ID_constraint; +ber_type_decoder_f GNB_CU_UP_ID_decode_ber; +der_type_encoder_f GNB_CU_UP_ID_encode_der; +xer_type_decoder_f GNB_CU_UP_ID_decode_xer; +xer_type_encoder_f GNB_CU_UP_ID_encode_xer; +per_type_decoder_f GNB_CU_UP_ID_decode_uper; +per_type_encoder_f GNB_CU_UP_ID_encode_uper; +per_type_decoder_f GNB_CU_UP_ID_decode_aper; +per_type_encoder_f GNB_CU_UP_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_CU_UP_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GNB-DU-ID.c b/setup/xapp-bs-connector/asn1c_defs/GNB-DU-ID.c new file mode 100644 index 0000000..76534e9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GNB-DU-ID.c @@ -0,0 +1,67 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GNB-DU-ID.h" + +int +GNB_DU_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(asn_INTEGER2long(st, &value)) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value too large (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if((value >= 0 && value <= 68719476735)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using INTEGER, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 36, -1, 0, 68719476735 } /* (0..68719476735) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_GNB_DU_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID = { + "GNB-DU-ID", + "GNB-DU-ID", + &asn_OP_INTEGER, + asn_DEF_GNB_DU_ID_tags_1, + sizeof(asn_DEF_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ + asn_DEF_GNB_DU_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GNB_DU_ID_tags_1) + /sizeof(asn_DEF_GNB_DU_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_GNB_DU_ID_constr_1, GNB_DU_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GNB-DU-ID.h b/setup/xapp-bs-connector/asn1c_defs/GNB-DU-ID.h new file mode 100644 index 0000000..29b510c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GNB-DU-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GNB_DU_ID_H_ +#define _GNB_DU_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GNB-DU-ID */ +typedef INTEGER_t GNB_DU_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_GNB_DU_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_GNB_DU_ID; +asn_struct_free_f GNB_DU_ID_free; +asn_struct_print_f GNB_DU_ID_print; +asn_constr_check_f GNB_DU_ID_constraint; +ber_type_decoder_f GNB_DU_ID_decode_ber; +der_type_encoder_f GNB_DU_ID_encode_der; +xer_type_decoder_f GNB_DU_ID_decode_xer; +xer_type_encoder_f GNB_DU_ID_encode_xer; +per_type_decoder_f GNB_DU_ID_decode_uper; +per_type_encoder_f GNB_DU_ID_encode_uper; +per_type_decoder_f GNB_DU_ID_decode_aper; +per_type_encoder_f GNB_DU_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_DU_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GNB-ID-Choice.c b/setup/xapp-bs-connector/asn1c_defs/GNB-ID-Choice.c new file mode 100644 index 0000000..538454e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GNB-ID-Choice.c @@ -0,0 +1,88 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GNB-ID-Choice.h" + +static int +memb_gnb_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size >= 22 && size <= 32)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_gnb_ID_constr_2 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 22, 32 } /* (SIZE(22..32)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 0, 0, 0, 0 } /* (0..0,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GNB_ID_Choice, choice.gnb_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_gnb_ID_constr_2, memb_gnb_ID_constraint_1 }, + 0, 0, /* No default value */ + "gnb-ID" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GNB_ID_Choice_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* gnb-ID */ +}; +asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1 = { + sizeof(struct GNB_ID_Choice), + offsetof(struct GNB_ID_Choice, _asn_ctx), + offsetof(struct GNB_ID_Choice, present), + sizeof(((struct GNB_ID_Choice *)0)->present), + asn_MAP_GNB_ID_Choice_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, + 1 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice = { + "GNB-ID-Choice", + "GNB-ID-Choice", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_GNB_ID_Choice_constr_1, CHOICE_constraint }, + asn_MBR_GNB_ID_Choice_1, + 1, /* Elements count */ + &asn_SPC_GNB_ID_Choice_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GNB-ID-Choice.h b/setup/xapp-bs-connector/asn1c_defs/GNB-ID-Choice.h new file mode 100644 index 0000000..c51b572 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GNB-ID-Choice.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GNB_ID_Choice_H_ +#define _GNB_ID_Choice_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GNB_ID_Choice_PR { + GNB_ID_Choice_PR_NOTHING, /* No components present */ + GNB_ID_Choice_PR_gnb_ID + /* Extensions may appear below */ + +} GNB_ID_Choice_PR; + +/* GNB-ID-Choice */ +typedef struct GNB_ID_Choice { + GNB_ID_Choice_PR present; + union GNB_ID_Choice_u { + BIT_STRING_t gnb_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GNB_ID_Choice_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GNB_ID_Choice; +extern asn_CHOICE_specifics_t asn_SPC_GNB_ID_Choice_specs_1; +extern asn_TYPE_member_t asn_MBR_GNB_ID_Choice_1[1]; +extern asn_per_constraints_t asn_PER_type_GNB_ID_Choice_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _GNB_ID_Choice_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ID.c new file mode 100644 index 0000000..a0c6820 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ID.c @@ -0,0 +1,86 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalE2node-ID.h" + +#include "GlobalE2node-gNB-ID.h" +#include "GlobalE2node-en-gNB-ID.h" +#include "GlobalE2node-ng-eNB-ID.h" +#include "GlobalE2node-eNB-ID.h" +static asn_per_constraints_t asn_PER_type_GlobalE2node_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 3 } /* (0..3,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_GlobalE2node_ID_1[] = { + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.gNB), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_gNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.en_gNB), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_en_gNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "en-gNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.ng_eNB), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_ng_eNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ng-eNB" + }, + { ATF_POINTER, 0, offsetof(struct GlobalE2node_ID, choice.eNB), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalE2node_eNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* eNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_GlobalE2node_ID_specs_1 = { + sizeof(struct GlobalE2node_ID), + offsetof(struct GlobalE2node_ID, _asn_ctx), + offsetof(struct GlobalE2node_ID, present), + sizeof(((struct GlobalE2node_ID *)0)->present), + asn_MAP_GlobalE2node_ID_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, + 4 /* Extensions start */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID = { + "GlobalE2node-ID", + "GlobalE2node-ID", + &asn_OP_CHOICE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, &asn_PER_type_GlobalE2node_ID_constr_1, CHOICE_constraint }, + asn_MBR_GlobalE2node_ID_1, + 4, /* Elements count */ + &asn_SPC_GlobalE2node_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ID.h new file mode 100644 index 0000000..7868eb7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ID.h @@ -0,0 +1,64 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalE2node_ID_H_ +#define _GlobalE2node_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum GlobalE2node_ID_PR { + GlobalE2node_ID_PR_NOTHING, /* No components present */ + GlobalE2node_ID_PR_gNB, + GlobalE2node_ID_PR_en_gNB, + GlobalE2node_ID_PR_ng_eNB, + GlobalE2node_ID_PR_eNB + /* Extensions may appear below */ + +} GlobalE2node_ID_PR; + +/* Forward declarations */ +struct GlobalE2node_gNB_ID; +struct GlobalE2node_en_gNB_ID; +struct GlobalE2node_ng_eNB_ID; +struct GlobalE2node_eNB_ID; + +/* GlobalE2node-ID */ +typedef struct GlobalE2node_ID { + GlobalE2node_ID_PR present; + union GlobalE2node_ID_u { + struct GlobalE2node_gNB_ID *gNB; + struct GlobalE2node_en_gNB_ID *en_gNB; + struct GlobalE2node_ng_eNB_ID *ng_eNB; + struct GlobalE2node_eNB_ID *eNB; + /* + * This type is extensible, + * possible extensions are below. + */ + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ID; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-eNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-eNB-ID.c new file mode 100644 index 0000000..14513f5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-eNB-ID.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalE2node-eNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_eNB_ID, global_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_eNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_eNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1 = { + sizeof(struct GlobalE2node_eNB_ID), + offsetof(struct GlobalE2node_eNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_eNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID = { + "GlobalE2node-eNB-ID", + "GlobalE2node-eNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_eNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_eNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_eNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_eNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_eNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-eNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-eNB-ID.h new file mode 100644 index 0000000..779350e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-eNB-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalE2node_eNB_ID_H_ +#define _GlobalE2node_eNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "GlobalENB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-eNB-ID */ +typedef struct GlobalE2node_eNB_ID { + GlobalENB_ID_t global_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_eNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_eNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_eNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_eNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_eNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-en-gNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-en-gNB-ID.c new file mode 100644 index 0000000..c0b3768 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-en-gNB-ID.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalE2node-en-gNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_en_gNB_ID, global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalenGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_en_gNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1 = { + sizeof(struct GlobalE2node_en_gNB_ID), + offsetof(struct GlobalE2node_en_gNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_en_gNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID = { + "GlobalE2node-en-gNB-ID", + "GlobalE2node-en-gNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_en_gNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_en_gNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_en_gNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_en_gNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_en_gNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-en-gNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-en-gNB-ID.h new file mode 100644 index 0000000..19e5500 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-en-gNB-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalE2node_en_gNB_ID_H_ +#define _GlobalE2node_en_gNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "GlobalenGNB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-en-gNB-ID */ +typedef struct GlobalE2node_en_gNB_ID { + GlobalenGNB_ID_t global_gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_en_gNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_en_gNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_en_gNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_en_gNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_en_gNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-gNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-gNB-ID.c new file mode 100644 index 0000000..518e0f3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-gNB-ID.c @@ -0,0 +1,72 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalE2node-gNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_gNB_ID, global_gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalgNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-gNB-ID" + }, + { ATF_POINTER, 2, offsetof(struct GlobalE2node_gNB_ID, gNB_CU_UP_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_CU_UP_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-CU-UP-ID" + }, + { ATF_POINTER, 1, offsetof(struct GlobalE2node_gNB_ID, gNB_DU_ID), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GNB_DU_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-DU-ID" + }, +}; +static const int asn_MAP_GlobalE2node_gNB_ID_oms_1[] = { 1, 2 }; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_gNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_gNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* global-gNB-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* gNB-CU-UP-ID */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gNB-DU-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1 = { + sizeof(struct GlobalE2node_gNB_ID), + offsetof(struct GlobalE2node_gNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_gNB_ID_tag2el_1, + 3, /* Count of tags in the map */ + asn_MAP_GlobalE2node_gNB_ID_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID = { + "GlobalE2node-gNB-ID", + "GlobalE2node-gNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_gNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_gNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_gNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_gNB_ID_1, + 3, /* Elements count */ + &asn_SPC_GlobalE2node_gNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-gNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-gNB-ID.h new file mode 100644 index 0000000..f31f72b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-gNB-ID.h @@ -0,0 +1,48 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalE2node_gNB_ID_H_ +#define _GlobalE2node_gNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "GlobalgNB-ID.h" +#include "GNB-CU-UP-ID.h" +#include "GNB-DU-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-gNB-ID */ +typedef struct GlobalE2node_gNB_ID { + GlobalgNB_ID_t global_gNB_ID; + GNB_CU_UP_ID_t *gNB_CU_UP_ID; /* OPTIONAL */ + GNB_DU_ID_t *gNB_DU_ID; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_gNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_gNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_gNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_gNB_ID_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_gNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ng-eNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ng-eNB-ID.c new file mode 100644 index 0000000..58b345f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ng-eNB-ID.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalE2node-ng-eNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalE2node_ng_eNB_ID, global_ng_eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_GlobalngeNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "global-ng-eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* global-ng-eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 = { + sizeof(struct GlobalE2node_ng_eNB_ID), + offsetof(struct GlobalE2node_ng_eNB_ID, _asn_ctx), + asn_MAP_GlobalE2node_ng_eNB_ID_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID = { + "GlobalE2node-ng-eNB-ID", + "GlobalE2node-ng-eNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, + sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalE2node_ng_eNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1) + /sizeof(asn_DEF_GlobalE2node_ng_eNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalE2node_ng_eNB_ID_1, + 1, /* Elements count */ + &asn_SPC_GlobalE2node_ng_eNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ng-eNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ng-eNB-ID.h new file mode 100644 index 0000000..bac3c1a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalE2node-ng-eNB-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalE2node_ng_eNB_ID_H_ +#define _GlobalE2node_ng_eNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "GlobalngeNB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalE2node-ng-eNB-ID */ +typedef struct GlobalE2node_ng_eNB_ID { + GlobalngeNB_ID_t global_ng_eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalE2node_ng_eNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalE2node_ng_eNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalE2node_ng_eNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalE2node_ng_eNB_ID_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalE2node_ng_eNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalENB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalENB-ID.c new file mode 100644 index 0000000..781c474 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalENB-ID.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalENB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalENB_ID, eNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "eNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalENB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalENB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1 = { + sizeof(struct GlobalENB_ID), + offsetof(struct GlobalENB_ID, _asn_ctx), + asn_MAP_GlobalENB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID = { + "GlobalENB-ID", + "GlobalENB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalENB_ID_tags_1, + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalENB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalENB_ID_tags_1) + /sizeof(asn_DEF_GlobalENB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalENB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalENB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalENB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalENB-ID.h new file mode 100644 index 0000000..bd2c018 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalENB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalENB_ID_H_ +#define _GlobalENB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalENB-ID */ +typedef struct GlobalENB_ID { + PLMN_Identity_t pLMN_Identity; + ENB_ID_t eNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalENB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalENB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalRIC-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalRIC-ID.c new file mode 100644 index 0000000..327ab7a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalRIC-ID.c @@ -0,0 +1,96 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalRIC-ID.h" + +static int +memb_ric_ID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + if(st->size > 0) { + /* Size in bits */ + size = 8 * st->size - (st->bits_unused & 0x07); + } else { + size = 0; + } + + if((size == 20)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_ric_ID_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 20, 20 } /* (SIZE(20..20)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_GlobalRIC_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalRIC_ID, ric_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_BIT_STRING, + 0, + { 0, &asn_PER_memb_ric_ID_constr_3, memb_ric_ID_constraint_1 }, + 0, 0, /* No default value */ + "ric-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalRIC_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalRIC_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ric-ID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_GlobalRIC_ID_specs_1 = { + sizeof(struct GlobalRIC_ID), + offsetof(struct GlobalRIC_ID, _asn_ctx), + asn_MAP_GlobalRIC_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID = { + "GlobalRIC-ID", + "GlobalRIC-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalRIC_ID_tags_1, + sizeof(asn_DEF_GlobalRIC_ID_tags_1) + /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalRIC_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalRIC_ID_tags_1) + /sizeof(asn_DEF_GlobalRIC_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalRIC_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalRIC_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalRIC-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalRIC-ID.h new file mode 100644 index 0000000..2e53f41 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalRIC-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalRIC_ID_H_ +#define _GlobalRIC_ID_H_ + + +#include + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalRIC-ID */ +typedef struct GlobalRIC_ID { + PLMN_Identity_t pLMN_Identity; + BIT_STRING_t ric_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalRIC_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalRIC_ID; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalRIC_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalenGNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalenGNB-ID.c new file mode 100644 index 0000000..f97c722 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalenGNB-ID.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalenGNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, pLMN_Identity), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "pLMN-Identity" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalenGNB_ID, gNB_ID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENGNB_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gNB-ID" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalenGNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalenGNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pLMN-Identity */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gNB-ID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1 = { + sizeof(struct GlobalenGNB_ID), + offsetof(struct GlobalenGNB_ID, _asn_ctx), + asn_MAP_GlobalenGNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID = { + "GlobalenGNB-ID", + "GlobalenGNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalenGNB_ID_tags_1, + sizeof(asn_DEF_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalenGNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalenGNB_ID_tags_1) + /sizeof(asn_DEF_GlobalenGNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalenGNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalenGNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalenGNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalenGNB-ID.h new file mode 100644 index 0000000..e6e8ae8 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalenGNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalenGNB_ID_H_ +#define _GlobalenGNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENGNB-ID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalenGNB-ID */ +typedef struct GlobalenGNB_ID { + PLMN_Identity_t pLMN_Identity; + ENGNB_ID_t gNB_ID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalenGNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalenGNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalenGNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalenGNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalenGNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalgNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalgNB-ID.c new file mode 100644 index 0000000..318370f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalgNB-ID.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalgNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, plmn_id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmn-id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalgNB_ID, gnb_id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_GNB_ID_Choice, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "gnb-id" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalgNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalgNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gnb-id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1 = { + sizeof(struct GlobalgNB_ID), + offsetof(struct GlobalgNB_ID, _asn_ctx), + asn_MAP_GlobalgNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID = { + "GlobalgNB-ID", + "GlobalgNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalgNB_ID_tags_1, + sizeof(asn_DEF_GlobalgNB_ID_tags_1) + /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalgNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalgNB_ID_tags_1) + /sizeof(asn_DEF_GlobalgNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalgNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalgNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalgNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalgNB-ID.h new file mode 100644 index 0000000..52efce0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalgNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalgNB_ID_H_ +#define _GlobalgNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "GNB-ID-Choice.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalgNB-ID */ +typedef struct GlobalgNB_ID { + PLMN_Identity_t plmn_id; + GNB_ID_Choice_t gnb_id; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalgNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalgNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalgNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalgNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalgNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalngeNB-ID.c b/setup/xapp-bs-connector/asn1c_defs/GlobalngeNB-ID.c new file mode 100644 index 0000000..650ae98 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalngeNB-ID.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "GlobalngeNB-ID.h" + +asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, plmn_id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_PLMN_Identity, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "plmn-id" + }, + { ATF_NOFLAGS, 0, offsetof(struct GlobalngeNB_ID, enb_id), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_ENB_ID_Choice, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "enb-id" + }, +}; +static const ber_tlv_tag_t asn_DEF_GlobalngeNB_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_GlobalngeNB_ID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* enb-id */ +}; +asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1 = { + sizeof(struct GlobalngeNB_ID), + offsetof(struct GlobalngeNB_ID, _asn_ctx), + asn_MAP_GlobalngeNB_ID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID = { + "GlobalngeNB-ID", + "GlobalngeNB-ID", + &asn_OP_SEQUENCE, + asn_DEF_GlobalngeNB_ID_tags_1, + sizeof(asn_DEF_GlobalngeNB_ID_tags_1) + /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ + asn_DEF_GlobalngeNB_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_GlobalngeNB_ID_tags_1) + /sizeof(asn_DEF_GlobalngeNB_ID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_GlobalngeNB_ID_1, + 2, /* Elements count */ + &asn_SPC_GlobalngeNB_ID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/GlobalngeNB-ID.h b/setup/xapp-bs-connector/asn1c_defs/GlobalngeNB-ID.h new file mode 100644 index 0000000..177a467 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/GlobalngeNB-ID.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _GlobalngeNB_ID_H_ +#define _GlobalngeNB_ID_H_ + + +#include + +/* Including external dependencies */ +#include "PLMN-Identity.h" +#include "ENB-ID-Choice.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* GlobalngeNB-ID */ +typedef struct GlobalngeNB_ID { + PLMN_Identity_t plmn_id; + ENB_ID_Choice_t enb_id; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} GlobalngeNB_ID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_GlobalngeNB_ID; +extern asn_SEQUENCE_specifics_t asn_SPC_GlobalngeNB_ID_specs_1; +extern asn_TYPE_member_t asn_MBR_GlobalngeNB_ID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _GlobalngeNB_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-ControlCommand.c b/setup/xapp-bs-connector/asn1c_defs/HW-ControlCommand.c new file mode 100644 index 0000000..2263722 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-ControlCommand.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "HW-ControlCommand.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_HW_ControlCommand_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_HW_ControlCommand_value2enum_1[] = { + { 0, 8, "addition" }, + { 1, 8, "deletion" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_HW_ControlCommand_enum2value_1[] = { + 0, /* addition(0) */ + 1 /* deletion(1) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_HW_ControlCommand_specs_1 = { + asn_MAP_HW_ControlCommand_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HW_ControlCommand_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HW_ControlCommand_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HW_ControlCommand = { + "HW-ControlCommand", + "HW-ControlCommand", + &asn_OP_NativeEnumerated, + asn_DEF_HW_ControlCommand_tags_1, + sizeof(asn_DEF_HW_ControlCommand_tags_1) + /sizeof(asn_DEF_HW_ControlCommand_tags_1[0]), /* 1 */ + asn_DEF_HW_ControlCommand_tags_1, /* Same as above */ + sizeof(asn_DEF_HW_ControlCommand_tags_1) + /sizeof(asn_DEF_HW_ControlCommand_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HW_ControlCommand_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HW_ControlCommand_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-ControlCommand.h b/setup/xapp-bs-connector/asn1c_defs/HW-ControlCommand.h new file mode 100644 index 0000000..a0e1aa9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-ControlCommand.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _HW_ControlCommand_H_ +#define _HW_ControlCommand_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HW_ControlCommand { + HW_ControlCommand_addition = 0, + HW_ControlCommand_deletion = 1 + /* + * Enumeration is extensible + */ +} e_HW_ControlCommand; + +/* HW-ControlCommand */ +typedef long HW_ControlCommand_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HW_ControlCommand; +asn_struct_free_f HW_ControlCommand_free; +asn_struct_print_f HW_ControlCommand_print; +asn_constr_check_f HW_ControlCommand_constraint; +ber_type_decoder_f HW_ControlCommand_decode_ber; +der_type_encoder_f HW_ControlCommand_encode_der; +xer_type_decoder_f HW_ControlCommand_decode_xer; +xer_type_encoder_f HW_ControlCommand_encode_xer; +per_type_decoder_f HW_ControlCommand_decode_uper; +per_type_encoder_f HW_ControlCommand_encode_uper; +per_type_decoder_f HW_ControlCommand_decode_aper; +per_type_encoder_f HW_ControlCommand_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HW_ControlCommand_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-Header.c b/setup/xapp-bs-connector/asn1c_defs/HW-Header.c new file mode 100644 index 0000000..d4c04f1 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-Header.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "HW-Header.h" + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_HW_Header_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HW_Header = { + "HW-Header", + "HW-Header", + &asn_OP_NativeInteger, + asn_DEF_HW_Header_tags_1, + sizeof(asn_DEF_HW_Header_tags_1) + /sizeof(asn_DEF_HW_Header_tags_1[0]), /* 1 */ + asn_DEF_HW_Header_tags_1, /* Same as above */ + sizeof(asn_DEF_HW_Header_tags_1) + /sizeof(asn_DEF_HW_Header_tags_1[0]), /* 1 */ + { 0, 0, NativeInteger_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-Header.h b/setup/xapp-bs-connector/asn1c_defs/HW-Header.h new file mode 100644 index 0000000..7ac2f65 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-Header.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _HW_Header_H_ +#define _HW_Header_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* HW-Header */ +typedef long HW_Header_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HW_Header; +asn_struct_free_f HW_Header_free; +asn_struct_print_f HW_Header_print; +asn_constr_check_f HW_Header_constraint; +ber_type_decoder_f HW_Header_decode_ber; +der_type_encoder_f HW_Header_encode_der; +xer_type_decoder_f HW_Header_decode_xer; +xer_type_encoder_f HW_Header_encode_xer; +per_type_decoder_f HW_Header_decode_uper; +per_type_encoder_f HW_Header_encode_uper; +per_type_decoder_f HW_Header_decode_aper; +per_type_encoder_f HW_Header_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HW_Header_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-Message.c b/setup/xapp-bs-connector/asn1c_defs/HW-Message.c new file mode 100644 index 0000000..ffc7efd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-Message.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "HW-Message.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_HW_Message_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HW_Message = { + "HW-Message", + "HW-Message", + &asn_OP_OCTET_STRING, + asn_DEF_HW_Message_tags_1, + sizeof(asn_DEF_HW_Message_tags_1) + /sizeof(asn_DEF_HW_Message_tags_1[0]), /* 1 */ + asn_DEF_HW_Message_tags_1, /* Same as above */ + sizeof(asn_DEF_HW_Message_tags_1) + /sizeof(asn_DEF_HW_Message_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-Message.h b/setup/xapp-bs-connector/asn1c_defs/HW-Message.h new file mode 100644 index 0000000..735d247 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-Message.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _HW_Message_H_ +#define _HW_Message_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* HW-Message */ +typedef OCTET_STRING_t HW_Message_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_HW_Message; +asn_struct_free_f HW_Message_free; +asn_struct_print_f HW_Message_print; +asn_constr_check_f HW_Message_constraint; +ber_type_decoder_f HW_Message_decode_ber; +der_type_encoder_f HW_Message_encode_der; +xer_type_decoder_f HW_Message_decode_xer; +xer_type_encoder_f HW_Message_encode_xer; +per_type_decoder_f HW_Message_decode_uper; +per_type_encoder_f HW_Message_encode_uper; +per_type_decoder_f HW_Message_decode_aper; +per_type_encoder_f HW_Message_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HW_Message_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-TriggerNature.c b/setup/xapp-bs-connector/asn1c_defs/HW-TriggerNature.c new file mode 100644 index 0000000..a19877e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-TriggerNature.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "HW-TriggerNature.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_HW_TriggerNature_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_HW_TriggerNature_value2enum_1[] = { + { 0, 3, "now" }, + { 1, 8, "onchange" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_HW_TriggerNature_enum2value_1[] = { + 0, /* now(0) */ + 1 /* onchange(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_HW_TriggerNature_specs_1 = { + asn_MAP_HW_TriggerNature_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_HW_TriggerNature_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_HW_TriggerNature_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_HW_TriggerNature = { + "HW-TriggerNature", + "HW-TriggerNature", + &asn_OP_NativeEnumerated, + asn_DEF_HW_TriggerNature_tags_1, + sizeof(asn_DEF_HW_TriggerNature_tags_1) + /sizeof(asn_DEF_HW_TriggerNature_tags_1[0]), /* 1 */ + asn_DEF_HW_TriggerNature_tags_1, /* Same as above */ + sizeof(asn_DEF_HW_TriggerNature_tags_1) + /sizeof(asn_DEF_HW_TriggerNature_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_HW_TriggerNature_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_HW_TriggerNature_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/HW-TriggerNature.h b/setup/xapp-bs-connector/asn1c_defs/HW-TriggerNature.h new file mode 100644 index 0000000..cc62d13 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/HW-TriggerNature.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _HW_TriggerNature_H_ +#define _HW_TriggerNature_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum HW_TriggerNature { + HW_TriggerNature_now = 0, + HW_TriggerNature_onchange = 1 + /* + * Enumeration is extensible + */ +} e_HW_TriggerNature; + +/* HW-TriggerNature */ +typedef long HW_TriggerNature_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_HW_TriggerNature_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_HW_TriggerNature; +extern const asn_INTEGER_specifics_t asn_SPC_HW_TriggerNature_specs_1; +asn_struct_free_f HW_TriggerNature_free; +asn_struct_print_f HW_TriggerNature_print; +asn_constr_check_f HW_TriggerNature_constraint; +ber_type_decoder_f HW_TriggerNature_decode_ber; +der_type_encoder_f HW_TriggerNature_encode_der; +xer_type_decoder_f HW_TriggerNature_decode_xer; +xer_type_encoder_f HW_TriggerNature_encode_xer; +per_type_decoder_f HW_TriggerNature_decode_uper; +per_type_encoder_f HW_TriggerNature_encode_uper; +per_type_decoder_f HW_TriggerNature_decode_aper; +per_type_encoder_f HW_TriggerNature_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _HW_TriggerNature_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/INTEGER.c b/setup/xapp-bs-connector/asn1c_defs/INTEGER.c new file mode 100644 index 0000000..2a2f4d7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/INTEGER.c @@ -0,0 +1,1735 @@ +/*- + * Copyright (c) 2003-2014 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* Encoder and decoder of a primitive type */ +#include + +/* + * INTEGER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_INTEGER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_INTEGER = { + INTEGER_free, + INTEGER_print, + INTEGER_compare, + ber_decode_primitive, + INTEGER_encode_der, + INTEGER_decode_xer, + INTEGER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + INTEGER_decode_oer, /* OER decoder */ + INTEGER_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + INTEGER_decode_uper, /* Unaligned PER decoder */ + INTEGER_encode_uper, /* Unaligned PER encoder */ + INTEGER_decode_aper, /* Aligned PER decoder */ + INTEGER_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + INTEGER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_INTEGER = { + "INTEGER", + "INTEGER", + &asn_OP_INTEGER, + asn_DEF_INTEGER_tags, + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + asn_DEF_INTEGER_tags, /* Same as above */ + sizeof(asn_DEF_INTEGER_tags) / sizeof(asn_DEF_INTEGER_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Encode INTEGER type using DER. + */ +asn_enc_rval_t +INTEGER_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t rval; + INTEGER_t effective_integer; + + ASN_DEBUG("%s %s as INTEGER (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + /* + * Canonicalize integer in the buffer. + * (Remove too long sign extension, remove some first 0x00 bytes) + */ + if(st->buf) { + uint8_t *buf = st->buf; + uint8_t *end1 = buf + st->size - 1; + int shift; + + /* Compute the number of superfluous leading bytes */ + for(; buf < end1; buf++) { + /* + * If the contents octets of an integer value encoding + * consist of more than one octet, then the bits of the + * first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + switch(*buf) { + case 0x00: if((buf[1] & 0x80) == 0) + continue; + break; + case 0xff: if((buf[1] & 0x80)) + continue; + break; + } + break; + } + + /* Remove leading superfluous bytes from the integer */ + shift = buf - st->buf; + if(shift) { + union { + const uint8_t *c_buf; + uint8_t *nc_buf; + } unconst; + unconst.c_buf = st->buf; + effective_integer.buf = unconst.nc_buf + shift; + effective_integer.size = st->size - shift; + + st = &effective_integer; + } + } + + rval = der_encode_primitive(td, st, tag_mode, tag, cb, app_key); + if(rval.structure_ptr == &effective_integer) { + rval.structure_ptr = sptr; + } + return rval; +} + +static const asn_INTEGER_enum_map_t *INTEGER_map_enum2value( + const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop); + +/* + * INTEGER specific human-readable output. + */ +static ssize_t +INTEGER__dump(const asn_TYPE_descriptor_t *td, const INTEGER_t *st, asn_app_consume_bytes_f *cb, void *app_key, int plainOrXER) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; + uint8_t *buf = st->buf; + uint8_t *buf_end = st->buf + st->size; + intmax_t value; + ssize_t wrote = 0; + char *p; + int ret; + + if(specs && specs->field_unsigned) + ret = asn_INTEGER2umax(st, (uintmax_t *)&value); + else + ret = asn_INTEGER2imax(st, &value); + + /* Simple case: the integer size is small */ + if(ret == 0) { + const asn_INTEGER_enum_map_t *el; + el = (value >= 0 || !specs || !specs->field_unsigned) + ? INTEGER_map_value2enum(specs, value) : 0; + if(el) { + if(plainOrXER == 0) + return asn__format_to_callback(cb, app_key, + "%" ASN_PRIdMAX " (%s)", value, el->enum_name); + else + return asn__format_to_callback(cb, app_key, + "<%s/>", el->enum_name); + } else if(plainOrXER && specs && specs->strict_enumeration) { + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } else { + return asn__format_to_callback(cb, app_key, + (specs && specs->field_unsigned) + ? "%" ASN_PRIuMAX + : "%" ASN_PRIdMAX, + value); + } + } else if(plainOrXER && specs && specs->strict_enumeration) { + /* + * Here and earlier, we cannot encode the ENUMERATED values + * if there is no corresponding identifier. + */ + ASN_DEBUG("ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + errno = EPERM; + return -1; + } + + /* Output in the long xx:yy:zz... format */ + /* TODO: replace with generic algorithm (Knuth TAOCP Vol 2, 4.3.1) */ + for(p = scratch; buf < buf_end; buf++) { + const char * const h2c = "0123456789ABCDEF"; + if((p - scratch) >= (ssize_t)(sizeof(scratch) - 4)) { + /* Flush buffer */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + wrote += p - scratch; + p = scratch; + } + *p++ = h2c[*buf >> 4]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x3a; /* ":" */ + } + if(p != scratch) + p--; /* Remove the last ":" */ + + wrote += p - scratch; + return (cb(scratch, p - scratch, app_key) < 0) ? -1 : wrote; +} + +/* + * INTEGER specific human-readable output. + */ +int +INTEGER_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + ssize_t ret; + + (void)ilevel; + + if(!st || !st->buf) + ret = cb("", 8, app_key); + else + ret = INTEGER__dump(td, st, cb, app_key, 0); + + return (ret < 0) ? -1 : 0; +} + +struct e2v_key { + const char *start; + const char *stop; + const asn_INTEGER_enum_map_t *vemap; + const unsigned int *evmap; +}; +static int +INTEGER__compar_enum2value(const void *kp, const void *am) { + const struct e2v_key *key = (const struct e2v_key *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + const char *ptr, *end, *name; + + /* Remap the element (sort by different criterion) */ + el = key->vemap + key->evmap[el - key->vemap]; + + /* Compare strings */ + for(ptr = key->start, end = key->stop, name = el->enum_name; + ptr < end; ptr++, name++) { + if(*ptr != *name || !*name) + return *(const unsigned char *)ptr + - *(const unsigned char *)name; + } + return name[0] ? -1 : 0; +} + +static const asn_INTEGER_enum_map_t * +INTEGER_map_enum2value(const asn_INTEGER_specifics_t *specs, const char *lstart, + const char *lstop) { + const asn_INTEGER_enum_map_t *el_found; + int count = specs ? specs->map_count : 0; + struct e2v_key key; + const char *lp; + + if(!count) return NULL; + + /* Guaranteed: assert(lstart < lstop); */ + /* Figure out the tag name */ + for(lstart++, lp = lstart; lp < lstop; lp++) { + switch(*lp) { + case 9: case 10: case 11: case 12: case 13: case 32: /* WSP */ + case 0x2f: /* '/' */ case 0x3e: /* '>' */ + break; + default: + continue; + } + break; + } + if(lp == lstop) return NULL; /* No tag found */ + lstop = lp; + + key.start = lstart; + key.stop = lstop; + key.vemap = specs->value2enum; + key.evmap = specs->enum2value; + el_found = (asn_INTEGER_enum_map_t *)bsearch(&key, + specs->value2enum, count, sizeof(specs->value2enum[0]), + INTEGER__compar_enum2value); + if(el_found) { + /* Remap enum2value into value2enum */ + el_found = key.vemap + key.evmap[el_found - key.vemap]; + } + return el_found; +} + +static int +INTEGER__compar_value2enum(const void *kp, const void *am) { + long a = *(const long *)kp; + const asn_INTEGER_enum_map_t *el = (const asn_INTEGER_enum_map_t *)am; + long b = el->nat_value; + if(a < b) return -1; + else if(a == b) return 0; + else return 1; +} + +const asn_INTEGER_enum_map_t * +INTEGER_map_value2enum(const asn_INTEGER_specifics_t *specs, long value) { + int count = specs ? specs->map_count : 0; + if(!count) return 0; + return (asn_INTEGER_enum_map_t *)bsearch(&value, specs->value2enum, + count, sizeof(specs->value2enum[0]), + INTEGER__compar_value2enum); +} + +static int +INTEGER_st_prealloc(INTEGER_t *st, int min_size) { + void *p = MALLOC(min_size + 1); + if(p) { + void *b = st->buf; + st->size = 0; + st->buf = p; + FREEMEM(b); + return 0; + } else { + return -1; + } +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +static enum xer_pbd_rval +INTEGER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + INTEGER_t *st = (INTEGER_t *)sptr; + intmax_t dec_value; + intmax_t hex_value = 0; + const char *lp; + const char *lstart = (const char *)chunk_buf; + const char *lstop = lstart + chunk_size; + enum { + ST_LEADSPACE, + ST_SKIPSPHEX, + ST_WAITDIGITS, + ST_DIGITS, + ST_DIGITS_TRAILSPACE, + ST_HEXDIGIT1, + ST_HEXDIGIT2, + ST_HEXDIGITS_TRAILSPACE, + ST_HEXCOLON, + ST_END_ENUM, + ST_UNEXPECTED + } state = ST_LEADSPACE; + const char *dec_value_start = 0; /* INVARIANT: always !0 in ST_DIGITS */ + const char *dec_value_end = 0; + + if(chunk_size) + ASN_DEBUG("INTEGER body %ld 0x%2x..0x%2x", + (long)chunk_size, *lstart, lstop[-1]); + + if(INTEGER_st_prealloc(st, (chunk_size/3) + 1)) + return XPBD_SYSTEM_FAILURE; + + /* + * We may have received a tag here. It will be processed inline. + * Use strtoul()-like code and serialize the result. + */ + for(lp = lstart; lp < lstop; lp++) { + int lv = *lp; + switch(lv) { + case 0x09: case 0x0a: case 0x0d: case 0x20: + switch(state) { + case ST_LEADSPACE: + case ST_DIGITS_TRAILSPACE: + case ST_HEXDIGITS_TRAILSPACE: + case ST_SKIPSPHEX: + continue; + case ST_DIGITS: + dec_value_end = lp; + state = ST_DIGITS_TRAILSPACE; + continue; + case ST_HEXCOLON: + state = ST_HEXDIGITS_TRAILSPACE; + continue; + default: + break; + } + break; + case 0x2d: /* '-' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x2b: /* '+' */ + if(state == ST_LEADSPACE) { + dec_value = 0; + dec_value_start = lp; + state = ST_WAITDIGITS; + continue; + } + break; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: + switch(state) { + case ST_DIGITS: continue; + case ST_SKIPSPHEX: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = (lv - 0x30) << 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += (lv - 0x30); + state = ST_HEXCOLON; + st->buf[st->size++] = (uint8_t)hex_value; + continue; + case ST_HEXCOLON: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + dec_value = 0; + dec_value_start = lp; + /* FALL THROUGH */ + case ST_WAITDIGITS: + state = ST_DIGITS; + continue; + default: + break; + } + break; + case 0x3c: /* '<', start of XML encoded enumeration */ + if(state == ST_LEADSPACE) { + const asn_INTEGER_enum_map_t *el; + el = INTEGER_map_enum2value( + (const asn_INTEGER_specifics_t *) + td->specifics, lstart, lstop); + if(el) { + ASN_DEBUG("Found \"%s\" => %ld", + el->enum_name, el->nat_value); + dec_value = el->nat_value; + state = ST_END_ENUM; + lp = lstop - 1; + continue; + } + ASN_DEBUG("Unknown identifier for INTEGER"); + } + return XPBD_BROKEN_ENCODING; + case 0x3a: /* ':' */ + if(state == ST_HEXCOLON) { + /* This colon is expected */ + state = ST_HEXDIGIT1; + continue; + } else if(state == ST_DIGITS) { + /* The colon here means that we have + * decoded the first two hexadecimal + * places as a decimal value. + * Switch decoding mode. */ + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + } else { + ASN_DEBUG("state %d at %ld", state, (long)(lp - lstart)); + break; + } + /* [A-Fa-f] */ + case 0x41:case 0x42:case 0x43:case 0x44:case 0x45:case 0x46: + case 0x61:case 0x62:case 0x63:case 0x64:case 0x65:case 0x66: + switch(state) { + case ST_SKIPSPHEX: + case ST_LEADSPACE: /* Fall through */ + case ST_HEXDIGIT1: + hex_value = lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + hex_value <<= 4; + state = ST_HEXDIGIT2; + continue; + case ST_HEXDIGIT2: + hex_value += lv - ((lv < 0x61) ? 0x41 : 0x61); + hex_value += 10; + st->buf[st->size++] = (uint8_t)hex_value; + state = ST_HEXCOLON; + continue; + case ST_DIGITS: + ASN_DEBUG("INTEGER re-evaluate as hex form"); + state = ST_SKIPSPHEX; + dec_value_start = 0; + lp = lstart - 1; + continue; + default: + break; + } + break; + } + + /* Found extra non-numeric stuff */ + ASN_DEBUG("INTEGER :: Found non-numeric 0x%2x at %ld", + lv, (long)(lp - lstart)); + state = ST_UNEXPECTED; + break; + } + + switch(state) { + case ST_END_ENUM: + /* Got a complete and valid enumeration encoded as a tag. */ + break; + case ST_DIGITS: + dec_value_end = lstop; + /* FALL THROUGH */ + case ST_DIGITS_TRAILSPACE: + /* The last symbol encountered was a digit. */ + switch(asn_strtoimax_lim(dec_value_start, &dec_value_end, &dec_value)) { + case ASN_STRTOX_OK: + if(specs && specs->field_unsigned && (uintmax_t) dec_value <= ULONG_MAX) { + break; + } else if(dec_value >= LONG_MIN && dec_value <= LONG_MAX) { + break; + } else { + /* + * We model INTEGER on long for XER, + * to avoid rewriting all the tests at once. + */ + ASN_DEBUG("INTEGER exceeds long range"); + } + /* Fall through */ + case ASN_STRTOX_ERROR_RANGE: + ASN_DEBUG("INTEGER decode %s hit range limit", td->name); + return XPBD_DECODER_LIMIT; + case ASN_STRTOX_ERROR_INVAL: + case ASN_STRTOX_EXPECT_MORE: + case ASN_STRTOX_EXTRA_DATA: + return XPBD_BROKEN_ENCODING; + } + break; + case ST_HEXCOLON: + case ST_HEXDIGITS_TRAILSPACE: + st->buf[st->size] = 0; /* Just in case termination */ + return XPBD_BODY_CONSUMED; + case ST_HEXDIGIT1: + case ST_HEXDIGIT2: + case ST_SKIPSPHEX: + return XPBD_BROKEN_ENCODING; + case ST_LEADSPACE: + /* Content not found */ + return XPBD_NOT_BODY_IGNORE; + case ST_WAITDIGITS: + case ST_UNEXPECTED: + ASN_DEBUG("INTEGER: No useful digits (state %d)", state); + return XPBD_BROKEN_ENCODING; /* No digits */ + } + + /* + * Convert the result of parsing of enumeration or a straight + * decimal value into a BER representation. + */ + if(asn_imax2INTEGER(st, dec_value)) { + ASN_DEBUG("INTEGER decode %s conversion failed", td->name); + return XPBD_SYSTEM_FAILURE; + } + + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +INTEGER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(INTEGER_t), opt_mname, + buf_ptr, size, INTEGER__xer_body_decode); +} + +asn_enc_rval_t +INTEGER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const INTEGER_t *st = (const INTEGER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) + ASN__ENCODE_FAILED; + + er.encoded = INTEGER__dump(td, st, cb, app_key, 1); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +INTEGER_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691-2008/11, #13.2.2, constrained whole number */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #11.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if((size_t)ct->range_bits > 8 * sizeof(unsigned long)) + ASN__DECODE_FAILED; + + if(specs && specs->field_unsigned) { + unsigned long uvalue = 0; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + uvalue += ct->lower_bound; + if(asn_ulong2INTEGER(st, uvalue)) + ASN__DECODE_FAILED; + } else { + unsigned long uvalue = 0; + long svalue; + if(uper_get_constrained_whole_number(pd, + &uvalue, ct->range_bits)) + ASN__DECODE_STARVED; + ASN_DEBUG("Got value %lu + low %ld", + uvalue, ct->lower_bound); + if(per_long_range_unrebase(uvalue, ct->lower_bound, + ct->upper_bound, &svalue) + || asn_long2INTEGER(st, svalue)) { + ASN__DECODE_FAILED; + } + } + return rval; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len = 0; + void *p = NULL; + int ret = 0; + + /* Get the PER length */ + len = uper_get_length(pd, -1, 0, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value = 0; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_imax2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%" ASN_PRI_SIZE ") lb %lu ub %lu %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %ld (%02x/%" ASN_PRI_SIZE ") lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + + /* X.691-11/2008, #13.2.2, test if constrained whole number */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + /* #11.5.6 -> #11.3 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + if(specs && specs->field_unsigned) { + if ( ((unsigned long)ct->lower_bound > (unsigned long)(ct->upper_bound) + || ((unsigned long)value < (unsigned long)ct->lower_bound)) + || ((unsigned long)value > (unsigned long)ct->upper_bound) + ) { + ASN_DEBUG("Value %lu to-be-encoded is outside the bounds [%lu, %lu]!", + value, ct->lower_bound, ct->upper_bound); + ASN__ENCODE_FAILED; + } + v = (unsigned long)value - (unsigned long)ct->lower_bound; + } else { + if(per_long_range_rebase(value, ct->lower_bound, ct->upper_bound, &v)) { + ASN__ENCODE_FAILED; + } + } + if(uper_put_constrained_whole_number_u(po, v, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + int need_eom = 0; + ssize_t mayEncode = uper_put_length(po, end - buf, &need_eom); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + if(need_eom && uper_put_length(po, 0, 0)) ASN__ENCODE_FAILED; + } + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +INTEGER_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + INTEGER_t *st = (INTEGER_t *)*sptr; + const asn_per_constraint_t *ct; + int repeat; + + (void)opt_codec_ctx; + + if(!st) { + st = (INTEGER_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(!st) ASN__DECODE_FAILED; + } + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + if(ct) { + if(ct->flags & APC_SEMI_CONSTRAINED) { + st->buf = (uint8_t *)CALLOC(1, 2); + if(!st->buf) ASN__DECODE_FAILED; + st->size = 1; + } else if(ct->flags & APC_CONSTRAINED && ct->range_bits >= 0) { + size_t size = (ct->range_bits + 7) >> 3; + st->buf = (uint8_t *)MALLOC(1 + size + 1); + if(!st->buf) ASN__DECODE_FAILED; + st->size = size; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->flags != APC_UNCONSTRAINED) { + /* #10.5.6 */ + ASN_DEBUG("Integer with range %d bits", ct->range_bits); + if(ct->range_bits >= 0) { + if (ct->range_bits > 16) { + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + int length = 0, i; + long value = 0; + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + ASN_DEBUG("Can encode %d (%d bytes) in %d bits", ct->range_bits, + max_range_bytes, i); + + if ((length = per_get_few_bits(pd, i)) < 0) + ASN__DECODE_FAILED; + + /* X.691 #12.2.6 length determinant + lb (1) */ + length += 1; + ASN_DEBUG("Got length %d", length); + if (aper_get_align(pd) != 0) + ASN__DECODE_FAILED; + while (length--) { + int buf = per_get_few_bits(pd, 8); + if (buf < 0) + ASN__DECODE_FAILED; + value += (((long)buf) << (8 * length)); + } + + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_uint642INTEGER(st, (unsigned long)value) + : asn_int642INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } else { + long value = 0; + if (ct->range_bits < 8) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else if (ct->range_bits == 8) { + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + } else { + /* Align */ + if (aper_get_align(pd) < 0) + ASN__DECODE_FAILED; + value = per_get_few_bits(pd, 16); + if(value < 0) ASN__DECODE_STARVED; + } + value += ct->lower_bound; + if((specs && specs->field_unsigned) + ? asn_ulong2INTEGER(st, value) + : asn_long2INTEGER(st, value)) + ASN__DECODE_FAILED; + ASN_DEBUG("Got value %ld + low %ld", + value, ct->lower_bound); + } + return rval; + } else { + ASN__DECODE_FAILED; + } + } else { + ASN_DEBUG("Decoding unconstrained integer %s", td->name); + } + + /* X.691, #12.2.3, #12.2.4 */ + do { + ssize_t len; + void *p; + int ret; + + /* Get the PER length */ + len = aper_get_length(pd, -1, -1, &repeat); + if(len < 0) ASN__DECODE_STARVED; + + p = REALLOC(st->buf, st->size + len + 1); + if(!p) ASN__DECODE_FAILED; + st->buf = (uint8_t *)p; + + ret = per_get_many_bits(pd, &st->buf[st->size], 0, 8 * len); + if(ret < 0) ASN__DECODE_STARVED; + st->size += len; + } while(repeat); + st->buf[st->size] = 0; /* JIC */ + + /* #12.2.3 */ + if(ct && ct->lower_bound) { + /* + * TODO: replace by in-place arithmetics. + */ + long value; + if(asn_INTEGER2long(st, &value)) + ASN__DECODE_FAILED; + if(asn_long2INTEGER(st, value + ct->lower_bound)) + ASN__DECODE_FAILED; + } + + return rval; +} + +asn_enc_rval_t +INTEGER_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const INTEGER_t *st = (const INTEGER_t *)sptr; + const uint8_t *buf; + const uint8_t *end; + const asn_per_constraint_t *ct; + long value = 0; + + if(!st || st->size == 0) ASN__ENCODE_FAILED; + + if(!constraints) constraints = td->encoding_constraints.per_constraints; + ct = constraints ? &constraints->value : 0; + + er.encoded = 0; + + if(ct) { + int inext = 0; + if(specs && specs->field_unsigned) { + unsigned long uval; + if(asn_INTEGER2ulong(st, &uval)) + ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(uval < (unsigned long)ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(uval < (unsigned long)ct->lower_bound + || uval > (unsigned long)ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + uval, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + value = uval; + } else { + if(asn_INTEGER2long(st, &value)) ASN__ENCODE_FAILED; + /* Check proper range */ + if(ct->flags & APC_SEMI_CONSTRAINED) { + if(value < ct->lower_bound) + inext = 1; + } else if(ct->range_bits >= 0) { + if(value < ct->lower_bound + || value > ct->upper_bound) + inext = 1; + } + ASN_DEBUG("Value %lu (%02x/%lu) lb %ld ub %ld %s", + value, st->buf[0], st->size, + ct->lower_bound, ct->upper_bound, + inext ? "ext" : "fix"); + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + } + + /* X.691, #12.2.2 */ + if(ct && ct->range_bits >= 0) { + unsigned long v; + + /* #10.5.6 */ + ASN_DEBUG("Encoding integer %ld (%lu) with range %d bits", + value, value - ct->lower_bound, ct->range_bits); + + v = value - ct->lower_bound; + + /* #12 <= 8 -> alignment ? */ + if (ct->range_bits < 8) { + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits == 8) { + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x00 | v, ct->range_bits)) + ASN__ENCODE_FAILED; + } else if (ct->range_bits <= 16) { + /* Consume the bytes to align on octet */ + if(aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + if(per_put_few_bits(po, 0x0000 | v, + 16)) + ASN__ENCODE_FAILED; + } else { + /* TODO: extend to >64 bits */ + int64_t v64 = v; + int i, j; + int max_range_bytes = (ct->range_bits >> 3) + + (((ct->range_bits % 8) > 0) ? 1 : 0); + + for (i = 1; ; i++) { + int upper = 1 << i; + if (upper >= max_range_bytes) + break; + } + + for (j = sizeof(int64_t) -1; j != 0; j--) { + int64_t val; + val = v64 >> (j * 8); + if (val != 0) + break; + } + + /* Putting length in the minimum number of bits ex: 5 = 3bits */ + if (per_put_few_bits(po, j, i)) + ASN__ENCODE_FAILED; + + /* Consume the bits to align on octet */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + /* Put the value */ + for (i = 0; i <= j; i++) { + if(per_put_few_bits(po, (v64 >> (8 * (j - i))) & 0xff, 8)) + ASN__ENCODE_FAILED; + } + } + ASN__ENCODED_OK(er); + } + + if(ct && ct->lower_bound) { + ASN_DEBUG("Adjust lower bound to %ld", ct->lower_bound); + /* TODO: adjust lower bound */ + ASN__ENCODE_FAILED; + } + + for(buf = st->buf, end = st->buf + st->size; buf < end;) { + ssize_t mayEncode = aper_put_length(po, -1, end - buf); + if(mayEncode < 0) + ASN__ENCODE_FAILED; + if(per_put_many_bits(po, buf, 8 * mayEncode)) + ASN__ENCODE_FAILED; + buf += mayEncode; + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +static intmax_t +asn__integer_convert(const uint8_t *b, const uint8_t *end) { + uintmax_t value; + + /* Perform the sign initialization */ + /* Actually value = -(*b >> 7); gains nothing, yet unreadable! */ + if((*b >> 7)) { + value = (uintmax_t)(-1); + } else { + value = 0; + } + + /* Conversion engine */ + for(; b < end; b++) { + value = (value << 8) | *b; + } + + return value; +} + +int +asn_INTEGER2imax(const INTEGER_t *iptr, intmax_t *lptr) { + uint8_t *b, *end; + size_t size; + + /* Sanity checking */ + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + /* Cache the begin/end of the buffer */ + b = iptr->buf; /* Start of the INTEGER buffer */ + size = iptr->size; + end = b + size; /* Where to stop */ + + if(size > sizeof(intmax_t)) { + uint8_t *end1 = end - 1; + /* + * Slightly more advanced processing, + * able to process INTEGERs with >sizeof(intmax_t) bytes + * when the actual value is small, e.g. for intmax_t == int32_t + * (0x0000000000abcdef INTEGER would yield a fine 0x00abcdef int32_t) + */ + /* Skip out the insignificant leading bytes */ + for(; b < end1; b++) { + switch(*b) { + case 0x00: if((b[1] & 0x80) == 0) continue; break; + case 0xff: if((b[1] & 0x80) != 0) continue; break; + } + break; + } + + size = end - b; + if(size > sizeof(intmax_t)) { + /* Still cannot fit the sizeof(intmax_t) */ + errno = ERANGE; + return -1; + } + } + + /* Shortcut processing of a corner case */ + if(end == b) { + *lptr = 0; + return 0; + } + + *lptr = asn__integer_convert(b, end); + return 0; +} + +/* FIXME: negative INTEGER values are silently interpreted as large unsigned ones. */ +int +asn_INTEGER2umax(const INTEGER_t *iptr, uintmax_t *lptr) { + uint8_t *b, *end; + uintmax_t value; + size_t size; + + if(!iptr || !iptr->buf || !lptr) { + errno = EINVAL; + return -1; + } + + b = iptr->buf; + size = iptr->size; + end = b + size; + + /* If all extra leading bytes are zeroes, ignore them */ + for(; size > sizeof(value); b++, size--) { + if(*b) { + /* Value won't fit into uintmax_t */ + errno = ERANGE; + return -1; + } + } + + /* Conversion engine */ + for(value = 0; b < end; b++) + value = (value << 8) | *b; + + *lptr = value; + return 0; +} + +int +asn_umax2INTEGER(INTEGER_t *st, uintmax_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= ((~(uintmax_t)0) >> 1)) { + return asn_imax2INTEGER(st, value); + } + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; /* INTEGERs are signed. 0-byte indicates positive. */ + for(b = buf + 1, shr = (sizeof(value) - 1) * 8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_imax2INTEGER(INTEGER_t *st, intmax_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)(long *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +int +asn_INTEGER2long(const INTEGER_t *iptr, long *l) { + intmax_t v; + if(asn_INTEGER2imax(iptr, &v) == 0) { + if(v < LONG_MIN || v > LONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_INTEGER2ulong(const INTEGER_t *iptr, unsigned long *l) { + uintmax_t v; + if(asn_INTEGER2umax(iptr, &v) == 0) { + if(v > ULONG_MAX) { + errno = ERANGE; + return -1; + } + *l = v; + return 0; + } else { + return -1; + } +} + +int +asn_long2INTEGER(INTEGER_t *st, long value) { + return asn_imax2INTEGER(st, value); +} + +int +asn_ulong2INTEGER(INTEGER_t *st, unsigned long value) { + return asn_imax2INTEGER(st, value); +} + + +int +asn_uint642INTEGER(INTEGER_t *st, uint64_t value) { + uint8_t *buf; + uint8_t *end; + uint8_t *b; + int shr; + + if(value <= INT64_MAX) + return asn_int642INTEGER(st, value); + + buf = (uint8_t *)MALLOC(1 + sizeof(value)); + if(!buf) return -1; + + end = buf + (sizeof(value) + 1); + buf[0] = 0; + for(b = buf + 1, shr = (sizeof(value)-1)*8; b < end; shr -= 8, b++) + *b = (uint8_t)(value >> shr); + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = 1 + sizeof(value); + + return 0; +} + +int +asn_int642INTEGER(INTEGER_t *st, int64_t value) { + uint8_t *buf, *bp; + uint8_t *p; + uint8_t *pstart; + uint8_t *pend1; + int littleEndian = 1; /* Run-time detection */ + int add; + + if(!st) { + errno = EINVAL; + return -1; + } + + buf = (uint8_t *)MALLOC(sizeof(value)); + if(!buf) return -1; + + if(*(char *)&littleEndian) { + pstart = (uint8_t *)&value + sizeof(value) - 1; + pend1 = (uint8_t *)&value; + add = -1; + } else { + pstart = (uint8_t *)&value; + pend1 = pstart + sizeof(value) - 1; + add = 1; + } + + /* + * If the contents octet consists of more than one octet, + * then bits of the first octet and bit 8 of the second octet: + * a) shall not all be ones; and + * b) shall not all be zero. + */ + for(p = pstart; p != pend1; p += add) { + switch(*p) { + case 0x00: if((*(p+add) & 0x80) == 0) + continue; + break; + case 0xff: if((*(p+add) & 0x80)) + continue; + break; + } + break; + } + /* Copy the integer body */ + for(pstart = p, bp = buf, pend1 += add; p != pend1; p += add) + *bp++ = *p; + + if(st->buf) FREEMEM(st->buf); + st->buf = buf; + st->size = bp - buf; + + return 0; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtol/strtoimax(3). + */ +enum asn_strtox_result_e +asn_strtoimax_lim(const char *str, const char **end, intmax_t *intp) { + int sign = 1; + intmax_t value; + +#define ASN1_INTMAX_MAX ((~(uintmax_t)0) >> 1) + const intmax_t upper_boundary = ASN1_INTMAX_MAX / 10; + intmax_t last_digit_max = ASN1_INTMAX_MAX % 10; +#undef ASN1_INTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + last_digit_max++; + sign = -1; + /* FALL THROUGH */ + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + if(sign > 0) { + value = value * 10 + d; + } else { + sign = 1; + value = -value * 10 - d; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *intp = sign * value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *intp = sign * value; + return ASN_STRTOX_OK; +} + +/* + * Parse the number in the given string until the given *end position, + * returning the position after the last parsed character back using the + * same (*end) pointer. + * WARNING: This behavior is different from the standard strtoul/strtoumax(3). + */ +enum asn_strtox_result_e +asn_strtoumax_lim(const char *str, const char **end, uintmax_t *uintp) { + uintmax_t value; + +#define ASN1_UINTMAX_MAX ((~(uintmax_t)0)) + const uintmax_t upper_boundary = ASN1_UINTMAX_MAX / 10; + uintmax_t last_digit_max = ASN1_UINTMAX_MAX % 10; +#undef ASN1_UINTMAX_MAX + + if(str >= *end) return ASN_STRTOX_ERROR_INVAL; + + switch(*str) { + case '-': + return ASN_STRTOX_ERROR_INVAL; + case '+': + str++; + if(str >= *end) { + *end = str; + return ASN_STRTOX_EXPECT_MORE; + } + } + + for(value = 0; str < (*end); str++) { + switch(*str) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: { + unsigned int d = *str - '0'; + if(value < upper_boundary) { + value = value * 10 + d; + } else if(value == upper_boundary) { + if(d <= last_digit_max) { + value = value * 10 + d; + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } else { + *end = str; + return ASN_STRTOX_ERROR_RANGE; + } + } + continue; + default: + *end = str; + *uintp = value; + return ASN_STRTOX_EXTRA_DATA; + } + } + + *end = str; + *uintp = value; + return ASN_STRTOX_OK; +} + +enum asn_strtox_result_e +asn_strtol_lim(const char *str, const char **end, long *lp) { + intmax_t value; + switch(asn_strtoimax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value >= LONG_MIN && value <= LONG_MAX) { + *lp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +enum asn_strtox_result_e +asn_strtoul_lim(const char *str, const char **end, unsigned long *ulp) { + uintmax_t value; + switch(asn_strtoumax_lim(str, end, &value)) { + case ASN_STRTOX_ERROR_RANGE: + return ASN_STRTOX_ERROR_RANGE; + case ASN_STRTOX_ERROR_INVAL: + return ASN_STRTOX_ERROR_INVAL; + case ASN_STRTOX_EXPECT_MORE: + return ASN_STRTOX_EXPECT_MORE; + case ASN_STRTOX_OK: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_OK; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + case ASN_STRTOX_EXTRA_DATA: + if(value <= ULONG_MAX) { + *ulp = value; + return ASN_STRTOX_EXTRA_DATA; + } else { + return ASN_STRTOX_ERROR_RANGE; + } + } + + assert(!"Unreachable"); + return ASN_STRTOX_ERROR_INVAL; +} + +int +INTEGER_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const INTEGER_t *a = aptr; + const INTEGER_t *b = bptr; + + (void)td; + + if(a && b) { + if(a->size && b->size) { + int sign_a = (a->buf[0] & 0x80) ? -1 : 1; + int sign_b = (b->buf[0] & 0x80) ? -1 : 1; + + if(sign_a < sign_b) return -1; + if(sign_a > sign_b) return 1; + + /* The shortest integer wins, unless comparing negatives */ + if(a->size < b->size) { + return -1 * sign_a; + } else if(a->size > b->size) { + return 1 * sign_b; + } + + return sign_a * memcmp(a->buf, b->buf, a->size); + } else if(a->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (1) * sign; + } else if(b->size) { + int sign = (a->buf[0] & 0x80) ? -1 : 1; + return (-1) * sign; + } else { + return 0; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +asn_random_fill_result_t +INTEGER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + INTEGER_t *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (INTEGER_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + if(asn_imax2INTEGER(st, value)) { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } else { + *sptr = st; + result_ok.length = st->size; + return result_ok; + } +} diff --git a/setup/xapp-bs-connector/asn1c_defs/INTEGER.h b/setup/xapp-bs-connector/asn1c_defs/INTEGER.h new file mode 100644 index 0000000..f776c07 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/INTEGER.h @@ -0,0 +1,108 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _INTEGER_H_ +#define _INTEGER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ASN__PRIMITIVE_TYPE_t INTEGER_t; + +extern asn_TYPE_descriptor_t asn_DEF_INTEGER; +extern asn_TYPE_operation_t asn_OP_INTEGER; + +/* Map with to integer value association */ +typedef struct asn_INTEGER_enum_map_s { + long nat_value; /* associated native integer value */ + size_t enum_len; /* strlen("tag") */ + const char *enum_name; /* "tag" */ +} asn_INTEGER_enum_map_t; + +/* This type describes an enumeration for INTEGER and ENUMERATED types */ +typedef struct asn_INTEGER_specifics_s { + const asn_INTEGER_enum_map_t *value2enum; /* N -> "tag"; sorted by N */ + const unsigned int *enum2value; /* "tag" => N; sorted by tag */ + int map_count; /* Elements in either map */ + int extension; /* This map is extensible */ + int strict_enumeration; /* Enumeration set is fixed */ + int field_width; /* Size of native integer */ + int field_unsigned; /* Signed=0, unsigned=1 */ +} asn_INTEGER_specifics_t; + +#define INTEGER_free ASN__PRIMITIVE_TYPE_free +#define INTEGER_decode_ber ber_decode_primitive +#define INTEGER_constraint asn_generic_no_constraint +asn_struct_print_f INTEGER_print; +asn_struct_compare_f INTEGER_compare; +der_type_encoder_f INTEGER_encode_der; +xer_type_decoder_f INTEGER_decode_xer; +xer_type_encoder_f INTEGER_encode_xer; +oer_type_decoder_f INTEGER_decode_oer; +oer_type_encoder_f INTEGER_encode_oer; +per_type_decoder_f INTEGER_decode_uper; +per_type_encoder_f INTEGER_encode_uper; +per_type_decoder_f INTEGER_decode_aper; +per_type_encoder_f INTEGER_encode_aper; +asn_random_fill_f INTEGER_random_fill; + +/*********************************** + * Some handy conversion routines. * + ***********************************/ + +/* + * Natiwe size-independent conversion of native integers to/from INTEGER. + * (l_size) is in bytes. + * Returns 0 if it was possible to convert, -1 otherwise. + * -1/EINVAL: Mandatory argument missing + * -1/ERANGE: Value encoded is out of range for long representation + * -1/ENOMEM: Memory allocation failed (in asn_*2INTEGER()). + */ +int asn_INTEGER2imax(const INTEGER_t *i, intmax_t *l); +int asn_INTEGER2umax(const INTEGER_t *i, uintmax_t *l); +int asn_imax2INTEGER(INTEGER_t *i, intmax_t l); +int asn_umax2INTEGER(INTEGER_t *i, uintmax_t l); + +/* + * Size-specific conversion helpers. + */ +int asn_INTEGER2long(const INTEGER_t *i, long *l); +int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l); +int asn_long2INTEGER(INTEGER_t *i, long l); +int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l); +int asn_int642INTEGER(INTEGER_t *i, int64_t l); +int asn_uint642INTEGER(INTEGER_t *i, uint64_t l); + +/* A version of strtol/strtoimax(3) with nicer error reporting. */ +enum asn_strtox_result_e { + ASN_STRTOX_ERROR_RANGE = -3, /* Input outside of supported numeric range */ + ASN_STRTOX_ERROR_INVAL = -2, /* Invalid data encountered (e.g., "+-") */ + ASN_STRTOX_EXPECT_MORE = -1, /* More data expected (e.g. "+") */ + ASN_STRTOX_OK = 0, /* Conversion succeded, number ends at (*end) */ + ASN_STRTOX_EXTRA_DATA = 1 /* Conversion succeded, but the string has extra stuff */ +}; +enum asn_strtox_result_e asn_strtol_lim(const char *str, const char **end, + long *l); +enum asn_strtox_result_e asn_strtoul_lim(const char *str, const char **end, + unsigned long *l); +enum asn_strtox_result_e asn_strtoimax_lim(const char *str, const char **end, + intmax_t *l); +enum asn_strtox_result_e asn_strtoumax_lim(const char *str, const char **end, + uintmax_t *l); + +/* + * Convert the integer value into the corresponding enumeration map entry. + */ +const asn_INTEGER_enum_map_t *INTEGER_map_value2enum( + const asn_INTEGER_specifics_t *specs, long value); + +#ifdef __cplusplus +} +#endif + +#endif /* _INTEGER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/InitiatingMessage.c b/setup/xapp-bs-connector/asn1c_defs/InitiatingMessage.c new file mode 100644 index 0000000..9c34727 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/InitiatingMessage.c @@ -0,0 +1,389 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "InitiatingMessage.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICserviceUpdate = 7; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICcontrol = 4; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_E2setup = 1; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_Reset = 3; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICindication = 5; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_8_id_RICserviceQuery = 6; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_9_id_ErrorIndication = 2; +static const long asn_VAL_9_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_InitiatingMessage_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_InitiatingMessage_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 0; /* &InitiatingMessage */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct InitiatingMessage, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICsubscriptionDeleteRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceUpdate), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdate" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICcontrolRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.E2setupRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E2setupRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ResetRequest), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetRequest" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICindication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindication" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.RICserviceQuery), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceQuery" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage__value, choice.ErrorIndication), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ErrorIndication" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 8 }, /* RICsubscriptionRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 7 }, /* RICsubscriptionDeleteRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 6 }, /* RICserviceUpdate */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 5 }, /* RICcontrolRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 4 }, /* E2setupRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 3 }, /* ResetRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 6, -6, 2 }, /* RICindication */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 7, -7, 1 }, /* RICserviceQuery */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 8, -8, 0 } /* ErrorIndication */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct InitiatingMessage__value), + offsetof(struct InitiatingMessage__value, _asn_ctx), + offsetof(struct InitiatingMessage__value, present), + sizeof(((struct InitiatingMessage__value *)0)->present), + asn_MAP_value_tag2el_4, + 9, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 9, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_InitiatingMessage_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_InitiatingMessage_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct InitiatingMessage, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_InitiatingMessage_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_InitiatingMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_InitiatingMessage_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1 = { + sizeof(struct InitiatingMessage), + offsetof(struct InitiatingMessage, _asn_ctx), + asn_MAP_InitiatingMessage_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_InitiatingMessage = { + "InitiatingMessage", + "InitiatingMessage", + &asn_OP_SEQUENCE, + asn_DEF_InitiatingMessage_tags_1, + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + asn_DEF_InitiatingMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_InitiatingMessage_tags_1) + /sizeof(asn_DEF_InitiatingMessage_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_InitiatingMessage_1, + 3, /* Elements count */ + &asn_SPC_InitiatingMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/InitiatingMessage.h b/setup/xapp-bs-connector/asn1c_defs/InitiatingMessage.h new file mode 100644 index 0000000..1072067 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/InitiatingMessage.h @@ -0,0 +1,97 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _InitiatingMessage_H_ +#define _InitiatingMessage_H_ + + +#include + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include +#include +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum InitiatingMessage__value_PR { + InitiatingMessage__value_PR_NOTHING, /* No components present */ + InitiatingMessage__value_PR_RICsubscriptionRequest, + InitiatingMessage__value_PR_RICsubscriptionDeleteRequest, + InitiatingMessage__value_PR_RICserviceUpdate, + InitiatingMessage__value_PR_RICcontrolRequest, + InitiatingMessage__value_PR_E2setupRequest, + InitiatingMessage__value_PR_ResetRequest, + InitiatingMessage__value_PR_RICindication, + InitiatingMessage__value_PR_RICserviceQuery, + InitiatingMessage__value_PR_ErrorIndication +} InitiatingMessage__value_PR; + +/* InitiatingMessage */ +typedef struct InitiatingMessage { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct InitiatingMessage__value { + InitiatingMessage__value_PR present; + union InitiatingMessage__value_u { + RICsubscriptionRequest_t RICsubscriptionRequest; + RICsubscriptionDeleteRequest_t RICsubscriptionDeleteRequest; + RICserviceUpdate_t RICserviceUpdate; + RICcontrolRequest_t RICcontrolRequest; + E2setupRequest_t E2setupRequest; + ResetRequest_t ResetRequest; + RICindication_t RICindication; + RICserviceQuery_t RICserviceQuery; + ErrorIndication_t ErrorIndication; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} InitiatingMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_InitiatingMessage; +extern asn_SEQUENCE_specifics_t asn_SPC_InitiatingMessage_specs_1; +extern asn_TYPE_member_t asn_MBR_InitiatingMessage_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _InitiatingMessage_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/NULL.c b/setup/xapp-bs-connector/asn1c_defs/NULL.c new file mode 100644 index 0000000..4a2914f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/NULL.c @@ -0,0 +1,299 @@ +/*- + * Copyright (c) 2003, 2005 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include /* Implemented in terms of BOOLEAN type */ + +/* + * NULL basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NULL_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)) +}; +asn_TYPE_operation_t asn_OP_NULL = { + BOOLEAN_free, + NULL_print, + NULL_compare, + BOOLEAN_decode_ber, /* Implemented in terms of BOOLEAN */ + NULL_encode_der, /* Special handling of DER encoding */ + NULL_decode_xer, + NULL_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NULL_decode_oer, + NULL_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NULL_decode_uper, /* Unaligned PER decoder */ + NULL_encode_uper, /* Unaligned PER encoder */ + NULL_decode_aper, /* Aligned PER decoder */ + NULL_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NULL_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NULL = { + "NULL", + "NULL", + &asn_OP_NULL, + asn_DEF_NULL_tags, + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + asn_DEF_NULL_tags, /* Same as above */ + sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NULL_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, + ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + + erval.encoded = der_write_tags(td, 0, tag_mode, 0, tag, cb, app_key); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = ptr; + } + + ASN__ENCODED_OK(erval); +} + +asn_enc_rval_t +NULL_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)ilevel; + (void)flags; + (void)cb; + (void)app_key; + + /* XMLNullValue is empty */ + er.encoded = 0; + ASN__ENCODED_OK(er); +} + + +static enum xer_pbd_rval +NULL__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + (void)td; + (void)sptr; + (void)chunk_buf; /* Going to be empty according to the rules below. */ + + /* + * There must be no content in self-terminating tag. + */ + if(chunk_size) + return XPBD_BROKEN_ENCODING; + else + return XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +NULL_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(NULL_t), opt_mname, buf_ptr, size, + NULL__xer_body_decode); +} + +int +NULL_compare(const asn_TYPE_descriptor_t *td, const void *a, const void *b) { + (void)td; + (void)a; + (void)b; + return 0; +} + +int +NULL_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(sptr) { + return (cb("", 9, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +#ifndef ASN_DISABLE_OER_SUPPORT + +asn_dec_rval_t +NULL_decode_oer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, void **sptr, + const void *ptr, size_t size) { + asn_dec_rval_t rv = {RC_OK, 0}; + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)ptr; + (void)size; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + return rv; +} + +asn_enc_rval_t +NULL_encode_oer(const asn_TYPE_descriptor_t *td, + const asn_oer_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)sptr; + (void)constraints; + (void)cb; + (void)app_key; + + er.encoded = 0; /* Encoding in 0 bytes. */ + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NULL_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +NULL_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NULL_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + + (void)opt_codec_ctx; + (void)td; + (void)constraints; + (void)pd; + + if(!*sptr) { + *sptr = MALLOC(sizeof(NULL_t)); + if(*sptr) { + *(NULL_t *)*sptr = 0; + } else { + ASN__DECODE_FAILED; + } + } + + /* + * NULL type does not have content octets. + */ + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + + +asn_enc_rval_t +NULL_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + asn_enc_rval_t er = {0,0,0}; + + (void)td; + (void)constraints; + (void)sptr; + (void)po; + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +asn_random_fill_result_t +NULL_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + NULL_t *st = *sptr; + + (void)td; + (void)constr; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (NULL_t *)(*sptr = CALLOC(1, sizeof(*st))); + if(st == NULL) { + return result_failed; + } + } + + return result_ok; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/NULL.h b/setup/xapp-bs-connector/asn1c_defs/NULL.h new file mode 100644 index 0000000..802d12c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/NULL.h @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_TYPE_NULL_H +#define ASN_TYPE_NULL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * The value of the NULL type is meaningless: see BOOLEAN if you want to + * carry true/false semantics. + */ +typedef int NULL_t; + +extern asn_TYPE_descriptor_t asn_DEF_NULL; +extern asn_TYPE_operation_t asn_OP_NULL; + +asn_struct_print_f NULL_print; +asn_struct_compare_f NULL_compare; +der_type_encoder_f NULL_encode_der; +xer_type_decoder_f NULL_decode_xer; +xer_type_encoder_f NULL_encode_xer; +oer_type_decoder_f NULL_decode_oer; +oer_type_encoder_f NULL_encode_oer; +per_type_decoder_f NULL_decode_uper; +per_type_encoder_f NULL_encode_uper; +per_type_decoder_f NULL_decode_aper; +per_type_encoder_f NULL_encode_aper; +asn_random_fill_f NULL_random_fill; + +#define NULL_free BOOLEAN_free +#define NULL_decode_ber BOOLEAN_decode_ber +#define NULL_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* NULL_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/NativeEnumerated.c b/setup/xapp-bs-connector/asn1c_defs/NativeEnumerated.c new file mode 100644 index 0000000..800da97 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/NativeEnumerated.c @@ -0,0 +1,367 @@ +/*- + * Copyright (c) 2004, 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeEnumerated basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeEnumerated_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeEnumerated = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeEnumerated_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeEnumerated_decode_oer, + NativeEnumerated_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeEnumerated_decode_uper, + NativeEnumerated_encode_uper, + NativeEnumerated_decode_aper, + NativeEnumerated_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeEnumerated_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeEnumerated = { + "ENUMERATED", /* The ASN.1 type is still ENUMERATED */ + "ENUMERATED", + &asn_OP_NativeEnumerated, + asn_DEF_NativeEnumerated_tags, + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + asn_DEF_NativeEnumerated_tags, /* Same as above */ + sizeof(asn_DEF_NativeEnumerated_tags) / sizeof(asn_DEF_NativeEnumerated_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +asn_enc_rval_t +NativeEnumerated_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + const asn_INTEGER_enum_map_t *el; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + el = INTEGER_map_value2enum(specs, *native); + if(el) { + er.encoded = + asn__format_to_callback(cb, app_key, "<%s/>", el->enum_name); + if(er.encoded < 0) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } else { + ASN_DEBUG( + "ASN.1 forbids dealing with " + "unknown value of ENUMERATED type"); + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +NativeEnumerated_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +static int +NativeEnumerated__compar_value2enum(const void *ap, const void *bp) { + const asn_INTEGER_enum_map_t *a = ap; + const asn_INTEGER_enum_map_t *b = bp; + if(a->nat_value == b->nat_value) + return 0; + if(a->nat_value < b->nat_value) + return -1; + return 1; +} + +asn_enc_rval_t +NativeEnumerated_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + const asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +NativeEnumerated_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval = { RC_OK, 0 }; + long *native = (long *)*sptr; + const asn_per_constraint_t *ct; + long value; + + (void)opt_codec_ctx; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__DECODE_FAILED; /* Mandatory! */ + if(!specs) ASN__DECODE_FAILED; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as NativeEnumerated", td->name); + + if(ct->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) ASN__DECODE_STARVED; + if(inext) ct = 0; + } + + /* Deal with APER padding */ + if(ct && ct->upper_bound >= 255) { + int padding = 0; + padding = (8 - (pd->moved % 8)) % 8; + ASN_DEBUG("For NativeEnumerated %s,offset= %lu Padding bits = %d", td->name, pd->moved, padding); + ASN_DEBUG("For NativeEnumerated %s, upper bound = %lu", td->name, ct->upper_bound); + if(padding > 0) + per_get_few_bits(pd, padding); + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + if(value >= (specs->extension + ? specs->extension - 1 : specs->map_count)) + ASN__DECODE_FAILED; + } else { + if(!specs->extension) + ASN__DECODE_FAILED; + /* + * X.691, #10.6: normally small non-negative whole number; + */ + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->extension - 1; + if(value >= specs->map_count) + ASN__DECODE_FAILED; + } + + *native = specs->value2enum[value].nat_value; + ASN_DEBUG("Decoded %s = %ld", td->name, *native); + + return rval; +} + +asn_enc_rval_t +NativeEnumerated_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native, value; + const asn_per_constraint_t *ct; + int inext = 0; + asn_INTEGER_enum_map_t key; + asn_INTEGER_enum_map_t *kf; + + if(!sptr) ASN__ENCODE_FAILED; + if(!specs) ASN__ENCODE_FAILED; + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ASN__ENCODE_FAILED; /* Mandatory! */ + + ASN_DEBUG("Encoding %s as NativeEnumerated", td->name); + + er.encoded = 0; + + native = *(const long *)sptr; + if(native < 0) ASN__ENCODE_FAILED; + + key.nat_value = native; + kf = bsearch(&key, specs->value2enum, specs->map_count, + sizeof(key), NativeEnumerated__compar_value2enum); + if(!kf) { + ASN_DEBUG("No element corresponds to %ld", native); + ASN__ENCODE_FAILED; + } + value = kf - specs->value2enum; + + if(ct->range_bits >= 0) { + int cmpWith = specs->extension + ? specs->extension - 1 : specs->map_count; + if(value >= cmpWith) + inext = 1; + } + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + if(inext) ct = 0; + } else if(inext) { + ASN__ENCODE_FAILED; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, value, ct->range_bits)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + if(!specs->extension) + ASN__ENCODE_FAILED; + + /* + * X.691, #10.6: normally small non-negative whole number; + */ + ASN_DEBUG("value = %ld, ext = %d, inext = %d, res = %ld", + value, specs->extension, inext, + value - (inext ? (specs->extension - 1) : 0)); + if(uper_put_nsnnwn(po, value - (inext ? (specs->extension - 1) : 0))) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} diff --git a/setup/xapp-bs-connector/asn1c_defs/NativeEnumerated.h b/setup/xapp-bs-connector/asn1c_defs/NativeEnumerated.h new file mode 100644 index 0000000..459f0e6 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/NativeEnumerated.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard ENUMERATED in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeEnumerated_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeEnumerated_H_ +#define _NativeEnumerated_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeEnumerated; +extern asn_TYPE_operation_t asn_OP_NativeEnumerated; + +xer_type_encoder_f NativeEnumerated_encode_xer; +oer_type_decoder_f NativeEnumerated_decode_oer; +oer_type_encoder_f NativeEnumerated_encode_oer; +per_type_decoder_f NativeEnumerated_decode_uper; +per_type_encoder_f NativeEnumerated_encode_uper; +per_type_decoder_f NativeEnumerated_decode_aper; +per_type_encoder_f NativeEnumerated_encode_aper; + +#define NativeEnumerated_free NativeInteger_free +#define NativeEnumerated_print NativeInteger_print +#define NativeEnumerated_compare NativeInteger_compare +#define NativeEnumerated_random_fill NativeInteger_random_fill +#define NativeEnumerated_constraint asn_generic_no_constraint +#define NativeEnumerated_decode_ber NativeInteger_decode_ber +#define NativeEnumerated_encode_der NativeInteger_encode_der +#define NativeEnumerated_decode_xer NativeInteger_decode_xer + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeEnumerated_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/NativeInteger.c b/setup/xapp-bs-connector/asn1c_defs/NativeInteger.c new file mode 100644 index 0000000..316e872 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/NativeInteger.c @@ -0,0 +1,550 @@ +/*- + * Copyright (c) 2004, 2005, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Read the NativeInteger.h for the explanation wrt. differences between + * INTEGER and NativeInteger. + * Basically, both are decoders and encoders of ASN.1 INTEGER type, but this + * implementation deals with the standard (machine-specific) representation + * of them instead of using the platform-independent buffer. + */ +#include +#include + +/* + * NativeInteger basic type description. + */ +static const ber_tlv_tag_t asn_DEF_NativeInteger_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_operation_t asn_OP_NativeInteger = { + NativeInteger_free, + NativeInteger_print, + NativeInteger_compare, + NativeInteger_decode_ber, + NativeInteger_encode_der, + NativeInteger_decode_xer, + NativeInteger_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + NativeInteger_decode_oer, /* OER decoder */ + NativeInteger_encode_oer, /* Canonical OER encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + NativeInteger_decode_uper, /* Unaligned PER decoder */ + NativeInteger_encode_uper, /* Unaligned PER encoder */ + NativeInteger_decode_aper, /* Aligned PER decoder */ + NativeInteger_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + NativeInteger_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_NativeInteger = { + "INTEGER", /* The ASN.1 type is still INTEGER */ + "INTEGER", + &asn_OP_NativeInteger, + asn_DEF_NativeInteger_tags, + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + asn_DEF_NativeInteger_tags, /* Same as above */ + sizeof(asn_DEF_NativeInteger_tags) / sizeof(asn_DEF_NativeInteger_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +/* + * Decode INTEGER type. + */ +asn_dec_rval_t +NativeInteger_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **nint_ptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + long *native = (long *)*nint_ptr; + asn_dec_rval_t rval; + ber_tlv_len_t length; + + /* + * If the structure is not there, allocate it. + */ + if(native == NULL) { + native = (long *)(*nint_ptr = CALLOC(1, sizeof(*native))); + if(native == NULL) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + } + + ASN_DEBUG("Decoding %s as INTEGER (tm=%d)", + td->name, tag_mode); + + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + /* + * ASN.1 encoded INTEGER: buf_ptr, length + * Fill the native, at the same time checking for overflow. + * If overflow occured, return with RC_FAIL. + */ + { + INTEGER_t tmp; + union { + const void *constbuf; + void *nonconstbuf; + } unconst_buf; + long l; + + unconst_buf.constbuf = buf_ptr; + tmp.buf = (uint8_t *)unconst_buf.nonconstbuf; + tmp.size = length; + + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmp, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&tmp, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; + } + + *native = l; + } + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s (%ld)", + (long)rval.consumed, (long)length, td->name, (long)*native); + + return rval; +} + +/* + * Encode the NativeInteger using the standard INTEGER type DER encoder. + */ +asn_enc_rval_t +NativeInteger_encode_der(const asn_TYPE_descriptor_t *sd, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + unsigned long native = *(const unsigned long *)ptr; /* Disable sign ext. */ + asn_enc_rval_t erval = {0,0,0}; + INTEGER_t tmp; + +#ifdef WORDS_BIGENDIAN /* Opportunistic optimization */ + + tmp.buf = (uint8_t *)&native; + tmp.size = sizeof(native); + +#else /* Works even if WORDS_BIGENDIAN is not set where should've been */ + uint8_t buf[sizeof(native)]; + uint8_t *p; + + /* Prepare a fake INTEGER */ + for(p = buf + sizeof(buf) - 1; p >= buf; p--, native >>= 8) + *p = (uint8_t)native; + + tmp.buf = buf; + tmp.size = sizeof(buf); +#endif /* WORDS_BIGENDIAN */ + + /* Encode fake INTEGER */ + erval = INTEGER_encode_der(sd, &tmp, tag_mode, tag, cb, app_key); + if(erval.structure_ptr == &tmp) { + erval.structure_ptr = ptr; + } + return erval; +} + +/* + * Decode the chunk of XML text encoding INTEGER. + */ +asn_dec_rval_t +NativeInteger_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + INTEGER_t st; + void *st_ptr = (void *)&st; + long *native = (long *)*sptr; + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&st, 0, sizeof(st)); + rval = INTEGER_decode_xer(opt_codec_ctx, td, &st_ptr, + opt_mname, buf_ptr, size); + if(rval.code == RC_OK) { + long l; + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&st, (unsigned long *)&l) /* sic */ + : asn_INTEGER2long(&st, &l)) { + rval.code = RC_FAIL; + rval.consumed = 0; + } else { + *native = l; + } + } else { + /* + * Cannot restart from the middle; + * there is no place to save state in the native type. + * Request a continuation from the very beginning. + */ + rval.consumed = 0; + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st); + return rval; +} + + +asn_enc_rval_t +NativeInteger_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + char scratch[32]; /* Enough for 64-bit int */ + asn_enc_rval_t er = {0,0,0}; + const long *native = (const long *)sptr; + + (void)ilevel; + (void)flags; + + if(!native) ASN__ENCODE_FAILED; + + er.encoded = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) + ? "%lu" : "%ld", *native); + if(er.encoded <= 0 || (size_t)er.encoded >= sizeof(scratch) + || cb(scratch, er.encoded, app_key) < 0) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +NativeInteger_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (UPER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_uper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (UPER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_uper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +asn_dec_rval_t +NativeInteger_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_dec_rval_t rval; + long *native = (long *)*sptr; + INTEGER_t tmpint; + void *tmpintptr = &tmpint; + + (void)opt_codec_ctx; + ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name); + + if(!native) { + native = (long *)(*sptr = CALLOC(1, sizeof(*native))); + if(!native) ASN__DECODE_FAILED; + } + + memset(&tmpint, 0, sizeof tmpint); + rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints, + &tmpintptr, pd); + if(rval.code == RC_OK) { + if((specs&&specs->field_unsigned) + ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native) + : asn_INTEGER2long(&tmpint, native)) + rval.code = RC_FAIL; + else + ASN_DEBUG("NativeInteger %s got value %ld", + td->name, *native); + } + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + + return rval; +} + +asn_enc_rval_t +NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + long native; + INTEGER_t tmpint; + + if(!sptr) ASN__ENCODE_FAILED; + + native = *(const long *)sptr; + + ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native); + + memset(&tmpint, 0, sizeof(tmpint)); + if((specs&&specs->field_unsigned) + ? asn_ulong2INTEGER(&tmpint, (unsigned long)native) + : asn_long2INTEGER(&tmpint, native)) + ASN__ENCODE_FAILED; + er = INTEGER_encode_aper(td, constraints, &tmpint, po); + ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint); + return er; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +/* + * INTEGER specific human-readable output. + */ +int +NativeInteger_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + const long *native = (const long *)sptr; + char scratch[32]; /* Enough for 64-bit int */ + int ret; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(native) { + long value = *native; + ret = snprintf(scratch, sizeof(scratch), + (specs && specs->field_unsigned) ? "%lu" : "%ld", value); + assert(ret > 0 && (size_t)ret < sizeof(scratch)); + if(cb(scratch, ret, app_key) < 0) return -1; + if(specs && (value >= 0 || !specs->field_unsigned)) { + const asn_INTEGER_enum_map_t *el = + INTEGER_map_value2enum(specs, value); + if(el) { + if(cb(" (", 2, app_key) < 0) return -1; + if(cb(el->enum_name, el->enum_len, app_key) < 0) return -1; + if(cb(")", 1, app_key) < 0) return -1; + } + } + return 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +NativeInteger_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as INTEGER (%d, %p, Native)", + td->name, method, ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, sizeof(long)); + break; + } +} + +int +NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + (void)td; + + if(aptr && bptr) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + if(specs && specs->field_unsigned) { + const unsigned long *a = aptr; + const unsigned long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } else { + const long *a = aptr; + const long *b = bptr; + if(*a < *b) { + return -1; + } else if(*a > *b) { + return 1; + } else { + return 0; + } + } + } else if(!aptr) { + return -1; + } else { + return 1; + } +} + +asn_random_fill_result_t +NativeInteger_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_INTEGER_specifics_t *specs = + (const asn_INTEGER_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + long *st = *sptr; + const asn_INTEGER_enum_map_t *emap; + size_t emap_len; + intmax_t value; + int find_inside_map; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (long *)CALLOC(1, sizeof(*st)); + if(st == NULL) { + return result_failed; + } + } + + if(specs) { + emap = specs->value2enum; + emap_len = specs->map_count; + if(specs->strict_enumeration) { + find_inside_map = emap_len > 0; + } else { + find_inside_map = emap_len ? asn_random_between(0, 1) : 0; + } + } else { + emap = 0; + emap_len = 0; + find_inside_map = 0; + } + + if(find_inside_map) { + assert(emap_len > 0); + value = emap[asn_random_between(0, emap_len - 1)].nat_value; + } else { + const asn_per_constraints_t *ct; + + static const long variants[] = { + -65536, -65535, -65534, -32769, -32768, -32767, -16385, -16384, + -16383, -257, -256, -255, -254, -129, -128, -127, + -126, -1, 0, 1, 126, 127, 128, 129, + 254, 255, 256, 257, 16383, 16384, 16385, 32767, + 32768, 32769, 65534, 65535, 65536, 65537}; + if(specs && specs->field_unsigned) { + assert(variants[18] == 0); + value = variants[asn_random_between( + 18, sizeof(variants) / sizeof(variants[0]) - 1)]; + } else { + value = variants[asn_random_between( + 0, sizeof(variants) / sizeof(variants[0]) - 1)]; + } + + if(!constraints) constraints = &td->encoding_constraints; + ct = constraints ? constraints->per_constraints : 0; + if(ct && (ct->value.flags & APC_CONSTRAINED)) { + if(value < ct->value.lower_bound || value > ct->value.upper_bound) { + value = asn_random_between(ct->value.lower_bound, + ct->value.upper_bound); + } + } + } + + *sptr = st; + *st = value; + return result_ok; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/NativeInteger.h b/setup/xapp-bs-connector/asn1c_defs/NativeInteger.h new file mode 100644 index 0000000..c74406a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/NativeInteger.h @@ -0,0 +1,46 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This type differs from the standard INTEGER in that it is modelled using + * the fixed machine type (long, int, short), so it can hold only values of + * limited length. There is no type (i.e., NativeInteger_t, any integer type + * will do). + * This type may be used when integer range is limited by subtype constraints. + */ +#ifndef _NativeInteger_H_ +#define _NativeInteger_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +extern asn_TYPE_descriptor_t asn_DEF_NativeInteger; +extern asn_TYPE_operation_t asn_OP_NativeInteger; + +asn_struct_free_f NativeInteger_free; +asn_struct_print_f NativeInteger_print; +asn_struct_compare_f NativeInteger_compare; +ber_type_decoder_f NativeInteger_decode_ber; +der_type_encoder_f NativeInteger_encode_der; +xer_type_decoder_f NativeInteger_decode_xer; +xer_type_encoder_f NativeInteger_encode_xer; +oer_type_decoder_f NativeInteger_decode_oer; +oer_type_encoder_f NativeInteger_encode_oer; +per_type_decoder_f NativeInteger_decode_uper; +per_type_encoder_f NativeInteger_encode_uper; +per_type_decoder_f NativeInteger_decode_aper; +per_type_encoder_f NativeInteger_encode_aper; +asn_random_fill_f NativeInteger_random_fill; + +#define NativeInteger_constraint asn_generic_no_constraint + +#ifdef __cplusplus +} +#endif + +#endif /* _NativeInteger_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/OBJECT_IDENTIFIER.c b/setup/xapp-bs-connector/asn1c_defs/OBJECT_IDENTIFIER.c new file mode 100644 index 0000000..8dccf01 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/OBJECT_IDENTIFIER.c @@ -0,0 +1,656 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include /* for CHAR_BIT */ +#include + +/* + * OBJECT IDENTIFIER basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OBJECT_IDENTIFIER_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)) +}; +asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER = { + ASN__PRIMITIVE_TYPE_free, + OBJECT_IDENTIFIER_print, + OCTET_STRING_compare, /* Implemented in terms of a string comparison */ + ber_decode_primitive, + der_encode_primitive, + OBJECT_IDENTIFIER_decode_xer, + OBJECT_IDENTIFIER_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OBJECT_IDENTIFIER_decode_oer, + OBJECT_IDENTIFIER_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OBJECT_IDENTIFIER_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER = { + "OBJECT IDENTIFIER", + "OBJECT_IDENTIFIER", + &asn_OP_OBJECT_IDENTIFIER, + asn_DEF_OBJECT_IDENTIFIER_tags, + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + asn_DEF_OBJECT_IDENTIFIER_tags, /* Same as above */ + sizeof(asn_DEF_OBJECT_IDENTIFIER_tags) + / sizeof(asn_DEF_OBJECT_IDENTIFIER_tags[0]), + { 0, 0, OBJECT_IDENTIFIER_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + +int +OBJECT_IDENTIFIER_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + if(st && st->buf) { + if(st->size < 1) { + ASN__CTFAIL(app_key, td, sptr, + "%s: at least one numerical value " + "expected (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} + +static ssize_t +OBJECT_IDENTIFIER_get_first_arcs(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *arc0, asn_oid_arc_t *arc1) { + asn_oid_arc_t value; + + ssize_t rd = OBJECT_IDENTIFIER_get_single_arc(arcbuf, arcbuf_len, &value); + if(rd <= 0) return rd; + + if(value >= 80) { + *arc0 = 2; + *arc1 = value - 80; + } else if(value >= 40) { + *arc0 = 1; + *arc1 = value - 40; + } else { + *arc0 = 0; + *arc1 = value; + } + + return rd; +} + +ssize_t +OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t *ret_value) { + const uint8_t *b = arcbuf; + const uint8_t *arcend = arcbuf + arcbuf_len; /* End of arc */ + + if(arcbuf == arcend) { + return 0; + } else { + asn_oid_arc_t accum; + asn_oid_arc_t upper_limit = (ASN_OID_ARC_MAX >> 7); + /* When the value reaches "upper_limit", it can take */ + /* at most one more digit. If it exceeds "upper_limit" */ + /* but there are more digits - it's an Overflow condition */ + /* Gather all bits into the accumulator */ + for(accum = 0; b < arcend; b++) { + accum = (accum << 7) | (*b & ~0x80); + if((*b & 0x80) == 0) { // no more digits + if(accum <= ASN_OID_ARC_MAX) { + *ret_value = accum; + return 1 + (b - arcbuf); + } else { + errno = ERANGE; /* Overflow */ + return -1; + } + } else { // to make sure we aren't wrapping around + if(accum > upper_limit) { + errno = ERANGE; /* Overflow */ + return -1; + } + } + } + errno = EINVAL; + return -1; + } + +} + +static ssize_t +OBJECT_IDENTIFIER__dump_body(const OBJECT_IDENTIFIER_t *st, + asn_app_consume_bytes_f *cb, void *app_key) { + char scratch[32]; + asn_oid_arc_t arc0, arc1; + size_t produced = 0; + size_t off = 0; + ssize_t rd; + int ret; + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + + ret = snprintf(scratch, sizeof(scratch), "%"PRIu32".%"PRIu32, arc0, arc1); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) + return -1; + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + assert(off <= st->size); + ret = snprintf(scratch, sizeof(scratch), ".%" PRIu32, arc); + if(ret >= (ssize_t)sizeof(scratch)) { + return -1; + } + produced += ret; + if(cb(scratch, ret, app_key) < 0) return -1; + } + } + + if(off != st->size) { + ASN_DEBUG("Could not scan to the end of Object Identifier"); + return -1; + } + + return produced; +} + +static enum xer_pbd_rval +OBJECT_IDENTIFIER__xer_body_decode(const asn_TYPE_descriptor_t *td, void *sptr, + const void *chunk_buf, size_t chunk_size) { + OBJECT_IDENTIFIER_t *st = (OBJECT_IDENTIFIER_t *)sptr; + const char *chunk_end = (const char *)chunk_buf + chunk_size; + const char *endptr; + asn_oid_arc_t s_arcs[10]; + asn_oid_arc_t *arcs = s_arcs; + ssize_t num_arcs; + ssize_t ret; + + (void)td; + + num_arcs = OBJECT_IDENTIFIER_parse_arcs( + (const char *)chunk_buf, chunk_size, arcs, + sizeof(s_arcs) / sizeof(s_arcs[0]), &endptr); + if(num_arcs < 0) { + /* Expecting more than zero arcs */ + return XPBD_BROKEN_ENCODING; + } else if(num_arcs == 0) { + return XPBD_NOT_BODY_IGNORE; + } + assert(endptr == chunk_end); + + if((size_t)num_arcs > sizeof(s_arcs)/sizeof(s_arcs[0])) { + arcs = (asn_oid_arc_t *)MALLOC(num_arcs * sizeof(asn_oid_arc_t)); + if(!arcs) return XPBD_SYSTEM_FAILURE; + ret = OBJECT_IDENTIFIER_parse_arcs((const char *)chunk_buf, chunk_size, + arcs, num_arcs, &endptr); + if(ret != num_arcs) + return XPBD_SYSTEM_FAILURE; /* assert?.. */ + } + + /* + * Convert arcs into BER representation. + */ + ret = OBJECT_IDENTIFIER_set_arcs(st, arcs, num_arcs); + if(arcs != s_arcs) FREEMEM(arcs); + + return ret ? XPBD_SYSTEM_FAILURE : XPBD_BODY_CONSUMED; +} + +asn_dec_rval_t +OBJECT_IDENTIFIER_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return xer_decode_primitive(opt_codec_ctx, td, + sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname, + buf_ptr, size, OBJECT_IDENTIFIER__xer_body_decode); +} + +asn_enc_rval_t +OBJECT_IDENTIFIER_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + asn_enc_rval_t er = {0,0,0}; + + (void)ilevel; + (void)flags; + + if(!st || !st->buf) { + ASN__ENCODE_FAILED; + } + + er.encoded = OBJECT_IDENTIFIER__dump_body(st, cb, app_key); + if(er.encoded < 0) ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +int +OBJECT_IDENTIFIER_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OBJECT_IDENTIFIER_t *st = (const OBJECT_IDENTIFIER_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(!st || !st->buf) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb("{ ", 2, app_key) < 0) + return -1; + + if(OBJECT_IDENTIFIER__dump_body(st, cb, app_key) < 0) { + return -1; + } + + return (cb(" }", 2, app_key) < 0) ? -1 : 0; +} + +ssize_t +OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *st, asn_oid_arc_t *arcs, + size_t arc_slots) { + asn_oid_arc_t arc0, arc1; + size_t num_arcs = 0; + size_t off; + ssize_t rd; + + if(!st || !st->buf) { + errno = EINVAL; + return -1; + } + + rd = OBJECT_IDENTIFIER_get_first_arcs(st->buf, st->size, &arc0, &arc1); + if(rd <= 0) { + return -1; + } + num_arcs = 2; + switch(arc_slots) { + default: + case 2: + arcs[1] = arc1; + /* Fall through */ + case 1: + arcs[0] = arc0; + /* Fall through */ + case 0: + break; + } + + for(off = rd; ; ) { + asn_oid_arc_t arc; + rd = OBJECT_IDENTIFIER_get_single_arc(st->buf + off, st->size - off, + &arc); + if(rd < 0) { + return -1; + } else if(rd == 0) { + /* No more arcs. */ + break; + } else { + off += rd; + if(num_arcs < arc_slots) { + arcs[num_arcs] = arc; + } + num_arcs++; + } + } + + if(off != st->size) { + return -1; + } + + return num_arcs; +} + + +/* + * Save the single value as an object identifier arc. + */ +ssize_t +OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t value) { + /* + * The following conditions must hold: + * assert(arcbuf); + */ + uint8_t scratch[((sizeof(value) * CHAR_BIT + 6) / 7)]; + uint8_t *scratch_end = &scratch[sizeof(scratch)-1]; + uint8_t *b; + size_t result_len; + uint8_t mask; + + for(b = scratch_end, mask = 0; ; mask = 0x80, b--) { + *b = mask | (value & 0x7f); + value >>= 7; + if(!value) { + break; + } + } + + result_len = (scratch_end - b) + 1; + + if(result_len > arcbuf_len) { + return -1; + } + + memcpy(arcbuf, b, result_len); + + return result_len; +} + +int +OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *st, const asn_oid_arc_t *arcs, + size_t arc_slots) { + uint8_t *buf; + uint8_t *bp; + ssize_t wrote; + asn_oid_arc_t arc0; + asn_oid_arc_t arc1; + size_t size; + size_t i; + + if(!st || !arcs || arc_slots < 2) { + errno = EINVAL; + return -1; + } + + arc0 = arcs[0]; + arc1 = arcs[1]; + + if(arc0 <= 1) { + if(arc1 >= 40) { + /* 8.19.4: At most 39 subsequent values (including 0) */ + errno = ERANGE; + return -1; + } + } else if(arc0 == 2) { + if(arc1 > ASN_OID_ARC_MAX - 80) { + errno = ERANGE; + return -1; + } + } else if(arc0 > 2) { + /* 8.19.4: Only three values are allocated from the root node */ + errno = ERANGE; + return -1; + } + + /* + * After above tests it is known that the value of arc0 is completely + * trustworthy (0..2). However, the arc1's value is still meaningless. + */ + + /* + * Roughly estimate the maximum size necessary to encode these arcs. + * This estimation implicitly takes in account the following facts, + * that cancel each other: + * * the first two arcs are encoded in a single value. + * * the first value may require more space (+1 byte) + * * the value of the first arc which is in range (0..2) + */ + size = ((sizeof(asn_oid_arc_t) * CHAR_BIT + 6) / 7) * arc_slots; + bp = buf = (uint8_t *)MALLOC(size + 1); + if(!buf) { + /* ENOMEM */ + return -1; + } + + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arc0 * 40 + arc1); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + + for(i = 2; i < arc_slots; i++) { + wrote = OBJECT_IDENTIFIER_set_single_arc(bp, size, arcs[i]); + if(wrote <= 0) { + FREEMEM(buf); + return -1; + } + assert((size_t)wrote <= size); + bp += wrote; + size -= wrote; + } + + /* + * Replace buffer. + */ + st->size = bp - buf; + bp = st->buf; + st->buf = buf; + st->buf[st->size] = '\0'; + if(bp) FREEMEM(bp); + + return 0; +} + +ssize_t +OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end) { + size_t num_arcs = 0; + const char *oid_end; + enum { + ST_LEADSPACE, + ST_TAILSPACE, + ST_AFTERVALUE, /* Next character ought to be '.' or a space */ + ST_WAITDIGITS /* Next character is expected to be a digit */ + } state = ST_LEADSPACE; + + if(!oid_text || oid_txt_length < -1 || (arcs_count && !arcs)) { + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + errno = EINVAL; + return -1; + } + + if(oid_txt_length == -1) + oid_txt_length = strlen(oid_text); + +#define _OID_CAPTURE_ARC(oid_text, oid_end) \ + do { \ + const char *endp = oid_end; \ + unsigned long value; \ + switch(asn_strtoul_lim(oid_text, &endp, &value)) { \ + case ASN_STRTOX_EXTRA_DATA: \ + case ASN_STRTOX_OK: \ + if(value <= ASN_OID_ARC_MAX) { \ + if(num_arcs < arcs_count) arcs[num_arcs] = value; \ + num_arcs++; \ + oid_text = endp - 1; \ + break; \ + } \ + /* Fall through */ \ + case ASN_STRTOX_ERROR_RANGE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = ERANGE; \ + return -1; \ + case ASN_STRTOX_ERROR_INVAL: \ + case ASN_STRTOX_EXPECT_MORE: \ + if(opt_oid_text_end) *opt_oid_text_end = oid_text; \ + errno = EINVAL; \ + return -1; \ + } \ + } while(0) + + for(oid_end = oid_text + oid_txt_length; oid_text broken OID */ + return -1; + case ST_LEADSPACE: + case ST_WAITDIGITS: + _OID_CAPTURE_ARC(oid_text, oid_end); + state = ST_AFTERVALUE; + continue; + } + break; + default: + /* Unexpected symbols */ + state = ST_WAITDIGITS; + break; + } /* switch() */ + break; + } /* for() */ + + + if(opt_oid_text_end) *opt_oid_text_end = oid_text; + + /* Finalize last arc */ + switch(state) { + case ST_LEADSPACE: + return 0; /* No OID found in input data */ + case ST_WAITDIGITS: + errno = EINVAL; /* Broken OID */ + return -1; + case ST_AFTERVALUE: + case ST_TAILSPACE: + return num_arcs; + } + + errno = EINVAL; /* Broken OID */ + return -1; +} + +/* + * Generate values from the list of interesting values, or just a random + * value up to the upper limit. + */ +static asn_oid_arc_t +OBJECT_IDENTIFIER__biased_random_arc(asn_oid_arc_t upper_bound) { + const asn_oid_arc_t values[] = {0, 1, 127, 128, 129, 254, 255, 256}; + size_t idx; + + switch(asn_random_between(0, 2)) { + case 0: + idx = asn_random_between(0, sizeof(values) / sizeof(values[0]) - 1); + if(values[idx] < upper_bound) { + return values[idx]; + } + /* Fall through */ + case 1: + return asn_random_between(0, upper_bound); + case 2: + default: + return upper_bound; + } +} + +asn_random_fill_result_t +OBJECT_IDENTIFIER_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + OBJECT_IDENTIFIER_t *st; + asn_oid_arc_t arcs[5]; + size_t arcs_len = asn_random_between(2, 5); + size_t i; + + (void)constraints; + + if(max_length < arcs_len) return result_skipped; + + if(*sptr) { + st = *sptr; + } else { + st = CALLOC(1, sizeof(*st)); + } + + arcs[0] = asn_random_between(0, 2); + arcs[1] = OBJECT_IDENTIFIER__biased_random_arc( + arcs[0] <= 1 ? 39 : (ASN_OID_ARC_MAX - 80)); + for(i = 2; i < arcs_len; i++) { + arcs[i] = OBJECT_IDENTIFIER__biased_random_arc(ASN_OID_ARC_MAX); + } + + if(OBJECT_IDENTIFIER_set_arcs(st, arcs, arcs_len)) { + if(st != *sptr) { + ASN_STRUCT_FREE(*td, st); + } + return result_failed; + } + + *sptr = st; + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/OBJECT_IDENTIFIER.h b/setup/xapp-bs-connector/asn1c_defs/OBJECT_IDENTIFIER.h new file mode 100644 index 0000000..087c6fd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/OBJECT_IDENTIFIER.h @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OBJECT_IDENTIFIER_H_ +#define _OBJECT_IDENTIFIER_H_ + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t asn_oid_arc_t; +#define ASN_OID_ARC_MAX (~((asn_oid_arc_t)0)) + +typedef ASN__PRIMITIVE_TYPE_t OBJECT_IDENTIFIER_t; + +extern asn_TYPE_descriptor_t asn_DEF_OBJECT_IDENTIFIER; +extern asn_TYPE_operation_t asn_OP_OBJECT_IDENTIFIER; + +asn_struct_print_f OBJECT_IDENTIFIER_print; +asn_constr_check_f OBJECT_IDENTIFIER_constraint; +der_type_encoder_f OBJECT_IDENTIFIER_encode_der; +xer_type_decoder_f OBJECT_IDENTIFIER_decode_xer; +xer_type_encoder_f OBJECT_IDENTIFIER_encode_xer; +asn_random_fill_f OBJECT_IDENTIFIER_random_fill; + +#define OBJECT_IDENTIFIER_free ASN__PRIMITIVE_TYPE_free +#define OBJECT_IDENTIFIER_compare OCTET_STRING_compare +#define OBJECT_IDENTIFIER_decode_ber ber_decode_primitive +#define OBJECT_IDENTIFIER_encode_der der_encode_primitive +#define OBJECT_IDENTIFIER_decode_oer oer_decode_primitive +#define OBJECT_IDENTIFIER_encode_oer oer_encode_primitive +#define OBJECT_IDENTIFIER_decode_uper OCTET_STRING_decode_uper +#define OBJECT_IDENTIFIER_encode_uper OCTET_STRING_encode_uper +#define OBJECT_IDENTIFIER_decode_aper OCTET_STRING_decode_aper +#define OBJECT_IDENTIFIER_encode_aper OCTET_STRING_encode_aper + +/********************************** + * Some handy conversion routines * + **********************************/ + +/* + * This function fills an (arcs) array with OBJECT IDENTIFIER arcs + * up to specified (arc_slots) elements. + * + * EXAMPLE: + * void print_arcs(OBJECT_IDENTIFIER_t *oid) { + * asn_oid_arc_t fixed_arcs[10]; // Try with fixed space first + * asn_oid_arc_t *arcs = fixed_arcs; + * size_t arc_slots = sizeof(fixed_arcs)/sizeof(fixed_arcs[0]); // 10 + * ssize_t count; // Real number of arcs. + * int i; + * + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * // If necessary, reallocate arcs array and try again. + * if(count > arc_slots) { + * arc_slots = count; + * arcs = malloc(sizeof(asn_oid_arc_t) * arc_slots); + * if(!arcs) return; + * count = OBJECT_IDENTIFIER_get_arcs(oid, arcs, arc_slots); + * assert(count == arc_slots); + * } + * + * // Print the contents of the arcs array. + * for(i = 0; i < count; i++) + * printf("%"PRIu32"\n", arcs[i]); + * + * // Avoid memory leak. + * if(arcs != fixed_arcs) free(arcs); + * } + * + * RETURN VALUES: + * -1/EINVAL: Invalid arguments (oid is missing) + * -1/ERANGE: One or more arcs have value out of array cell type range. + * >=0: Number of arcs contained in the OBJECT IDENTIFIER + * + * WARNING: The function always returns the actual number of arcs, + * even if there is no sufficient (arc_slots) provided. + */ +ssize_t OBJECT_IDENTIFIER_get_arcs(const OBJECT_IDENTIFIER_t *oid, + asn_oid_arc_t *arcs, size_t arc_slots); + +/* + * This functions initializes the OBJECT IDENTIFIER object with + * the given set of arcs. + * The minimum of two arcs must be present; some restrictions apply. + * RETURN VALUES: + * -1/EINVAL: Invalid arguments + * -1/ERANGE: The first two arcs do not conform to ASN.1 restrictions. + * -1/ENOMEM: Memory allocation failed + * 0: The object was initialized with new arcs. + */ +int OBJECT_IDENTIFIER_set_arcs(OBJECT_IDENTIFIER_t *oid, + const asn_oid_arc_t *arcs, size_t arcs_count); + + +/* + * Parse the OBJECT IDENTIFIER textual representation ("1.3.6.1.4.1.9363"). + * No arc can exceed the (0..ASN_OID_ARC_MAX, which is the same as UINT32_MAX). + * This function is not specific to OBJECT IDENTIFIER, it may be used to parse + * the RELATIVE-OID data, or any other data consisting of dot-separated + * series of numeric values. + * + * If (oid_txt_length == -1), the strlen() will be invoked to determine the + * size of the (oid_text) string. + * + * After return, the optional (opt_oid_text_end) is set to the character after + * the last parsed one. (opt_oid_text_end) is never less than (oid_text). + * + * RETURN VALUES: + * -1: Parse error. + * >= 0: Number of arcs contained in the OBJECT IDENTIFIER. + * + * WARNING: The function always returns the real number of arcs, + * even if there is no sufficient (arc_slots) provided. + * This is useful for (arc_slots) value estimation. + */ +ssize_t OBJECT_IDENTIFIER_parse_arcs(const char *oid_text, + ssize_t oid_txt_length, + asn_oid_arc_t *arcs, size_t arcs_count, + const char **opt_oid_text_end); + +/* + * Internal functions. + * Used by RELATIVE-OID implementation in particular. + */ + +/* + * Retrieve a single arc of size from the (arcbuf) buffer. + * RETURN VALUES: + * -1: Failed to retrieve the value from the (arcbuf). + * >0: Number of bytes consumed from the (arcbuf), <= (arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_get_single_arc(const uint8_t *arcbuf, + size_t arcbuf_len, + asn_oid_arc_t *ret_value); + +/* + * Write the unterminated arc value into the (arcbuf) which has the size at + * least (arcbuf_len). + * RETURN VALUES: + * -1: (arcbuf_len) size is not sufficient to write the value. + * : Number of bytes appended to the arcbuf (<= arcbuf_len). + */ +ssize_t OBJECT_IDENTIFIER_set_single_arc(uint8_t *arcbuf, size_t arcbuf_len, + asn_oid_arc_t arc_value); + +#ifdef __cplusplus +} +#endif + +#endif /* _OBJECT_IDENTIFIER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/OCTET_STRING.c b/setup/xapp-bs-connector/asn1c_defs/OCTET_STRING.c new file mode 100644 index 0000000..432ce5a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/OCTET_STRING.c @@ -0,0 +1,2409 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* for .bits_unused member */ +#include + +/* + * OCTET STRING basic type description. + */ +static const ber_tlv_tag_t asn_DEF_OCTET_STRING_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs = { + sizeof(OCTET_STRING_t), + offsetof(OCTET_STRING_t, _asn_ctx), + ASN_OSUBV_STR +}; + +asn_TYPE_operation_t asn_OP_OCTET_STRING = { + OCTET_STRING_free, + OCTET_STRING_print, /* OCTET STRING generally means a non-ascii sequence */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_hex, + OCTET_STRING_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, /* Unaligned PER decoder */ + OCTET_STRING_encode_uper, /* Unaligned PER encoder */ + OCTET_STRING_decode_aper, /* Aligned PER decoder */ + OCTET_STRING_encode_aper, /* Aligned PER encoder */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_OCTET_STRING = { + "OCTET STRING", /* Canonical name */ + "OCTET_STRING", /* XML tag name */ + &asn_OP_OCTET_STRING, + asn_DEF_OCTET_STRING_tags, + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + asn_DEF_OCTET_STRING_tags, /* Same as above */ + sizeof(asn_DEF_OCTET_STRING_tags) + / sizeof(asn_DEF_OCTET_STRING_tags[0]), + { 0, 0, asn_generic_no_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs +}; + +#undef _CH_PHASE +#undef NEXT_PHASE +#undef PREV_PHASE +#define _CH_PHASE(ctx, inc) do { \ + if(ctx->phase == 0) \ + ctx->context = 0; \ + ctx->phase += inc; \ + } while(0) +#define NEXT_PHASE(ctx) _CH_PHASE(ctx, +1) +#define PREV_PHASE(ctx) _CH_PHASE(ctx, -1) + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t tmprval; \ + tmprval.code = _code; \ + tmprval.consumed = consumed_myself; \ + return tmprval; \ + } while(0) + +#undef APPEND +#define APPEND(bufptr, bufsize) do { \ + size_t _bs = (bufsize); /* Append size */ \ + size_t _ns = ctx->context; /* Allocated now */ \ + size_t _es = st->size + _bs; /* Expected size */ \ + /* int is really a typeof(st->size): */ \ + if((int)_es < 0) RETURN(RC_FAIL); \ + if(_ns <= _es) { \ + void *ptr; \ + /* Be nice and round to the memory allocator */ \ + do { _ns = _ns ? _ns << 1 : 16; } \ + while(_ns <= _es); \ + /* int is really a typeof(st->size): */ \ + if((int)_ns < 0) RETURN(RC_FAIL); \ + ptr = REALLOC(st->buf, _ns); \ + if(ptr) { \ + st->buf = (uint8_t *)ptr; \ + ctx->context = _ns; \ + } else { \ + RETURN(RC_FAIL); \ + } \ + ASN_DEBUG("Reallocating into %ld", (long)_ns); \ + } \ + memcpy(st->buf + st->size, bufptr, _bs); \ + /* Convenient nul-termination */ \ + st->buf[_es] = '\0'; \ + st->size = _es; \ + } while(0) + +/* + * The main reason why ASN.1 is still alive is that too much time and effort + * is necessary for learning it more or less adequately, thus creating a gut + * necessity to demonstrate that aquired skill everywhere afterwards. + * No, I am not going to explain what the following stuff is. + */ +struct _stack_el { + ber_tlv_len_t left; /* What's left to read (or -1) */ + ber_tlv_len_t got; /* What was actually processed */ + unsigned cont_level; /* Depth of subcontainment */ + int want_nulls; /* Want null "end of content" octets? */ + int bits_chopped; /* Flag in BIT STRING mode */ + ber_tlv_tag_t tag; /* For debugging purposes */ + struct _stack_el *prev; + struct _stack_el *next; +}; +struct _stack { + struct _stack_el *tail; + struct _stack_el *cur_ptr; +}; + +static struct _stack_el * +OS__add_stack_el(struct _stack *st) { + struct _stack_el *nel; + + /* + * Reuse the old stack frame or allocate a new one. + */ + if(st->cur_ptr && st->cur_ptr->next) { + nel = st->cur_ptr->next; + nel->bits_chopped = 0; + nel->got = 0; + /* Retain the nel->cont_level, it's correct. */ + } else { + nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); + if(nel == NULL) + return NULL; + + if(st->tail) { + /* Increase a subcontainment depth */ + nel->cont_level = st->tail->cont_level + 1; + st->tail->next = nel; + } + nel->prev = st->tail; + st->tail = nel; + } + + st->cur_ptr = nel; + + return nel; +} + +static struct _stack * +_new_stack(void) { + return (struct _stack *)CALLOC(1, sizeof(struct _stack)); +} + +/* + * Decode OCTET STRING type. + */ +asn_dec_rval_t +OCTET_STRING_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + asn_dec_rval_t rval; + asn_struct_ctx_t *ctx; + ssize_t consumed_myself = 0; + struct _stack *stck; /* Expectations stack structure */ + struct _stack_el *sel = 0; /* Stack element */ + int tlv_constr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + + ASN_DEBUG("Decoding %s as %s (frame %ld)", + td->name, + (type_variant == ASN_OSUBV_STR) ? + "OCTET STRING" : "OS-SpecialCase", + (long)size); + + /* + * Create the string if does not exist. + */ + if(st == NULL) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) RETURN(RC_FAIL); + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + switch(ctx->phase) { + case 0: + /* + * Check tags. + */ + rval = ber_check_tags(opt_codec_ctx, td, ctx, + buf_ptr, size, tag_mode, -1, + &ctx->left, &tlv_constr); + if(rval.code != RC_OK) + return rval; + + if(tlv_constr) { + /* + * Complex operation, requires stack of expectations. + */ + ctx->ptr = _new_stack(); + if(!ctx->ptr) { + RETURN(RC_FAIL); + } + } else { + /* + * Jump into stackless primitive decoding. + */ + _CH_PHASE(ctx, 3); + if(type_variant == ASN_OSUBV_ANY && tag_mode != 1) + APPEND(buf_ptr, rval.consumed); + ADVANCE(rval.consumed); + goto phase3; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + phase1: + /* + * Fill the stack with expectations. + */ + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + do { + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_tag_t expected_tag; + ssize_t tl, ll, tlvl; + /* This one works even if (sel->left == -1) */ + size_t Left = ((!sel||(size_t)sel->left >= size) + ?size:(size_t)sel->left); + + + ASN_DEBUG("%p, s->l=%ld, s->wn=%ld, s->g=%ld\n", (void *)sel, + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)(sel?sel->got:0) + ); + if(sel && sel->left <= 0 && sel->want_nulls == 0) { + if(sel->prev) { + struct _stack_el *prev = sel->prev; + if(prev->left != -1) { + if(prev->left < sel->got) + RETURN(RC_FAIL); + prev->left -= sel->got; + } + prev->got += sel->got; + sel = stck->cur_ptr = prev; + if(!sel) break; + tlv_constr = 1; + continue; + } else { + sel = stck->cur_ptr = 0; + break; /* Nothing to wait */ + } + } + + tl = ber_fetch_tag(buf_ptr, Left, &tlv_tag); + ASN_DEBUG("fetch tag(size=%ld,L=%ld), %sstack, left=%ld, wn=%ld, tl=%ld", + (long)size, (long)Left, sel?"":"!", + (long)(sel?sel->left:0), + (long)(sel?sel->want_nulls:0), + (long)tl); + switch(tl) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr); + + ll = ber_fetch_length(tlv_constr, + (const char *)buf_ptr + tl,Left - tl,&tlv_len); + ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld", + ber_tlv_tag_string(tlv_tag), tlv_constr, + (long)Left, (long)tl, (long)tlv_len, (long)ll); + switch(ll) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + if(sel && sel->want_nulls + && ((const uint8_t *)buf_ptr)[0] == 0 + && ((const uint8_t *)buf_ptr)[1] == 0) + { + + ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls); + + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND("\0\0", 2); + + ADVANCE(2); + sel->got += 2; + if(sel->left != -1) { + sel->left -= 2; /* assert(sel->left >= 2) */ + } + + sel->want_nulls--; + if(sel->want_nulls == 0) { + /* Move to the next expectation */ + sel->left = 0; + tlv_constr = 1; + } + + continue; + } + + /* + * Set up expected tags, + * depending on ASN.1 type being decoded. + */ + switch(type_variant) { + case ASN_OSUBV_BIT: + /* X.690: 8.6.4.1, NOTE 2 */ + /* Fall through */ + case ASN_OSUBV_STR: + default: + if(sel) { + unsigned level = sel->cont_level; + if(level < td->all_tags_count) { + expected_tag = td->all_tags[level]; + break; + } else if(td->all_tags_count) { + expected_tag = td->all_tags + [td->all_tags_count - 1]; + break; + } + /* else, Fall through */ + } + /* Fall through */ + case ASN_OSUBV_ANY: + expected_tag = tlv_tag; + break; + } + + + if(tlv_tag != expected_tag) { + char buf[2][32]; + ber_tlv_tag_snprint(tlv_tag, + buf[0], sizeof(buf[0])); + ber_tlv_tag_snprint(td->tags[td->tags_count-1], + buf[1], sizeof(buf[1])); + ASN_DEBUG("Tag does not match expectation: %s != %s", + buf[0], buf[1]); + RETURN(RC_FAIL); + } + + tlvl = tl + ll; /* Combined length of T and L encoding */ + if((tlv_len + tlvl) < 0) { + /* tlv_len value is too big */ + ASN_DEBUG("TLV encoding + length (%ld) is too big", + (long)tlv_len); + RETURN(RC_FAIL); + } + + /* + * Append a new expectation. + */ + sel = OS__add_stack_el(stck); + if(!sel) RETURN(RC_FAIL); + + sel->tag = tlv_tag; + + sel->want_nulls = (tlv_len==-1); + if(sel->prev && sel->prev->left != -1) { + /* Check that the parent frame is big enough */ + if(sel->prev->left < tlvl + (tlv_len==-1?0:tlv_len)) + RETURN(RC_FAIL); + if(tlv_len == -1) + sel->left = sel->prev->left - tlvl; + else + sel->left = tlv_len; + } else { + sel->left = tlv_len; + } + if(type_variant == ASN_OSUBV_ANY + && (tag_mode != 1 || sel->cont_level)) + APPEND(buf_ptr, tlvl); + sel->got += tlvl; + ADVANCE(tlvl); + + ASN_DEBUG("+EXPECT2 got=%ld left=%ld, wn=%d, clvl=%u", + (long)sel->got, (long)sel->left, + sel->want_nulls, sel->cont_level); + + } while(tlv_constr); + if(sel == NULL) { + /* Finished operation, "phase out" */ + ASN_DEBUG("Phase out"); + _CH_PHASE(ctx, +3); + break; + } + + NEXT_PHASE(ctx); + /* Fall through */ + case 2: + stck = (struct _stack *)ctx->ptr; + sel = stck->cur_ptr; + ASN_DEBUG("Phase 2: Need %ld bytes, size=%ld, alrg=%ld, wn=%d", + (long)sel->left, (long)size, (long)sel->got, + sel->want_nulls); + { + ber_tlv_len_t len; + + assert(sel->left >= 0); + + len = ((ber_tlv_len_t)size < sel->left) + ? (ber_tlv_len_t)size : sel->left; + if(len > 0) { + if(type_variant == ASN_OSUBV_BIT + && sel->bits_chopped == 0) { + /* Put the unused-bits-octet away */ + st->bits_unused = *(const uint8_t *)buf_ptr; + APPEND(((const char *)buf_ptr+1), (len - 1)); + sel->bits_chopped = 1; + } else { + APPEND(buf_ptr, len); + } + ADVANCE(len); + sel->left -= len; + sel->got += len; + } + + if(sel->left) { + ASN_DEBUG("OS left %ld, size = %ld, wn=%d\n", + (long)sel->left, (long)size, sel->want_nulls); + RETURN(RC_WMORE); + } + + PREV_PHASE(ctx); + goto phase1; + } + break; + case 3: + phase3: + /* + * Primitive form, no stack required. + */ + assert(ctx->left >= 0); + + if(size < (size_t)ctx->left) { + if(!size) RETURN(RC_WMORE); + if(type_variant == ASN_OSUBV_BIT && !ctx->context) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, size); + assert(ctx->context > 0); + ctx->left -= size; + ADVANCE(size); + RETURN(RC_WMORE); + } else { + if(type_variant == ASN_OSUBV_BIT + && !ctx->context && ctx->left) { + st->bits_unused = *(const uint8_t *)buf_ptr; + ctx->left--; + ADVANCE(1); + } + APPEND(buf_ptr, ctx->left); + ADVANCE(ctx->left); + ctx->left = 0; + + NEXT_PHASE(ctx); + } + break; + } + + if(sel) { + ASN_DEBUG("3sel p=%p, wn=%d, l=%ld, g=%ld, size=%ld", + (void *)sel->prev, sel->want_nulls, + (long)sel->left, (long)sel->got, (long)size); + if(sel->prev || sel->want_nulls > 1 || sel->left > 0) { + RETURN(RC_WMORE); + } + } + + /* + * BIT STRING-specific processing. + */ + if(type_variant == ASN_OSUBV_BIT) { + if(st->size) { + if(st->bits_unused < 0 || st->bits_unused > 7) { + RETURN(RC_FAIL); + } + /* Finalize BIT STRING: zero out unused bits. */ + st->buf[st->size-1] &= 0xff << st->bits_unused; + } else { + if(st->bits_unused) { + RETURN(RC_FAIL); + } + } + } + + ASN_DEBUG("Took %ld bytes to encode %s: [%s]:%ld", + (long)consumed_myself, td->name, + (type_variant == ASN_OSUBV_STR) ? (char *)st->buf : "", + (long)st->size); + + + RETURN(RC_OK); +} + +/* + * Encode OCTET STRING type using DER. + */ +asn_enc_rval_t +OCTET_STRING_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = { 0, 0, 0 }; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + enum asn_OS_Subvariant type_variant = specs->subvariant; + int fix_last_byte = 0; + + ASN_DEBUG("%s %s as OCTET STRING", + cb?"Estimating":"Encoding", td->name); + + /* + * Write tags. + */ + if(type_variant != ASN_OSUBV_ANY || tag_mode == 1) { + er.encoded = der_write_tags(td, + (type_variant == ASN_OSUBV_BIT) + st->size, + tag_mode, type_variant == ASN_OSUBV_ANY, tag, + cb, app_key); + if(er.encoded == -1) { + er.failed_type = td; + er.structure_ptr = sptr; + return er; + } + } else { + /* Disallow: [] IMPLICIT ANY */ + assert(type_variant != ASN_OSUBV_ANY || tag_mode != -1); + er.encoded = 0; + } + + if(!cb) { + er.encoded += (type_variant == ASN_OSUBV_BIT) + st->size; + ASN__ENCODED_OK(er); + } + + /* + * Prepare to deal with the last octet of BIT STRING. + */ + if(type_variant == ASN_OSUBV_BIT) { + uint8_t b = st->bits_unused & 0x07; + if(b && st->size) fix_last_byte = 1; + ASN__CALLBACK(&b, 1); + } + + /* Invoke callback for the main part of the buffer */ + ASN__CALLBACK(st->buf, st->size - fix_last_byte); + + /* The last octet should be stripped off the unused bits */ + if(fix_last_byte) { + uint8_t b = st->buf[st->size-1] & (0xff << st->bits_unused); + ASN__CALLBACK(&b, 1); + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_enc_rval_t +OCTET_STRING_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + if(flags & XER_F_CANONICAL) { + char *scend = scratch + (sizeof(scratch) - 2); + for(; buf < end; buf++) { + if(p >= scend) { + ASN__CALLBACK(scratch, p - scratch); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + } + + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + } else { + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + ASN__CALLBACK(scratch, p-scratch); + p = scratch; + ASN__TEXT_INDENT(1, ilevel); + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + if(p - scratch) { + p--; /* Remove the tail space */ + ASN__CALLBACK(scratch, p-scratch); /* Dump the rest */ + if(st->size > 16) + ASN__TEXT_INDENT(1, ilevel-1); + } + } + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +static const struct OCTET_STRING__xer_escape_table_s { + const char *string; + int size; +} OCTET_STRING__xer_escape_table[] = { +#define OSXET(s) { s, sizeof(s) - 1 } + OSXET("\074\156\165\154\057\076"), /* */ + OSXET("\074\163\157\150\057\076"), /* */ + OSXET("\074\163\164\170\057\076"), /* */ + OSXET("\074\145\164\170\057\076"), /* */ + OSXET("\074\145\157\164\057\076"), /* */ + OSXET("\074\145\156\161\057\076"), /* */ + OSXET("\074\141\143\153\057\076"), /* */ + OSXET("\074\142\145\154\057\076"), /* */ + OSXET("\074\142\163\057\076"), /* */ + OSXET("\011"), /* \t */ + OSXET("\012"), /* \n */ + OSXET("\074\166\164\057\076"), /* */ + OSXET("\074\146\146\057\076"), /* */ + OSXET("\015"), /* \r */ + OSXET("\074\163\157\057\076"), /* */ + OSXET("\074\163\151\057\076"), /* */ + OSXET("\074\144\154\145\057\076"), /* */ + OSXET("\074\144\143\061\057\076"), /* */ + OSXET("\074\144\143\062\057\076"), /* */ + OSXET("\074\144\143\063\057\076"), /* */ + OSXET("\074\144\143\064\057\076"), /* */ + OSXET("\074\156\141\153\057\076"), /* */ + OSXET("\074\163\171\156\057\076"), /* */ + OSXET("\074\145\164\142\057\076"), /* */ + OSXET("\074\143\141\156\057\076"), /* */ + OSXET("\074\145\155\057\076"), /* */ + OSXET("\074\163\165\142\057\076"), /* */ + OSXET("\074\145\163\143\057\076"), /* */ + OSXET("\074\151\163\064\057\076"), /* */ + OSXET("\074\151\163\063\057\076"), /* */ + OSXET("\074\151\163\062\057\076"), /* */ + OSXET("\074\151\163\061\057\076"), /* */ + { 0, 0 }, /* " " */ + { 0, 0 }, /* ! */ + { 0, 0 }, /* \" */ + { 0, 0 }, /* # */ + { 0, 0 }, /* $ */ + { 0, 0 }, /* % */ + OSXET("\046\141\155\160\073"), /* & */ + { 0, 0 }, /* ' */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* ()*+,-./ */ + {0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}, /* 01234567 */ + {0,0},{0,0},{0,0},{0,0}, /* 89:; */ + OSXET("\046\154\164\073"), /* < */ + { 0, 0 }, /* = */ + OSXET("\046\147\164\073"), /* > */ +}; + +static int +OS__check_escaped_control_char(const void *buf, int size) { + size_t i; + /* + * Inefficient algorithm which translates the escape sequences + * defined above into characters. Returns -1 if not found. + * TODO: replace by a faster algorithm (bsearch(), hash or + * nested table lookups). + */ + for(i = 0; i < 32 /* Don't spend time on the bottom half */; i++) { + const struct OCTET_STRING__xer_escape_table_s *el; + el = &OCTET_STRING__xer_escape_table[i]; + if(el->size == size && memcmp(buf, el->string, size) == 0) + return i; + } + return -1; +} + +static int +OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size_t chunk_size) { + /* + * This might be one of the escape sequences + * for control characters. Check it out. + * #11.15.5 + */ + int control_char = OS__check_escaped_control_char(chunk_buf,chunk_size); + if(control_char >= 0) { + OCTET_STRING_t *st = (OCTET_STRING_t *)struct_ptr; + void *p = REALLOC(st->buf, st->size + 2); + if(p) { + st->buf = (uint8_t *)p; + st->buf[st->size++] = control_char; + st->buf[st->size] = '\0'; /* nul-termination */ + return 0; + } + } + + return -1; /* No, it's not */ +} + +asn_enc_rval_t +OCTET_STRING_encode_xer_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + uint8_t *buf, *end; + uint8_t *ss; /* Sequence start */ + ssize_t encoded_len = 0; + + (void)ilevel; /* Unused argument */ + (void)flags; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + buf = st->buf; + end = buf + st->size; + for(ss = buf; buf < end; buf++) { + unsigned int ch = *buf; + int s_len; /* Special encoding sequence length */ + + /* + * Escape certain characters: X.680/11.15 + */ + if(ch < sizeof(OCTET_STRING__xer_escape_table) + /sizeof(OCTET_STRING__xer_escape_table[0]) + && (s_len = OCTET_STRING__xer_escape_table[ch].size)) { + if(((buf - ss) && cb(ss, buf - ss, app_key) < 0) + || cb(OCTET_STRING__xer_escape_table[ch].string, s_len, + app_key) < 0) + ASN__ENCODE_FAILED; + encoded_len += (buf - ss) + s_len; + ss = buf + 1; + } + } + + encoded_len += (buf - ss); + if((buf - ss) && cb(ss, buf - ss, app_key) < 0) + ASN__ENCODE_FAILED; + + er.encoded = encoded_len; + ASN__ENCODED_OK(er); +} + +/* + * Convert from hexadecimal format (cstring): "AB CD EF" + */ +static ssize_t OCTET_STRING__convert_hexadecimal(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *chunk_stop = (const char *)chunk_buf; + const char *p = chunk_stop; + const char *pend = p + chunk_size; + unsigned int clv = 0; + int half = 0; /* Half bit */ + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 1) / 2; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * If something like " a b c " appears here, the " a b":3 will be + * converted, and the rest skipped. That is, unless buf_size is greater + * than chunk_size, then it'll be equivalent to "ABC0". + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + continue; + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + clv = (clv << 4) + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + clv = (clv << 4) + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + clv = (clv << 4) + (ch - 0x61 + 10); + break; + default: + *buf = 0; /* JIC */ + return -1; + } + if(half++) { + half = 0; + *buf++ = clv; + chunk_stop = p + 1; + } + } + + /* + * Check partial decoding. + */ + if(half) { + if(have_more) { + /* + * Partial specification is fine, + * because no more more PXER_TEXT data is available. + */ + *buf++ = clv << 4; + chunk_stop = p; + } + } else { + chunk_stop = p; + } + + st->size = buf - st->buf; /* Adjust the buffer size */ + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return (chunk_stop - (const char *)chunk_buf); /* Converted size */ +} + +/* + * Convert from binary format: "00101011101" + */ +static ssize_t OCTET_STRING__convert_binary(void *sptr, const void *chunk_buf, size_t chunk_size, int have_more) { + BIT_STRING_t *st = (BIT_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + int bits_unused = st->bits_unused & 0x7; + uint8_t *buf; + + /* Reallocate buffer according to high cap estimation */ + size_t new_size = st->size + (chunk_size + 7) / 8; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + (void)have_more; + + if(bits_unused == 0) + bits_unused = 8; + else if(st->size) + buf--; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + switch(ch) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* Ignore whitespace */ + break; + case 0x30: + case 0x31: + if(bits_unused-- <= 0) { + *++buf = 0; /* Clean the cell */ + bits_unused = 7; + } + *buf |= (ch&1) << bits_unused; + break; + default: + st->bits_unused = bits_unused; + return -1; + } + } + + if(bits_unused == 8) { + st->size = buf - st->buf; + st->bits_unused = 0; + } else { + st->size = buf - st->buf + 1; + st->bits_unused = bits_unused; + } + + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Something like strtod(), but with stricter rules. + */ +static int +OS__strtoent(int base, const char *buf, const char *end, int32_t *ret_value) { + const int32_t last_unicode_codepoint = 0x10ffff; + int32_t val = 0; + const char *p; + + for(p = buf; p < end; p++) { + int ch = *p; + + switch(ch) { + case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: /*01234*/ + case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: /*56789*/ + val = val * base + (ch - 0x30); + break; + case 0x41: case 0x42: case 0x43: /* ABC */ + case 0x44: case 0x45: case 0x46: /* DEF */ + val = val * base + (ch - 0x41 + 10); + break; + case 0x61: case 0x62: case 0x63: /* abc */ + case 0x64: case 0x65: case 0x66: /* def */ + val = val * base + (ch - 0x61 + 10); + break; + case 0x3b: /* ';' */ + *ret_value = val; + return (p - buf) + 1; + default: + return -1; /* Character set error */ + } + + /* Value exceeds the Unicode range. */ + if(val > last_unicode_codepoint) { + return -1; + } + } + + *ret_value = -1; + return (p - buf); +} + +/* + * Convert from the plain UTF-8 format, expanding entity references: "2 < 3" + */ +static ssize_t +OCTET_STRING__convert_entrefs(void *sptr, const void *chunk_buf, + size_t chunk_size, int have_more) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + uint8_t *buf; + + /* Reallocate buffer */ + size_t new_size = st->size + chunk_size; + void *nptr = REALLOC(st->buf, new_size + 1); + if(!nptr) return -1; + st->buf = (uint8_t *)nptr; + buf = st->buf + st->size; + + /* + * Convert series of 0 and 1 into the octet string. + */ + for(; p < pend; p++) { + int ch = *(const unsigned char *)p; + int len; /* Length of the rest of the chunk */ + + if(ch != 0x26 /* '&' */) { + *buf++ = ch; + continue; /* That was easy... */ + } + + /* + * Process entity reference. + */ + len = chunk_size - (p - (const char *)chunk_buf); + if(len == 1 /* "&" */) goto want_more; + if(p[1] == 0x23 /* '#' */) { + const char *pval; /* Pointer to start of digits */ + int32_t val = 0; /* Entity reference value */ + int base; + + if(len == 2 /* "&#" */) goto want_more; + if(p[2] == 0x78 /* 'x' */) + pval = p + 3, base = 16; + else + pval = p + 2, base = 10; + len = OS__strtoent(base, pval, p + len, &val); + if(len == -1) { + /* Invalid charset. Just copy verbatim. */ + *buf++ = ch; + continue; + } + if(!len || pval[len-1] != 0x3b) goto want_more; + assert(val > 0); + p += (pval - p) + len - 1; /* Advance past entref */ + + if(val < 0x80) { + *buf++ = (char)val; + } else if(val < 0x800) { + *buf++ = 0xc0 | ((val >> 6)); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x10000) { + *buf++ = 0xe0 | ((val >> 12)); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x200000) { + *buf++ = 0xf0 | ((val >> 18)); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else if(val < 0x4000000) { + *buf++ = 0xf8 | ((val >> 24)); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } else { + *buf++ = 0xfc | ((val >> 30) & 0x1); + *buf++ = 0x80 | ((val >> 24) & 0x3f); + *buf++ = 0x80 | ((val >> 18) & 0x3f); + *buf++ = 0x80 | ((val >> 12) & 0x3f); + *buf++ = 0x80 | ((val >> 6) & 0x3f); + *buf++ = 0x80 | ((val & 0x3f)); + } + } else { + /* + * Ugly, limited parsing of & > < + */ + char *sc = (char *)memchr(p, 0x3b, len > 5 ? 5 : len); + if(!sc) goto want_more; + if((sc - p) == 4 + && p[1] == 0x61 /* 'a' */ + && p[2] == 0x6d /* 'm' */ + && p[3] == 0x70 /* 'p' */) { + *buf++ = 0x26; + p = sc; + continue; + } + if((sc - p) == 3) { + if(p[1] == 0x6c) { + *buf = 0x3c; /* '<' */ + } else if(p[1] == 0x67) { + *buf = 0x3e; /* '>' */ + } else { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + if(p[2] != 0x74) { + /* Unsupported entity reference */ + *buf++ = ch; + continue; + } + buf++; + p = sc; + continue; + } + /* Unsupported entity reference */ + *buf++ = ch; + } + + continue; + want_more: + if(have_more) { + /* + * We know that no more data (of the same type) + * is coming. Copy the rest verbatim. + */ + *buf++ = ch; + continue; + } + chunk_size = (p - (const char *)chunk_buf); + /* Processing stalled: need more data */ + break; + } + + st->size = buf - st->buf; + assert(st->size <= new_size); + st->buf[st->size] = 0; /* Courtesy termination */ + + return chunk_size; /* Converted in full */ +} + +/* + * Decode OCTET STRING from the XML element's body. + */ +static asn_dec_rval_t +OCTET_STRING__decode_xer( + const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, + void **sptr, const char *opt_mname, const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_ptr, const void *chunk_buf, + size_t chunk_size, int have_more)) { + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t *ctx; /* Per-structure parser context */ + asn_dec_rval_t rval; /* Return value from the decoder */ + int st_allocated; + + /* + * Create the string if does not exist. + */ + if(!st) { + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + *sptr = (void *)st; + if(!st) goto sta_failed; + st_allocated = 1; + } else { + st_allocated = 0; + } + if(!st->buf) { + /* This is separate from above section */ + st->buf = (uint8_t *)CALLOC(1, 1); + if(!st->buf) { + if(st_allocated) { + *sptr = 0; + goto stb_failed; + } else { + goto sta_failed; + } + } + } + + /* Restore parsing context */ + ctx = (asn_struct_ctx_t *)(((char *)*sptr) + specs->ctx_offset); + + return xer_decode_general(opt_codec_ctx, ctx, *sptr, xml_tag, + buf_ptr, size, opt_unexpected_tag_decoder, body_receiver); + +stb_failed: + FREEMEM(st); +sta_failed: + rval.code = RC_FAIL; + rval.consumed = 0; + return rval; +} + +/* + * Decode OCTET STRING from the hexadecimal data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_hex(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal); +} + +/* + * Decode OCTET STRING from the binary (0/1) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_binary(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, 0, OCTET_STRING__convert_binary); +} + +/* + * Decode OCTET STRING from the string (ASCII/UTF-8) data. + */ +asn_dec_rval_t +OCTET_STRING_decode_xer_utf8(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const char *opt_mname, const void *buf_ptr, + size_t size) { + return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname, + buf_ptr, size, + OCTET_STRING__handle_control_chars, + OCTET_STRING__convert_entrefs); +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +static int +OCTET_STRING_per_get_characters(asn_per_data_t *po, uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Expanding %d characters into (%ld..%ld):%d", + (int)units, lb, ub, unit_bits); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Decode without translation */ + lb = 0; + } else if(pc && pc->code2value) { + if(unit_bits > 16) + return 1; /* FATAL: can't have constrained + * UniversalString with more than + * 16 million code points */ + for(; buf < end; buf += bpc) { + int value; + int code = per_get_few_bits(po, unit_bits); + if(code < 0) return -1; /* WMORE */ + value = pc->code2value(code); + if(value < 0) { + ASN_DEBUG("Code %d (0x%02x) is" + " not in map (%ld..%ld)", + code, code, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = value; break; + case 2: buf[0] = value >> 8; buf[1] = value; break; + case 4: buf[0] = value >> 24; buf[1] = value >> 16; + buf[2] = value >> 8; buf[3] = value; break; + } + } + return 0; + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_get_many_bits(po, buf, 0, unit_bits * units); + } + + for(; buf < end; buf += bpc) { + int32_t code = per_get_few_bits(po, unit_bits); + int32_t ch = code + lb; + if(code < 0) return -1; /* WMORE */ + if(ch > ub) { + ASN_DEBUG("Code %d is out of range (%ld..%ld)", + ch, lb, ub); + return 1; /* FATAL */ + } + switch(bpc) { + case 1: *buf = ch; break; + case 2: buf[0] = ch >> 8; buf[1] = ch; break; + case 4: buf[0] = ch >> 24; buf[1] = ch >> 16; + buf[2] = ch >> 8; buf[3] = ch; break; + } + } + + return 0; +} + +static int +OCTET_STRING_per_put_characters(asn_per_outp_t *po, const uint8_t *buf, + size_t units, unsigned int bpc, unsigned int unit_bits, + long lb, long ub, const asn_per_constraints_t *pc) { + const uint8_t *end = buf + units * bpc; + + ASN_DEBUG("Squeezing %d characters into (%ld..%ld):%d (%d bpc)", + (int)units, lb, ub, unit_bits, bpc); + + /* X.691: 27.5.4 */ + if((unsigned long)ub <= ((unsigned long)2 << (unit_bits - 1))) { + /* Encode as is */ + lb = 0; + } else if(pc && pc->value2code) { + for(; buf < end; buf += bpc) { + int code; + uint32_t value; + switch(bpc) { + case 1: value = *(const uint8_t *)buf; break; + case 2: value = (buf[0] << 8) | buf[1]; break; + case 4: value = (buf[0] << 24) | (buf[1] << 16) + | (buf[2] << 8) | buf[3]; break; + default: return -1; + } + code = pc->value2code(value); + if(code < 0) { + ASN_DEBUG("Character %d (0x%02x) is" + " not in map (%ld..%ld)", + *buf, *buf, lb, ub); + return -1; + } + if(per_put_few_bits(po, code, unit_bits)) + return -1; + } + } + + /* Shortcut the no-op copying to the aligned structure */ + if(lb == 0 && (unit_bits == 8 * bpc)) { + return per_put_many_bits(po, buf, unit_bits * units); + } + + for(ub -= lb; buf < end; buf += bpc) { + int ch; + uint32_t value; + switch(bpc) { + case 1: + value = *(const uint8_t *)buf; + break; + case 2: + value = (buf[0] << 8) | buf[1]; + break; + case 4: + value = (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | buf[3]; + break; + default: + return -1; + } + ch = value - lb; + if(ch < 0 || ch > ub) { + ASN_DEBUG("Character %d (0x%02x) is out of range (%ld..%ld)", *buf, + value, lb, ub + lb); + return -1; + } + if(per_put_few_bits(po, ch, unit_bits)) return -1; + } + + return 0; +} + +static asn_per_constraints_t asn_DEF_OCTET_STRING_constraints = { + { APC_CONSTRAINED, 8, 8, 0, 255 }, + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, + 0, 0 +}; + +asn_dec_rval_t +OCTET_STRING_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = + constraints ? constraints : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + OCTET_STRING_t *st = (OCTET_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); + break; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if(bpc) { + ASN_DEBUG("Encoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Encoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + void *p; + int ret; + + /* Get the PER length */ + raw_len = uper_get_length(pd, csiz->effective_bits, csiz->lower_bound, + &repeat); + if(raw_len < 0) RETURN(RC_WMORE); + if(raw_len == 0 && st->buf) break; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + len_bytes = raw_len * bpc; + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + ret = OCTET_STRING_per_get_characters(pd, &st->buf[st->size], raw_len, + bpc, unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + size_t size_in_units; + const uint8_t *buf; + int ret; + enum { + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + case ASN_OSUBV_BIT: + ASN__ENCODE_FAILED; + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_CHAR; + size_in_units = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + size_in_units = st->size >> 1; + if(st->size & 1) { + ASN_DEBUG("%s string size is not modulo 2", td->name); + ASN__ENCODE_FAILED; + } + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + size_in_units = st->size >> 2; + if(st->size & 3) { + ASN_DEBUG("%s string size is not modulo 4", td->name); + ASN__ENCODE_FAILED; + } + break; + } + + ASN_DEBUG("Encoding %s into %" ASN_PRI_SIZE " units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, size_in_units, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out whether size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((ssize_t)size_in_units < csiz->lower_bound + || (ssize_t)size_in_units > csiz->upper_bound) { + if(ct_extensible) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else { + ASN__ENCODE_FAILED; + } + } + } else { + inext = 0; + } + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + if(csiz->effective_bits >= 0 && !inext) { + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes (%ld), length in %d bits", st->size, + size_in_units - csiz->lower_bound, csiz->effective_bits); + ret = per_put_few_bits(po, size_in_units - csiz->lower_bound, + csiz->effective_bits); + if(ret) ASN__ENCODE_FAILED; + ret = OCTET_STRING_per_put_characters(po, st->buf, size_in_units, bpc, + unit_bits, cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " bytes", st->size); + + buf = st->buf; + ASN_DEBUG("Encoding %" ASN_PRI_SIZE " in units", size_in_units); + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size_in_units, &need_eom); + if(may_save < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %" ASN_PRI_SSIZE " of %" ASN_PRI_SIZE "%s", may_save, size_in_units, + need_eom ? ",+EOM" : ""); + + ret = OCTET_STRING_per_put_characters(po, buf, may_save, bpc, unit_bits, + cval->lower_bound, + cval->upper_bound, pc); + if(ret) ASN__ENCODE_FAILED; + + buf += may_save * bpc; + size_in_units -= may_save; + assert(!(may_save & 0x07) || !size_in_units); + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + } while(size_in_units); + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OCTET_STRING_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + asn_dec_rval_t rval = { RC_OK, 0 }; + BIT_STRING_t *st = (BIT_STRING_t *)*sptr; + ssize_t consumed_myself = 0; + int repeat; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + + (void)opt_codec_ctx; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + + switch(specs->subvariant) { + default: +/* case ASN_OSUBV_ANY: + ASN_DEBUG("Unrecognized subvariant %d", specs->subvariant); + RETURN(RC_FAIL); +*/ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; +*/ + bpc = OS__BPC_CHAR; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + break; + } + + /* + * Allocate the string. + */ + if(!st) { + st = (BIT_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) RETURN(RC_FAIL); + } + + ASN_DEBUG("PER Decoding %s size %ld .. %ld bits %d", + csiz->flags & APC_EXTENSIBLE ? "extensible" : "non-extensible", + csiz->lower_bound, csiz->upper_bound, csiz->effective_bits); + + if(csiz->flags & APC_EXTENSIBLE) { + int inext = per_get_few_bits(pd, 1); + if(inext < 0) RETURN(RC_WMORE); + if(inext) { + csiz = &asn_DEF_OCTET_STRING_constraints.size; + cval = &asn_DEF_OCTET_STRING_constraints.value; + unit_bits = canonical_unit_bits; + } + } + + if(csiz->effective_bits >= 0) { + FREEMEM(st->buf); + if(bpc) { + st->size = csiz->upper_bound * bpc; + } else { + st->size = (csiz->upper_bound + 7) >> 3; + } + st->buf = (uint8_t *)MALLOC(st->size + 1); + if(!st->buf) { st->size = 0; RETURN(RC_FAIL); } + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits == 0) { + int ret; + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + if(bpc) { + ASN_DEBUG("Decoding OCTET STRING size %ld", + csiz->upper_bound); + ret = OCTET_STRING_per_get_characters(pd, st->buf, + csiz->upper_bound, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ASN_DEBUG("Decoding BIT STRING size %ld", + csiz->upper_bound); + ret = per_get_many_bits(pd, st->buf, 0, + unit_bits * csiz->upper_bound); + } + if(ret < 0) RETURN(RC_WMORE); + consumed_myself += unit_bits * csiz->upper_bound; + st->buf[st->size] = 0; + if(bpc == 0) { + int ubs = (csiz->upper_bound & 0x7); + st->bits_unused = ubs ? 8 - ubs : 0; + } + RETURN(RC_OK); + } + + st->size = 0; + do { + ssize_t raw_len; + ssize_t len_bytes; + ssize_t len_bits; + void *p; + int ret; + + /* Get the PER length */ + if (csiz->upper_bound - csiz->lower_bound == 0) + /* Indefinite length case */ + raw_len = aper_get_length(pd, -1, csiz->effective_bits, &repeat); + else + raw_len = aper_get_length(pd, csiz->upper_bound - csiz->lower_bound + 1, csiz->effective_bits, &repeat); + repeat = 0; + if(raw_len < 0) RETURN(RC_WMORE); + raw_len += csiz->lower_bound; + + ASN_DEBUG("Got PER length eb %ld, len %ld, %s (%s)", + (long)csiz->effective_bits, (long)raw_len, + repeat ? "repeat" : "once", td->name); + + if (raw_len > 2) { /* X.691 #16 NOTE 1 */ + if (aper_get_align(pd) < 0) + RETURN(RC_FAIL); + } + + if(bpc) { + len_bytes = raw_len * bpc; + len_bits = len_bytes * unit_bits; + } else { + len_bits = raw_len; + len_bytes = (len_bits + 7) >> 3; + if(len_bits & 0x7) + st->bits_unused = 8 - (len_bits & 0x7); + /* len_bits be multiple of 16K if repeat is set */ + } + p = REALLOC(st->buf, st->size + len_bytes + 1); + if(!p) RETURN(RC_FAIL); + st->buf = (uint8_t *)p; + + if(bpc) { + ret = OCTET_STRING_per_get_characters(pd, + &st->buf[st->size], raw_len, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + if(ret > 0) RETURN(RC_FAIL); + } else { + ret = per_get_many_bits(pd, &st->buf[st->size], + 0, len_bits); + } + if(ret < 0) RETURN(RC_WMORE); + st->size += len_bytes; + } while(repeat); + st->buf[st->size] = 0; /* nul-terminate */ + + return rval; +} + +asn_enc_rval_t +OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + const asn_per_constraints_t *pc = constraints ? constraints + : td->encoding_constraints.per_constraints; + const asn_per_constraint_t *cval; + const asn_per_constraint_t *csiz; + const BIT_STRING_t *st = (const BIT_STRING_t *)sptr; + asn_enc_rval_t er = { 0, 0, 0 }; + int inext = 0; /* Lies not within extension root */ + unsigned int unit_bits; + unsigned int canonical_unit_bits; + unsigned int sizeinunits; + const uint8_t *buf; + int ret; + enum { + OS__BPC_BIT = 0, + OS__BPC_CHAR = 1, + OS__BPC_U16 = 2, + OS__BPC_U32 = 4 + } bpc; /* Bytes per character */ + int ct_extensible; + + if(!st || (!st->buf && st->size)) + ASN__ENCODE_FAILED; + + if(pc) { + cval = &pc->value; + csiz = &pc->size; + } else { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + } + ct_extensible = csiz->flags & APC_EXTENSIBLE; + + switch(specs->subvariant) { + default: + /* case ASN_OSUBV_ANY: + ASN__ENCODE_FAILED; + */ + case ASN_OSUBV_BIT: + canonical_unit_bits = unit_bits = 1; + bpc = OS__BPC_BIT; + sizeinunits = st->size * 8 - (st->bits_unused & 0x07); + ASN_DEBUG("BIT STRING of %d bytes", + sizeinunits); + break; + case ASN_OSUBV_ANY: + case ASN_OSUBV_STR: + canonical_unit_bits = unit_bits = 8; +/* if(cval->flags & APC_CONSTRAINED) + unit_bits = 8; +*/ + bpc = OS__BPC_CHAR; + sizeinunits = st->size; + break; + case ASN_OSUBV_U16: + canonical_unit_bits = unit_bits = 16; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U16; + sizeinunits = st->size / 2; + break; + case ASN_OSUBV_U32: + canonical_unit_bits = unit_bits = 32; + if(cval->flags & APC_CONSTRAINED) + unit_bits = cval->range_bits; + bpc = OS__BPC_U32; + sizeinunits = st->size / 4; + break; + } + + ASN_DEBUG("Encoding %s into %d units of %d bits" + " (%ld..%ld, effective %d)%s", + td->name, sizeinunits, unit_bits, + csiz->lower_bound, csiz->upper_bound, + csiz->effective_bits, ct_extensible ? " EXT" : ""); + + /* Figure out wheter size lies within PER visible constraint */ + + if(csiz->effective_bits >= 0) { + if((int)sizeinunits < csiz->lower_bound + || (int)sizeinunits > csiz->upper_bound) { + if(ct_extensible) { + cval = &asn_DEF_OCTET_STRING_constraints.value; + csiz = &asn_DEF_OCTET_STRING_constraints.size; + unit_bits = canonical_unit_bits; + inext = 1; + } else + ASN__ENCODE_FAILED; + } + } else { + inext = 0; + } + + + if(ct_extensible) { + /* Declare whether length is [not] within extension root */ + if(per_put_few_bits(po, inext, 1)) + ASN__ENCODE_FAILED; + } + + /* X.691, #16.5: zero-length encoding */ + /* X.691, #16.6: short fixed length encoding (up to 2 octets) */ + /* X.691, #16.7: long fixed length encoding (up to 64K octets) */ + if(csiz->effective_bits >= 0) { + ASN_DEBUG("Encoding %lu bytes (%ld), length in %d bits", + st->size, sizeinunits - csiz->lower_bound, + csiz->effective_bits); + if (csiz->effective_bits > 0) { + ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); + if(ret) ASN__ENCODE_FAILED; + } + if (st->size > 2) { /* X.691 #16 NOTE 1 */ + if (aper_put_align(po) < 0) + ASN__ENCODE_FAILED; + } + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, st->buf, + sizeinunits, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, st->buf, + sizeinunits * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + ASN_DEBUG("Encoding %lu bytes", st->size); + + if(sizeinunits == 0) { + if(aper_put_length(po, -1, 0)) + ASN__ENCODE_FAILED; + ASN__ENCODED_OK(er); + } + + buf = st->buf; + while(sizeinunits) { + ssize_t maySave = aper_put_length(po, -1, sizeinunits); + + if(maySave < 0) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %ld of %ld", + (long)maySave, (long)sizeinunits); + + if(bpc) { + ret = OCTET_STRING_per_put_characters(po, buf, + maySave, bpc, unit_bits, + cval->lower_bound, cval->upper_bound, pc); + } else { + ret = per_put_many_bits(po, buf, maySave * unit_bits); + } + if(ret) ASN__ENCODE_FAILED; + + if(bpc) + buf += maySave * bpc; + else + buf += maySave >> 3; + sizeinunits -= maySave; + assert(!(maySave & 0x07) || !sizeinunits); + } + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +OCTET_STRING_print(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { + const char * const h2c = "0123456789ABCDEF"; + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + char scratch[16 * 3 + 4]; + char *p = scratch; + uint8_t *buf; + uint8_t *end; + size_t i; + + (void)td; /* Unused argument */ + + if(!st || (!st->buf && st->size)) + return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Dump the contents of the buffer in hexadecimal. + */ + buf = st->buf; + end = buf + st->size; + for(i = 0; buf < end; buf++, i++) { + if(!(i % 16) && (i || st->size > 16)) { + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + _i_INDENT(1); + p = scratch; + } + *p++ = h2c[(*buf >> 4) & 0x0F]; + *p++ = h2c[*buf & 0x0F]; + *p++ = 0x20; + } + + if(p > scratch) { + p--; /* Remove the tail space */ + if(cb(scratch, p - scratch, app_key) < 0) + return -1; + } + + return 0; +} + +int +OCTET_STRING_print_utf8(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, asn_app_consume_bytes_f *cb, + void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + + (void)td; /* Unused argument */ + (void)ilevel; /* Unused argument */ + + if(st && (st->buf || !st->size)) { + return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0; + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +OCTET_STRING_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + OCTET_STRING_t *st = (OCTET_STRING_t *)sptr; + const asn_OCTET_STRING_specifics_t *specs; + asn_struct_ctx_t *ctx; + struct _stack *stck; + + if(!td || !st) + return; + + specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + ASN_DEBUG("Freeing %s as OCTET STRING", td->name); + + if(st->buf) { + FREEMEM(st->buf); + st->buf = 0; + } + + /* + * Remove decode-time stack. + */ + stck = (struct _stack *)ctx->ptr; + if(stck) { + while(stck->tail) { + struct _stack_el *sel = stck->tail; + stck->tail = sel->prev; + FREEMEM(sel); + } + FREEMEM(stck); + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, + td->specifics + ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics)) + ->struct_size + : sizeof(OCTET_STRING_t)); + break; + } +} + +/* + * Conversion routines. + */ +int +OCTET_STRING_fromBuf(OCTET_STRING_t *st, const char *str, int len) { + void *buf; + + if(st == 0 || (str == 0 && len)) { + errno = EINVAL; + return -1; + } + + /* + * Clear the OCTET STRING. + */ + if(str == NULL) { + FREEMEM(st->buf); + st->buf = 0; + st->size = 0; + return 0; + } + + /* Determine the original string size, if not explicitly given */ + if(len < 0) + len = strlen(str); + + /* Allocate and fill the memory */ + buf = MALLOC(len + 1); + if(buf == NULL) + return -1; + + memcpy(buf, str, len); + ((uint8_t *)buf)[len] = '\0'; /* Couldn't use memcpy(len+1)! */ + FREEMEM(st->buf); + st->buf = (uint8_t *)buf; + st->size = len; + + return 0; +} + +OCTET_STRING_t * +OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, const char *str, + int len) { + const asn_OCTET_STRING_specifics_t *specs = + td->specifics ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + OCTET_STRING_t *st; + + st = (OCTET_STRING_t *)CALLOC(1, specs->struct_size); + if(st && str && OCTET_STRING_fromBuf(st, str, len)) { + FREEMEM(st); + st = NULL; + } + + return st; +} + +/* + * Lexicographically compare the common prefix of both strings, + * and if it is the same return -1 for the smallest string. + */ +int +OCTET_STRING_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics; + const OCTET_STRING_t *a = aptr; + const OCTET_STRING_t *b = bptr; + + assert(!specs || specs->subvariant != ASN_OSUBV_BIT); + + if(a && b) { + size_t common_prefix_size = a->size <= b->size ? a->size : b->size; + int ret = memcmp(a->buf, b->buf, common_prefix_size); + if(ret == 0) { + /* Figure out which string with equal prefixes is longer. */ + if(a->size < b->size) { + return -1; + } else if(a->size > b->size) { + return 1; + } else { + return 0; + } + } else { + return ret < 0 ? -1 : 1; + } + } else if(!a && !b) { + return 0; + } else if(!a) { + return -1; + } else { + return 1; + } + +} + +/* + * Biased function for randomizing character values around their limits. + */ +static uint32_t +OCTET_STRING__random_char(unsigned long lb, unsigned long ub) { + assert(lb <= ub); + switch(asn_random_between(0, 16)) { + case 0: + if(lb < ub) return lb + 1; + /* Fall through */ + case 1: + return lb; + case 2: + if(lb < ub) return ub - 1; + /* Fall through */ + case 3: + return ub; + default: + return asn_random_between(lb, ub); + } +} + + +size_t +OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *td, + const asn_encoding_constraints_t *constraints, size_t max_length) { + const unsigned lengths[] = {0, 1, 2, 3, 4, 8, + 126, 127, 128, 16383, 16384, 16385, + 65534, 65535, 65536, 65537}; + size_t rnd_len; + + /* Figure out how far we should go */ + rnd_len = lengths[asn_random_between( + 0, sizeof(lengths) / sizeof(lengths[0]) - 1)]; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_CONSTRAINED) { + long suggested_upper_bound = pc->upper_bound < (ssize_t)max_length + ? pc->upper_bound + : (ssize_t)max_length; + if(max_length <= (size_t)pc->lower_bound) { + return pc->lower_bound; + } + if(pc->flags & APC_EXTENSIBLE) { + switch(asn_random_between(0, 5)) { + case 0: + if(pc->lower_bound > 0) { + rnd_len = pc->lower_bound - 1; + break; + } + /* Fall through */ + case 1: + rnd_len = pc->upper_bound + 1; + break; + case 2: + /* Keep rnd_len from the table */ + if(rnd_len <= max_length) { + break; + } + /* Fall through */ + default: + rnd_len = asn_random_between(pc->lower_bound, + suggested_upper_bound); + } + } else { + rnd_len = + asn_random_between(pc->lower_bound, suggested_upper_bound); + } + } else { + rnd_len = asn_random_between(0, max_length); + } + } else if(rnd_len > max_length) { + rnd_len = asn_random_between(0, max_length); + } + + return rnd_len; +} + +asn_random_fill_result_t +OCTET_STRING_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_OCTET_STRING_specifics_t *specs = td->specifics + ? (const asn_OCTET_STRING_specifics_t *)td->specifics + : &asn_SPC_OCTET_STRING_specs; + asn_random_fill_result_t result_ok = {ARFILL_OK, 1}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + unsigned int unit_bytes = 1; + unsigned long clb = 0; /* Lower bound on char */ + unsigned long cub = 255; /* Higher bound on char value */ + uint8_t *buf; + uint8_t *bend; + uint8_t *b; + size_t rnd_len; + OCTET_STRING_t *st; + + if(max_length == 0 && !*sptr) return result_skipped; + + switch(specs->subvariant) { + default: + case ASN_OSUBV_ANY: + return result_failed; + case ASN_OSUBV_BIT: + /* Handled by BIT_STRING itself. */ + return result_failed; + case ASN_OSUBV_STR: + unit_bytes = 1; + clb = 0; + cub = 255; + break; + case ASN_OSUBV_U16: + unit_bytes = 2; + clb = 0; + cub = 65535; + break; + case ASN_OSUBV_U32: + unit_bytes = 4; + clb = 0; + cub = 0x10FFFF; + break; + } + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->value; + if(pc->flags & APC_SEMI_CONSTRAINED) { + clb = pc->lower_bound; + } else if(pc->flags & APC_CONSTRAINED) { + clb = pc->lower_bound; + cub = pc->upper_bound; + } + } + + rnd_len = + OCTET_STRING_random_length_constrained(td, constraints, max_length); + + buf = CALLOC(unit_bytes, rnd_len + 1); + if(!buf) return result_failed; + + bend = &buf[unit_bytes * rnd_len]; + + switch(unit_bytes) { + case 1: + for(b = buf; b < bend; b += unit_bytes) { + *(uint8_t *)b = OCTET_STRING__random_char(clb, cub); + } + *(uint8_t *)b = 0; + break; + case 2: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 8; + b[1] = code; + } + *(uint16_t *)b = 0; + break; + case 4: + for(b = buf; b < bend; b += unit_bytes) { + uint32_t code = OCTET_STRING__random_char(clb, cub); + b[0] = code >> 24; + b[1] = code >> 16; + b[2] = code >> 8; + b[3] = code; + } + *(uint32_t *)b = 0; + break; + } + + if(*sptr) { + st = *sptr; + FREEMEM(st->buf); + } else { + st = (OCTET_STRING_t *)(*sptr = CALLOC(1, specs->struct_size)); + if(!st) { + FREEMEM(buf); + return result_failed; + } + } + + st->buf = buf; + st->size = unit_bytes * rnd_len; + + result_ok.length = st->size; + return result_ok; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/OCTET_STRING.h b/setup/xapp-bs-connector/asn1c_defs/OCTET_STRING.h new file mode 100644 index 0000000..c2f8bae --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/OCTET_STRING.h @@ -0,0 +1,102 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _OCTET_STRING_H_ +#define _OCTET_STRING_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct OCTET_STRING { + uint8_t *buf; /* Buffer with consecutive OCTET_STRING bits */ + size_t size; /* Size of the buffer */ + + asn_struct_ctx_t _asn_ctx; /* Parsing across buffer boundaries */ +} OCTET_STRING_t; + +extern asn_TYPE_descriptor_t asn_DEF_OCTET_STRING; +extern asn_TYPE_operation_t asn_OP_OCTET_STRING; + +asn_struct_free_f OCTET_STRING_free; +asn_struct_print_f OCTET_STRING_print; +asn_struct_print_f OCTET_STRING_print_utf8; +asn_struct_compare_f OCTET_STRING_compare; +ber_type_decoder_f OCTET_STRING_decode_ber; +der_type_encoder_f OCTET_STRING_encode_der; +xer_type_decoder_f OCTET_STRING_decode_xer_hex; /* Hexadecimal */ +xer_type_decoder_f OCTET_STRING_decode_xer_binary; /* 01010111010 */ +xer_type_decoder_f OCTET_STRING_decode_xer_utf8; /* ASCII/UTF-8 */ +xer_type_encoder_f OCTET_STRING_encode_xer; +xer_type_encoder_f OCTET_STRING_encode_xer_utf8; +oer_type_decoder_f OCTET_STRING_decode_oer; +oer_type_encoder_f OCTET_STRING_encode_oer; +per_type_decoder_f OCTET_STRING_decode_uper; +per_type_encoder_f OCTET_STRING_encode_uper; +per_type_decoder_f OCTET_STRING_decode_aper; +per_type_encoder_f OCTET_STRING_encode_aper; +asn_random_fill_f OCTET_STRING_random_fill; + +#define OCTET_STRING_constraint asn_generic_no_constraint +#define OCTET_STRING_decode_xer OCTET_STRING_decode_xer_hex + +/****************************** + * Handy conversion routines. * + ******************************/ + +/* + * This function clears the previous value of the OCTET STRING (if any) + * and then allocates a new memory with the specified content (str/size). + * If size = -1, the size of the original string will be determined + * using strlen(str). + * If str equals to NULL, the function will silently clear the + * current contents of the OCTET STRING. + * Returns 0 if it was possible to perform operation, -1 otherwise. + */ +int OCTET_STRING_fromBuf(OCTET_STRING_t *s, const char *str, int size); + +/* Handy conversion from the C string into the OCTET STRING. */ +#define OCTET_STRING_fromString(s, str) OCTET_STRING_fromBuf(s, str, -1) + +/* + * Allocate and fill the new OCTET STRING and return a pointer to the newly + * allocated object. NULL is permitted in str: the function will just allocate + * empty OCTET STRING. + */ +OCTET_STRING_t *OCTET_STRING_new_fromBuf(const asn_TYPE_descriptor_t *td, + const char *str, int size); + +/**************************** + * Internally useful stuff. * + ****************************/ + +typedef struct asn_OCTET_STRING_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the structure */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + enum asn_OS_Subvariant { + ASN_OSUBV_ANY, /* The open type (ANY) */ + ASN_OSUBV_BIT, /* BIT STRING */ + ASN_OSUBV_STR, /* String types, not {BMP,Universal}String */ + ASN_OSUBV_U16, /* 16-bit character (BMPString) */ + ASN_OSUBV_U32 /* 32-bit character (UniversalString) */ + } subvariant; +} asn_OCTET_STRING_specifics_t; + +extern asn_OCTET_STRING_specifics_t asn_SPC_OCTET_STRING_specs; + +size_t OCTET_STRING_random_length_constrained( + const asn_TYPE_descriptor_t *, const asn_encoding_constraints_t *, + size_t max_length); + +#ifdef __cplusplus +} +#endif + +#endif /* _OCTET_STRING_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/OPEN_TYPE.c b/setup/xapp-bs-connector/asn1c_defs/OPEN_TYPE.c new file mode 100644 index 0000000..a54e99c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/OPEN_TYPE.c @@ -0,0 +1,509 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include +#include + +asn_TYPE_operation_t asn_OP_OPEN_TYPE = { + OPEN_TYPE_free, + OPEN_TYPE_print, + OPEN_TYPE_compare, + OPEN_TYPE_decode_ber, + OPEN_TYPE_encode_der, + OPEN_TYPE_decode_xer, + OPEN_TYPE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, 0, /* No OER support, use "-gen-OER" to enable */ +#else + OPEN_TYPE_decode_oer, + OPEN_TYPE_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, 0, 0, 0, +#else + OPEN_TYPE_decode_uper, + OPEN_TYPE_encode_uper, + OPEN_TYPE_decode_aper, + OPEN_TYPE_encode_aper, +#endif + 0, /* Random fill is not supported for open type */ + 0 /* Use generic outmost tag fetcher */ +}; + +#undef ADVANCE +#define ADVANCE(num_bytes) \ + do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +asn_dec_rval_t +OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + ASN_DEBUG("presence %d\n", selected.presence_index); + + rv = selected.type_descriptor->op->ber_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, ptr, size, + elm->tag_mode); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + rv.code = RC_OK; + rv.consumed = consumed_myself; + return rv; + } else { + /* Oh, now a full-blown failure failure */ + } + /* Fall through */ + case RC_FAIL: + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + break; + } + + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; +} + +asn_dec_rval_t +OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, const void *ptr, size_t size) { + size_t consumed_myself = 0; + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + int xer_context = 0; + ssize_t ch_size; + pxer_chunk_type_e ch_type; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + /* + * Confirm wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_OPENING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = selected.type_descriptor->op->xer_decoder( + opt_codec_ctx, selected.type_descriptor, &inner_value, NULL, ptr, size); + ADVANCE(rv.consumed); + rv.consumed = 0; + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_FAIL: + /* Point to a best position where failure occurred */ + rv.consumed = consumed_myself; + /* Fall through */ + case RC_WMORE: + /* Wrt. rv.consumed==0: + * In case a genuine RC_WMORE, the whole Open Type decoding + * will have to be restarted. + */ + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + return rv; + } + + /* + * Finalize wrapper. + */ + for(;;) { + ch_size = xer_next_token(&xer_context, ptr, size, &ch_type); + if(ch_size < 0) { + ASN__DECODE_FAILED; + } else { + switch(ch_type) { + case PXER_WMORE: + ASN__DECODE_STARVED; + case PXER_COMMENT: + case PXER_TEXT: + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; + } + break; + } + } + + /* + * Wrapper value confirmed. + */ + switch(xer_check_tag(ptr, ch_size, elm->name)) { + case XCT_CLOSING: + ADVANCE(ch_size); + break; + case XCT_BROKEN: + default: + ASN__DECODE_FAILED; + } + + rv.consumed += consumed_myself; + + return rv; +} + + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = uper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(uper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void *sptr, + const asn_TYPE_member_t *elm, asn_per_data_t *pd) { + asn_type_selector_result_t selected; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *inner_value; + asn_dec_rval_t rv; + + if(!(elm->flags & ATF_OPEN_TYPE)) { + ASN__DECODE_FAILED; + } + + if(!elm->type_selector) { + ASN_DEBUG("Type selector is not defined for Open Type %s->%s->%s", + td->name, elm->name, elm->type->name); + ASN__DECODE_FAILED; + } + + selected = elm->type_selector(td, sptr); + if(!selected.presence_index) { + ASN__DECODE_FAILED; + } + + /* Fetch the pointer to this member */ + assert(elm->flags == ATF_OPEN_TYPE); + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)sptr + elm->memb_offset); + } else { + memb_ptr = (char *)sptr + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + if(*memb_ptr2 != NULL) { + /* Make sure we reset the structure first before encoding */ + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, 0) + != 0) { + ASN__DECODE_FAILED; + } + } + + inner_value = + (char *)*memb_ptr2 + + elm->type->elements[selected.presence_index - 1].memb_offset; + + rv = aper_open_type_get(opt_codec_ctx, selected.type_descriptor, NULL, + &inner_value, pd); + switch(rv.code) { + case RC_OK: + if(CHOICE_variant_set_presence(elm->type, *memb_ptr2, + selected.presence_index) + == 0) { + break; + } else { + rv.code = RC_FAIL; + } + /* Fall through */ + case RC_WMORE: + case RC_FAIL: + if(*memb_ptr2) { + if(elm->flags & ATF_POINTER) { + ASN_STRUCT_FREE(*selected.type_descriptor, inner_value); + *memb_ptr2 = NULL; + } else { + ASN_STRUCT_RESET(*selected.type_descriptor, + inner_value); + } + } + } + return rv; +} + +asn_enc_rval_t +OPEN_TYPE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const void *memb_ptr; /* Pointer to the member */ + asn_TYPE_member_t *elm; /* CHOICE's element */ + asn_enc_rval_t er = {0,0,0}; + unsigned present; + + (void)constraints; + + present = CHOICE_variant_get_presence(td, sptr); + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + present--; + } + + ASN_DEBUG("Encoding %s OPEN TYPE element %d", td->name, present); + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(aper_open_type_put(elm->type, NULL, memb_ptr, po) < 0) { + ASN__ENCODE_FAILED; + } + + er.encoded = 0; + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ diff --git a/setup/xapp-bs-connector/asn1c_defs/OPEN_TYPE.h b/setup/xapp-bs-connector/asn1c_defs/OPEN_TYPE.h new file mode 100644 index 0000000..b0d023c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/OPEN_TYPE.h @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2017-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_OPEN_TYPE_H +#define ASN_OPEN_TYPE_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define OPEN_TYPE_free CHOICE_free +#define OPEN_TYPE_print CHOICE_print +#define OPEN_TYPE_compare CHOICE_compare +#define OPEN_TYPE_constraint CHOICE_constraint +#define OPEN_TYPE_decode_ber NULL +#define OPEN_TYPE_encode_der CHOICE_encode_der +#define OPEN_TYPE_decode_xer NULL +#define OPEN_TYPE_encode_xer CHOICE_encode_xer +#define OPEN_TYPE_decode_oer NULL +#define OPEN_TYPE_encode_oer CHOICE_encode_oer +#define OPEN_TYPE_decode_uper NULL +#define OPEN_TYPE_decode_aper NULL + +extern asn_TYPE_operation_t asn_OP_OPEN_TYPE; + +/* + * Decode an Open Type which is potentially constraiend + * by the other members of the parent structure. + */ +asn_dec_rval_t OPEN_TYPE_ber_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_xer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + const void *ptr, size_t size); + +asn_dec_rval_t OPEN_TYPE_oer_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + asn_TYPE_member_t *element, const void *ptr, + size_t size); + +asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_dec_rval_t OPEN_TYPE_aper_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *parent_type, + void *parent_structure, + const asn_TYPE_member_t *element, + asn_per_data_t *pd); + +asn_enc_rval_t OPEN_TYPE_encode_uper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +asn_enc_rval_t OPEN_TYPE_encode_aper( + const asn_TYPE_descriptor_t *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_OPEN_TYPE_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/PLMN-Identity.c b/setup/xapp-bs-connector/asn1c_defs/PLMN-Identity.c new file mode 100644 index 0000000..0bee12e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/PLMN-Identity.c @@ -0,0 +1,62 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "PLMN-Identity.h" + +int +PLMN_Identity_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr; + size_t size; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + size = st->size; + + if((size == 3)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 0, 0, 3, 3 } /* (SIZE(3..3)) */, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_PLMN_Identity_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_PLMN_Identity = { + "PLMN-Identity", + "PLMN-Identity", + &asn_OP_OCTET_STRING, + asn_DEF_PLMN_Identity_tags_1, + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + asn_DEF_PLMN_Identity_tags_1, /* Same as above */ + sizeof(asn_DEF_PLMN_Identity_tags_1) + /sizeof(asn_DEF_PLMN_Identity_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_PLMN_Identity_constr_1, PLMN_Identity_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/PLMN-Identity.h b/setup/xapp-bs-connector/asn1c_defs/PLMN-Identity.h new file mode 100644 index 0000000..dcdfe18 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/PLMN-Identity.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _PLMN_Identity_H_ +#define _PLMN_Identity_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* PLMN-Identity */ +typedef OCTET_STRING_t PLMN_Identity_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_PLMN_Identity_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity; +asn_struct_free_f PLMN_Identity_free; +asn_struct_print_f PLMN_Identity_print; +asn_constr_check_f PLMN_Identity_constraint; +ber_type_decoder_f PLMN_Identity_decode_ber; +der_type_encoder_f PLMN_Identity_encode_der; +xer_type_decoder_f PLMN_Identity_decode_xer; +xer_type_encoder_f PLMN_Identity_encode_xer; +per_type_decoder_f PLMN_Identity_decode_uper; +per_type_encoder_f PLMN_Identity_encode_uper; +per_type_decoder_f PLMN_Identity_decode_aper; +per_type_encoder_f PLMN_Identity_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _PLMN_Identity_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/Presence.c b/setup/xapp-bs-connector/asn1c_defs/Presence.c new file mode 100644 index 0000000..2e26921 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/Presence.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "Presence.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_Presence_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_Presence_value2enum_1[] = { + { 0, 8, "optional" }, + { 1, 11, "conditional" }, + { 2, 9, "mandatory" } +}; +static const unsigned int asn_MAP_Presence_enum2value_1[] = { + 1, /* conditional(1) */ + 2, /* mandatory(2) */ + 0 /* optional(0) */ +}; +const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1 = { + asn_MAP_Presence_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_Presence_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_Presence_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_Presence = { + "Presence", + "Presence", + &asn_OP_NativeEnumerated, + asn_DEF_Presence_tags_1, + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + asn_DEF_Presence_tags_1, /* Same as above */ + sizeof(asn_DEF_Presence_tags_1) + /sizeof(asn_DEF_Presence_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_Presence_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_Presence_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/Presence.h b/setup/xapp-bs-connector/asn1c_defs/Presence.h new file mode 100644 index 0000000..7a7c767 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/Presence.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _Presence_H_ +#define _Presence_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum Presence { + Presence_optional = 0, + Presence_conditional = 1, + Presence_mandatory = 2 +} e_Presence; + +/* Presence */ +typedef long Presence_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_Presence_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_Presence; +extern const asn_INTEGER_specifics_t asn_SPC_Presence_specs_1; +asn_struct_free_f Presence_free; +asn_struct_print_f Presence_print; +asn_constr_check_f Presence_constraint; +ber_type_decoder_f Presence_decode_ber; +der_type_encoder_f Presence_encode_der; +xer_type_decoder_f Presence_decode_xer; +xer_type_encoder_f Presence_encode_xer; +per_type_decoder_f Presence_decode_uper; +per_type_encoder_f Presence_encode_uper; +per_type_decoder_f Presence_decode_aper; +per_type_encoder_f Presence_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _Presence_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/PrintableString.c b/setup/xapp-bs-connector/asn1c_defs/PrintableString.c new file mode 100644 index 0000000..8fc3939 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/PrintableString.c @@ -0,0 +1,130 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* + * ASN.1:1984 (X.409) + */ +static const int _PrintableString_alphabet[256] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* */ + 1, 0, 0, 0, 0, 0, 0, 2, 3, 4, 0, 5, 6, 7, 8, 9, /* . '() +,-./ */ +10,11,12,13,14,15,16,17,18,19,20, 0, 0,21, 0,22, /* 0123456789: = ? */ + 0,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37, /* ABCDEFGHIJKLMNO */ +38,39,40,41,42,43,44,45,46,47,48, 0, 0, 0, 0, 0, /* PQRSTUVWXYZ */ + 0,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63, /* abcdefghijklmno */ +64,65,66,67,68,69,70,71,72,73,74, 0, 0, 0, 0, 0, /* pqrstuvwxyz */ +}; +static const int _PrintableString_code2value[74] = { +32,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54, +55,56,57,58,61,63,65,66,67,68,69,70,71,72,73,74, +75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90, +97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112, +113,114,115,116,117,118,119,120,121,122}; + +/* + * PrintableString basic type description. + */ +static const ber_tlv_tag_t asn_DEF_PrintableString_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (19 << 2)), /* [UNIVERSAL 19] IMPLICIT ...*/ + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) /* ... OCTET STRING */ +}; +static int asn_DEF_PrintableString_v2c(unsigned int value) { + return _PrintableString_alphabet[value > 255 ? 0 : value] - 1; +} +static int asn_DEF_PrintableString_c2v(unsigned int code) { + if(code < 74) + return _PrintableString_code2value[code]; + return -1; +} +static asn_per_constraints_t asn_DEF_PrintableString_per_constraints = { + { APC_CONSTRAINED, 4, 4, 0x20, 0x39 }, /* Value */ + { APC_SEMI_CONSTRAINED, -1, -1, 0, 0 }, /* Size */ + asn_DEF_PrintableString_v2c, + asn_DEF_PrintableString_c2v +}; +asn_TYPE_operation_t asn_OP_PrintableString = { + OCTET_STRING_free, + OCTET_STRING_print_utf8, /* ASCII subset */ + OCTET_STRING_compare, + OCTET_STRING_decode_ber, /* Implemented in terms of OCTET STRING */ + OCTET_STRING_encode_der, + OCTET_STRING_decode_xer_utf8, + OCTET_STRING_encode_xer_utf8, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + OCTET_STRING_decode_oer, + OCTET_STRING_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + OCTET_STRING_decode_uper, + OCTET_STRING_encode_uper, + OCTET_STRING_decode_aper, + OCTET_STRING_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + OCTET_STRING_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; +asn_TYPE_descriptor_t asn_DEF_PrintableString = { + "PrintableString", + "PrintableString", + &asn_OP_PrintableString, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]) - 1, + asn_DEF_PrintableString_tags, + sizeof(asn_DEF_PrintableString_tags) + / sizeof(asn_DEF_PrintableString_tags[0]), + { 0, &asn_DEF_PrintableString_per_constraints, PrintableString_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + +int +PrintableString_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, + void *app_key) { + const PrintableString_t *st = (const PrintableString_t *)sptr; + + if(st && st->buf) { + uint8_t *buf = st->buf; + uint8_t *end = buf + st->size; + + /* + * Check the alphabet of the PrintableString. + * ASN.1:1984 (X.409) + */ + for(; buf < end; buf++) { + if(!_PrintableString_alphabet[*buf]) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value byte %ld (%d) " + "not in PrintableString alphabet " + "(%s:%d)", + td->name, + (long)((buf - st->buf) + 1), + *buf, + __FILE__, __LINE__); + return -1; + } + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + return 0; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/PrintableString.h b/setup/xapp-bs-connector/asn1c_defs/PrintableString.h new file mode 100644 index 0000000..8c2b61a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/PrintableString.h @@ -0,0 +1,37 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PrintableString_H_ +#define _PrintableString_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef OCTET_STRING_t PrintableString_t; /* Implemented via OCTET STRING */ + +extern asn_TYPE_descriptor_t asn_DEF_PrintableString; +extern asn_TYPE_operation_t asn_OP_PrintableString; + +asn_constr_check_f PrintableString_constraint; + +#define PrintableString_free OCTET_STRING_free +#define PrintableString_print OCTET_STRING_print_utf8 +#define PrintableString_compare OCTET_STRING_compare +#define PrintableString_decode_ber OCTET_STRING_decode_ber +#define PrintableString_encode_der OCTET_STRING_encode_der +#define PrintableString_decode_xer OCTET_STRING_decode_xer_utf8 +#define PrintableString_encode_xer OCTET_STRING_encode_xer_utf8 +#define PrintableString_decode_uper OCTET_STRING_decode_uper +#define PrintableString_encode_uper OCTET_STRING_encode_uper +#define PrintableString_decode_aper OCTET_STRING_decode_aper +#define PrintableString_encode_aper OCTET_STRING_encode_aper + +#ifdef __cplusplus +} +#endif + +#endif /* _PrintableString_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/ProcedureCode.c b/setup/xapp-bs-connector/asn1c_defs/ProcedureCode.c new file mode 100644 index 0000000..ad6f7e7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProcedureCode.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProcedureCode.h" + +int +ProcedureCode_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProcedureCode_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProcedureCode = { + "ProcedureCode", + "ProcedureCode", + &asn_OP_NativeInteger, + asn_DEF_ProcedureCode_tags_1, + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + asn_DEF_ProcedureCode_tags_1, /* Same as above */ + sizeof(asn_DEF_ProcedureCode_tags_1) + /sizeof(asn_DEF_ProcedureCode_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProcedureCode_constr_1, ProcedureCode_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProcedureCode.h b/setup/xapp-bs-connector/asn1c_defs/ProcedureCode.h new file mode 100644 index 0000000..89996de --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProcedureCode.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProcedureCode_H_ +#define _ProcedureCode_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProcedureCode */ +typedef long ProcedureCode_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProcedureCode_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProcedureCode; +asn_struct_free_f ProcedureCode_free; +asn_struct_print_f ProcedureCode_print; +asn_constr_check_f ProcedureCode_constraint; +ber_type_decoder_f ProcedureCode_decode_ber; +der_type_encoder_f ProcedureCode_encode_der; +xer_type_decoder_f ProcedureCode_decode_xer; +xer_type_encoder_f ProcedureCode_encode_xer; +per_type_decoder_f ProcedureCode_decode_uper; +per_type_encoder_f ProcedureCode_encode_uper; +per_type_decoder_f ProcedureCode_decode_aper; +per_type_encoder_f ProcedureCode_encode_aper; +#define ProcedureCode_id_E2setup ((ProcedureCode_t)1) +#define ProcedureCode_id_ErrorIndication ((ProcedureCode_t)2) +#define ProcedureCode_id_Reset ((ProcedureCode_t)3) +#define ProcedureCode_id_RICcontrol ((ProcedureCode_t)4) +#define ProcedureCode_id_RICindication ((ProcedureCode_t)5) +#define ProcedureCode_id_RICserviceQuery ((ProcedureCode_t)6) +#define ProcedureCode_id_RICserviceUpdate ((ProcedureCode_t)7) +#define ProcedureCode_id_RICsubscription ((ProcedureCode_t)8) +#define ProcedureCode_id_RICsubscriptionDelete ((ProcedureCode_t)9) + +#ifdef __cplusplus +} +#endif + +#endif /* _ProcedureCode_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Container.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Container.c new file mode 100644 index 0000000..89e5e1a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Container.c @@ -0,0 +1,810 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-Container.h" + +#include "ProtocolIE-Field.h" +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P0_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P1_constr_3 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P2_constr_5 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P3_constr_7 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P4_constr_9 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P5_constr_11 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P6_constr_13 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P7_constr_15 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P8_constr_17 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P9_constr_19 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P10_constr_21 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P11_constr_23 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P12_constr_25 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P13_constr_27 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P14_constr_29 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P15_constr_31 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P16_constr_33 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P17_constr_35 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P18_constr_37 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P19_constr_39 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (SIZE(0..65535)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P0_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P0_specs_1 = { + sizeof(struct ProtocolIE_Container_1412P0), + offsetof(struct ProtocolIE_Container_1412P0, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P0 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P0_tags_1, + sizeof(asn_DEF_ProtocolIE_Container_1412P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_1412P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_Container_1412P0_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P0_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P0_1, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P0_specs_1 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P1_3[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P1_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P1_specs_3 = { + sizeof(struct ProtocolIE_Container_1412P1), + offsetof(struct ProtocolIE_Container_1412P1, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P1 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P1_tags_3, + sizeof(asn_DEF_ProtocolIE_Container_1412P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_1412P1_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P1_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P1_tags_3) + /sizeof(asn_DEF_ProtocolIE_Container_1412P1_tags_3[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P1_constr_3, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P1_3, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P1_specs_3 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P2_5[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P2_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P2_specs_5 = { + sizeof(struct ProtocolIE_Container_1412P2), + offsetof(struct ProtocolIE_Container_1412P2, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P2 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P2_tags_5, + sizeof(asn_DEF_ProtocolIE_Container_1412P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_1412P2_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P2_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P2_tags_5) + /sizeof(asn_DEF_ProtocolIE_Container_1412P2_tags_5[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P2_constr_5, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P2_5, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P2_specs_5 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P3_7[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P3_tags_7[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P3_specs_7 = { + sizeof(struct ProtocolIE_Container_1412P3), + offsetof(struct ProtocolIE_Container_1412P3, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P3 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P3_tags_7, + sizeof(asn_DEF_ProtocolIE_Container_1412P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_1412P3_tags_7[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P3_tags_7, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P3_tags_7) + /sizeof(asn_DEF_ProtocolIE_Container_1412P3_tags_7[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P3_constr_7, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P3_7, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P3_specs_7 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P4_9[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P4_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P4_specs_9 = { + sizeof(struct ProtocolIE_Container_1412P4), + offsetof(struct ProtocolIE_Container_1412P4, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P4 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P4_tags_9, + sizeof(asn_DEF_ProtocolIE_Container_1412P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_1412P4_tags_9[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P4_tags_9, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P4_tags_9) + /sizeof(asn_DEF_ProtocolIE_Container_1412P4_tags_9[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P4_constr_9, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P4_9, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P4_specs_9 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P5_11[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P5_tags_11[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P5_specs_11 = { + sizeof(struct ProtocolIE_Container_1412P5), + offsetof(struct ProtocolIE_Container_1412P5, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P5 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P5_tags_11, + sizeof(asn_DEF_ProtocolIE_Container_1412P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_1412P5_tags_11[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P5_tags_11, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P5_tags_11) + /sizeof(asn_DEF_ProtocolIE_Container_1412P5_tags_11[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P5_constr_11, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P5_11, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P5_specs_11 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P6_13[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICindication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P6_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P6_specs_13 = { + sizeof(struct ProtocolIE_Container_1412P6), + offsetof(struct ProtocolIE_Container_1412P6, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P6 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P6_tags_13, + sizeof(asn_DEF_ProtocolIE_Container_1412P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_1412P6_tags_13[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P6_tags_13, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P6_tags_13) + /sizeof(asn_DEF_ProtocolIE_Container_1412P6_tags_13[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P6_constr_13, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P6_13, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P6_specs_13 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P7_15[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolRequest_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P7_tags_15[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P7_specs_15 = { + sizeof(struct ProtocolIE_Container_1412P7), + offsetof(struct ProtocolIE_Container_1412P7, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P7 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P7_tags_15, + sizeof(asn_DEF_ProtocolIE_Container_1412P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_1412P7_tags_15[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P7_tags_15, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P7_tags_15) + /sizeof(asn_DEF_ProtocolIE_Container_1412P7_tags_15[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P7_constr_15, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P7_15, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P7_specs_15 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P8_17[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P8_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P8_specs_17 = { + sizeof(struct ProtocolIE_Container_1412P8), + offsetof(struct ProtocolIE_Container_1412P8, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P8 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P8_tags_17, + sizeof(asn_DEF_ProtocolIE_Container_1412P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_1412P8_tags_17[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P8_tags_17, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P8_tags_17) + /sizeof(asn_DEF_ProtocolIE_Container_1412P8_tags_17[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P8_constr_17, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P8_17, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P8_specs_17 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P9_19[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P9_tags_19[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P9_specs_19 = { + sizeof(struct ProtocolIE_Container_1412P9), + offsetof(struct ProtocolIE_Container_1412P9, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P9 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P9_tags_19, + sizeof(asn_DEF_ProtocolIE_Container_1412P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_1412P9_tags_19[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P9_tags_19, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P9_tags_19) + /sizeof(asn_DEF_ProtocolIE_Container_1412P9_tags_19[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P9_constr_19, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P9_19, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P9_specs_19 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P10_21[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ErrorIndication_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P10_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P10_specs_21 = { + sizeof(struct ProtocolIE_Container_1412P10), + offsetof(struct ProtocolIE_Container_1412P10, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P10 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P10_tags_21, + sizeof(asn_DEF_ProtocolIE_Container_1412P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_1412P10_tags_21[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P10_tags_21, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P10_tags_21) + /sizeof(asn_DEF_ProtocolIE_Container_1412P10_tags_21[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P10_constr_21, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P10_21, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P10_specs_21 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P11_23[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P11_tags_23[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P11_specs_23 = { + sizeof(struct ProtocolIE_Container_1412P11), + offsetof(struct ProtocolIE_Container_1412P11, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P11 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P11_tags_23, + sizeof(asn_DEF_ProtocolIE_Container_1412P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_1412P11_tags_23[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P11_tags_23, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P11_tags_23) + /sizeof(asn_DEF_ProtocolIE_Container_1412P11_tags_23[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P11_constr_23, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P11_23, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P11_specs_23 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P12_25[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P12_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P12_specs_25 = { + sizeof(struct ProtocolIE_Container_1412P12), + offsetof(struct ProtocolIE_Container_1412P12, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P12 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P12_tags_25, + sizeof(asn_DEF_ProtocolIE_Container_1412P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_1412P12_tags_25[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P12_tags_25, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P12_tags_25) + /sizeof(asn_DEF_ProtocolIE_Container_1412P12_tags_25[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P12_constr_25, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P12_25, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P12_specs_25 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P13_27[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupFailureIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P13_tags_27[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P13_specs_27 = { + sizeof(struct ProtocolIE_Container_1412P13), + offsetof(struct ProtocolIE_Container_1412P13, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P13 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P13_tags_27, + sizeof(asn_DEF_ProtocolIE_Container_1412P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_1412P13_tags_27[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P13_tags_27, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P13_tags_27) + /sizeof(asn_DEF_ProtocolIE_Container_1412P13_tags_27[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P13_constr_27, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P13_27, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P13_specs_27 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P14_29[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetRequestIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P14_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P14_specs_29 = { + sizeof(struct ProtocolIE_Container_1412P14), + offsetof(struct ProtocolIE_Container_1412P14, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P14 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P14_tags_29, + sizeof(asn_DEF_ProtocolIE_Container_1412P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_1412P14_tags_29[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P14_tags_29, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P14_tags_29) + /sizeof(asn_DEF_ProtocolIE_Container_1412P14_tags_29[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P14_constr_29, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P14_29, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P14_specs_29 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P15_31[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponseIEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P15_tags_31[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P15_specs_31 = { + sizeof(struct ProtocolIE_Container_1412P15), + offsetof(struct ProtocolIE_Container_1412P15, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P15 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P15_tags_31, + sizeof(asn_DEF_ProtocolIE_Container_1412P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_1412P15_tags_31[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P15_tags_31, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P15_tags_31) + /sizeof(asn_DEF_ProtocolIE_Container_1412P15_tags_31[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P15_constr_31, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P15_31, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P15_specs_31 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P16_33[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdate_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P16_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P16_specs_33 = { + sizeof(struct ProtocolIE_Container_1412P16), + offsetof(struct ProtocolIE_Container_1412P16, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P16 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P16_tags_33, + sizeof(asn_DEF_ProtocolIE_Container_1412P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_1412P16_tags_33[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P16_tags_33, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P16_tags_33) + /sizeof(asn_DEF_ProtocolIE_Container_1412P16_tags_33[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P16_constr_33, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P16_33, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P16_specs_33 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P17_35[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P17_tags_35[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P17_specs_35 = { + sizeof(struct ProtocolIE_Container_1412P17), + offsetof(struct ProtocolIE_Container_1412P17, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P17 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P17_tags_35, + sizeof(asn_DEF_ProtocolIE_Container_1412P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_1412P17_tags_35[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P17_tags_35, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P17_tags_35) + /sizeof(asn_DEF_ProtocolIE_Container_1412P17_tags_35[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P17_constr_35, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P17_35, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P17_specs_35 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P18_37[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P18_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P18_specs_37 = { + sizeof(struct ProtocolIE_Container_1412P18), + offsetof(struct ProtocolIE_Container_1412P18, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P18 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P18_tags_37, + sizeof(asn_DEF_ProtocolIE_Container_1412P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_1412P18_tags_37[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P18_tags_37, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P18_tags_37) + /sizeof(asn_DEF_ProtocolIE_Container_1412P18_tags_37[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P18_constr_37, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P18_37, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P18_specs_37 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P19_39[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceQuery_IEs, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_1412P19_tags_39[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P19_specs_39 = { + sizeof(struct ProtocolIE_Container_1412P19), + offsetof(struct ProtocolIE_Container_1412P19, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P19 = { + "ProtocolIE-Container", + "ProtocolIE-Container", + &asn_OP_SEQUENCE_OF, + asn_DEF_ProtocolIE_Container_1412P19_tags_39, + sizeof(asn_DEF_ProtocolIE_Container_1412P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_1412P19_tags_39[0]), /* 1 */ + asn_DEF_ProtocolIE_Container_1412P19_tags_39, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_Container_1412P19_tags_39) + /sizeof(asn_DEF_ProtocolIE_Container_1412P19_tags_39[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_Container_1412P19_constr_39, SEQUENCE_OF_constraint }, + asn_MBR_ProtocolIE_Container_1412P19_39, + 1, /* Single element */ + &asn_SPC_ProtocolIE_Container_1412P19_specs_39 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Container.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Container.h new file mode 100644 index 0000000..364495b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Container.h @@ -0,0 +1,253 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_Container_H_ +#define _ProtocolIE_Container_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubscriptionRequest_IEs; +struct RICsubscriptionResponse_IEs; +struct RICsubscriptionFailure_IEs; +struct RICsubscriptionDeleteRequest_IEs; +struct RICsubscriptionDeleteResponse_IEs; +struct RICsubscriptionDeleteFailure_IEs; +struct RICindication_IEs; +struct RICcontrolRequest_IEs; +struct RICcontrolAcknowledge_IEs; +struct RICcontrolFailure_IEs; +struct ErrorIndication_IEs; +struct E2setupRequestIEs; +struct E2setupResponseIEs; +struct E2setupFailureIEs; +struct ResetRequestIEs; +struct ResetResponseIEs; +struct RICserviceUpdate_IEs; +struct RICserviceUpdateAcknowledge_IEs; +struct RICserviceUpdateFailure_IEs; +struct RICserviceQuery_IEs; + +/* ProtocolIE-Container */ +typedef struct ProtocolIE_Container_1412P0 { + A_SEQUENCE_OF(struct RICsubscriptionRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P0_t; +typedef struct ProtocolIE_Container_1412P1 { + A_SEQUENCE_OF(struct RICsubscriptionResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P1_t; +typedef struct ProtocolIE_Container_1412P2 { + A_SEQUENCE_OF(struct RICsubscriptionFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P2_t; +typedef struct ProtocolIE_Container_1412P3 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P3_t; +typedef struct ProtocolIE_Container_1412P4 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteResponse_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P4_t; +typedef struct ProtocolIE_Container_1412P5 { + A_SEQUENCE_OF(struct RICsubscriptionDeleteFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P5_t; +typedef struct ProtocolIE_Container_1412P6 { + A_SEQUENCE_OF(struct RICindication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P6_t; +typedef struct ProtocolIE_Container_1412P7 { + A_SEQUENCE_OF(struct RICcontrolRequest_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P7_t; +typedef struct ProtocolIE_Container_1412P8 { + A_SEQUENCE_OF(struct RICcontrolAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P8_t; +typedef struct ProtocolIE_Container_1412P9 { + A_SEQUENCE_OF(struct RICcontrolFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P9_t; +typedef struct ProtocolIE_Container_1412P10 { + A_SEQUENCE_OF(struct ErrorIndication_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P10_t; +typedef struct ProtocolIE_Container_1412P11 { + A_SEQUENCE_OF(struct E2setupRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P11_t; +typedef struct ProtocolIE_Container_1412P12 { + A_SEQUENCE_OF(struct E2setupResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P12_t; +typedef struct ProtocolIE_Container_1412P13 { + A_SEQUENCE_OF(struct E2setupFailureIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P13_t; +typedef struct ProtocolIE_Container_1412P14 { + A_SEQUENCE_OF(struct ResetRequestIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P14_t; +typedef struct ProtocolIE_Container_1412P15 { + A_SEQUENCE_OF(struct ResetResponseIEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P15_t; +typedef struct ProtocolIE_Container_1412P16 { + A_SEQUENCE_OF(struct RICserviceUpdate_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P16_t; +typedef struct ProtocolIE_Container_1412P17 { + A_SEQUENCE_OF(struct RICserviceUpdateAcknowledge_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P17_t; +typedef struct ProtocolIE_Container_1412P18 { + A_SEQUENCE_OF(struct RICserviceUpdateFailure_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P18_t; +typedef struct ProtocolIE_Container_1412P19 { + A_SEQUENCE_OF(struct RICserviceQuery_IEs) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ProtocolIE_Container_1412P19_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P0; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P0_specs_1; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P0_1[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P0_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P1; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P1_specs_3; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P1_3[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P1_constr_3; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P2; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P2_specs_5; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P2_5[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P2_constr_5; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P3; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P3_specs_7; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P3_7[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P3_constr_7; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P4; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P4_specs_9; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P4_9[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P4_constr_9; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P5; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P5_specs_11; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P5_11[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P5_constr_11; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P6; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P6_specs_13; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P6_13[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P6_constr_13; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P7; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P7_specs_15; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P7_15[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P7_constr_15; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P8; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P8_specs_17; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P8_17[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P8_constr_17; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P9; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P9_specs_19; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P9_19[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P9_constr_19; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P10; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P10_specs_21; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P10_21[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P10_constr_21; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P11; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P11_specs_23; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P11_23[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P11_constr_23; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P12; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P12_specs_25; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P12_25[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P12_constr_25; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P13; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P13_specs_27; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P13_27[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P13_constr_27; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P14; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P14_specs_29; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P14_29[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P14_constr_29; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P15; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P15_specs_31; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P15_31[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P15_constr_31; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P16; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P16_specs_33; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P16_33[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P16_constr_33; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P17; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P17_specs_35; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P17_35[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P17_constr_35; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P18; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P18_specs_37; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P18_37[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P18_constr_37; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_1412P19; +extern asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_1412P19_specs_39; +extern asn_TYPE_member_t asn_MBR_ProtocolIE_Container_1412P19_39[1]; +extern asn_per_constraints_t asn_PER_type_ProtocolIE_Container_1412P19_constr_39; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Container_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerList.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerList.c new file mode 100644 index 0000000..d572233 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-ContainerList.h" + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerList.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerList.h new file mode 100644 index 0000000..e94a09c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_ContainerList_H_ +#define _ProtocolIE_ContainerList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerList_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPair.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPair.c new file mode 100644 index 0000000..49ae4a7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPair.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-ContainerPair.h" + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPair.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPair.h new file mode 100644 index 0000000..03c2f74 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_ContainerPair_H_ +#define _ProtocolIE_ContainerPair_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPair_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPairList.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPairList.c new file mode 100644 index 0000000..2923ea5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPairList.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-ContainerPairList.h" + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPairList.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPairList.h new file mode 100644 index 0000000..50ff679 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ContainerPairList.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_ContainerPairList_H_ +#define _ProtocolIE_ContainerPairList_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ContainerPairList_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Field.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Field.c new file mode 100644 index 0000000..caec745 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Field.c @@ -0,0 +1,7190 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-Field.h" + +static const long asn_VAL_4_id_RICaction_ToBeSetup_Item = 19; +static const long asn_VAL_4_ignore = 1; +static const long asn_VAL_4_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_4_id_RICaction_ToBeSetup_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_ToBeSetup_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_4_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_ToBeSetup_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_ToBeSetup_ItemIEs_1_rows } +}; +static const long asn_VAL_9_id_RICaction_Admitted_Item = 14; +static const long asn_VAL_9_ignore = 1; +static const long asn_VAL_9_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_Admitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_9_id_RICaction_Admitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_9_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_Admitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_Admitted_ItemIEs_1_rows } +}; +static const long asn_VAL_10_id_RICaction_NotAdmitted_Item = 16; +static const long asn_VAL_10_ignore = 1; +static const long asn_VAL_10_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_10_id_RICaction_NotAdmitted_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_10_ignore }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_10_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICaction_NotAdmitted_ItemIEs_1[] = { + { 1, 4, asn_IOS_RICaction_NotAdmitted_ItemIEs_1_rows } +}; +static const long asn_VAL_64_id_RANfunction_Item = 8; +static const long asn_VAL_64_ignore = 1; +static const long asn_VAL_64_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunction_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_64_id_RANfunction_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_64_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunction_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_64_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunction_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunction_ItemIEs_1_rows } +}; +static const long asn_VAL_65_id_RANfunctionID_Item = 6; +static const long asn_VAL_65_ignore = 1; +static const long asn_VAL_65_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionID_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_65_id_RANfunctionID_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_65_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_65_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionID_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionID_ItemIEs_1_rows } +}; +static const long asn_VAL_68_id_RANfunctionIEcause_Item = 7; +static const long asn_VAL_68_ignore = 1; +static const long asn_VAL_68_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RANfunctionIDcause_ItemIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_68_id_RANfunctionIEcause_Item }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_68_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionIDcause_Item }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_68_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RANfunctionIDcause_ItemIEs_1[] = { + { 1, 4, asn_IOS_RANfunctionIDcause_ItemIEs_1_rows } +}; +static const long asn_VAL_1_id_RICrequestID = 29; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_1_mandatory = 2; +static const long asn_VAL_2_id_RANfunctionID = 5; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_2_mandatory = 2; +static const long asn_VAL_3_id_RICsubscriptionDetails = 30; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_3_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_1_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_1_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_2_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_2_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_3_id_RICsubscriptionDetails }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&Value", aioc__type, &asn_DEF_RICsubscriptionDetails }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_3_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionRequest_IEs_1[] = { + { 3, 4, asn_IOS_RICsubscriptionRequest_IEs_1_rows } +}; +static const long asn_VAL_5_id_RICrequestID = 29; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_5_mandatory = 2; +static const long asn_VAL_6_id_RANfunctionID = 5; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_6_mandatory = 2; +static const long asn_VAL_7_id_RICactions_Admitted = 17; +static const long asn_VAL_7_reject = 0; +static const long asn_VAL_7_mandatory = 2; +static const long asn_VAL_8_id_RICactions_NotAdmitted = 18; +static const long asn_VAL_8_reject = 0; +static const long asn_VAL_8_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_5_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_5_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_6_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_6_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_7_id_RICactions_Admitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_Admitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_7_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_8_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_8_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionResponse_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionResponse_IEs_1_rows } +}; +static const long asn_VAL_11_id_RICrequestID = 29; +static const long asn_VAL_11_reject = 0; +static const long asn_VAL_11_mandatory = 2; +static const long asn_VAL_12_id_RANfunctionID = 5; +static const long asn_VAL_12_reject = 0; +static const long asn_VAL_12_mandatory = 2; +static const long asn_VAL_13_id_RICactions_NotAdmitted = 18; +static const long asn_VAL_13_reject = 0; +static const long asn_VAL_13_mandatory = 2; +static const long asn_VAL_14_id_CriticalityDiagnostics = 2; +static const long asn_VAL_14_ignore = 1; +static const long asn_VAL_14_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_11_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_11_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_11_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_12_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_12_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_12_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_13_id_RICactions_NotAdmitted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_13_reject }, + { "&Value", aioc__type, &asn_DEF_RICaction_NotAdmitted_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_13_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_14_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_14_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_14_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionFailure_IEs_1_rows } +}; +static const long asn_VAL_15_id_RICrequestID = 29; +static const long asn_VAL_15_reject = 0; +static const long asn_VAL_15_mandatory = 2; +static const long asn_VAL_16_id_RANfunctionID = 5; +static const long asn_VAL_16_reject = 0; +static const long asn_VAL_16_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_15_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_15_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_15_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_16_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_16_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_16_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteRequest_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteRequest_IEs_1_rows } +}; +static const long asn_VAL_17_id_RICrequestID = 29; +static const long asn_VAL_17_reject = 0; +static const long asn_VAL_17_mandatory = 2; +static const long asn_VAL_18_id_RANfunctionID = 5; +static const long asn_VAL_18_reject = 0; +static const long asn_VAL_18_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_17_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_17_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_17_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_18_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_18_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_18_mandatory } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteResponse_IEs_1[] = { + { 2, 4, asn_IOS_RICsubscriptionDeleteResponse_IEs_1_rows } +}; +static const long asn_VAL_19_id_RICrequestID = 29; +static const long asn_VAL_19_reject = 0; +static const long asn_VAL_19_mandatory = 2; +static const long asn_VAL_20_id_RANfunctionID = 5; +static const long asn_VAL_20_reject = 0; +static const long asn_VAL_20_mandatory = 2; +static const long asn_VAL_21_id_Cause = 1; +static const long asn_VAL_21_ignore = 1; +static const long asn_VAL_21_mandatory = 2; +static const long asn_VAL_22_id_CriticalityDiagnostics = 2; +static const long asn_VAL_22_ignore = 1; +static const long asn_VAL_22_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_19_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_19_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_19_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_20_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_20_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_20_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_21_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_21_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_21_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_22_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_22_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_22_optional } +}; +static const asn_ioc_set_t asn_IOS_RICsubscriptionDeleteFailure_IEs_1[] = { + { 4, 4, asn_IOS_RICsubscriptionDeleteFailure_IEs_1_rows } +}; +static const long asn_VAL_23_id_RICrequestID = 29; +static const long asn_VAL_23_reject = 0; +static const long asn_VAL_23_mandatory = 2; +static const long asn_VAL_24_id_RANfunctionID = 5; +static const long asn_VAL_24_reject = 0; +static const long asn_VAL_24_mandatory = 2; +static const long asn_VAL_25_id_RICactionID = 15; +static const long asn_VAL_25_reject = 0; +static const long asn_VAL_25_mandatory = 2; +static const long asn_VAL_26_id_RICindicationSN = 27; +static const long asn_VAL_26_reject = 0; +static const long asn_VAL_26_optional = 0; +static const long asn_VAL_27_id_RICindicationType = 28; +static const long asn_VAL_27_reject = 0; +static const long asn_VAL_27_mandatory = 2; +static const long asn_VAL_28_id_RICindicationHeader = 25; +static const long asn_VAL_28_reject = 0; +static const long asn_VAL_28_mandatory = 2; +static const long asn_VAL_29_id_RICindicationMessage = 26; +static const long asn_VAL_29_reject = 0; +static const long asn_VAL_29_mandatory = 2; +static const long asn_VAL_30_id_RICcallProcessID = 20; +static const long asn_VAL_30_reject = 0; +static const long asn_VAL_30_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICindication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_23_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_23_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_23_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_24_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_24_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_24_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_25_id_RICactionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_25_reject }, + { "&Value", aioc__type, &asn_DEF_RICactionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_25_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_26_id_RICindicationSN }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_26_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationSN }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_26_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_27_id_RICindicationType }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_27_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationType }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_27_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_28_id_RICindicationHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_28_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_28_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_29_id_RICindicationMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_29_reject }, + { "&Value", aioc__type, &asn_DEF_RICindicationMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_29_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_30_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_30_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_30_optional } +}; +static const asn_ioc_set_t asn_IOS_RICindication_IEs_1[] = { + { 8, 4, asn_IOS_RICindication_IEs_1_rows } +}; +static const long asn_VAL_31_id_RICrequestID = 29; +static const long asn_VAL_31_reject = 0; +static const long asn_VAL_31_mandatory = 2; +static const long asn_VAL_32_id_RANfunctionID = 5; +static const long asn_VAL_32_reject = 0; +static const long asn_VAL_32_mandatory = 2; +static const long asn_VAL_33_id_RICcallProcessID = 20; +static const long asn_VAL_33_reject = 0; +static const long asn_VAL_33_optional = 0; +static const long asn_VAL_34_id_RICcontrolHeader = 22; +static const long asn_VAL_34_reject = 0; +static const long asn_VAL_34_mandatory = 2; +static const long asn_VAL_35_id_RICcontrolMessage = 23; +static const long asn_VAL_35_reject = 0; +static const long asn_VAL_35_mandatory = 2; +static const long asn_VAL_36_id_RICcontrolAckRequest = 21; +static const long asn_VAL_36_reject = 0; +static const long asn_VAL_36_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolRequest_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_31_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_31_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_31_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_32_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_32_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_32_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_33_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_33_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_33_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_34_id_RICcontrolHeader }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_34_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolHeader }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_34_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_35_id_RICcontrolMessage }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_35_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolMessage }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_35_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_36_id_RICcontrolAckRequest }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_36_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolAckRequest }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_36_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolRequest_IEs_1[] = { + { 6, 4, asn_IOS_RICcontrolRequest_IEs_1_rows } +}; +static const long asn_VAL_37_id_RICrequestID = 29; +static const long asn_VAL_37_reject = 0; +static const long asn_VAL_37_mandatory = 2; +static const long asn_VAL_38_id_RANfunctionID = 5; +static const long asn_VAL_38_reject = 0; +static const long asn_VAL_38_mandatory = 2; +static const long asn_VAL_39_id_RICcallProcessID = 20; +static const long asn_VAL_39_reject = 0; +static const long asn_VAL_39_optional = 0; +static const long asn_VAL_40_id_RICcontrolStatus = 24; +static const long asn_VAL_40_reject = 0; +static const long asn_VAL_40_mandatory = 2; +static const long asn_VAL_41_id_RICcontrolOutcome = 32; +static const long asn_VAL_41_reject = 0; +static const long asn_VAL_41_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_37_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_37_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_37_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_38_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_38_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_38_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_39_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_39_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_39_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_40_id_RICcontrolStatus }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_40_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolStatus }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_40_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_41_id_RICcontrolOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_41_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_41_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolAcknowledge_IEs_1[] = { + { 5, 4, asn_IOS_RICcontrolAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_42_id_RICrequestID = 29; +static const long asn_VAL_42_reject = 0; +static const long asn_VAL_42_mandatory = 2; +static const long asn_VAL_43_id_RANfunctionID = 5; +static const long asn_VAL_43_reject = 0; +static const long asn_VAL_43_mandatory = 2; +static const long asn_VAL_44_id_RICcallProcessID = 20; +static const long asn_VAL_44_reject = 0; +static const long asn_VAL_44_optional = 0; +static const long asn_VAL_45_id_Cause = 1; +static const long asn_VAL_45_ignore = 1; +static const long asn_VAL_45_mandatory = 2; +static const long asn_VAL_46_id_RICcontrolOutcome = 32; +static const long asn_VAL_46_reject = 0; +static const long asn_VAL_46_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICcontrolFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_42_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_42_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_42_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_43_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_43_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_43_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_44_id_RICcallProcessID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_44_reject }, + { "&Value", aioc__type, &asn_DEF_RICcallProcessID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_44_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_45_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_45_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_45_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_46_id_RICcontrolOutcome }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_46_reject }, + { "&Value", aioc__type, &asn_DEF_RICcontrolOutcome }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_46_optional } +}; +static const asn_ioc_set_t asn_IOS_RICcontrolFailure_IEs_1[] = { + { 5, 4, asn_IOS_RICcontrolFailure_IEs_1_rows } +}; +static const long asn_VAL_47_id_RICrequestID = 29; +static const long asn_VAL_47_reject = 0; +static const long asn_VAL_47_optional = 0; +static const long asn_VAL_48_id_RANfunctionID = 5; +static const long asn_VAL_48_reject = 0; +static const long asn_VAL_48_optional = 0; +static const long asn_VAL_49_id_Cause = 1; +static const long asn_VAL_49_ignore = 1; +static const long asn_VAL_49_optional = 0; +static const long asn_VAL_50_id_CriticalityDiagnostics = 2; +static const long asn_VAL_50_ignore = 1; +static const long asn_VAL_50_optional = 0; +static const asn_ioc_cell_t asn_IOS_ErrorIndication_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_47_id_RICrequestID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_47_reject }, + { "&Value", aioc__type, &asn_DEF_RICrequestID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_47_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_48_id_RANfunctionID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_48_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_48_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_49_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_49_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_49_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_50_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_50_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_50_optional } +}; +static const asn_ioc_set_t asn_IOS_ErrorIndication_IEs_1[] = { + { 4, 4, asn_IOS_ErrorIndication_IEs_1_rows } +}; +static const long asn_VAL_51_id_GlobalE2node_ID = 3; +static const long asn_VAL_51_reject = 0; +static const long asn_VAL_51_mandatory = 2; +static const long asn_VAL_52_id_RANfunctionsAdded = 10; +static const long asn_VAL_52_reject = 0; +static const long asn_VAL_52_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_51_id_GlobalE2node_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_51_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalE2node_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_51_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_52_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_52_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_52_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupRequestIEs_1[] = { + { 2, 4, asn_IOS_E2setupRequestIEs_1_rows } +}; +static const long asn_VAL_53_id_GlobalRIC_ID = 4; +static const long asn_VAL_53_reject = 0; +static const long asn_VAL_53_mandatory = 2; +static const long asn_VAL_54_id_RANfunctionsAccepted = 9; +static const long asn_VAL_54_reject = 0; +static const long asn_VAL_54_optional = 0; +static const long asn_VAL_55_id_RANfunctionsRejected = 13; +static const long asn_VAL_55_reject = 0; +static const long asn_VAL_55_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_53_id_GlobalRIC_ID }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_53_reject }, + { "&Value", aioc__type, &asn_DEF_GlobalRIC_ID }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_53_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_54_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_54_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_54_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_55_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_55_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_55_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupResponseIEs_1[] = { + { 3, 4, asn_IOS_E2setupResponseIEs_1_rows } +}; +static const long asn_VAL_56_id_Cause = 1; +static const long asn_VAL_56_ignore = 1; +static const long asn_VAL_56_mandatory = 2; +static const long asn_VAL_57_id_TimeToWait = 31; +static const long asn_VAL_57_ignore = 1; +static const long asn_VAL_57_optional = 0; +static const long asn_VAL_58_id_CriticalityDiagnostics = 2; +static const long asn_VAL_58_ignore = 1; +static const long asn_VAL_58_optional = 0; +static const asn_ioc_cell_t asn_IOS_E2setupFailureIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_56_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_56_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_56_mandatory }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_57_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_57_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_57_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_58_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_58_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_58_optional } +}; +static const asn_ioc_set_t asn_IOS_E2setupFailureIEs_1[] = { + { 3, 4, asn_IOS_E2setupFailureIEs_1_rows } +}; +static const long asn_VAL_59_id_Cause = 1; +static const long asn_VAL_59_ignore = 1; +static const long asn_VAL_59_mandatory = 2; +static const asn_ioc_cell_t asn_IOS_ResetRequestIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_59_id_Cause }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_59_ignore }, + { "&Value", aioc__type, &asn_DEF_Cause }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_59_mandatory } +}; +static const asn_ioc_set_t asn_IOS_ResetRequestIEs_1[] = { + { 1, 4, asn_IOS_ResetRequestIEs_1_rows } +}; +static const long asn_VAL_60_id_CriticalityDiagnostics = 2; +static const long asn_VAL_60_ignore = 1; +static const long asn_VAL_60_optional = 0; +static const asn_ioc_cell_t asn_IOS_ResetResponseIEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_60_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_60_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_60_optional } +}; +static const asn_ioc_set_t asn_IOS_ResetResponseIEs_1[] = { + { 1, 4, asn_IOS_ResetResponseIEs_1_rows } +}; +static const long asn_VAL_61_id_RANfunctionsAdded = 10; +static const long asn_VAL_61_reject = 0; +static const long asn_VAL_61_optional = 0; +static const long asn_VAL_62_id_RANfunctionsModified = 12; +static const long asn_VAL_62_reject = 0; +static const long asn_VAL_62_optional = 0; +static const long asn_VAL_63_id_RANfunctionsDeleted = 11; +static const long asn_VAL_63_reject = 0; +static const long asn_VAL_63_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdate_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_61_id_RANfunctionsAdded }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_61_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_61_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_62_id_RANfunctionsModified }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_62_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctions_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_62_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_63_id_RANfunctionsDeleted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_63_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_63_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdate_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdate_IEs_1_rows } +}; +static const long asn_VAL_66_id_RANfunctionsAccepted = 9; +static const long asn_VAL_66_reject = 0; +static const long asn_VAL_66_optional = 0; +static const long asn_VAL_67_id_RANfunctionsRejected = 13; +static const long asn_VAL_67_reject = 0; +static const long asn_VAL_67_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_66_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_66_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_66_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_67_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_67_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_67_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateAcknowledge_IEs_1[] = { + { 2, 4, asn_IOS_RICserviceUpdateAcknowledge_IEs_1_rows } +}; +static const long asn_VAL_69_id_RANfunctionsRejected = 13; +static const long asn_VAL_69_ignore = 1; +static const long asn_VAL_69_optional = 0; +static const long asn_VAL_70_id_TimeToWait = 31; +static const long asn_VAL_70_ignore = 1; +static const long asn_VAL_70_optional = 0; +static const long asn_VAL_71_id_CriticalityDiagnostics = 2; +static const long asn_VAL_71_ignore = 1; +static const long asn_VAL_71_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceUpdateFailure_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_69_id_RANfunctionsRejected }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_69_ignore }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsIDcause_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_69_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_70_id_TimeToWait }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_70_ignore }, + { "&Value", aioc__type, &asn_DEF_TimeToWait }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_70_optional }, + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_71_id_CriticalityDiagnostics }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_71_ignore }, + { "&Value", aioc__type, &asn_DEF_CriticalityDiagnostics }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_71_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceUpdateFailure_IEs_1[] = { + { 3, 4, asn_IOS_RICserviceUpdateFailure_IEs_1_rows } +}; +static const long asn_VAL_72_id_RANfunctionsAccepted = 9; +static const long asn_VAL_72_reject = 0; +static const long asn_VAL_72_optional = 0; +static const asn_ioc_cell_t asn_IOS_RICserviceQuery_IEs_1_rows[] = { + { "&id", aioc__value, &asn_DEF_ProtocolIE_ID, &asn_VAL_72_id_RANfunctionsAccepted }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_72_reject }, + { "&Value", aioc__type, &asn_DEF_RANfunctionsID_List }, + { "&presence", aioc__value, &asn_DEF_Presence, &asn_VAL_72_optional } +}; +static const asn_ioc_set_t asn_IOS_RICserviceQuery_IEs_1[] = { + { 1, 4, asn_IOS_RICserviceQuery_IEs_1_rows } +}; +static int +memb_id_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_ToBeSetup_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_ToBeSetup_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_ToBeSetup_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_Admitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_Admitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_Admitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_5(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICaction_NotAdmitted_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICaction_NotAdmitted_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICaction_NotAdmitted_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_9(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunction_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunction_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunction_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_13(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionID_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionID_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionID_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_17(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RANfunctionIDcause_ItemIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RANfunctionIDcause_ItemIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RANfunctionIDcause_ItemIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_21(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_25(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_29(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_33(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_37(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteResponse_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteResponse_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteResponse_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_41(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICsubscriptionDeleteFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICsubscriptionDeleteFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICsubscriptionDeleteFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_45(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICindication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICindication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICindication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICindication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_49(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolRequest_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolRequest_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolRequest_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_53(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_57(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICcontrolFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICcontrolFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICcontrolFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_61(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ErrorIndication_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ErrorIndication_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ErrorIndication_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_65(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_69(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_73(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_E2setupFailureIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_E2setupFailureIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2setupFailureIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct E2setupFailureIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_77(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetRequestIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetRequestIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetRequestIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetRequestIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_81(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_ResetResponseIEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_ResetResponseIEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_ResetResponseIEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct ResetResponseIEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_85(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdate_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdate_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdate_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_89(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateAcknowledge_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateAcknowledge_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateAcknowledge_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_93(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceUpdateFailure_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceUpdateFailure_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceUpdateFailure_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_97(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static int +memb_id_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 1; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_RICserviceQuery_IEs_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_RICserviceQuery_IEs_1; + size_t constraining_column = 0; /* &id */ + size_t for_column = 2; /* &Value */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct RICserviceQuery_IEs, id)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_101(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_id_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_6 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_7 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_8 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_10 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_11 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_12 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_14 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_15 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_16 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_18 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_19 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_20 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_22 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_23 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_24 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_26 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_27 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_28 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_30 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_31 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_32 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_34 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_35 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_36 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_38 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_39 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_40 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_42 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_43 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_44 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_46 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_47 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_48 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_50 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_51 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_52 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_54 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_55 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_56 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_58 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_59 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_60 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_62 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_63 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_64 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_66 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_67 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_68 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_70 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_71 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_72 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_74 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_75 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_76 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_78 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_79 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_80 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_82 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_83 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_84 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_86 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_87 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_88 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_90 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_91 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_92 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_94 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_95 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_96 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_98 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_99 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_100 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_id_constr_102 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_103 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_104 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs__value, choice.RICaction_ToBeSetup_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_ToBeSetup_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-ToBeSetup-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-ToBeSetup-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs__value), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_ToBeSetup_ItemIEs__value, present), + sizeof(((struct RICaction_ToBeSetup_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_4, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 1, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_2, memb_id_constraint_1 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_ToBeSetup_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_RICaction_ToBeSetup_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 = { + sizeof(struct RICaction_ToBeSetup_ItemIEs), + offsetof(struct RICaction_ToBeSetup_ItemIEs, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_ItemIEs_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs = { + "RICaction-ToBeSetup-ItemIEs", + "RICaction-ToBeSetup-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_ItemIEs_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_8[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs__value, choice.RICaction_Admitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_8[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-Admitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_8 = { + sizeof(struct RICaction_Admitted_ItemIEs__value), + offsetof(struct RICaction_Admitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_Admitted_ItemIEs__value, present), + sizeof(((struct RICaction_Admitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_8, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_8 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_8, + 1, /* Elements count */ + &asn_SPC_value_specs_8 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_6, memb_id_constraint_5 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_Admitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_7, memb_criticality_constraint_5 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_8, + select_RICaction_Admitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_8, memb_value_constraint_5 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_ItemIEs_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5 = { + sizeof(struct RICaction_Admitted_ItemIEs), + offsetof(struct RICaction_Admitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_Admitted_ItemIEs_tag2el_5, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs = { + "RICaction-Admitted-ItemIEs", + "RICaction-Admitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + asn_DEF_RICaction_Admitted_ItemIEs_tags_5, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5) + /sizeof(asn_DEF_RICaction_Admitted_ItemIEs_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_12[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs__value, choice.RICaction_NotAdmitted_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_12[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICaction-NotAdmitted-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_12 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs__value), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, _asn_ctx), + offsetof(struct RICaction_NotAdmitted_ItemIEs__value, present), + sizeof(((struct RICaction_NotAdmitted_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_12, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_12 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_12, + 1, /* Elements count */ + &asn_SPC_value_specs_12 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_10, memb_id_constraint_9 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICaction_NotAdmitted_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_11, memb_criticality_constraint_9 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_12, + select_RICaction_NotAdmitted_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_12, memb_value_constraint_9 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 = { + sizeof(struct RICaction_NotAdmitted_ItemIEs), + offsetof(struct RICaction_NotAdmitted_ItemIEs, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_ItemIEs_tag2el_9, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs = { + "RICaction-NotAdmitted-ItemIEs", + "RICaction-NotAdmitted-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9) + /sizeof(asn_DEF_RICaction_NotAdmitted_ItemIEs_tags_9[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_16[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs__value, choice.RANfunction_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunction_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunction-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_16[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunction-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_16 = { + sizeof(struct RANfunction_ItemIEs__value), + offsetof(struct RANfunction_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunction_ItemIEs__value, present), + sizeof(((struct RANfunction_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_16, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_16 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_16, + 1, /* Elements count */ + &asn_SPC_value_specs_16 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_14, memb_id_constraint_13 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunction_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_15, memb_criticality_constraint_13 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunction_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_16, + select_RANfunction_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_16, memb_value_constraint_13 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_ItemIEs_tags_13[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_ItemIEs_tag2el_13[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13 = { + sizeof(struct RANfunction_ItemIEs), + offsetof(struct RANfunction_ItemIEs, _asn_ctx), + asn_MAP_RANfunction_ItemIEs_tag2el_13, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs = { + "RANfunction-ItemIEs", + "RANfunction-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_ItemIEs_tags_13, + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + asn_DEF_RANfunction_ItemIEs_tags_13, /* Same as above */ + sizeof(asn_DEF_RANfunction_ItemIEs_tags_13) + /sizeof(asn_DEF_RANfunction_ItemIEs_tags_13[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_20[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs__value, choice.RANfunctionID_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionID_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_20[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionID-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_20 = { + sizeof(struct RANfunctionID_ItemIEs__value), + offsetof(struct RANfunctionID_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionID_ItemIEs__value, present), + sizeof(((struct RANfunctionID_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_20, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_20 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_20, + 1, /* Elements count */ + &asn_SPC_value_specs_20 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_18, memb_id_constraint_17 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionID_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_19, memb_criticality_constraint_17 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_20, + select_RANfunctionID_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_20, memb_value_constraint_17 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_ItemIEs_tags_17[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_ItemIEs_tag2el_17[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17 = { + sizeof(struct RANfunctionID_ItemIEs), + offsetof(struct RANfunctionID_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionID_ItemIEs_tag2el_17, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs = { + "RANfunctionID-ItemIEs", + "RANfunctionID-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_ItemIEs_tags_17, + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + asn_DEF_RANfunctionID_ItemIEs_tags_17, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17) + /sizeof(asn_DEF_RANfunctionID_ItemIEs_tags_17[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_24[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs__value, choice.RANfunctionIDcause_Item), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionIDcause_Item, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionIDcause-Item" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_24[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionIDcause-Item */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_24 = { + sizeof(struct RANfunctionIDcause_ItemIEs__value), + offsetof(struct RANfunctionIDcause_ItemIEs__value, _asn_ctx), + offsetof(struct RANfunctionIDcause_ItemIEs__value, present), + sizeof(((struct RANfunctionIDcause_ItemIEs__value *)0)->present), + asn_MAP_value_tag2el_24, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_24 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_24, + 1, /* Elements count */ + &asn_SPC_value_specs_24 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_22, memb_id_constraint_21 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RANfunctionIDcause_ItemIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_23, memb_criticality_constraint_21 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_ItemIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_24, + select_RANfunctionIDcause_ItemIEs_value_type, + { 0, &asn_PER_memb_value_constr_24, memb_value_constraint_21 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 = { + sizeof(struct RANfunctionIDcause_ItemIEs), + offsetof(struct RANfunctionIDcause_ItemIEs, _asn_ctx), + asn_MAP_RANfunctionIDcause_ItemIEs_tag2el_21, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs = { + "RANfunctionIDcause-ItemIEs", + "RANfunctionIDcause-ItemIEs", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_ItemIEs_tags_21, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21) + /sizeof(asn_DEF_RANfunctionIDcause_ItemIEs_tags_21[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_28[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs__value, choice.RICsubscriptionDetails), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDetails, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDetails" + }, +}; +static const unsigned asn_MAP_value_to_canonical_28[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_28[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_28[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* RICsubscriptionDetails */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_28 = { + sizeof(struct RICsubscriptionRequest_IEs__value), + offsetof(struct RICsubscriptionRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionRequest_IEs__value, present), + sizeof(((struct RICsubscriptionRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_28, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_28, + asn_MAP_value_from_canonical_28, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_28 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_28, + 3, /* Elements count */ + &asn_SPC_value_specs_28 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_25[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_26, memb_id_constraint_25 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_27, memb_criticality_constraint_25 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_28, + select_RICsubscriptionRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_28, memb_value_constraint_25 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_IEs_tags_25[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_IEs_tag2el_25[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_25 = { + sizeof(struct RICsubscriptionRequest_IEs), + offsetof(struct RICsubscriptionRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionRequest_IEs_tag2el_25, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs = { + "RICsubscriptionRequest-IEs", + "RICsubscriptionRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_IEs_tags_25, + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_IEs_tags_25, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25) + /sizeof(asn_DEF_RICsubscriptionRequest_IEs_tags_25[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_IEs_25, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_IEs_specs_25 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_32[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_Admitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_Admitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-Admitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_32[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_32[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_32[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-Admitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* RICaction-NotAdmitted-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_32 = { + sizeof(struct RICsubscriptionResponse_IEs__value), + offsetof(struct RICsubscriptionResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionResponse_IEs__value, present), + sizeof(((struct RICsubscriptionResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_32, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_32, + asn_MAP_value_from_canonical_32, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_32 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_32, + 4, /* Elements count */ + &asn_SPC_value_specs_32 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_29[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_30, memb_id_constraint_29 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_31, memb_criticality_constraint_29 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_32, + select_RICsubscriptionResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_32, memb_value_constraint_29 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_IEs_tags_29[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_IEs_tag2el_29[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_29 = { + sizeof(struct RICsubscriptionResponse_IEs), + offsetof(struct RICsubscriptionResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionResponse_IEs_tag2el_29, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs = { + "RICsubscriptionResponse-IEs", + "RICsubscriptionResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_IEs_tags_29, + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_IEs_tags_29, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29) + /sizeof(asn_DEF_RICsubscriptionResponse_IEs_tags_29[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_IEs_29, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_IEs_specs_29 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_36[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.RICaction_NotAdmitted_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICaction_NotAdmitted_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICaction-NotAdmitted-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_36[] = { 1, 0, 2, 3 }; +static const unsigned asn_MAP_value_from_canonical_36[] = { 1, 0, 2, 3 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_36[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 1 }, /* RICaction-NotAdmitted-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -2, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_36 = { + sizeof(struct RICsubscriptionFailure_IEs__value), + offsetof(struct RICsubscriptionFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionFailure_IEs__value, present), + sizeof(((struct RICsubscriptionFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_36, + 4, /* Count of tags in the map */ + asn_MAP_value_to_canonical_36, + asn_MAP_value_from_canonical_36, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_36 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_36, + 4, /* Elements count */ + &asn_SPC_value_specs_36 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_33[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_34, memb_id_constraint_33 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_35, memb_criticality_constraint_33 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_36, + select_RICsubscriptionFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_36, memb_value_constraint_33 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_IEs_tags_33[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_IEs_tag2el_33[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_33 = { + sizeof(struct RICsubscriptionFailure_IEs), + offsetof(struct RICsubscriptionFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionFailure_IEs_tag2el_33, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs = { + "RICsubscriptionFailure-IEs", + "RICsubscriptionFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_IEs_tags_33, + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_IEs_tags_33, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33) + /sizeof(asn_DEF_RICsubscriptionFailure_IEs_tags_33[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_IEs_33, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_IEs_specs_33 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_40[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_40[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_40[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_40[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_40 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs__value), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteRequest_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_40, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_40, + asn_MAP_value_from_canonical_40, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_40 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_40, + 2, /* Elements count */ + &asn_SPC_value_specs_40 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_37[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_38, memb_id_constraint_37 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_39, memb_criticality_constraint_37 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_40, + select_RICsubscriptionDeleteRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_40, memb_value_constraint_37 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_37[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37 = { + sizeof(struct RICsubscriptionDeleteRequest_IEs), + offsetof(struct RICsubscriptionDeleteRequest_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_IEs_tag2el_37, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs = { + "RICsubscriptionDeleteRequest-IEs", + "RICsubscriptionDeleteRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_IEs_tags_37[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_IEs_37, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_44[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_44[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_44[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_44[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_44 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs__value), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteResponse_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteResponse_IEs__value *)0)->present), + asn_MAP_value_tag2el_44, + 2, /* Count of tags in the map */ + asn_MAP_value_to_canonical_44, + asn_MAP_value_from_canonical_44, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_44 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_44, + 2, /* Elements count */ + &asn_SPC_value_specs_44 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_41[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_42, memb_id_constraint_41 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteResponse_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_43, memb_criticality_constraint_41 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_44, + select_RICsubscriptionDeleteResponse_IEs_value_type, + { 0, &asn_PER_memb_value_constr_44, memb_value_constraint_41 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_41[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41 = { + sizeof(struct RICsubscriptionDeleteResponse_IEs), + offsetof(struct RICsubscriptionDeleteResponse_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_IEs_tag2el_41, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs = { + "RICsubscriptionDeleteResponse-IEs", + "RICsubscriptionDeleteResponse-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_IEs_tags_41[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_IEs_41, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_48[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_48[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_48[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_48[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_48 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs__value), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, _asn_ctx), + offsetof(struct RICsubscriptionDeleteFailure_IEs__value, present), + sizeof(((struct RICsubscriptionDeleteFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_48, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_48, + asn_MAP_value_from_canonical_48, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_48 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_48, + 4, /* Elements count */ + &asn_SPC_value_specs_48 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_45[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_46, memb_id_constraint_45 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICsubscriptionDeleteFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_47, memb_criticality_constraint_45 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_48, + select_RICsubscriptionDeleteFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_48, memb_value_constraint_45 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_45[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45 = { + sizeof(struct RICsubscriptionDeleteFailure_IEs), + offsetof(struct RICsubscriptionDeleteFailure_IEs, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_IEs_tag2el_45, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs = { + "RICsubscriptionDeleteFailure-IEs", + "RICsubscriptionDeleteFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_IEs_tags_45[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_IEs_45, + 3, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_52[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICactionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICactionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationSN), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RICindicationSN, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationSN" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationType), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICindicationType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICindicationMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICindicationMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICindicationMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, +}; +static const unsigned asn_MAP_value_to_canonical_52[] = { 1, 2, 3, 5, 6, 7, 4, 0 }; +static const unsigned asn_MAP_value_from_canonical_52[] = { 7, 0, 1, 2, 6, 3, 4, 5 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_52[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 2 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 1 }, /* RICactionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 3, -2, 0 }, /* RICindicationSN */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 5, 0, 2 }, /* RICindicationHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 6, -1, 1 }, /* RICindicationMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 7, -2, 0 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 4, 0, 0 }, /* RICindicationType */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_52 = { + sizeof(struct RICindication_IEs__value), + offsetof(struct RICindication_IEs__value, _asn_ctx), + offsetof(struct RICindication_IEs__value, present), + sizeof(((struct RICindication_IEs__value *)0)->present), + asn_MAP_value_tag2el_52, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_52, + asn_MAP_value_from_canonical_52, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_52 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_52, + 8, /* Elements count */ + &asn_SPC_value_specs_52 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICindication_IEs_49[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_50, memb_id_constraint_49 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICindication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_51, memb_criticality_constraint_49 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICindication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_52, + select_RICindication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_52, memb_value_constraint_49 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_IEs_tags_49[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_IEs_tag2el_49[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_49 = { + sizeof(struct RICindication_IEs), + offsetof(struct RICindication_IEs, _asn_ctx), + asn_MAP_RICindication_IEs_tag2el_49, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication_IEs = { + "RICindication-IEs", + "RICindication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_IEs_tags_49, + sizeof(asn_DEF_RICindication_IEs_tags_49) + /sizeof(asn_DEF_RICindication_IEs_tags_49[0]), /* 1 */ + asn_DEF_RICindication_IEs_tags_49, /* Same as above */ + sizeof(asn_DEF_RICindication_IEs_tags_49) + /sizeof(asn_DEF_RICindication_IEs_tags_49[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_IEs_49, + 3, /* Elements count */ + &asn_SPC_RICindication_IEs_specs_49 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_56[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolHeader), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolHeader, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolHeader" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolMessage), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolMessage, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolMessage" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs__value, choice.RICcontrolAckRequest), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolAckRequest, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAckRequest" + }, +}; +static const unsigned asn_MAP_value_to_canonical_56[] = { 1, 2, 3, 4, 5, 0 }; +static const unsigned asn_MAP_value_from_canonical_56[] = { 5, 0, 1, 2, 3, 4 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_56[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 2 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, -1, 1 }, /* RICcontrolHeader */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -2, 0 }, /* RICcontrolMessage */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 5, 0, 0 }, /* RICcontrolAckRequest */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_56 = { + sizeof(struct RICcontrolRequest_IEs__value), + offsetof(struct RICcontrolRequest_IEs__value, _asn_ctx), + offsetof(struct RICcontrolRequest_IEs__value, present), + sizeof(((struct RICcontrolRequest_IEs__value *)0)->present), + asn_MAP_value_tag2el_56, + 6, /* Count of tags in the map */ + asn_MAP_value_to_canonical_56, + asn_MAP_value_from_canonical_56, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_56 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_56, + 6, /* Elements count */ + &asn_SPC_value_specs_56 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_53[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_54, memb_id_constraint_53 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolRequest_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_55, memb_criticality_constraint_53 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_56, + select_RICcontrolRequest_IEs_value_type, + { 0, &asn_PER_memb_value_constr_56, memb_value_constraint_53 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_IEs_tags_53[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_IEs_tag2el_53[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_53 = { + sizeof(struct RICcontrolRequest_IEs), + offsetof(struct RICcontrolRequest_IEs, _asn_ctx), + asn_MAP_RICcontrolRequest_IEs_tag2el_53, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs = { + "RICcontrolRequest-IEs", + "RICcontrolRequest-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_IEs_tags_53, + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53[0]), /* 1 */ + asn_DEF_RICcontrolRequest_IEs_tags_53, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53) + /sizeof(asn_DEF_RICcontrolRequest_IEs_tags_53[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_IEs_53, + 3, /* Elements count */ + &asn_SPC_RICcontrolRequest_IEs_specs_53 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_60[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolStatus), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_RICcontrolStatus, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolStatus" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs__value, choice.RICcontrolOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolOutcome" + }, +}; +static const unsigned asn_MAP_value_to_canonical_60[] = { 1, 2, 4, 3, 0 }; +static const unsigned asn_MAP_value_from_canonical_60[] = { 4, 0, 1, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_60[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 3, 0, 0 }, /* RICcontrolStatus */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RICrequestID */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_60 = { + sizeof(struct RICcontrolAcknowledge_IEs__value), + offsetof(struct RICcontrolAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICcontrolAcknowledge_IEs__value, present), + sizeof(((struct RICcontrolAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_60, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_60, + asn_MAP_value_from_canonical_60, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_60 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_60, + 5, /* Elements count */ + &asn_SPC_value_specs_60 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_57[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_58, memb_id_constraint_57 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_59, memb_criticality_constraint_57 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_60, + select_RICcontrolAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_60, memb_value_constraint_57 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_IEs_tags_57[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_IEs_tag2el_57[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_57 = { + sizeof(struct RICcontrolAcknowledge_IEs), + offsetof(struct RICcontrolAcknowledge_IEs, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_IEs_tag2el_57, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs = { + "RICcontrolAcknowledge-IEs", + "RICcontrolAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_IEs_tags_57, + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_IEs_tags_57, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57) + /sizeof(asn_DEF_RICcontrolAcknowledge_IEs_tags_57[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_IEs_57, + 3, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_IEs_specs_57 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_64[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcallProcessID), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcallProcessID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcallProcessID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs__value, choice.RICcontrolOutcome), + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), + 0, + &asn_DEF_RICcontrolOutcome, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolOutcome" + }, +}; +static const unsigned asn_MAP_value_to_canonical_64[] = { 1, 2, 4, 0, 3 }; +static const unsigned asn_MAP_value_from_canonical_64[] = { 3, 0, 1, 4, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_64[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 2, 0, 1 }, /* RICcallProcessID */ + { (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 4, -1, 0 }, /* RICcontrolOutcome */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* RICrequestID */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 3, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 3, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_64 = { + sizeof(struct RICcontrolFailure_IEs__value), + offsetof(struct RICcontrolFailure_IEs__value, _asn_ctx), + offsetof(struct RICcontrolFailure_IEs__value, present), + sizeof(((struct RICcontrolFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_64, + 9, /* Count of tags in the map */ + asn_MAP_value_to_canonical_64, + asn_MAP_value_from_canonical_64, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_64 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_64, + 5, /* Elements count */ + &asn_SPC_value_specs_64 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_61[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_62, memb_id_constraint_61 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICcontrolFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_63, memb_criticality_constraint_61 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_64, + select_RICcontrolFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_64, memb_value_constraint_61 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_IEs_tags_61[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_IEs_tag2el_61[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_61 = { + sizeof(struct RICcontrolFailure_IEs), + offsetof(struct RICcontrolFailure_IEs, _asn_ctx), + asn_MAP_RICcontrolFailure_IEs_tag2el_61, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs = { + "RICcontrolFailure-IEs", + "RICcontrolFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_IEs_tags_61, + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61[0]), /* 1 */ + asn_DEF_RICcontrolFailure_IEs_tags_61, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61) + /sizeof(asn_DEF_RICcontrolFailure_IEs_tags_61[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_IEs_61, + 3, /* Elements count */ + &asn_SPC_RICcontrolFailure_IEs_specs_61 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_68[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RICrequestID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICrequestID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICrequestID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.RANfunctionID), + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), + 0, + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_68[] = { 1, 0, 3, 2 }; +static const unsigned asn_MAP_value_from_canonical_68[] = { 1, 0, 3, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_68[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* RANfunctionID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RICrequestID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -1, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 2, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 2, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_68 = { + sizeof(struct ErrorIndication_IEs__value), + offsetof(struct ErrorIndication_IEs__value, _asn_ctx), + offsetof(struct ErrorIndication_IEs__value, present), + sizeof(((struct ErrorIndication_IEs__value *)0)->present), + asn_MAP_value_tag2el_68, + 8, /* Count of tags in the map */ + asn_MAP_value_to_canonical_68, + asn_MAP_value_from_canonical_68, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_68 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_68, + 4, /* Elements count */ + &asn_SPC_value_specs_68 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_65[] = { + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_66, memb_id_constraint_65 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ErrorIndication_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_67, memb_criticality_constraint_65 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ErrorIndication_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_68, + select_ErrorIndication_IEs_value_type, + { 0, &asn_PER_memb_value_constr_68, memb_value_constraint_65 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ErrorIndication_IEs_tags_65[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ErrorIndication_IEs_tag2el_65[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_65 = { + sizeof(struct ErrorIndication_IEs), + offsetof(struct ErrorIndication_IEs, _asn_ctx), + asn_MAP_ErrorIndication_IEs_tag2el_65, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs = { + "ErrorIndication-IEs", + "ErrorIndication-IEs", + &asn_OP_SEQUENCE, + asn_DEF_ErrorIndication_IEs_tags_65, + sizeof(asn_DEF_ErrorIndication_IEs_tags_65) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_65[0]), /* 1 */ + asn_DEF_ErrorIndication_IEs_tags_65, /* Same as above */ + sizeof(asn_DEF_ErrorIndication_IEs_tags_65) + /sizeof(asn_DEF_ErrorIndication_IEs_tags_65[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ErrorIndication_IEs_65, + 3, /* Elements count */ + &asn_SPC_ErrorIndication_IEs_specs_65 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_72[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.GlobalE2node_ID), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_GlobalE2node_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalE2node-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, +}; +static const unsigned asn_MAP_value_to_canonical_72[] = { 1, 0 }; +static const unsigned asn_MAP_value_from_canonical_72[] = { 1, 0 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_72[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gNB */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* en-gNB */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* ng-eNB */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 } /* eNB */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_72 = { + sizeof(struct E2setupRequestIEs__value), + offsetof(struct E2setupRequestIEs__value, _asn_ctx), + offsetof(struct E2setupRequestIEs__value, present), + sizeof(((struct E2setupRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_72, + 5, /* Count of tags in the map */ + asn_MAP_value_to_canonical_72, + asn_MAP_value_from_canonical_72, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_72 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_72, + 2, /* Elements count */ + &asn_SPC_value_specs_72 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupRequestIEs_69[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_70, memb_id_constraint_69 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E2setupRequestIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_71, memb_criticality_constraint_69 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_72, + select_E2setupRequestIEs_value_type, + { 0, &asn_PER_memb_value_constr_72, memb_value_constraint_69 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupRequestIEs_tags_69[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupRequestIEs_tag2el_69[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_69 = { + sizeof(struct E2setupRequestIEs), + offsetof(struct E2setupRequestIEs, _asn_ctx), + asn_MAP_E2setupRequestIEs_tag2el_69, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs = { + "E2setupRequestIEs", + "E2setupRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupRequestIEs_tags_69, + sizeof(asn_DEF_E2setupRequestIEs_tags_69) + /sizeof(asn_DEF_E2setupRequestIEs_tags_69[0]), /* 1 */ + asn_DEF_E2setupRequestIEs_tags_69, /* Same as above */ + sizeof(asn_DEF_E2setupRequestIEs_tags_69) + /sizeof(asn_DEF_E2setupRequestIEs_tags_69[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupRequestIEs_69, + 3, /* Elements count */ + &asn_SPC_E2setupRequestIEs_specs_69 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_76[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.GlobalRIC_ID), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_GlobalRIC_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "GlobalRIC-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_76[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* GlobalRIC-ID */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_76 = { + sizeof(struct E2setupResponseIEs__value), + offsetof(struct E2setupResponseIEs__value, _asn_ctx), + offsetof(struct E2setupResponseIEs__value, present), + sizeof(((struct E2setupResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_76, + 3, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_76 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_76, + 3, /* Elements count */ + &asn_SPC_value_specs_76 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupResponseIEs_73[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_74, memb_id_constraint_73 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E2setupResponseIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_75, memb_criticality_constraint_73 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_76, + select_E2setupResponseIEs_value_type, + { 0, &asn_PER_memb_value_constr_76, memb_value_constraint_73 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupResponseIEs_tags_73[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupResponseIEs_tag2el_73[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_73 = { + sizeof(struct E2setupResponseIEs), + offsetof(struct E2setupResponseIEs, _asn_ctx), + asn_MAP_E2setupResponseIEs_tag2el_73, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs = { + "E2setupResponseIEs", + "E2setupResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupResponseIEs_tags_73, + sizeof(asn_DEF_E2setupResponseIEs_tags_73) + /sizeof(asn_DEF_E2setupResponseIEs_tags_73[0]), /* 1 */ + asn_DEF_E2setupResponseIEs_tags_73, /* Same as above */ + sizeof(asn_DEF_E2setupResponseIEs_tags_73) + /sizeof(asn_DEF_E2setupResponseIEs_tags_73[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupResponseIEs_73, + 3, /* Elements count */ + &asn_SPC_E2setupResponseIEs_specs_73 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_80[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_80[] = { 1, 2, 0 }; +static const unsigned asn_MAP_value_from_canonical_80[] = { 2, 0, 1 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_80[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* CriticalityDiagnostics */ + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_80 = { + sizeof(struct E2setupFailureIEs__value), + offsetof(struct E2setupFailureIEs__value, _asn_ctx), + offsetof(struct E2setupFailureIEs__value, present), + sizeof(((struct E2setupFailureIEs__value *)0)->present), + asn_MAP_value_tag2el_80, + 7, /* Count of tags in the map */ + asn_MAP_value_to_canonical_80, + asn_MAP_value_from_canonical_80, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_80 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_80, + 3, /* Elements count */ + &asn_SPC_value_specs_80 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_E2setupFailureIEs_77[] = { + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_78, memb_id_constraint_77 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_E2setupFailureIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_79, memb_criticality_constraint_77 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct E2setupFailureIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_80, + select_E2setupFailureIEs_value_type, + { 0, &asn_PER_memb_value_constr_80, memb_value_constraint_77 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_E2setupFailureIEs_tags_77[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_E2setupFailureIEs_tag2el_77[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_77 = { + sizeof(struct E2setupFailureIEs), + offsetof(struct E2setupFailureIEs, _asn_ctx), + asn_MAP_E2setupFailureIEs_tag2el_77, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs = { + "E2setupFailureIEs", + "E2setupFailureIEs", + &asn_OP_SEQUENCE, + asn_DEF_E2setupFailureIEs_tags_77, + sizeof(asn_DEF_E2setupFailureIEs_tags_77) + /sizeof(asn_DEF_E2setupFailureIEs_tags_77[0]), /* 1 */ + asn_DEF_E2setupFailureIEs_tags_77, /* Same as above */ + sizeof(asn_DEF_E2setupFailureIEs_tags_77) + /sizeof(asn_DEF_E2setupFailureIEs_tags_77[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_E2setupFailureIEs_77, + 3, /* Elements count */ + &asn_SPC_E2setupFailureIEs_specs_77 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_84[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs__value, choice.Cause), + -1 /* Ambiguous tag (CHOICE?) */, + 0, + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "Cause" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_84[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequest */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* ricService */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 0, 0, 0 }, /* transport */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* protocol */ + { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 0, 0, 0 } /* misc */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_84 = { + sizeof(struct ResetRequestIEs__value), + offsetof(struct ResetRequestIEs__value, _asn_ctx), + offsetof(struct ResetRequestIEs__value, present), + sizeof(((struct ResetRequestIEs__value *)0)->present), + asn_MAP_value_tag2el_84, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_84 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_84, + 1, /* Elements count */ + &asn_SPC_value_specs_84 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetRequestIEs_81[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_82, memb_id_constraint_81 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetRequestIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_83, memb_criticality_constraint_81 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetRequestIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_84, + select_ResetRequestIEs_value_type, + { 0, &asn_PER_memb_value_constr_84, memb_value_constraint_81 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequestIEs_tags_81[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequestIEs_tag2el_81[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_81 = { + sizeof(struct ResetRequestIEs), + offsetof(struct ResetRequestIEs, _asn_ctx), + asn_MAP_ResetRequestIEs_tag2el_81, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs = { + "ResetRequestIEs", + "ResetRequestIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequestIEs_tags_81, + sizeof(asn_DEF_ResetRequestIEs_tags_81) + /sizeof(asn_DEF_ResetRequestIEs_tags_81[0]), /* 1 */ + asn_DEF_ResetRequestIEs_tags_81, /* Same as above */ + sizeof(asn_DEF_ResetRequestIEs_tags_81) + /sizeof(asn_DEF_ResetRequestIEs_tags_81[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequestIEs_81, + 3, /* Elements count */ + &asn_SPC_ResetRequestIEs_specs_81 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_88[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_88[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_88 = { + sizeof(struct ResetResponseIEs__value), + offsetof(struct ResetResponseIEs__value, _asn_ctx), + offsetof(struct ResetResponseIEs__value, present), + sizeof(((struct ResetResponseIEs__value *)0)->present), + asn_MAP_value_tag2el_88, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_88 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_88, + 1, /* Elements count */ + &asn_SPC_value_specs_88 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_ResetResponseIEs_85[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_86, memb_id_constraint_85 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_ResetResponseIEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_87, memb_criticality_constraint_85 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct ResetResponseIEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_88, + select_ResetResponseIEs_value_type, + { 0, &asn_PER_memb_value_constr_88, memb_value_constraint_85 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponseIEs_tags_85[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponseIEs_tag2el_85[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_85 = { + sizeof(struct ResetResponseIEs), + offsetof(struct ResetResponseIEs, _asn_ctx), + asn_MAP_ResetResponseIEs_tag2el_85, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs = { + "ResetResponseIEs", + "ResetResponseIEs", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponseIEs_tags_85, + sizeof(asn_DEF_ResetResponseIEs_tags_85) + /sizeof(asn_DEF_ResetResponseIEs_tags_85[0]), /* 1 */ + asn_DEF_ResetResponseIEs_tags_85, /* Same as above */ + sizeof(asn_DEF_ResetResponseIEs_tags_85) + /sizeof(asn_DEF_ResetResponseIEs_tags_85[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponseIEs_85, + 3, /* Elements count */ + &asn_SPC_ResetResponseIEs_specs_85 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_92[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctions_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctions_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctions-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_92[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctions-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_92 = { + sizeof(struct RICserviceUpdate_IEs__value), + offsetof(struct RICserviceUpdate_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdate_IEs__value, present), + sizeof(((struct RICserviceUpdate_IEs__value *)0)->present), + asn_MAP_value_tag2el_92, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_92 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_92, + 2, /* Elements count */ + &asn_SPC_value_specs_92 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_90, memb_id_constraint_89 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdate_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_91, memb_criticality_constraint_89 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_92, + select_RICserviceUpdate_IEs_value_type, + { 0, &asn_PER_memb_value_constr_92, memb_value_constraint_89 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_IEs_tags_89[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_IEs_tag2el_89[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89 = { + sizeof(struct RICserviceUpdate_IEs), + offsetof(struct RICserviceUpdate_IEs, _asn_ctx), + asn_MAP_RICserviceUpdate_IEs_tag2el_89, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs = { + "RICserviceUpdate-IEs", + "RICserviceUpdate-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_IEs_tags_89, + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89[0]), /* 1 */ + asn_DEF_RICserviceUpdate_IEs_tags_89, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89) + /sizeof(asn_DEF_RICserviceUpdate_IEs_tags_89[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_IEs_89, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdate_IEs_specs_89 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_96[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_96[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsID-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* RANfunctionsIDcause-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_96 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs__value), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateAcknowledge_IEs__value, present), + sizeof(((struct RICserviceUpdateAcknowledge_IEs__value *)0)->present), + asn_MAP_value_tag2el_96, + 2, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_96 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_96, + 2, /* Elements count */ + &asn_SPC_value_specs_96 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_94, memb_id_constraint_93 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateAcknowledge_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_95, memb_criticality_constraint_93 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_96, + select_RICserviceUpdateAcknowledge_IEs_value_type, + { 0, &asn_PER_memb_value_constr_96, memb_value_constraint_93 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_93[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93 = { + sizeof(struct RICserviceUpdateAcknowledge_IEs), + offsetof(struct RICserviceUpdateAcknowledge_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_IEs_tag2el_93, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs = { + "RICserviceUpdateAcknowledge-IEs", + "RICserviceUpdateAcknowledge-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_IEs_tags_93[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_IEs_93, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_100[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.RANfunctionsIDcause_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsIDcause_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsIDcause-List" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.TimeToWait), + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), + 0, + &asn_DEF_TimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "TimeToWait" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs__value, choice.CriticalityDiagnostics), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_CriticalityDiagnostics, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "CriticalityDiagnostics" + }, +}; +static const unsigned asn_MAP_value_to_canonical_100[] = { 1, 0, 2 }; +static const unsigned asn_MAP_value_from_canonical_100[] = { 1, 0, 2 }; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_100[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* TimeToWait */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* RANfunctionsIDcause-List */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -1, 0 } /* CriticalityDiagnostics */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_100 = { + sizeof(struct RICserviceUpdateFailure_IEs__value), + offsetof(struct RICserviceUpdateFailure_IEs__value, _asn_ctx), + offsetof(struct RICserviceUpdateFailure_IEs__value, present), + sizeof(((struct RICserviceUpdateFailure_IEs__value *)0)->present), + asn_MAP_value_tag2el_100, + 3, /* Count of tags in the map */ + asn_MAP_value_to_canonical_100, + asn_MAP_value_from_canonical_100, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_100 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_100, + 3, /* Elements count */ + &asn_SPC_value_specs_100 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_98, memb_id_constraint_97 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceUpdateFailure_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_99, memb_criticality_constraint_97 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_100, + select_RICserviceUpdateFailure_IEs_value_type, + { 0, &asn_PER_memb_value_constr_100, memb_value_constraint_97 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_IEs_tags_97[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_IEs_tag2el_97[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97 = { + sizeof(struct RICserviceUpdateFailure_IEs), + offsetof(struct RICserviceUpdateFailure_IEs, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_IEs_tag2el_97, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs = { + "RICserviceUpdateFailure-IEs", + "RICserviceUpdateFailure-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_IEs_tags_97, + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_IEs_tags_97, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97) + /sizeof(asn_DEF_RICserviceUpdateFailure_IEs_tags_97[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_IEs_97, + 3, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_IEs_specs_97 /* Additional specs */ +}; + +static asn_TYPE_member_t asn_MBR_value_104[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs__value, choice.RANfunctionsID_List), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RANfunctionsID_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RANfunctionsID-List" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_104[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* RANfunctionsID-List */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_104 = { + sizeof(struct RICserviceQuery_IEs__value), + offsetof(struct RICserviceQuery_IEs__value, _asn_ctx), + offsetof(struct RICserviceQuery_IEs__value, present), + sizeof(((struct RICserviceQuery_IEs__value *)0)->present), + asn_MAP_value_tag2el_104, + 1, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_104 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_104, + 1, /* Elements count */ + &asn_SPC_value_specs_104 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, id), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_ID, + 0, + { 0, &asn_PER_memb_id_constr_102, memb_id_constraint_101 }, + 0, 0, /* No default value */ + "id" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_RICserviceQuery_IEs_criticality_type, + { 0, &asn_PER_memb_criticality_constr_103, memb_criticality_constraint_101 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery_IEs, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_104, + select_RICserviceQuery_IEs_value_type, + { 0, &asn_PER_memb_value_constr_104, memb_value_constraint_101 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_IEs_tags_101[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_IEs_tag2el_101[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* id */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101 = { + sizeof(struct RICserviceQuery_IEs), + offsetof(struct RICserviceQuery_IEs, _asn_ctx), + asn_MAP_RICserviceQuery_IEs_tag2el_101, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs = { + "RICserviceQuery-IEs", + "RICserviceQuery-IEs", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_IEs_tags_101, + sizeof(asn_DEF_RICserviceQuery_IEs_tags_101) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_101[0]), /* 1 */ + asn_DEF_RICserviceQuery_IEs_tags_101, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_IEs_tags_101) + /sizeof(asn_DEF_RICserviceQuery_IEs_tags_101[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_IEs_101, + 3, /* Elements count */ + &asn_SPC_RICserviceQuery_IEs_specs_101 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Field.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Field.h new file mode 100644 index 0000000..2515bf4 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-Field.h @@ -0,0 +1,757 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_Field_H_ +#define _ProtocolIE_Field_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-ID.h" +#include "Criticality.h" +#include +#include +#include "RICaction-ToBeSetup-Item.h" +#include "Presence.h" +#include +#include +#include +#include "RICaction-Admitted-Item.h" +#include "RICaction-NotAdmitted-Item.h" +#include "RANfunction-Item.h" +#include "RANfunctionID-Item.h" +#include "RANfunctionIDcause-Item.h" +#include "RICrequestID.h" +#include "RANfunctionID.h" +#include "RICsubscriptionDetails.h" +#include "RICaction-Admitted-List.h" +#include "RICaction-NotAdmitted-List.h" +#include "CriticalityDiagnostics.h" +#include "Cause.h" +#include "RICactionID.h" +#include "RICindicationSN.h" +#include "RICindicationType.h" +#include "RICindicationHeader.h" +#include "RICindicationMessage.h" +#include "RICcallProcessID.h" +#include "RICcontrolHeader.h" +#include "RICcontrolMessage.h" +#include "RICcontrolAckRequest.h" +#include "RICcontrolStatus.h" +#include "RICcontrolOutcome.h" +#include "GlobalE2node-ID.h" +#include "RANfunctions-List.h" +#include "GlobalRIC-ID.h" +#include "RANfunctionsID-List.h" +#include "RANfunctionsIDcause-List.h" +#include "TimeToWait.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICaction_ToBeSetup_ItemIEs__value_PR { + RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item +} RICaction_ToBeSetup_ItemIEs__value_PR; +typedef enum RICaction_Admitted_ItemIEs__value_PR { + RICaction_Admitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item +} RICaction_Admitted_ItemIEs__value_PR; +typedef enum RICaction_NotAdmitted_ItemIEs__value_PR { + RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING, /* No components present */ + RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item +} RICaction_NotAdmitted_ItemIEs__value_PR; +typedef enum RANfunction_ItemIEs__value_PR { + RANfunction_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunction_ItemIEs__value_PR_RANfunction_Item +} RANfunction_ItemIEs__value_PR; +typedef enum RANfunctionID_ItemIEs__value_PR { + RANfunctionID_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item +} RANfunctionID_ItemIEs__value_PR; +typedef enum RANfunctionIDcause_ItemIEs__value_PR { + RANfunctionIDcause_ItemIEs__value_PR_NOTHING, /* No components present */ + RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item +} RANfunctionIDcause_ItemIEs__value_PR; +typedef enum RICsubscriptionRequest_IEs__value_PR { + RICsubscriptionRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionRequest_IEs__value_PR_RICrequestID, + RICsubscriptionRequest_IEs__value_PR_RANfunctionID, + RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails +} RICsubscriptionRequest_IEs__value_PR; +typedef enum RICsubscriptionResponse_IEs__value_PR { + RICsubscriptionResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionResponse_IEs__value_PR_RICrequestID, + RICsubscriptionResponse_IEs__value_PR_RANfunctionID, + RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List, + RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List +} RICsubscriptionResponse_IEs__value_PR; +typedef enum RICsubscriptionFailure_IEs__value_PR { + RICsubscriptionFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionFailure_IEs__value_PR_RICrequestID, + RICsubscriptionFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List, + RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionFailure_IEs__value_PR; +typedef enum RICsubscriptionDeleteRequest_IEs__value_PR { + RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteRequest_IEs__value_PR; +typedef enum RICsubscriptionDeleteResponse_IEs__value_PR { + RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID +} RICsubscriptionDeleteResponse_IEs__value_PR; +typedef enum RICsubscriptionDeleteFailure_IEs__value_PR { + RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING, /* No components present */ + RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID, + RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID, + RICsubscriptionDeleteFailure_IEs__value_PR_Cause, + RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics +} RICsubscriptionDeleteFailure_IEs__value_PR; +typedef enum RICindication_IEs__value_PR { + RICindication_IEs__value_PR_NOTHING, /* No components present */ + RICindication_IEs__value_PR_RICrequestID, + RICindication_IEs__value_PR_RANfunctionID, + RICindication_IEs__value_PR_RICactionID, + RICindication_IEs__value_PR_RICindicationSN, + RICindication_IEs__value_PR_RICindicationType, + RICindication_IEs__value_PR_RICindicationHeader, + RICindication_IEs__value_PR_RICindicationMessage, + RICindication_IEs__value_PR_RICcallProcessID +} RICindication_IEs__value_PR; +typedef enum RICcontrolRequest_IEs__value_PR { + RICcontrolRequest_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolRequest_IEs__value_PR_RICrequestID, + RICcontrolRequest_IEs__value_PR_RANfunctionID, + RICcontrolRequest_IEs__value_PR_RICcallProcessID, + RICcontrolRequest_IEs__value_PR_RICcontrolHeader, + RICcontrolRequest_IEs__value_PR_RICcontrolMessage, + RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest +} RICcontrolRequest_IEs__value_PR; +typedef enum RICcontrolAcknowledge_IEs__value_PR { + RICcontrolAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolAcknowledge_IEs__value_PR_RICrequestID, + RICcontrolAcknowledge_IEs__value_PR_RANfunctionID, + RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus, + RICcontrolAcknowledge_IEs__value_PR_RICcontrolOutcome +} RICcontrolAcknowledge_IEs__value_PR; +typedef enum RICcontrolFailure_IEs__value_PR { + RICcontrolFailure_IEs__value_PR_NOTHING, /* No components present */ + RICcontrolFailure_IEs__value_PR_RICrequestID, + RICcontrolFailure_IEs__value_PR_RANfunctionID, + RICcontrolFailure_IEs__value_PR_RICcallProcessID, + RICcontrolFailure_IEs__value_PR_Cause, + RICcontrolFailure_IEs__value_PR_RICcontrolOutcome +} RICcontrolFailure_IEs__value_PR; +typedef enum ErrorIndication_IEs__value_PR { + ErrorIndication_IEs__value_PR_NOTHING, /* No components present */ + ErrorIndication_IEs__value_PR_RICrequestID, + ErrorIndication_IEs__value_PR_RANfunctionID, + ErrorIndication_IEs__value_PR_Cause, + ErrorIndication_IEs__value_PR_CriticalityDiagnostics +} ErrorIndication_IEs__value_PR; +typedef enum E2setupRequestIEs__value_PR { + E2setupRequestIEs__value_PR_NOTHING, /* No components present */ + E2setupRequestIEs__value_PR_GlobalE2node_ID, + E2setupRequestIEs__value_PR_RANfunctions_List +} E2setupRequestIEs__value_PR; +typedef enum E2setupResponseIEs__value_PR { + E2setupResponseIEs__value_PR_NOTHING, /* No components present */ + E2setupResponseIEs__value_PR_GlobalRIC_ID, + E2setupResponseIEs__value_PR_RANfunctionsID_List, + E2setupResponseIEs__value_PR_RANfunctionsIDcause_List +} E2setupResponseIEs__value_PR; +typedef enum E2setupFailureIEs__value_PR { + E2setupFailureIEs__value_PR_NOTHING, /* No components present */ + E2setupFailureIEs__value_PR_Cause, + E2setupFailureIEs__value_PR_TimeToWait, + E2setupFailureIEs__value_PR_CriticalityDiagnostics +} E2setupFailureIEs__value_PR; +typedef enum ResetRequestIEs__value_PR { + ResetRequestIEs__value_PR_NOTHING, /* No components present */ + ResetRequestIEs__value_PR_Cause +} ResetRequestIEs__value_PR; +typedef enum ResetResponseIEs__value_PR { + ResetResponseIEs__value_PR_NOTHING, /* No components present */ + ResetResponseIEs__value_PR_CriticalityDiagnostics +} ResetResponseIEs__value_PR; +typedef enum RICserviceUpdate_IEs__value_PR { + RICserviceUpdate_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdate_IEs__value_PR_RANfunctions_List, + RICserviceUpdate_IEs__value_PR_RANfunctionsID_List +} RICserviceUpdate_IEs__value_PR; +typedef enum RICserviceUpdateAcknowledge_IEs__value_PR { + RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List, + RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List +} RICserviceUpdateAcknowledge_IEs__value_PR; +typedef enum RICserviceUpdateFailure_IEs__value_PR { + RICserviceUpdateFailure_IEs__value_PR_NOTHING, /* No components present */ + RICserviceUpdateFailure_IEs__value_PR_RANfunctionsIDcause_List, + RICserviceUpdateFailure_IEs__value_PR_TimeToWait, + RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics +} RICserviceUpdateFailure_IEs__value_PR; +typedef enum RICserviceQuery_IEs__value_PR { + RICserviceQuery_IEs__value_PR_NOTHING, /* No components present */ + RICserviceQuery_IEs__value_PR_RANfunctionsID_List +} RICserviceQuery_IEs__value_PR; + +/* ProtocolIE-Field */ +typedef struct RICaction_ToBeSetup_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_ToBeSetup_ItemIEs__value { + RICaction_ToBeSetup_ItemIEs__value_PR present; + union RICaction_ToBeSetup_ItemIEs__value_u { + RICaction_ToBeSetup_Item_t RICaction_ToBeSetup_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_ItemIEs_t; +typedef struct RICaction_Admitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_Admitted_ItemIEs__value { + RICaction_Admitted_ItemIEs__value_PR present; + union RICaction_Admitted_ItemIEs__value_u { + RICaction_Admitted_Item_t RICaction_Admitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_ItemIEs_t; +typedef struct RICaction_NotAdmitted_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICaction_NotAdmitted_ItemIEs__value { + RICaction_NotAdmitted_ItemIEs__value_PR present; + union RICaction_NotAdmitted_ItemIEs__value_u { + RICaction_NotAdmitted_Item_t RICaction_NotAdmitted_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_ItemIEs_t; +typedef struct RANfunction_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunction_ItemIEs__value { + RANfunction_ItemIEs__value_PR present; + union RANfunction_ItemIEs__value_u { + RANfunction_Item_t RANfunction_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_ItemIEs_t; +typedef struct RANfunctionID_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionID_ItemIEs__value { + RANfunctionID_ItemIEs__value_PR present; + union RANfunctionID_ItemIEs__value_u { + RANfunctionID_Item_t RANfunctionID_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_ItemIEs_t; +typedef struct RANfunctionIDcause_ItemIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RANfunctionIDcause_ItemIEs__value { + RANfunctionIDcause_ItemIEs__value_PR present; + union RANfunctionIDcause_ItemIEs__value_u { + RANfunctionIDcause_Item_t RANfunctionIDcause_Item; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_ItemIEs_t; +typedef struct RICsubscriptionRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionRequest_IEs__value { + RICsubscriptionRequest_IEs__value_PR present; + union RICsubscriptionRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICsubscriptionDetails_t RICsubscriptionDetails; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_IEs_t; +typedef struct RICsubscriptionResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionResponse_IEs__value { + RICsubscriptionResponse_IEs__value_PR present; + union RICsubscriptionResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_Admitted_List_t RICaction_Admitted_List; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_IEs_t; +typedef struct RICsubscriptionFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionFailure_IEs__value { + RICsubscriptionFailure_IEs__value_PR present; + union RICsubscriptionFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICaction_NotAdmitted_List_t RICaction_NotAdmitted_List; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_IEs_t; +typedef struct RICsubscriptionDeleteRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteRequest_IEs__value { + RICsubscriptionDeleteRequest_IEs__value_PR present; + union RICsubscriptionDeleteRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_IEs_t; +typedef struct RICsubscriptionDeleteResponse_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteResponse_IEs__value { + RICsubscriptionDeleteResponse_IEs__value_PR present; + union RICsubscriptionDeleteResponse_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_IEs_t; +typedef struct RICsubscriptionDeleteFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICsubscriptionDeleteFailure_IEs__value { + RICsubscriptionDeleteFailure_IEs__value_PR present; + union RICsubscriptionDeleteFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_IEs_t; +typedef struct RICindication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICindication_IEs__value { + RICindication_IEs__value_PR present; + union RICindication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICactionID_t RICactionID; + RICindicationSN_t RICindicationSN; + RICindicationType_t RICindicationType; + RICindicationHeader_t RICindicationHeader; + RICindicationMessage_t RICindicationMessage; + RICcallProcessID_t RICcallProcessID; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_IEs_t; +typedef struct RICcontrolRequest_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolRequest_IEs__value { + RICcontrolRequest_IEs__value_PR present; + union RICcontrolRequest_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolHeader_t RICcontrolHeader; + RICcontrolMessage_t RICcontrolMessage; + RICcontrolAckRequest_t RICcontrolAckRequest; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_IEs_t; +typedef struct RICcontrolAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolAcknowledge_IEs__value { + RICcontrolAcknowledge_IEs__value_PR present; + union RICcontrolAcknowledge_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + RICcontrolStatus_t RICcontrolStatus; + RICcontrolOutcome_t RICcontrolOutcome; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_IEs_t; +typedef struct RICcontrolFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICcontrolFailure_IEs__value { + RICcontrolFailure_IEs__value_PR present; + union RICcontrolFailure_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + RICcallProcessID_t RICcallProcessID; + Cause_t Cause; + RICcontrolOutcome_t RICcontrolOutcome; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_IEs_t; +typedef struct ErrorIndication_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ErrorIndication_IEs__value { + ErrorIndication_IEs__value_PR present; + union ErrorIndication_IEs__value_u { + RICrequestID_t RICrequestID; + RANfunctionID_t RANfunctionID; + Cause_t Cause; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ErrorIndication_IEs_t; +typedef struct E2setupRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupRequestIEs__value { + E2setupRequestIEs__value_PR present; + union E2setupRequestIEs__value_u { + GlobalE2node_ID_t GlobalE2node_ID; + RANfunctions_List_t RANfunctions_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupRequestIEs_t; +typedef struct E2setupResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupResponseIEs__value { + E2setupResponseIEs__value_PR present; + union E2setupResponseIEs__value_u { + GlobalRIC_ID_t GlobalRIC_ID; + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupResponseIEs_t; +typedef struct E2setupFailureIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct E2setupFailureIEs__value { + E2setupFailureIEs__value_PR present; + union E2setupFailureIEs__value_u { + Cause_t Cause; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} E2setupFailureIEs_t; +typedef struct ResetRequestIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetRequestIEs__value { + ResetRequestIEs__value_PR present; + union ResetRequestIEs__value_u { + Cause_t Cause; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequestIEs_t; +typedef struct ResetResponseIEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct ResetResponseIEs__value { + ResetResponseIEs__value_PR present; + union ResetResponseIEs__value_u { + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponseIEs_t; +typedef struct RICserviceUpdate_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdate_IEs__value { + RICserviceUpdate_IEs__value_PR present; + union RICserviceUpdate_IEs__value_u { + RANfunctions_List_t RANfunctions_List; + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_IEs_t; +typedef struct RICserviceUpdateAcknowledge_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateAcknowledge_IEs__value { + RICserviceUpdateAcknowledge_IEs__value_PR present; + union RICserviceUpdateAcknowledge_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_IEs_t; +typedef struct RICserviceUpdateFailure_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceUpdateFailure_IEs__value { + RICserviceUpdateFailure_IEs__value_PR present; + union RICserviceUpdateFailure_IEs__value_u { + RANfunctionsIDcause_List_t RANfunctionsIDcause_List; + TimeToWait_t TimeToWait; + CriticalityDiagnostics_t CriticalityDiagnostics; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_IEs_t; +typedef struct RICserviceQuery_IEs { + ProtocolIE_ID_t id; + Criticality_t criticality; + struct RICserviceQuery_IEs__value { + RICserviceQuery_IEs__value_PR present; + union RICserviceQuery_IEs__value_u { + RANfunctionsID_List_t RANfunctionsID_List; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_IEs_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1; +extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5; +extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9; +extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13; +extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17; +extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[3]; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21; +extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_25; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_25[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_29; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_29[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_33; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_33[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_37; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_37[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_41; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_41[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_45; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_45[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_49; +extern asn_TYPE_member_t asn_MBR_RICindication_IEs_49[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_53; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_53[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_57; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_57[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_61; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_61[3]; +extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_65; +extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_65[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupRequestIEs_specs_69; +extern asn_TYPE_member_t asn_MBR_E2setupRequestIEs_69[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupResponseIEs_specs_73; +extern asn_TYPE_member_t asn_MBR_E2setupResponseIEs_73[3]; +extern asn_TYPE_descriptor_t asn_DEF_E2setupFailureIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_E2setupFailureIEs_specs_77; +extern asn_TYPE_member_t asn_MBR_E2setupFailureIEs_77[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetRequestIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequestIEs_specs_81; +extern asn_TYPE_member_t asn_MBR_ResetRequestIEs_81[3]; +extern asn_TYPE_descriptor_t asn_DEF_ResetResponseIEs; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponseIEs_specs_85; +extern asn_TYPE_member_t asn_MBR_ResetResponseIEs_85[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[3]; +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_Field_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-FieldPair.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-FieldPair.c new file mode 100644 index 0000000..82bda1a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-FieldPair.c @@ -0,0 +1,9 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-FieldPair.h" + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-FieldPair.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-FieldPair.h new file mode 100644 index 0000000..191ea27 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-FieldPair.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_FieldPair_H_ +#define _ProtocolIE_FieldPair_H_ + + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_FieldPair_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ID.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ID.c new file mode 100644 index 0000000..92c8c14 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ID.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-ID.h" + +int +ProtocolIE_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_ProtocolIE_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID = { + "ProtocolIE-ID", + "ProtocolIE-ID", + &asn_OP_NativeInteger, + asn_DEF_ProtocolIE_ID_tags_1, + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_ID_tags_1) + /sizeof(asn_DEF_ProtocolIE_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_ProtocolIE_ID_constr_1, ProtocolIE_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ID.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ID.h new file mode 100644 index 0000000..a6afe03 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-ID.h @@ -0,0 +1,76 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_ID_H_ +#define _ProtocolIE_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-ID */ +typedef long ProtocolIE_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_ProtocolIE_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_ID; +asn_struct_free_f ProtocolIE_ID_free; +asn_struct_print_f ProtocolIE_ID_print; +asn_constr_check_f ProtocolIE_ID_constraint; +ber_type_decoder_f ProtocolIE_ID_decode_ber; +der_type_encoder_f ProtocolIE_ID_encode_der; +xer_type_decoder_f ProtocolIE_ID_decode_xer; +xer_type_encoder_f ProtocolIE_ID_encode_xer; +per_type_decoder_f ProtocolIE_ID_decode_uper; +per_type_encoder_f ProtocolIE_ID_encode_uper; +per_type_decoder_f ProtocolIE_ID_decode_aper; +per_type_encoder_f ProtocolIE_ID_encode_aper; +#define ProtocolIE_ID_id_Cause ((ProtocolIE_ID_t)1) +#define ProtocolIE_ID_id_CriticalityDiagnostics ((ProtocolIE_ID_t)2) +#define ProtocolIE_ID_id_GlobalE2node_ID ((ProtocolIE_ID_t)3) +#define ProtocolIE_ID_id_GlobalRIC_ID ((ProtocolIE_ID_t)4) +#define ProtocolIE_ID_id_RANfunctionID ((ProtocolIE_ID_t)5) +#define ProtocolIE_ID_id_RANfunctionID_Item ((ProtocolIE_ID_t)6) +#define ProtocolIE_ID_id_RANfunctionIEcause_Item ((ProtocolIE_ID_t)7) +#define ProtocolIE_ID_id_RANfunction_Item ((ProtocolIE_ID_t)8) +#define ProtocolIE_ID_id_RANfunctionsAccepted ((ProtocolIE_ID_t)9) +#define ProtocolIE_ID_id_RANfunctionsAdded ((ProtocolIE_ID_t)10) +#define ProtocolIE_ID_id_RANfunctionsDeleted ((ProtocolIE_ID_t)11) +#define ProtocolIE_ID_id_RANfunctionsModified ((ProtocolIE_ID_t)12) +#define ProtocolIE_ID_id_RANfunctionsRejected ((ProtocolIE_ID_t)13) +#define ProtocolIE_ID_id_RICaction_Admitted_Item ((ProtocolIE_ID_t)14) +#define ProtocolIE_ID_id_RICactionID ((ProtocolIE_ID_t)15) +#define ProtocolIE_ID_id_RICaction_NotAdmitted_Item ((ProtocolIE_ID_t)16) +#define ProtocolIE_ID_id_RICactions_Admitted ((ProtocolIE_ID_t)17) +#define ProtocolIE_ID_id_RICactions_NotAdmitted ((ProtocolIE_ID_t)18) +#define ProtocolIE_ID_id_RICaction_ToBeSetup_Item ((ProtocolIE_ID_t)19) +#define ProtocolIE_ID_id_RICcallProcessID ((ProtocolIE_ID_t)20) +#define ProtocolIE_ID_id_RICcontrolAckRequest ((ProtocolIE_ID_t)21) +#define ProtocolIE_ID_id_RICcontrolHeader ((ProtocolIE_ID_t)22) +#define ProtocolIE_ID_id_RICcontrolMessage ((ProtocolIE_ID_t)23) +#define ProtocolIE_ID_id_RICcontrolStatus ((ProtocolIE_ID_t)24) +#define ProtocolIE_ID_id_RICindicationHeader ((ProtocolIE_ID_t)25) +#define ProtocolIE_ID_id_RICindicationMessage ((ProtocolIE_ID_t)26) +#define ProtocolIE_ID_id_RICindicationSN ((ProtocolIE_ID_t)27) +#define ProtocolIE_ID_id_RICindicationType ((ProtocolIE_ID_t)28) +#define ProtocolIE_ID_id_RICrequestID ((ProtocolIE_ID_t)29) +#define ProtocolIE_ID_id_RICsubscriptionDetails ((ProtocolIE_ID_t)30) +#define ProtocolIE_ID_id_TimeToWait ((ProtocolIE_ID_t)31) +#define ProtocolIE_ID_id_RICcontrolOutcome ((ProtocolIE_ID_t)32) + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-SingleContainer.c b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-SingleContainer.c new file mode 100644 index 0000000..506b061 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-SingleContainer.c @@ -0,0 +1,147 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ProtocolIE-SingleContainer.h" + +/* + * This type is implemented using RICaction_ToBeSetup_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_Admitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RICaction_NotAdmitted_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunction_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionID_ItemIEs, + * so here we adjust the DEF accordingly. + */ +/* + * This type is implemented using RANfunctionIDcause_ItemIEs, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P0 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P0_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_ItemIEs_1, + 3, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P1 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P1_tags_2[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_ItemIEs_5, + 3, /* Elements count */ + &asn_SPC_RICaction_Admitted_ItemIEs_specs_5 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P2 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P2_tags_3[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_ItemIEs_9, + 3, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P3 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P3_tags_4[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_ItemIEs_13, + 3, /* Elements count */ + &asn_SPC_RANfunction_ItemIEs_specs_13 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P4 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P4_tags_5[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_ItemIEs_17, + 3, /* Elements count */ + &asn_SPC_RANfunctionID_ItemIEs_specs_17 /* Additional specs */ +}; + +static const ber_tlv_tag_t asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P5 = { + "ProtocolIE-SingleContainer", + "ProtocolIE-SingleContainer", + &asn_OP_SEQUENCE, + asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6, + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6[0]), /* 1 */ + asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6, /* Same as above */ + sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6) + /sizeof(asn_DEF_ProtocolIE_SingleContainer_1415P5_tags_6[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_ItemIEs_21, + 3, /* Elements count */ + &asn_SPC_RANfunctionIDcause_ItemIEs_specs_21 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-SingleContainer.h b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-SingleContainer.h new file mode 100644 index 0000000..5cf2853 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ProtocolIE-SingleContainer.h @@ -0,0 +1,108 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-Containers" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ProtocolIE_SingleContainer_H_ +#define _ProtocolIE_SingleContainer_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Field.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* ProtocolIE-SingleContainer */ +typedef RICaction_ToBeSetup_ItemIEs_t ProtocolIE_SingleContainer_1415P0_t; +typedef RICaction_Admitted_ItemIEs_t ProtocolIE_SingleContainer_1415P1_t; +typedef RICaction_NotAdmitted_ItemIEs_t ProtocolIE_SingleContainer_1415P2_t; +typedef RANfunction_ItemIEs_t ProtocolIE_SingleContainer_1415P3_t; +typedef RANfunctionID_ItemIEs_t ProtocolIE_SingleContainer_1415P4_t; +typedef RANfunctionIDcause_ItemIEs_t ProtocolIE_SingleContainer_1415P5_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P0; +asn_struct_free_f ProtocolIE_SingleContainer_1415P0_free; +asn_struct_print_f ProtocolIE_SingleContainer_1415P0_print; +asn_constr_check_f ProtocolIE_SingleContainer_1415P0_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1415P0_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1415P0_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1415P0_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1415P0_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1415P0_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P0_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1415P0_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P0_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P1; +asn_struct_free_f ProtocolIE_SingleContainer_1415P1_free; +asn_struct_print_f ProtocolIE_SingleContainer_1415P1_print; +asn_constr_check_f ProtocolIE_SingleContainer_1415P1_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1415P1_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1415P1_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1415P1_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1415P1_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1415P1_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P1_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1415P1_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P1_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P2; +asn_struct_free_f ProtocolIE_SingleContainer_1415P2_free; +asn_struct_print_f ProtocolIE_SingleContainer_1415P2_print; +asn_constr_check_f ProtocolIE_SingleContainer_1415P2_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1415P2_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1415P2_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1415P2_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1415P2_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1415P2_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P2_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1415P2_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P2_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P3; +asn_struct_free_f ProtocolIE_SingleContainer_1415P3_free; +asn_struct_print_f ProtocolIE_SingleContainer_1415P3_print; +asn_constr_check_f ProtocolIE_SingleContainer_1415P3_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1415P3_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1415P3_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1415P3_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1415P3_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1415P3_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P3_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1415P3_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P3_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P4; +asn_struct_free_f ProtocolIE_SingleContainer_1415P4_free; +asn_struct_print_f ProtocolIE_SingleContainer_1415P4_print; +asn_constr_check_f ProtocolIE_SingleContainer_1415P4_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1415P4_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1415P4_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1415P4_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1415P4_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1415P4_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P4_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1415P4_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P4_encode_aper; +extern asn_TYPE_descriptor_t asn_DEF_ProtocolIE_SingleContainer_1415P5; +asn_struct_free_f ProtocolIE_SingleContainer_1415P5_free; +asn_struct_print_f ProtocolIE_SingleContainer_1415P5_print; +asn_constr_check_f ProtocolIE_SingleContainer_1415P5_constraint; +ber_type_decoder_f ProtocolIE_SingleContainer_1415P5_decode_ber; +der_type_encoder_f ProtocolIE_SingleContainer_1415P5_encode_der; +xer_type_decoder_f ProtocolIE_SingleContainer_1415P5_decode_xer; +xer_type_encoder_f ProtocolIE_SingleContainer_1415P5_encode_xer; +per_type_decoder_f ProtocolIE_SingleContainer_1415P5_decode_uper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P5_encode_uper; +per_type_decoder_f ProtocolIE_SingleContainer_1415P5_decode_aper; +per_type_encoder_f ProtocolIE_SingleContainer_1415P5_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _ProtocolIE_SingleContainer_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunction-Item.c b/setup/xapp-bs-connector/asn1c_defs/RANfunction-Item.c new file mode 100644 index 0000000..9d60d21 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunction-Item.c @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunction-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunction_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionDefinition), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunction_Item, ranFunctionRevision), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionRevision, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionRevision" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunction_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunction_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranFunctionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ranFunctionRevision */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunction_Item_specs_1 = { + sizeof(struct RANfunction_Item), + offsetof(struct RANfunction_Item, _asn_ctx), + asn_MAP_RANfunction_Item_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 3, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunction_Item = { + "RANfunction-Item", + "RANfunction-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunction_Item_tags_1, + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunction_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunction_Item_tags_1) + /sizeof(asn_DEF_RANfunction_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunction_Item_1, + 3, /* Elements count */ + &asn_SPC_RANfunction_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunction-Item.h b/setup/xapp-bs-connector/asn1c_defs/RANfunction-Item.h new file mode 100644 index 0000000..3877316 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunction-Item.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunction_Item_H_ +#define _RANfunction_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionDefinition.h" +#include "RANfunctionRevision.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunction-Item */ +typedef struct RANfunction_Item { + RANfunctionID_t ranFunctionID; + RANfunctionDefinition_t ranFunctionDefinition; + RANfunctionRevision_t ranFunctionRevision; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunction_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunction_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunction_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionDefinition.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionDefinition.c new file mode 100644 index 0000000..bec3c36 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionDefinition.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANfunctionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition = { + "RANfunctionDefinition", + "RANfunctionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RANfunctionDefinition_tags_1, + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionDefinition_tags_1) + /sizeof(asn_DEF_RANfunctionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionDefinition.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionDefinition.h new file mode 100644 index 0000000..2fdead2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionDefinition.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionDefinition_H_ +#define _RANfunctionDefinition_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionDefinition */ +typedef OCTET_STRING_t RANfunctionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionDefinition; +asn_struct_free_f RANfunctionDefinition_free; +asn_struct_print_f RANfunctionDefinition_print; +asn_constr_check_f RANfunctionDefinition_constraint; +ber_type_decoder_f RANfunctionDefinition_decode_ber; +der_type_encoder_f RANfunctionDefinition_encode_der; +xer_type_decoder_f RANfunctionDefinition_decode_xer; +xer_type_encoder_f RANfunctionDefinition_encode_xer; +per_type_decoder_f RANfunctionDefinition_decode_uper; +per_type_encoder_f RANfunctionDefinition_encode_uper; +per_type_decoder_f RANfunctionDefinition_decode_aper; +per_type_encoder_f RANfunctionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionDefinition_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionID-Item.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID-Item.c new file mode 100644 index 0000000..7a2c15c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID-Item.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionID-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionID_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionID_Item, ranFunctionRevision), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionRevision, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionRevision" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionID_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ranFunctionRevision */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_Item_specs_1 = { + sizeof(struct RANfunctionID_Item), + offsetof(struct RANfunctionID_Item, _asn_ctx), + asn_MAP_RANfunctionID_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item = { + "RANfunctionID-Item", + "RANfunctionID-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionID_Item_tags_1, + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_Item_tags_1) + /sizeof(asn_DEF_RANfunctionID_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionID_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionID_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionID-Item.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID-Item.h new file mode 100644 index 0000000..30fb177 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionID_Item_H_ +#define _RANfunctionID_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "RANfunctionRevision.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID-Item */ +typedef struct RANfunctionID_Item { + RANfunctionID_t ranFunctionID; + RANfunctionRevision_t ranFunctionRevision; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionID_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionID.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID.c new file mode 100644 index 0000000..ca5602f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionID.h" + +int +RANfunctionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionID = { + "RANfunctionID", + "RANfunctionID", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionID_tags_1, + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionID_tags_1) + /sizeof(asn_DEF_RANfunctionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionID_constr_1, RANfunctionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionID.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID.h new file mode 100644 index 0000000..e8ea3f6 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionID_H_ +#define _RANfunctionID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionID */ +typedef long RANfunctionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID; +asn_struct_free_f RANfunctionID_free; +asn_struct_print_f RANfunctionID_print; +asn_constr_check_f RANfunctionID_constraint; +ber_type_decoder_f RANfunctionID_decode_ber; +der_type_encoder_f RANfunctionID_encode_der; +xer_type_decoder_f RANfunctionID_decode_xer; +xer_type_encoder_f RANfunctionID_encode_xer; +per_type_decoder_f RANfunctionID_decode_uper; +per_type_encoder_f RANfunctionID_encode_uper; +per_type_decoder_f RANfunctionID_decode_aper; +per_type_encoder_f RANfunctionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionIDcause-Item.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionIDcause-Item.c new file mode 100644 index 0000000..aca1f62 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionIDcause-Item.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionIDcause-Item.h" + +static asn_TYPE_member_t asn_MBR_RANfunctionIDcause_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, ranFunctionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANfunctionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranFunctionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANfunctionIDcause_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionIDcause_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANfunctionIDcause_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranFunctionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_Item_specs_1 = { + sizeof(struct RANfunctionIDcause_Item), + offsetof(struct RANfunctionIDcause_Item, _asn_ctx), + asn_MAP_RANfunctionIDcause_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item = { + "RANfunctionIDcause-Item", + "RANfunctionIDcause-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANfunctionIDcause_Item_tags_1, + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionIDcause_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1) + /sizeof(asn_DEF_RANfunctionIDcause_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANfunctionIDcause_Item_1, + 2, /* Elements count */ + &asn_SPC_RANfunctionIDcause_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionIDcause-Item.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionIDcause-Item.h new file mode 100644 index 0000000..c4505b5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionIDcause-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionIDcause_Item_H_ +#define _RANfunctionIDcause_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RANfunctionID.h" +#include "Cause.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionIDcause-Item */ +typedef struct RANfunctionIDcause_Item { + RANfunctionID_t ranFunctionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionIDcause_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionIDcause_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionRevision.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionRevision.c new file mode 100644 index 0000000..563dda0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionRevision.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionRevision.h" + +int +RANfunctionRevision_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 4095)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 12, 12, 0, 4095 } /* (0..4095) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionRevision_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision = { + "RANfunctionRevision", + "RANfunctionRevision", + &asn_OP_NativeInteger, + asn_DEF_RANfunctionRevision_tags_1, + sizeof(asn_DEF_RANfunctionRevision_tags_1) + /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionRevision_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionRevision_tags_1) + /sizeof(asn_DEF_RANfunctionRevision_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionRevision_constr_1, RANfunctionRevision_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionRevision.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionRevision.h new file mode 100644 index 0000000..74853ea --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionRevision.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionRevision_H_ +#define _RANfunctionRevision_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANfunctionRevision */ +typedef long RANfunctionRevision_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANfunctionRevision_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionRevision; +asn_struct_free_f RANfunctionRevision_free; +asn_struct_print_f RANfunctionRevision_print; +asn_constr_check_f RANfunctionRevision_constraint; +ber_type_decoder_f RANfunctionRevision_decode_ber; +der_type_encoder_f RANfunctionRevision_encode_der; +xer_type_decoder_f RANfunctionRevision_decode_xer; +xer_type_encoder_f RANfunctionRevision_encode_xer; +per_type_decoder_f RANfunctionRevision_decode_uper; +per_type_encoder_f RANfunctionRevision_encode_uper; +per_type_decoder_f RANfunctionRevision_decode_aper; +per_type_encoder_f RANfunctionRevision_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionRevision_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctions-List.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctions-List.c new file mode 100644 index 0000000..12912e0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctions-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctions-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RANfunctions_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctions_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1415P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctions_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctions_List_specs_1 = { + sizeof(struct RANfunctions_List), + offsetof(struct RANfunctions_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctions_List = { + "RANfunctions-List", + "RANfunctions-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctions_List_tags_1, + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctions_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctions_List_tags_1) + /sizeof(asn_DEF_RANfunctions_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctions_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctions_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctions_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctions-List.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctions-List.h new file mode 100644 index 0000000..6a4a41a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctions-List.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctions_List_H_ +#define _RANfunctions_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctions-List */ +typedef struct RANfunctions_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctions_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctions_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctions_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionsID-List.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsID-List.c new file mode 100644 index 0000000..3e5dda5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsID-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionsID-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsID_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsID_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1415P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsID_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsID_List_specs_1 = { + sizeof(struct RANfunctionsID_List), + offsetof(struct RANfunctionsID_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List = { + "RANfunctionsID-List", + "RANfunctionsID-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsID_List_tags_1, + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsID_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsID_List_tags_1) + /sizeof(asn_DEF_RANfunctionsID_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsID_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsID_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsID_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionsID-List.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsID-List.h new file mode 100644 index 0000000..5313c5c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsID-List.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionsID_List_H_ +#define _RANfunctionsID_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctionsID-List */ +typedef struct RANfunctionsID_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsID_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsID_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsID_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionsIDcause-List.c b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsIDcause-List.c new file mode 100644 index 0000000..75fa57f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsIDcause-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANfunctionsIDcause-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RANfunctionsIDcause_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 9, 9, 0, 256 } /* (SIZE(0..256)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RANfunctionsIDcause_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1415P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANfunctionsIDcause_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RANfunctionsIDcause_List_specs_1 = { + sizeof(struct RANfunctionsIDcause_List), + offsetof(struct RANfunctionsIDcause_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List = { + "RANfunctionsIDcause-List", + "RANfunctionsIDcause-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RANfunctionsIDcause_List_tags_1, + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + asn_DEF_RANfunctionsIDcause_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1) + /sizeof(asn_DEF_RANfunctionsIDcause_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANfunctionsIDcause_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RANfunctionsIDcause_List_1, + 1, /* Single element */ + &asn_SPC_RANfunctionsIDcause_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANfunctionsIDcause-List.h b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsIDcause-List.h new file mode 100644 index 0000000..d1cbefd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANfunctionsIDcause-List.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANfunctionsIDcause_List_H_ +#define _RANfunctionsIDcause_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RANfunctionsIDcause-List */ +typedef struct RANfunctionsIDcause_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANfunctionsIDcause_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANfunctionsIDcause_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANfunctionsIDcause_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-ID.c b/setup/xapp-bs-connector/asn1c_defs/RANparameter-ID.c new file mode 100644 index 0000000..de87c0b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-ID.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANparameter-ID.h" + +int +RANparameter_ID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANparameter_ID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_ID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_ID = { + "RANparameter-ID", + "RANparameter-ID", + &asn_OP_NativeInteger, + asn_DEF_RANparameter_ID_tags_1, + sizeof(asn_DEF_RANparameter_ID_tags_1) + /sizeof(asn_DEF_RANparameter_ID_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_ID_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_ID_tags_1) + /sizeof(asn_DEF_RANparameter_ID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANparameter_ID_constr_1, RANparameter_ID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-ID.h b/setup/xapp-bs-connector/asn1c_defs/RANparameter-ID.h new file mode 100644 index 0000000..1295f53 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-ID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANparameter_ID_H_ +#define _RANparameter_ID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-ID */ +typedef long RANparameter_ID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANparameter_ID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_ID; +asn_struct_free_f RANparameter_ID_free; +asn_struct_print_f RANparameter_ID_print; +asn_constr_check_f RANparameter_ID_constraint; +ber_type_decoder_f RANparameter_ID_decode_ber; +der_type_encoder_f RANparameter_ID_encode_der; +xer_type_decoder_f RANparameter_ID_decode_xer; +xer_type_encoder_f RANparameter_ID_encode_xer; +per_type_decoder_f RANparameter_ID_decode_uper; +per_type_encoder_f RANparameter_ID_encode_uper; +per_type_decoder_f RANparameter_ID_decode_aper; +per_type_encoder_f RANparameter_ID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_ID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Item.c b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Item.c new file mode 100644 index 0000000..a944aed --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Item.c @@ -0,0 +1,80 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANparameter-Item.h" + +asn_TYPE_member_t asn_MBR_RANparameter_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Item, ranParameter_ID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_ID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-ID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Item, ranParameter_Name), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_Name, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-Name" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Item, ranParameter_Test), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_Test, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-Test" + }, + { ATF_NOFLAGS, 0, offsetof(struct RANparameter_Item, ranParameter_Value), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RANparameter_Value, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ranParameter-Value" + }, +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RANparameter_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ranParameter-ID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ranParameter-Name */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranParameter-Test */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ranParameter-Value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RANparameter_Item_specs_1 = { + sizeof(struct RANparameter_Item), + offsetof(struct RANparameter_Item, _asn_ctx), + asn_MAP_RANparameter_Item_tag2el_1, + 4, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Item = { + "RANparameter-Item", + "RANparameter-Item", + &asn_OP_SEQUENCE, + asn_DEF_RANparameter_Item_tags_1, + sizeof(asn_DEF_RANparameter_Item_tags_1) + /sizeof(asn_DEF_RANparameter_Item_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Item_tags_1) + /sizeof(asn_DEF_RANparameter_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RANparameter_Item_1, + 4, /* Elements count */ + &asn_SPC_RANparameter_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Item.h b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Item.h new file mode 100644 index 0000000..a254450 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANparameter_Item_H_ +#define _RANparameter_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RANparameter-ID.h" +#include "RANparameter-Name.h" +#include "RANparameter-Test.h" +#include "RANparameter-Value.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-Item */ +typedef struct RANparameter_Item { + RANparameter_ID_t ranParameter_ID; + RANparameter_Name_t ranParameter_Name; + RANparameter_Test_t ranParameter_Test; + RANparameter_Value_t ranParameter_Value; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RANparameter_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Item; +extern asn_SEQUENCE_specifics_t asn_SPC_RANparameter_Item_specs_1; +extern asn_TYPE_member_t asn_MBR_RANparameter_Item_1[4]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Name.c b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Name.c new file mode 100644 index 0000000..e37f98d --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Name.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANparameter-Name.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANparameter_Name_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Name = { + "RANparameter-Name", + "RANparameter-Name", + &asn_OP_OCTET_STRING, + asn_DEF_RANparameter_Name_tags_1, + sizeof(asn_DEF_RANparameter_Name_tags_1) + /sizeof(asn_DEF_RANparameter_Name_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Name_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Name_tags_1) + /sizeof(asn_DEF_RANparameter_Name_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Name.h b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Name.h new file mode 100644 index 0000000..81be1af --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Name.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANparameter_Name_H_ +#define _RANparameter_Name_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-Name */ +typedef OCTET_STRING_t RANparameter_Name_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Name; +asn_struct_free_f RANparameter_Name_free; +asn_struct_print_f RANparameter_Name_print; +asn_constr_check_f RANparameter_Name_constraint; +ber_type_decoder_f RANparameter_Name_decode_ber; +der_type_encoder_f RANparameter_Name_encode_der; +xer_type_decoder_f RANparameter_Name_decode_xer; +xer_type_encoder_f RANparameter_Name_encode_xer; +per_type_decoder_f RANparameter_Name_decode_uper; +per_type_encoder_f RANparameter_Name_encode_uper; +per_type_decoder_f RANparameter_Name_decode_aper; +per_type_encoder_f RANparameter_Name_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Name_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Test.c b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Test.c new file mode 100644 index 0000000..94d0d26 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Test.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANparameter-Test.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RANparameter_Test_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 4 } /* (0..4,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RANparameter_Test_value2enum_1[] = { + { 0, 5, "equal" }, + { 1, 11, "greaterthan" }, + { 2, 8, "lessthan" }, + { 3, 8, "contains" }, + { 4, 7, "present" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RANparameter_Test_enum2value_1[] = { + 3, /* contains(3) */ + 0, /* equal(0) */ + 1, /* greaterthan(1) */ + 2, /* lessthan(2) */ + 4 /* present(4) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RANparameter_Test_specs_1 = { + asn_MAP_RANparameter_Test_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RANparameter_Test_enum2value_1, /* N => "tag"; sorted by N */ + 5, /* Number of elements in the maps */ + 6, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RANparameter_Test_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Test = { + "RANparameter-Test", + "RANparameter-Test", + &asn_OP_NativeEnumerated, + asn_DEF_RANparameter_Test_tags_1, + sizeof(asn_DEF_RANparameter_Test_tags_1) + /sizeof(asn_DEF_RANparameter_Test_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Test_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Test_tags_1) + /sizeof(asn_DEF_RANparameter_Test_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RANparameter_Test_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RANparameter_Test_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Test.h b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Test.h new file mode 100644 index 0000000..efbe744 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Test.h @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANparameter_Test_H_ +#define _RANparameter_Test_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RANparameter_Test { + RANparameter_Test_equal = 0, + RANparameter_Test_greaterthan = 1, + RANparameter_Test_lessthan = 2, + RANparameter_Test_contains = 3, + RANparameter_Test_present = 4 + /* + * Enumeration is extensible + */ +} e_RANparameter_Test; + +/* RANparameter-Test */ +typedef long RANparameter_Test_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RANparameter_Test_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Test; +extern const asn_INTEGER_specifics_t asn_SPC_RANparameter_Test_specs_1; +asn_struct_free_f RANparameter_Test_free; +asn_struct_print_f RANparameter_Test_print; +asn_constr_check_f RANparameter_Test_constraint; +ber_type_decoder_f RANparameter_Test_decode_ber; +der_type_encoder_f RANparameter_Test_encode_der; +xer_type_decoder_f RANparameter_Test_decode_xer; +xer_type_encoder_f RANparameter_Test_encode_xer; +per_type_decoder_f RANparameter_Test_decode_uper; +per_type_encoder_f RANparameter_Test_encode_uper; +per_type_decoder_f RANparameter_Test_decode_aper; +per_type_encoder_f RANparameter_Test_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Test_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Value.c b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Value.c new file mode 100644 index 0000000..b2f0e9b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Value.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RANparameter-Value.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RANparameter_Value_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RANparameter_Value = { + "RANparameter-Value", + "RANparameter-Value", + &asn_OP_OCTET_STRING, + asn_DEF_RANparameter_Value_tags_1, + sizeof(asn_DEF_RANparameter_Value_tags_1) + /sizeof(asn_DEF_RANparameter_Value_tags_1[0]), /* 1 */ + asn_DEF_RANparameter_Value_tags_1, /* Same as above */ + sizeof(asn_DEF_RANparameter_Value_tags_1) + /sizeof(asn_DEF_RANparameter_Value_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RANparameter-Value.h b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Value.h new file mode 100644 index 0000000..d5a7d5c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RANparameter-Value.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2SM-HelloWorld-IEs" + * found in "/home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RANparameter_Value_H_ +#define _RANparameter_Value_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RANparameter-Value */ +typedef OCTET_STRING_t RANparameter_Value_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RANparameter_Value; +asn_struct_free_f RANparameter_Value_free; +asn_struct_print_f RANparameter_Value_print; +asn_constr_check_f RANparameter_Value_constraint; +ber_type_decoder_f RANparameter_Value_decode_ber; +der_type_encoder_f RANparameter_Value_encode_der; +xer_type_decoder_f RANparameter_Value_decode_xer; +xer_type_encoder_f RANparameter_Value_encode_xer; +per_type_decoder_f RANparameter_Value_decode_uper; +per_type_encoder_f RANparameter_Value_encode_uper; +per_type_decoder_f RANparameter_Value_decode_aper; +per_type_encoder_f RANparameter_Value_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RANparameter_Value_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-Item.c b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-Item.c new file mode 100644 index 0000000..01034b5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-Item.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICaction-Admitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_Admitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_Admitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ricActionID */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_Item_specs_1 = { + sizeof(struct RICaction_Admitted_Item), + offsetof(struct RICaction_Admitted_Item, _asn_ctx), + asn_MAP_RICaction_Admitted_Item_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item = { + "RICaction-Admitted-Item", + "RICaction-Admitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_Admitted_Item_tags_1, + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_Admitted_Item_1, + 1, /* Elements count */ + &asn_SPC_RICaction_Admitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-Item.h b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-Item.h new file mode 100644 index 0000000..52cada2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-Item.h @@ -0,0 +1,42 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICaction_Admitted_Item_H_ +#define _RICaction_Admitted_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RICactionID.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-Admitted-Item */ +typedef struct RICaction_Admitted_Item { + RICactionID_t ricActionID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-List.c b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-List.c new file mode 100644 index 0000000..acf003f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICaction-Admitted-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RICaction_Admitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_Admitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1415P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_Admitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_Admitted_List_specs_1 = { + sizeof(struct RICaction_Admitted_List), + offsetof(struct RICaction_Admitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List = { + "RICaction-Admitted-List", + "RICaction-Admitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_Admitted_List_tags_1, + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_Admitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_Admitted_List_tags_1) + /sizeof(asn_DEF_RICaction_Admitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_Admitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_Admitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_Admitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-List.h b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-List.h new file mode 100644 index 0000000..063508c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-Admitted-List.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICaction_Admitted_List_H_ +#define _RICaction_Admitted_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICaction-Admitted-List */ +typedef struct RICaction_Admitted_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_Admitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_Admitted_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-Item.c b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-Item.c new file mode 100644 index 0000000..364fcd3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-Item.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICaction-NotAdmitted-Item.h" + +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_NotAdmitted_Item, cause), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_Cause, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "cause" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_NotAdmitted_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cause */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_Item_specs_1 = { + sizeof(struct RICaction_NotAdmitted_Item), + offsetof(struct RICaction_NotAdmitted_Item, _asn_ctx), + asn_MAP_RICaction_NotAdmitted_Item_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item = { + "RICaction-NotAdmitted-Item", + "RICaction-NotAdmitted-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_NotAdmitted_Item_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_NotAdmitted_Item_1, + 2, /* Elements count */ + &asn_SPC_RICaction_NotAdmitted_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-Item.h b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-Item.h new file mode 100644 index 0000000..73826cc --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-Item.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICaction_NotAdmitted_Item_H_ +#define _RICaction_NotAdmitted_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RICactionID.h" +#include "Cause.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICaction-NotAdmitted-Item */ +typedef struct RICaction_NotAdmitted_Item { + RICactionID_t ricActionID; + Cause_t cause; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-List.c b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-List.c new file mode 100644 index 0000000..4fdb387 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICaction-NotAdmitted-List.h" + +#include "ProtocolIE-SingleContainer.h" +static asn_per_constraints_t asn_PER_type_RICaction_NotAdmitted_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 5, 5, 0, 16 } /* (SIZE(0..16)) */, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1415P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICaction_NotAdmitted_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static asn_SET_OF_specifics_t asn_SPC_RICaction_NotAdmitted_List_specs_1 = { + sizeof(struct RICaction_NotAdmitted_List), + offsetof(struct RICaction_NotAdmitted_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List = { + "RICaction-NotAdmitted-List", + "RICaction-NotAdmitted-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICaction_NotAdmitted_List_tags_1, + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + asn_DEF_RICaction_NotAdmitted_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1) + /sizeof(asn_DEF_RICaction_NotAdmitted_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICaction_NotAdmitted_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICaction_NotAdmitted_List_1, + 1, /* Single element */ + &asn_SPC_RICaction_NotAdmitted_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-List.h b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-List.h new file mode 100644 index 0000000..4406da9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-NotAdmitted-List.h @@ -0,0 +1,41 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICaction_NotAdmitted_List_H_ +#define _RICaction_NotAdmitted_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICaction-NotAdmitted-List */ +typedef struct RICaction_NotAdmitted_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_NotAdmitted_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_List; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_NotAdmitted_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-ToBeSetup-Item.c b/setup/xapp-bs-connector/asn1c_defs/RICaction-ToBeSetup-Item.c new file mode 100644 index 0000000..1e8983b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-ToBeSetup-Item.c @@ -0,0 +1,83 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICaction-ToBeSetup-Item.h" + +#include "RICsubsequentAction.h" +static asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_Item_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionID, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICaction_ToBeSetup_Item, ricActionType), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionType" + }, + { ATF_POINTER, 2, offsetof(struct RICaction_ToBeSetup_Item, ricActionDefinition), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactionDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricActionDefinition" + }, + { ATF_POINTER, 1, offsetof(struct RICaction_ToBeSetup_Item, ricSubsequentAction), + (ASN_TAG_CLASS_CONTEXT | (3 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentAction, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentAction" + }, +}; +static const int asn_MAP_RICaction_ToBeSetup_Item_oms_1[] = { 2, 3 }; +static const ber_tlv_tag_t asn_DEF_RICaction_ToBeSetup_Item_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICaction_ToBeSetup_Item_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricActionID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ricActionType */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ricActionDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ricSubsequentAction */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_Item_specs_1 = { + sizeof(struct RICaction_ToBeSetup_Item), + offsetof(struct RICaction_ToBeSetup_Item, _asn_ctx), + asn_MAP_RICaction_ToBeSetup_Item_tag2el_1, + 4, /* Count of tags in the map */ + asn_MAP_RICaction_ToBeSetup_Item_oms_1, /* Optional members */ + 2, 0, /* Root/Additions */ + 4, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item = { + "RICaction-ToBeSetup-Item", + "RICaction-ToBeSetup-Item", + &asn_OP_SEQUENCE, + asn_DEF_RICaction_ToBeSetup_Item_tags_1, + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + asn_DEF_RICaction_ToBeSetup_Item_tags_1, /* Same as above */ + sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1) + /sizeof(asn_DEF_RICaction_ToBeSetup_Item_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICaction_ToBeSetup_Item_1, + 4, /* Elements count */ + &asn_SPC_RICaction_ToBeSetup_Item_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICaction-ToBeSetup-Item.h b/setup/xapp-bs-connector/asn1c_defs/RICaction-ToBeSetup-Item.h new file mode 100644 index 0000000..faf8bbf --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICaction-ToBeSetup-Item.h @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICaction_ToBeSetup_Item_H_ +#define _RICaction_ToBeSetup_Item_H_ + + +#include + +/* Including external dependencies */ +#include "RICactionID.h" +#include "RICactionType.h" +#include "RICactionDefinition.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct RICsubsequentAction; + +/* RICaction-ToBeSetup-Item */ +typedef struct RICaction_ToBeSetup_Item { + RICactionID_t ricActionID; + RICactionType_t ricActionType; + RICactionDefinition_t *ricActionDefinition; /* OPTIONAL */ + struct RICsubsequentAction *ricSubsequentAction; /* OPTIONAL */ + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICaction_ToBeSetup_Item_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_Item; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICaction_ToBeSetup_Item_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactionDefinition.c b/setup/xapp-bs-connector/asn1c_defs/RICactionDefinition.c new file mode 100644 index 0000000..3fcd14e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactionDefinition.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICactionDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICactionDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionDefinition = { + "RICactionDefinition", + "RICactionDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICactionDefinition_tags_1, + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICactionDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionDefinition_tags_1) + /sizeof(asn_DEF_RICactionDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactionDefinition.h b/setup/xapp-bs-connector/asn1c_defs/RICactionDefinition.h new file mode 100644 index 0000000..489c195 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactionDefinition.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICactionDefinition_H_ +#define _RICactionDefinition_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionDefinition */ +typedef OCTET_STRING_t RICactionDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactionDefinition; +asn_struct_free_f RICactionDefinition_free; +asn_struct_print_f RICactionDefinition_print; +asn_constr_check_f RICactionDefinition_constraint; +ber_type_decoder_f RICactionDefinition_decode_ber; +der_type_encoder_f RICactionDefinition_encode_der; +xer_type_decoder_f RICactionDefinition_decode_xer; +xer_type_encoder_f RICactionDefinition_encode_xer; +per_type_decoder_f RICactionDefinition_decode_uper; +per_type_encoder_f RICactionDefinition_encode_uper; +per_type_decoder_f RICactionDefinition_decode_aper; +per_type_encoder_f RICactionDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionDefinition_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactionID.c b/setup/xapp-bs-connector/asn1c_defs/RICactionID.c new file mode 100644 index 0000000..0a94813 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactionID.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICactionID.h" + +int +RICactionID_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionID_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICactionID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionID = { + "RICactionID", + "RICactionID", + &asn_OP_NativeInteger, + asn_DEF_RICactionID_tags_1, + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + asn_DEF_RICactionID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionID_tags_1) + /sizeof(asn_DEF_RICactionID_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionID_constr_1, RICactionID_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactionID.h b/setup/xapp-bs-connector/asn1c_defs/RICactionID.h new file mode 100644 index 0000000..851d5b3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactionID.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICactionID_H_ +#define _RICactionID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICactionID */ +typedef long RICactionID_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionID_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionID; +asn_struct_free_f RICactionID_free; +asn_struct_print_f RICactionID_print; +asn_constr_check_f RICactionID_constraint; +ber_type_decoder_f RICactionID_decode_ber; +der_type_encoder_f RICactionID_encode_der; +xer_type_decoder_f RICactionID_decode_xer; +xer_type_encoder_f RICactionID_encode_xer; +per_type_decoder_f RICactionID_decode_uper; +per_type_encoder_f RICactionID_encode_uper; +per_type_decoder_f RICactionID_decode_aper; +per_type_encoder_f RICactionID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactionType.c b/setup/xapp-bs-connector/asn1c_defs/RICactionType.c new file mode 100644 index 0000000..0469ed8 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactionType.c @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICactionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICactionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICactionType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" }, + { 2, 6, "policy" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICactionType_enum2value_1[] = { + 1, /* insert(1) */ + 2, /* policy(2) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1 = { + asn_MAP_RICactionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICactionType_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICactionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICactionType = { + "RICactionType", + "RICactionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICactionType_tags_1, + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + asn_DEF_RICactionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactionType_tags_1) + /sizeof(asn_DEF_RICactionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICactionType_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactionType.h b/setup/xapp-bs-connector/asn1c_defs/RICactionType.h new file mode 100644 index 0000000..bc4ae24 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactionType.h @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICactionType_H_ +#define _RICactionType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICactionType { + RICactionType_report = 0, + RICactionType_insert = 1, + RICactionType_policy = 2 + /* + * Enumeration is extensible + */ +} e_RICactionType; + +/* RICactionType */ +typedef long RICactionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICactionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICactionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICactionType_specs_1; +asn_struct_free_f RICactionType_free; +asn_struct_print_f RICactionType_print; +asn_constr_check_f RICactionType_constraint; +ber_type_decoder_f RICactionType_decode_ber; +der_type_encoder_f RICactionType_encode_der; +xer_type_decoder_f RICactionType_decode_xer; +xer_type_encoder_f RICactionType_encode_xer; +per_type_decoder_f RICactionType_decode_uper; +per_type_encoder_f RICactionType_encode_uper; +per_type_decoder_f RICactionType_decode_aper; +per_type_encoder_f RICactionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactionType_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactions-ToBeSetup-List.c b/setup/xapp-bs-connector/asn1c_defs/RICactions-ToBeSetup-List.c new file mode 100644 index 0000000..edf0d42 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactions-ToBeSetup-List.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICactions-ToBeSetup-List.h" + +#include "ProtocolIE-SingleContainer.h" +asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_CONSTRAINED, 4, 4, 1, 16 } /* (SIZE(1..16)) */, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[] = { + { ATF_POINTER, 0, 0, + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ProtocolIE_SingleContainer_1415P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICactions_ToBeSetup_List_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1 = { + sizeof(struct RICactions_ToBeSetup_List), + offsetof(struct RICactions_ToBeSetup_List, _asn_ctx), + 0, /* XER encoding is XMLDelimitedItemList */ +}; +asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List = { + "RICactions-ToBeSetup-List", + "RICactions-ToBeSetup-List", + &asn_OP_SEQUENCE_OF, + asn_DEF_RICactions_ToBeSetup_List_tags_1, + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + asn_DEF_RICactions_ToBeSetup_List_tags_1, /* Same as above */ + sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1) + /sizeof(asn_DEF_RICactions_ToBeSetup_List_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICactions_ToBeSetup_List_constr_1, SEQUENCE_OF_constraint }, + asn_MBR_RICactions_ToBeSetup_List_1, + 1, /* Single element */ + &asn_SPC_RICactions_ToBeSetup_List_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICactions-ToBeSetup-List.h b/setup/xapp-bs-connector/asn1c_defs/RICactions-ToBeSetup-List.h new file mode 100644 index 0000000..506bbb8 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICactions-ToBeSetup-List.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICactions_ToBeSetup_List_H_ +#define _RICactions_ToBeSetup_List_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forward declarations */ +struct ProtocolIE_SingleContainer; + +/* RICactions-ToBeSetup-List */ +typedef struct RICactions_ToBeSetup_List { + A_SEQUENCE_OF(struct ProtocolIE_SingleContainer) list; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICactions_ToBeSetup_List_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICactions_ToBeSetup_List; +extern asn_SET_OF_specifics_t asn_SPC_RICactions_ToBeSetup_List_specs_1; +extern asn_TYPE_member_t asn_MBR_RICactions_ToBeSetup_List_1[1]; +extern asn_per_constraints_t asn_PER_type_RICactions_ToBeSetup_List_constr_1; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICactions_ToBeSetup_List_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcallProcessID.c b/setup/xapp-bs-connector/asn1c_defs/RICcallProcessID.c new file mode 100644 index 0000000..26f1de5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcallProcessID.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcallProcessID.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcallProcessID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcallProcessID = { + "RICcallProcessID", + "RICcallProcessID", + &asn_OP_OCTET_STRING, + asn_DEF_RICcallProcessID_tags_1, + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + asn_DEF_RICcallProcessID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcallProcessID_tags_1) + /sizeof(asn_DEF_RICcallProcessID_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcallProcessID.h b/setup/xapp-bs-connector/asn1c_defs/RICcallProcessID.h new file mode 100644 index 0000000..6f72308 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcallProcessID.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcallProcessID_H_ +#define _RICcallProcessID_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcallProcessID */ +typedef OCTET_STRING_t RICcallProcessID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcallProcessID; +asn_struct_free_f RICcallProcessID_free; +asn_struct_print_f RICcallProcessID_print; +asn_constr_check_f RICcallProcessID_constraint; +ber_type_decoder_f RICcallProcessID_decode_ber; +der_type_encoder_f RICcallProcessID_encode_der; +xer_type_decoder_f RICcallProcessID_decode_xer; +xer_type_encoder_f RICcallProcessID_encode_xer; +per_type_decoder_f RICcallProcessID_decode_uper; +per_type_encoder_f RICcallProcessID_encode_uper; +per_type_decoder_f RICcallProcessID_decode_aper; +per_type_encoder_f RICcallProcessID_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcallProcessID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolAckRequest.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAckRequest.c new file mode 100644 index 0000000..e6028d7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAckRequest.c @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolAckRequest.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolAckRequest_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolAckRequest_value2enum_1[] = { + { 0, 5, "noAck" }, + { 1, 3, "ack" }, + { 2, 4, "nAck" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolAckRequest_enum2value_1[] = { + 1, /* ack(1) */ + 2, /* nAck(2) */ + 0 /* noAck(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolAckRequest_specs_1 = { + asn_MAP_RICcontrolAckRequest_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolAckRequest_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAckRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest = { + "RICcontrolAckRequest", + "RICcontrolAckRequest", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolAckRequest_tags_1, + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAckRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAckRequest_tags_1) + /sizeof(asn_DEF_RICcontrolAckRequest_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolAckRequest_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolAckRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolAckRequest.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAckRequest.h new file mode 100644 index 0000000..bdefee2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAckRequest.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolAckRequest_H_ +#define _RICcontrolAckRequest_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolAckRequest { + RICcontrolAckRequest_noAck = 0, + RICcontrolAckRequest_ack = 1, + RICcontrolAckRequest_nAck = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolAckRequest; + +/* RICcontrolAckRequest */ +typedef long RICcontrolAckRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAckRequest; +asn_struct_free_f RICcontrolAckRequest_free; +asn_struct_print_f RICcontrolAckRequest_print; +asn_constr_check_f RICcontrolAckRequest_constraint; +ber_type_decoder_f RICcontrolAckRequest_decode_ber; +der_type_encoder_f RICcontrolAckRequest_encode_der; +xer_type_decoder_f RICcontrolAckRequest_decode_xer; +xer_type_encoder_f RICcontrolAckRequest_encode_xer; +per_type_decoder_f RICcontrolAckRequest_decode_uper; +per_type_encoder_f RICcontrolAckRequest_encode_uper; +per_type_decoder_f RICcontrolAckRequest_decode_aper; +per_type_encoder_f RICcontrolAckRequest_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAckRequest_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolAcknowledge.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAcknowledge.c new file mode 100644 index 0000000..6c14811 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P8, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1 = { + sizeof(struct RICcontrolAcknowledge), + offsetof(struct RICcontrolAcknowledge, _asn_ctx), + asn_MAP_RICcontrolAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge = { + "RICcontrolAcknowledge", + "RICcontrolAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolAcknowledge_tags_1, + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolAcknowledge_tags_1) + /sizeof(asn_DEF_RICcontrolAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolAcknowledge.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAcknowledge.h new file mode 100644 index 0000000..f1d40b7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolAcknowledge_H_ +#define _RICcontrolAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolAcknowledge */ +typedef struct RICcontrolAcknowledge { + ProtocolIE_Container_1412P8_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolAcknowledge_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolFailure.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolFailure.c new file mode 100644 index 0000000..3fcef66 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolFailure.h" + +asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P9, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1 = { + sizeof(struct RICcontrolFailure), + offsetof(struct RICcontrolFailure, _asn_ctx), + asn_MAP_RICcontrolFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure = { + "RICcontrolFailure", + "RICcontrolFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolFailure_tags_1, + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolFailure_tags_1) + /sizeof(asn_DEF_RICcontrolFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolFailure_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolFailure.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolFailure.h new file mode 100644 index 0000000..14b86d4 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolFailure_H_ +#define _RICcontrolFailure_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolFailure */ +typedef struct RICcontrolFailure { + ProtocolIE_Container_1412P9_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolFailure_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolHeader.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolHeader.c new file mode 100644 index 0000000..073f472 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolHeader.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader = { + "RICcontrolHeader", + "RICcontrolHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolHeader_tags_1, + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolHeader_tags_1) + /sizeof(asn_DEF_RICcontrolHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolHeader.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolHeader.h new file mode 100644 index 0000000..24c7187 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolHeader.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolHeader_H_ +#define _RICcontrolHeader_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolHeader */ +typedef OCTET_STRING_t RICcontrolHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolHeader; +asn_struct_free_f RICcontrolHeader_free; +asn_struct_print_f RICcontrolHeader_print; +asn_constr_check_f RICcontrolHeader_constraint; +ber_type_decoder_f RICcontrolHeader_decode_ber; +der_type_encoder_f RICcontrolHeader_encode_der; +xer_type_decoder_f RICcontrolHeader_decode_xer; +xer_type_encoder_f RICcontrolHeader_encode_xer; +per_type_decoder_f RICcontrolHeader_decode_uper; +per_type_encoder_f RICcontrolHeader_encode_uper; +per_type_decoder_f RICcontrolHeader_decode_aper; +per_type_encoder_f RICcontrolHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolHeader_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolMessage.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolMessage.c new file mode 100644 index 0000000..8906e37 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolMessage.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage = { + "RICcontrolMessage", + "RICcontrolMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolMessage_tags_1, + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolMessage_tags_1) + /sizeof(asn_DEF_RICcontrolMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolMessage.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolMessage.h new file mode 100644 index 0000000..dcd5ece --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolMessage.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolMessage_H_ +#define _RICcontrolMessage_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolMessage */ +typedef OCTET_STRING_t RICcontrolMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolMessage; +asn_struct_free_f RICcontrolMessage_free; +asn_struct_print_f RICcontrolMessage_print; +asn_constr_check_f RICcontrolMessage_constraint; +ber_type_decoder_f RICcontrolMessage_decode_ber; +der_type_encoder_f RICcontrolMessage_encode_der; +xer_type_decoder_f RICcontrolMessage_decode_xer; +xer_type_encoder_f RICcontrolMessage_encode_xer; +per_type_decoder_f RICcontrolMessage_decode_uper; +per_type_encoder_f RICcontrolMessage_encode_uper; +per_type_decoder_f RICcontrolMessage_decode_aper; +per_type_encoder_f RICcontrolMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolMessage_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolOutcome.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolOutcome.c new file mode 100644 index 0000000..49e615a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolOutcome.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolOutcome.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICcontrolOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome = { + "RICcontrolOutcome", + "RICcontrolOutcome", + &asn_OP_OCTET_STRING, + asn_DEF_RICcontrolOutcome_tags_1, + sizeof(asn_DEF_RICcontrolOutcome_tags_1) + /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolOutcome_tags_1) + /sizeof(asn_DEF_RICcontrolOutcome_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolOutcome.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolOutcome.h new file mode 100644 index 0000000..f185ee3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolOutcome.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolOutcome_H_ +#define _RICcontrolOutcome_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolOutcome */ +typedef OCTET_STRING_t RICcontrolOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolOutcome; +asn_struct_free_f RICcontrolOutcome_free; +asn_struct_print_f RICcontrolOutcome_print; +asn_constr_check_f RICcontrolOutcome_constraint; +ber_type_decoder_f RICcontrolOutcome_decode_ber; +der_type_encoder_f RICcontrolOutcome_encode_der; +xer_type_decoder_f RICcontrolOutcome_decode_xer; +xer_type_encoder_f RICcontrolOutcome_encode_xer; +per_type_decoder_f RICcontrolOutcome_decode_uper; +per_type_encoder_f RICcontrolOutcome_encode_uper; +per_type_decoder_f RICcontrolOutcome_decode_aper; +per_type_encoder_f RICcontrolOutcome_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolOutcome_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolRequest.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolRequest.c new file mode 100644 index 0000000..e9aa676 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolRequest.h" + +asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICcontrolRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P7, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICcontrolRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1 = { + sizeof(struct RICcontrolRequest), + offsetof(struct RICcontrolRequest, _asn_ctx), + asn_MAP_RICcontrolRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest = { + "RICcontrolRequest", + "RICcontrolRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICcontrolRequest_tags_1, + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolRequest_tags_1) + /sizeof(asn_DEF_RICcontrolRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICcontrolRequest_1, + 1, /* Elements count */ + &asn_SPC_RICcontrolRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolRequest.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolRequest.h new file mode 100644 index 0000000..18a8e9e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolRequest_H_ +#define _RICcontrolRequest_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICcontrolRequest */ +typedef struct RICcontrolRequest { + ProtocolIE_Container_1412P7_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICcontrolRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolRequest_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolStatus.c b/setup/xapp-bs-connector/asn1c_defs/RICcontrolStatus.c new file mode 100644 index 0000000..60c6fbf --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolStatus.c @@ -0,0 +1,57 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICcontrolStatus.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICcontrolStatus_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 2, 2, 0, 2 } /* (0..2,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICcontrolStatus_value2enum_1[] = { + { 0, 7, "success" }, + { 1, 8, "rejected" }, + { 2, 6, "failed" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICcontrolStatus_enum2value_1[] = { + 2, /* failed(2) */ + 1, /* rejected(1) */ + 0 /* success(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICcontrolStatus_specs_1 = { + asn_MAP_RICcontrolStatus_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICcontrolStatus_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 4, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICcontrolStatus_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus = { + "RICcontrolStatus", + "RICcontrolStatus", + &asn_OP_NativeEnumerated, + asn_DEF_RICcontrolStatus_tags_1, + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + asn_DEF_RICcontrolStatus_tags_1, /* Same as above */ + sizeof(asn_DEF_RICcontrolStatus_tags_1) + /sizeof(asn_DEF_RICcontrolStatus_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICcontrolStatus_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICcontrolStatus_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICcontrolStatus.h b/setup/xapp-bs-connector/asn1c_defs/RICcontrolStatus.h new file mode 100644 index 0000000..8e09491 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICcontrolStatus.h @@ -0,0 +1,53 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICcontrolStatus_H_ +#define _RICcontrolStatus_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICcontrolStatus { + RICcontrolStatus_success = 0, + RICcontrolStatus_rejected = 1, + RICcontrolStatus_failed = 2 + /* + * Enumeration is extensible + */ +} e_RICcontrolStatus; + +/* RICcontrolStatus */ +typedef long RICcontrolStatus_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICcontrolStatus; +asn_struct_free_f RICcontrolStatus_free; +asn_struct_print_f RICcontrolStatus_print; +asn_constr_check_f RICcontrolStatus_constraint; +ber_type_decoder_f RICcontrolStatus_decode_ber; +der_type_encoder_f RICcontrolStatus_encode_der; +xer_type_decoder_f RICcontrolStatus_decode_xer; +xer_type_encoder_f RICcontrolStatus_encode_xer; +per_type_decoder_f RICcontrolStatus_decode_uper; +per_type_encoder_f RICcontrolStatus_encode_uper; +per_type_decoder_f RICcontrolStatus_decode_aper; +per_type_encoder_f RICcontrolStatus_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICcontrolStatus_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICeventTriggerDefinition.c b/setup/xapp-bs-connector/asn1c_defs/RICeventTriggerDefinition.c new file mode 100644 index 0000000..2aeaeab --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICeventTriggerDefinition.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICeventTriggerDefinition.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICeventTriggerDefinition_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition = { + "RICeventTriggerDefinition", + "RICeventTriggerDefinition", + &asn_OP_OCTET_STRING, + asn_DEF_RICeventTriggerDefinition_tags_1, + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + asn_DEF_RICeventTriggerDefinition_tags_1, /* Same as above */ + sizeof(asn_DEF_RICeventTriggerDefinition_tags_1) + /sizeof(asn_DEF_RICeventTriggerDefinition_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICeventTriggerDefinition.h b/setup/xapp-bs-connector/asn1c_defs/RICeventTriggerDefinition.h new file mode 100644 index 0000000..963c158 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICeventTriggerDefinition.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICeventTriggerDefinition_H_ +#define _RICeventTriggerDefinition_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICeventTriggerDefinition */ +typedef OCTET_STRING_t RICeventTriggerDefinition_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICeventTriggerDefinition; +asn_struct_free_f RICeventTriggerDefinition_free; +asn_struct_print_f RICeventTriggerDefinition_print; +asn_constr_check_f RICeventTriggerDefinition_constraint; +ber_type_decoder_f RICeventTriggerDefinition_decode_ber; +der_type_encoder_f RICeventTriggerDefinition_encode_der; +xer_type_decoder_f RICeventTriggerDefinition_decode_xer; +xer_type_encoder_f RICeventTriggerDefinition_encode_xer; +per_type_decoder_f RICeventTriggerDefinition_decode_uper; +per_type_encoder_f RICeventTriggerDefinition_encode_uper; +per_type_decoder_f RICeventTriggerDefinition_decode_aper; +per_type_encoder_f RICeventTriggerDefinition_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICeventTriggerDefinition_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindication.c b/setup/xapp-bs-connector/asn1c_defs/RICindication.c new file mode 100644 index 0000000..52c6f62 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindication.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICindication.h" + +asn_TYPE_member_t asn_MBR_RICindication_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICindication, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P6, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICindication_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICindication_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1 = { + sizeof(struct RICindication), + offsetof(struct RICindication, _asn_ctx), + asn_MAP_RICindication_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICindication = { + "RICindication", + "RICindication", + &asn_OP_SEQUENCE, + asn_DEF_RICindication_tags_1, + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + asn_DEF_RICindication_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindication_tags_1) + /sizeof(asn_DEF_RICindication_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICindication_1, + 1, /* Elements count */ + &asn_SPC_RICindication_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindication.h b/setup/xapp-bs-connector/asn1c_defs/RICindication.h new file mode 100644 index 0000000..3cab9e2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindication.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICindication_H_ +#define _RICindication_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindication */ +typedef struct RICindication { + ProtocolIE_Container_1412P6_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICindication_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindication; +extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_specs_1; +extern asn_TYPE_member_t asn_MBR_RICindication_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindication_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationHeader.c b/setup/xapp-bs-connector/asn1c_defs/RICindicationHeader.c new file mode 100644 index 0000000..77aa08e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationHeader.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICindicationHeader.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationHeader_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationHeader = { + "RICindicationHeader", + "RICindicationHeader", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationHeader_tags_1, + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + asn_DEF_RICindicationHeader_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationHeader_tags_1) + /sizeof(asn_DEF_RICindicationHeader_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationHeader.h b/setup/xapp-bs-connector/asn1c_defs/RICindicationHeader.h new file mode 100644 index 0000000..2ec1a1e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationHeader.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICindicationHeader_H_ +#define _RICindicationHeader_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationHeader */ +typedef OCTET_STRING_t RICindicationHeader_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationHeader; +asn_struct_free_f RICindicationHeader_free; +asn_struct_print_f RICindicationHeader_print; +asn_constr_check_f RICindicationHeader_constraint; +ber_type_decoder_f RICindicationHeader_decode_ber; +der_type_encoder_f RICindicationHeader_encode_der; +xer_type_decoder_f RICindicationHeader_decode_xer; +xer_type_encoder_f RICindicationHeader_encode_xer; +per_type_decoder_f RICindicationHeader_decode_uper; +per_type_encoder_f RICindicationHeader_encode_uper; +per_type_decoder_f RICindicationHeader_decode_aper; +per_type_encoder_f RICindicationHeader_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationHeader_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationMessage.c b/setup/xapp-bs-connector/asn1c_defs/RICindicationMessage.c new file mode 100644 index 0000000..18db177 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationMessage.c @@ -0,0 +1,31 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICindicationMessage.h" + +/* + * This type is implemented using OCTET_STRING, + * so here we adjust the DEF accordingly. + */ +static const ber_tlv_tag_t asn_DEF_RICindicationMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationMessage = { + "RICindicationMessage", + "RICindicationMessage", + &asn_OP_OCTET_STRING, + asn_DEF_RICindicationMessage_tags_1, + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + asn_DEF_RICindicationMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationMessage_tags_1) + /sizeof(asn_DEF_RICindicationMessage_tags_1[0]), /* 1 */ + { 0, 0, OCTET_STRING_constraint }, + 0, 0, /* No members */ + &asn_SPC_OCTET_STRING_specs /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationMessage.h b/setup/xapp-bs-connector/asn1c_defs/RICindicationMessage.h new file mode 100644 index 0000000..2b198ca --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationMessage.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICindicationMessage_H_ +#define _RICindicationMessage_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationMessage */ +typedef OCTET_STRING_t RICindicationMessage_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationMessage; +asn_struct_free_f RICindicationMessage_free; +asn_struct_print_f RICindicationMessage_print; +asn_constr_check_f RICindicationMessage_constraint; +ber_type_decoder_f RICindicationMessage_decode_ber; +der_type_encoder_f RICindicationMessage_encode_der; +xer_type_decoder_f RICindicationMessage_decode_xer; +xer_type_encoder_f RICindicationMessage_encode_xer; +per_type_decoder_f RICindicationMessage_decode_uper; +per_type_encoder_f RICindicationMessage_encode_uper; +per_type_decoder_f RICindicationMessage_decode_aper; +per_type_encoder_f RICindicationMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationMessage_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationSN.c b/setup/xapp-bs-connector/asn1c_defs/RICindicationSN.c new file mode 100644 index 0000000..e458b29 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationSN.c @@ -0,0 +1,61 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICindicationSN.h" + +int +RICindicationSN_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +/* + * This type is implemented using NativeInteger, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationSN_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const ber_tlv_tag_t asn_DEF_RICindicationSN_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationSN = { + "RICindicationSN", + "RICindicationSN", + &asn_OP_NativeInteger, + asn_DEF_RICindicationSN_tags_1, + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + asn_DEF_RICindicationSN_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationSN_tags_1) + /sizeof(asn_DEF_RICindicationSN_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationSN_constr_1, RICindicationSN_constraint }, + 0, 0, /* No members */ + 0 /* No specifics */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationSN.h b/setup/xapp-bs-connector/asn1c_defs/RICindicationSN.h new file mode 100644 index 0000000..898a1c5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationSN.h @@ -0,0 +1,43 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICindicationSN_H_ +#define _RICindicationSN_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICindicationSN */ +typedef long RICindicationSN_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationSN; +asn_struct_free_f RICindicationSN_free; +asn_struct_print_f RICindicationSN_print; +asn_constr_check_f RICindicationSN_constraint; +ber_type_decoder_f RICindicationSN_decode_ber; +der_type_encoder_f RICindicationSN_encode_der; +xer_type_decoder_f RICindicationSN_decode_xer; +xer_type_encoder_f RICindicationSN_encode_xer; +per_type_decoder_f RICindicationSN_decode_uper; +per_type_encoder_f RICindicationSN_encode_uper; +per_type_decoder_f RICindicationSN_decode_aper; +per_type_encoder_f RICindicationSN_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationSN_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationType.c b/setup/xapp-bs-connector/asn1c_defs/RICindicationType.c new file mode 100644 index 0000000..2fb4a3d --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationType.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICindicationType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_RICindicationType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICindicationType_value2enum_1[] = { + { 0, 6, "report" }, + { 1, 6, "insert" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICindicationType_enum2value_1[] = { + 1, /* insert(1) */ + 0 /* report(0) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_RICindicationType_specs_1 = { + asn_MAP_RICindicationType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICindicationType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICindicationType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICindicationType = { + "RICindicationType", + "RICindicationType", + &asn_OP_NativeEnumerated, + asn_DEF_RICindicationType_tags_1, + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + asn_DEF_RICindicationType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICindicationType_tags_1) + /sizeof(asn_DEF_RICindicationType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICindicationType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICindicationType_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICindicationType.h b/setup/xapp-bs-connector/asn1c_defs/RICindicationType.h new file mode 100644 index 0000000..d665337 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICindicationType.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICindicationType_H_ +#define _RICindicationType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICindicationType { + RICindicationType_report = 0, + RICindicationType_insert = 1 + /* + * Enumeration is extensible + */ +} e_RICindicationType; + +/* RICindicationType */ +typedef long RICindicationType_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICindicationType; +asn_struct_free_f RICindicationType_free; +asn_struct_print_f RICindicationType_print; +asn_constr_check_f RICindicationType_constraint; +ber_type_decoder_f RICindicationType_decode_ber; +der_type_encoder_f RICindicationType_encode_der; +xer_type_decoder_f RICindicationType_decode_xer; +xer_type_encoder_f RICindicationType_encode_xer; +per_type_decoder_f RICindicationType_decode_uper; +per_type_encoder_f RICindicationType_encode_uper; +per_type_decoder_f RICindicationType_decode_aper; +per_type_encoder_f RICindicationType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICindicationType_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICrequestID.c b/setup/xapp-bs-connector/asn1c_defs/RICrequestID.c new file mode 100644 index 0000000..cc350e3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICrequestID.c @@ -0,0 +1,120 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICrequestID.h" + +static int +memb_ricRequestorID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static int +memb_ricInstanceID_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 65535)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_per_constraints_t asn_PER_memb_ricRequestorID_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_ricInstanceID_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 16, 16, 0, 65535 } /* (0..65535) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +asn_TYPE_member_t asn_MBR_RICrequestID_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricRequestorID), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricRequestorID_constr_2, memb_ricRequestorID_constraint_1 }, + 0, 0, /* No default value */ + "ricRequestorID" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICrequestID, ricInstanceID), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_NativeInteger, + 0, + { 0, &asn_PER_memb_ricInstanceID_constr_3, memb_ricInstanceID_constraint_1 }, + 0, 0, /* No default value */ + "ricInstanceID" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICrequestID_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICrequestID_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricRequestorID */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricInstanceID */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1 = { + sizeof(struct RICrequestID), + offsetof(struct RICrequestID, _asn_ctx), + asn_MAP_RICrequestID_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICrequestID = { + "RICrequestID", + "RICrequestID", + &asn_OP_SEQUENCE, + asn_DEF_RICrequestID_tags_1, + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + asn_DEF_RICrequestID_tags_1, /* Same as above */ + sizeof(asn_DEF_RICrequestID_tags_1) + /sizeof(asn_DEF_RICrequestID_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICrequestID_1, + 2, /* Elements count */ + &asn_SPC_RICrequestID_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICrequestID.h b/setup/xapp-bs-connector/asn1c_defs/RICrequestID.h new file mode 100644 index 0000000..4b3ab0a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICrequestID.h @@ -0,0 +1,45 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICrequestID_H_ +#define _RICrequestID_H_ + + +#include + +/* Including external dependencies */ +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICrequestID */ +typedef struct RICrequestID { + long ricRequestorID; + long ricInstanceID; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICrequestID_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICrequestID; +extern asn_SEQUENCE_specifics_t asn_SPC_RICrequestID_specs_1; +extern asn_TYPE_member_t asn_MBR_RICrequestID_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICrequestID_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceQuery.c b/setup/xapp-bs-connector/asn1c_defs/RICserviceQuery.c new file mode 100644 index 0000000..73f7fcc --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceQuery.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICserviceQuery.h" + +asn_TYPE_member_t asn_MBR_RICserviceQuery_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceQuery, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P19, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceQuery_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceQuery_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1 = { + sizeof(struct RICserviceQuery), + offsetof(struct RICserviceQuery, _asn_ctx), + asn_MAP_RICserviceQuery_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceQuery = { + "RICserviceQuery", + "RICserviceQuery", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceQuery_tags_1, + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + asn_DEF_RICserviceQuery_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceQuery_tags_1) + /sizeof(asn_DEF_RICserviceQuery_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceQuery_1, + 1, /* Elements count */ + &asn_SPC_RICserviceQuery_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceQuery.h b/setup/xapp-bs-connector/asn1c_defs/RICserviceQuery.h new file mode 100644 index 0000000..77c63e2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceQuery.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICserviceQuery_H_ +#define _RICserviceQuery_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceQuery */ +typedef struct RICserviceQuery { + ProtocolIE_Container_1412P19_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceQuery_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceQuery_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceQuery_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdate.c b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdate.c new file mode 100644 index 0000000..1a93f22 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdate.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICserviceUpdate.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdate, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P16, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdate_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdate_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1 = { + sizeof(struct RICserviceUpdate), + offsetof(struct RICserviceUpdate, _asn_ctx), + asn_MAP_RICserviceUpdate_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate = { + "RICserviceUpdate", + "RICserviceUpdate", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdate_tags_1, + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdate_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdate_tags_1) + /sizeof(asn_DEF_RICserviceUpdate_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdate_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdate_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdate.h b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdate.h new file mode 100644 index 0000000..613f8fd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdate.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICserviceUpdate_H_ +#define _RICserviceUpdate_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdate */ +typedef struct RICserviceUpdate { + ProtocolIE_Container_1412P16_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdate_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdate_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateAcknowledge.c b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateAcknowledge.c new file mode 100644 index 0000000..7792227 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateAcknowledge.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICserviceUpdateAcknowledge.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateAcknowledge, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P17, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateAcknowledge_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateAcknowledge_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1 = { + sizeof(struct RICserviceUpdateAcknowledge), + offsetof(struct RICserviceUpdateAcknowledge, _asn_ctx), + asn_MAP_RICserviceUpdateAcknowledge_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge = { + "RICserviceUpdateAcknowledge", + "RICserviceUpdateAcknowledge", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateAcknowledge_tags_1, + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateAcknowledge_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1) + /sizeof(asn_DEF_RICserviceUpdateAcknowledge_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateAcknowledge_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateAcknowledge_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateAcknowledge.h b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateAcknowledge.h new file mode 100644 index 0000000..0dc17cc --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateAcknowledge.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICserviceUpdateAcknowledge_H_ +#define _RICserviceUpdateAcknowledge_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateAcknowledge */ +typedef struct RICserviceUpdateAcknowledge { + ProtocolIE_Container_1412P17_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateAcknowledge_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateAcknowledge_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateFailure.c b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateFailure.c new file mode 100644 index 0000000..f3d1b01 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICserviceUpdateFailure.h" + +asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICserviceUpdateFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P18, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICserviceUpdateFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICserviceUpdateFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1 = { + sizeof(struct RICserviceUpdateFailure), + offsetof(struct RICserviceUpdateFailure, _asn_ctx), + asn_MAP_RICserviceUpdateFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure = { + "RICserviceUpdateFailure", + "RICserviceUpdateFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICserviceUpdateFailure_tags_1, + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + asn_DEF_RICserviceUpdateFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICserviceUpdateFailure_tags_1) + /sizeof(asn_DEF_RICserviceUpdateFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICserviceUpdateFailure_1, + 1, /* Elements count */ + &asn_SPC_RICserviceUpdateFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateFailure.h b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateFailure.h new file mode 100644 index 0000000..78fe31f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICserviceUpdateFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICserviceUpdateFailure_H_ +#define _RICserviceUpdateFailure_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICserviceUpdateFailure */ +typedef struct RICserviceUpdateFailure { + ProtocolIE_Container_1412P18_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICserviceUpdateFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICserviceUpdateFailure_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteFailure.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteFailure.c new file mode 100644 index 0000000..f4344d9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionDeleteFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P5, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1 = { + sizeof(struct RICsubscriptionDeleteFailure), + offsetof(struct RICsubscriptionDeleteFailure, _asn_ctx), + asn_MAP_RICsubscriptionDeleteFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure = { + "RICsubscriptionDeleteFailure", + "RICsubscriptionDeleteFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteFailure.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteFailure.h new file mode 100644 index 0000000..094e91e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionDeleteFailure_H_ +#define _RICsubscriptionDeleteFailure_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteFailure */ +typedef struct RICsubscriptionDeleteFailure { + ProtocolIE_Container_1412P5_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteFailure_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteRequest.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteRequest.c new file mode 100644 index 0000000..170a7b5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionDeleteRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P3, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1 = { + sizeof(struct RICsubscriptionDeleteRequest), + offsetof(struct RICsubscriptionDeleteRequest, _asn_ctx), + asn_MAP_RICsubscriptionDeleteRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest = { + "RICsubscriptionDeleteRequest", + "RICsubscriptionDeleteRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteRequest.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteRequest.h new file mode 100644 index 0000000..bf69065 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionDeleteRequest_H_ +#define _RICsubscriptionDeleteRequest_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteRequest */ +typedef struct RICsubscriptionDeleteRequest { + ProtocolIE_Container_1412P3_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteRequest_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteResponse.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteResponse.c new file mode 100644 index 0000000..bb9b5b3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionDeleteResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDeleteResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P4, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDeleteResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDeleteResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1 = { + sizeof(struct RICsubscriptionDeleteResponse), + offsetof(struct RICsubscriptionDeleteResponse, _asn_ctx), + asn_MAP_RICsubscriptionDeleteResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse = { + "RICsubscriptionDeleteResponse", + "RICsubscriptionDeleteResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDeleteResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDeleteResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionDeleteResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDeleteResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionDeleteResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteResponse.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteResponse.h new file mode 100644 index 0000000..9c5020c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDeleteResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionDeleteResponse_H_ +#define _RICsubscriptionDeleteResponse_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDeleteResponse */ +typedef struct RICsubscriptionDeleteResponse { + ProtocolIE_Container_1412P4_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDeleteResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDeleteResponse_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDetails.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDetails.c new file mode 100644 index 0000000..6d9cd43 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDetails.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionDetails.h" + +static asn_TYPE_member_t asn_MBR_RICsubscriptionDetails_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricEventTriggerDefinition), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICeventTriggerDefinition, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricEventTriggerDefinition" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionDetails, ricAction_ToBeSetup_List), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICactions_ToBeSetup_List, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricAction-ToBeSetup-List" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionDetails_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionDetails_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricEventTriggerDefinition */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricAction-ToBeSetup-List */ +}; +static asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDetails_specs_1 = { + sizeof(struct RICsubscriptionDetails), + offsetof(struct RICsubscriptionDetails, _asn_ctx), + asn_MAP_RICsubscriptionDetails_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails = { + "RICsubscriptionDetails", + "RICsubscriptionDetails", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionDetails_tags_1, + sizeof(asn_DEF_RICsubscriptionDetails_tags_1) + /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionDetails_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionDetails_tags_1) + /sizeof(asn_DEF_RICsubscriptionDetails_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionDetails_1, + 2, /* Elements count */ + &asn_SPC_RICsubscriptionDetails_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDetails.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDetails.h new file mode 100644 index 0000000..7b7d497 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionDetails.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionDetails_H_ +#define _RICsubscriptionDetails_H_ + + +#include + +/* Including external dependencies */ +#include "RICeventTriggerDefinition.h" +#include "RICactions-ToBeSetup-List.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionDetails */ +typedef struct RICsubscriptionDetails { + RICeventTriggerDefinition_t ricEventTriggerDefinition; + RICactions_ToBeSetup_List_t ricAction_ToBeSetup_List; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionDetails_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDetails; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionDetails_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionFailure.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionFailure.c new file mode 100644 index 0000000..cbcccfe --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionFailure.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionFailure.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionFailure, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P2, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionFailure_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionFailure_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1 = { + sizeof(struct RICsubscriptionFailure), + offsetof(struct RICsubscriptionFailure, _asn_ctx), + asn_MAP_RICsubscriptionFailure_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure = { + "RICsubscriptionFailure", + "RICsubscriptionFailure", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionFailure_tags_1, + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionFailure_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionFailure_tags_1) + /sizeof(asn_DEF_RICsubscriptionFailure_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionFailure_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionFailure_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionFailure.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionFailure.h new file mode 100644 index 0000000..5d56ea2 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionFailure.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionFailure_H_ +#define _RICsubscriptionFailure_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionFailure */ +typedef struct RICsubscriptionFailure { + ProtocolIE_Container_1412P2_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionFailure_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionFailure_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionRequest.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionRequest.c new file mode 100644 index 0000000..cecb478 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionRequest.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P0, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1 = { + sizeof(struct RICsubscriptionRequest), + offsetof(struct RICsubscriptionRequest, _asn_ctx), + asn_MAP_RICsubscriptionRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest = { + "RICsubscriptionRequest", + "RICsubscriptionRequest", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionRequest_tags_1, + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionRequest_tags_1) + /sizeof(asn_DEF_RICsubscriptionRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionRequest_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionRequest.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionRequest.h new file mode 100644 index 0000000..a320a3f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionRequest_H_ +#define _RICsubscriptionRequest_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionRequest */ +typedef struct RICsubscriptionRequest { + ProtocolIE_Container_1412P0_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionRequest_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionResponse.c b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionResponse.c new file mode 100644 index 0000000..fc2bceb --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubscriptionResponse.h" + +asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubscriptionResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P1, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubscriptionResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubscriptionResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1 = { + sizeof(struct RICsubscriptionResponse), + offsetof(struct RICsubscriptionResponse, _asn_ctx), + asn_MAP_RICsubscriptionResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse = { + "RICsubscriptionResponse", + "RICsubscriptionResponse", + &asn_OP_SEQUENCE, + asn_DEF_RICsubscriptionResponse_tags_1, + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + asn_DEF_RICsubscriptionResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubscriptionResponse_tags_1) + /sizeof(asn_DEF_RICsubscriptionResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubscriptionResponse_1, + 1, /* Elements count */ + &asn_SPC_RICsubscriptionResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionResponse.h b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionResponse.h new file mode 100644 index 0000000..9f6279b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubscriptionResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubscriptionResponse_H_ +#define _RICsubscriptionResponse_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubscriptionResponse */ +typedef struct RICsubscriptionResponse { + ProtocolIE_Container_1412P1_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubscriptionResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubscriptionResponse_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubsequentAction.c b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentAction.c new file mode 100644 index 0000000..2ce9f49 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentAction.c @@ -0,0 +1,60 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubsequentAction.h" + +asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricSubsequentActionType), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICsubsequentActionType, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricSubsequentActionType" + }, + { ATF_NOFLAGS, 0, offsetof(struct RICsubsequentAction, ricTimeToWait), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_RICtimeToWait, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ricTimeToWait" + }, +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentAction_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_RICsubsequentAction_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ricSubsequentActionType */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ricTimeToWait */ +}; +asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1 = { + sizeof(struct RICsubsequentAction), + offsetof(struct RICsubsequentAction, _asn_ctx), + asn_MAP_RICsubsequentAction_tag2el_1, + 2, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 2, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction = { + "RICsubsequentAction", + "RICsubsequentAction", + &asn_OP_SEQUENCE, + asn_DEF_RICsubsequentAction_tags_1, + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentAction_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentAction_tags_1) + /sizeof(asn_DEF_RICsubsequentAction_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_RICsubsequentAction_1, + 2, /* Elements count */ + &asn_SPC_RICsubsequentAction_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubsequentAction.h b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentAction.h new file mode 100644 index 0000000..1c1e484 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentAction.h @@ -0,0 +1,46 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubsequentAction_H_ +#define _RICsubsequentAction_H_ + + +#include + +/* Including external dependencies */ +#include "RICsubsequentActionType.h" +#include "RICtimeToWait.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* RICsubsequentAction */ +typedef struct RICsubsequentAction { + RICsubsequentActionType_t ricSubsequentActionType; + RICtimeToWait_t ricTimeToWait; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} RICsubsequentAction_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentAction; +extern asn_SEQUENCE_specifics_t asn_SPC_RICsubsequentAction_specs_1; +extern asn_TYPE_member_t asn_MBR_RICsubsequentAction_1[2]; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentAction_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubsequentActionType.c b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentActionType.c new file mode 100644 index 0000000..63f47b3 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentActionType.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICsubsequentActionType.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICsubsequentActionType_value2enum_1[] = { + { 0, 8, "continue" }, + { 1, 4, "wait" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICsubsequentActionType_enum2value_1[] = { + 0, /* continue(0) */ + 1 /* wait(1) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1 = { + asn_MAP_RICsubsequentActionType_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICsubsequentActionType_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICsubsequentActionType_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType = { + "RICsubsequentActionType", + "RICsubsequentActionType", + &asn_OP_NativeEnumerated, + asn_DEF_RICsubsequentActionType_tags_1, + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + asn_DEF_RICsubsequentActionType_tags_1, /* Same as above */ + sizeof(asn_DEF_RICsubsequentActionType_tags_1) + /sizeof(asn_DEF_RICsubsequentActionType_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICsubsequentActionType_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICsubsequentActionType_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICsubsequentActionType.h b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentActionType.h new file mode 100644 index 0000000..716dc6c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICsubsequentActionType.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICsubsequentActionType_H_ +#define _RICsubsequentActionType_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICsubsequentActionType { + RICsubsequentActionType_continue = 0, + RICsubsequentActionType_wait = 1 + /* + * Enumeration is extensible + */ +} e_RICsubsequentActionType; + +/* RICsubsequentActionType */ +typedef long RICsubsequentActionType_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICsubsequentActionType_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICsubsequentActionType; +extern const asn_INTEGER_specifics_t asn_SPC_RICsubsequentActionType_specs_1; +asn_struct_free_f RICsubsequentActionType_free; +asn_struct_print_f RICsubsequentActionType_print; +asn_constr_check_f RICsubsequentActionType_constraint; +ber_type_decoder_f RICsubsequentActionType_decode_ber; +der_type_encoder_f RICsubsequentActionType_encode_der; +xer_type_decoder_f RICsubsequentActionType_decode_xer; +xer_type_encoder_f RICsubsequentActionType_encode_xer; +per_type_decoder_f RICsubsequentActionType_decode_uper; +per_type_encoder_f RICsubsequentActionType_encode_uper; +per_type_decoder_f RICsubsequentActionType_decode_aper; +per_type_encoder_f RICsubsequentActionType_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICsubsequentActionType_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/RICtimeToWait.c b/setup/xapp-bs-connector/asn1c_defs/RICtimeToWait.c new file mode 100644 index 0000000..2df21d7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICtimeToWait.c @@ -0,0 +1,87 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "RICtimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 5, 5, 0, 17 } /* (0..17,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_RICtimeToWait_value2enum_1[] = { + { 0, 4, "zero" }, + { 1, 4, "w1ms" }, + { 2, 4, "w2ms" }, + { 3, 4, "w5ms" }, + { 4, 5, "w10ms" }, + { 5, 5, "w20ms" }, + { 6, 5, "w30ms" }, + { 7, 5, "w40ms" }, + { 8, 5, "w50ms" }, + { 9, 6, "w100ms" }, + { 10, 6, "w200ms" }, + { 11, 6, "w500ms" }, + { 12, 3, "w1s" }, + { 13, 3, "w2s" }, + { 14, 3, "w5s" }, + { 15, 4, "w10s" }, + { 16, 4, "w20s" }, + { 17, 4, "w60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_RICtimeToWait_enum2value_1[] = { + 9, /* w100ms(9) */ + 4, /* w10ms(4) */ + 15, /* w10s(15) */ + 1, /* w1ms(1) */ + 12, /* w1s(12) */ + 10, /* w200ms(10) */ + 5, /* w20ms(5) */ + 16, /* w20s(16) */ + 2, /* w2ms(2) */ + 13, /* w2s(13) */ + 6, /* w30ms(6) */ + 7, /* w40ms(7) */ + 11, /* w500ms(11) */ + 8, /* w50ms(8) */ + 3, /* w5ms(3) */ + 14, /* w5s(14) */ + 17, /* w60s(17) */ + 0 /* zero(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1 = { + asn_MAP_RICtimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_RICtimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 18, /* Number of elements in the maps */ + 19, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_RICtimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_RICtimeToWait = { + "RICtimeToWait", + "RICtimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_RICtimeToWait_tags_1, + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + asn_DEF_RICtimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_RICtimeToWait_tags_1) + /sizeof(asn_DEF_RICtimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_RICtimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_RICtimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/RICtimeToWait.h b/setup/xapp-bs-connector/asn1c_defs/RICtimeToWait.h new file mode 100644 index 0000000..3f6626c --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/RICtimeToWait.h @@ -0,0 +1,70 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _RICtimeToWait_H_ +#define _RICtimeToWait_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum RICtimeToWait { + RICtimeToWait_zero = 0, + RICtimeToWait_w1ms = 1, + RICtimeToWait_w2ms = 2, + RICtimeToWait_w5ms = 3, + RICtimeToWait_w10ms = 4, + RICtimeToWait_w20ms = 5, + RICtimeToWait_w30ms = 6, + RICtimeToWait_w40ms = 7, + RICtimeToWait_w50ms = 8, + RICtimeToWait_w100ms = 9, + RICtimeToWait_w200ms = 10, + RICtimeToWait_w500ms = 11, + RICtimeToWait_w1s = 12, + RICtimeToWait_w2s = 13, + RICtimeToWait_w5s = 14, + RICtimeToWait_w10s = 15, + RICtimeToWait_w20s = 16, + RICtimeToWait_w60s = 17 + /* + * Enumeration is extensible + */ +} e_RICtimeToWait; + +/* RICtimeToWait */ +typedef long RICtimeToWait_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_RICtimeToWait_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_RICtimeToWait; +extern const asn_INTEGER_specifics_t asn_SPC_RICtimeToWait_specs_1; +asn_struct_free_f RICtimeToWait_free; +asn_struct_print_f RICtimeToWait_print; +asn_constr_check_f RICtimeToWait_constraint; +ber_type_decoder_f RICtimeToWait_decode_ber; +der_type_encoder_f RICtimeToWait_encode_der; +xer_type_decoder_f RICtimeToWait_decode_xer; +xer_type_encoder_f RICtimeToWait_encode_xer; +per_type_decoder_f RICtimeToWait_decode_uper; +per_type_encoder_f RICtimeToWait_encode_uper; +per_type_decoder_f RICtimeToWait_decode_aper; +per_type_encoder_f RICtimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _RICtimeToWait_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ResetRequest.c b/setup/xapp-bs-connector/asn1c_defs/ResetRequest.c new file mode 100644 index 0000000..e70f0a9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ResetRequest.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ResetRequest.h" + +asn_TYPE_member_t asn_MBR_ResetRequest_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetRequest, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P14, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetRequest_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetRequest_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1 = { + sizeof(struct ResetRequest), + offsetof(struct ResetRequest, _asn_ctx), + asn_MAP_ResetRequest_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetRequest = { + "ResetRequest", + "ResetRequest", + &asn_OP_SEQUENCE, + asn_DEF_ResetRequest_tags_1, + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + asn_DEF_ResetRequest_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetRequest_tags_1) + /sizeof(asn_DEF_ResetRequest_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetRequest_1, + 1, /* Elements count */ + &asn_SPC_ResetRequest_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ResetRequest.h b/setup/xapp-bs-connector/asn1c_defs/ResetRequest.h new file mode 100644 index 0000000..f1bf2ae --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ResetRequest.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ResetRequest_H_ +#define _ResetRequest_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetRequest */ +typedef struct ResetRequest { + ProtocolIE_Container_1412P14_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetRequest_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetRequest; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetRequest_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetRequest_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/ResetResponse.c b/setup/xapp-bs-connector/asn1c_defs/ResetResponse.c new file mode 100644 index 0000000..92fc800 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ResetResponse.c @@ -0,0 +1,50 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "ResetResponse.h" + +asn_TYPE_member_t asn_MBR_ResetResponse_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct ResetResponse, protocolIEs), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProtocolIE_Container_1412P15, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "protocolIEs" + }, +}; +static const ber_tlv_tag_t asn_DEF_ResetResponse_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_ResetResponse_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* protocolIEs */ +}; +asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1 = { + sizeof(struct ResetResponse), + offsetof(struct ResetResponse, _asn_ctx), + asn_MAP_ResetResponse_tag2el_1, + 1, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + 1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_ResetResponse = { + "ResetResponse", + "ResetResponse", + &asn_OP_SEQUENCE, + asn_DEF_ResetResponse_tags_1, + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + asn_DEF_ResetResponse_tags_1, /* Same as above */ + sizeof(asn_DEF_ResetResponse_tags_1) + /sizeof(asn_DEF_ResetResponse_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_ResetResponse_1, + 1, /* Elements count */ + &asn_SPC_ResetResponse_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/ResetResponse.h b/setup/xapp-bs-connector/asn1c_defs/ResetResponse.h new file mode 100644 index 0000000..c6e10ea --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ResetResponse.h @@ -0,0 +1,44 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Contents" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _ResetResponse_H_ +#define _ResetResponse_H_ + + +#include + +/* Including external dependencies */ +#include "ProtocolIE-Container.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* ResetResponse */ +typedef struct ResetResponse { + ProtocolIE_Container_1412P15_t protocolIEs; + /* + * This type is extensible, + * possible extensions are below. + */ + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} ResetResponse_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_ResetResponse; +extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_specs_1; +extern asn_TYPE_member_t asn_MBR_ResetResponse_1[1]; + +#ifdef __cplusplus +} +#endif + +#endif /* _ResetResponse_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/SuccessfulOutcome.c b/setup/xapp-bs-connector/asn1c_defs/SuccessfulOutcome.c new file mode 100644 index 0000000..8e9941f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/SuccessfulOutcome.c @@ -0,0 +1,359 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "SuccessfulOutcome.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICserviceUpdate = 7; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICcontrol = 4; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_E2setup = 1; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_Reset = 3; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICindication = 5; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_8_id_RICserviceQuery = 6; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_9_id_ErrorIndication = 2; +static const long asn_VAL_9_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_SuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 1; /* &SuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct SuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICsubscriptionDeleteResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICserviceUpdateAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.RICcontrolAcknowledge), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolAcknowledge, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolAcknowledge" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.E2setupResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E2setupResponse" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome__value, choice.ResetResponse), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_ResetResponse, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "ResetResponse" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 5 }, /* RICsubscriptionResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 4 }, /* RICsubscriptionDeleteResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 3 }, /* RICserviceUpdateAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 2 }, /* RICcontrolAcknowledge */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 1 }, /* E2setupResponse */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 5, -5, 0 } /* ResetResponse */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct SuccessfulOutcome__value), + offsetof(struct SuccessfulOutcome__value, _asn_ctx), + offsetof(struct SuccessfulOutcome__value, present), + sizeof(((struct SuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 6, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 6, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_SuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct SuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_SuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_SuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_SuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1 = { + sizeof(struct SuccessfulOutcome), + offsetof(struct SuccessfulOutcome, _asn_ctx), + asn_MAP_SuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome = { + "SuccessfulOutcome", + "SuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_SuccessfulOutcome_tags_1, + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_SuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_SuccessfulOutcome_tags_1) + /sizeof(asn_DEF_SuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_SuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_SuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/SuccessfulOutcome.h b/setup/xapp-bs-connector/asn1c_defs/SuccessfulOutcome.h new file mode 100644 index 0000000..906aa20 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/SuccessfulOutcome.h @@ -0,0 +1,91 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _SuccessfulOutcome_H_ +#define _SuccessfulOutcome_H_ + + +#include + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include +#include +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum SuccessfulOutcome__value_PR { + SuccessfulOutcome__value_PR_NOTHING, /* No components present */ + SuccessfulOutcome__value_PR_RICsubscriptionResponse, + SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse, + SuccessfulOutcome__value_PR_RICserviceUpdateAcknowledge, + SuccessfulOutcome__value_PR_RICcontrolAcknowledge, + SuccessfulOutcome__value_PR_E2setupResponse, + SuccessfulOutcome__value_PR_ResetResponse +} SuccessfulOutcome__value_PR; + +/* SuccessfulOutcome */ +typedef struct SuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct SuccessfulOutcome__value { + SuccessfulOutcome__value_PR present; + union SuccessfulOutcome__value_u { + RICsubscriptionResponse_t RICsubscriptionResponse; + RICsubscriptionDeleteResponse_t RICsubscriptionDeleteResponse; + RICserviceUpdateAcknowledge_t RICserviceUpdateAcknowledge; + RICcontrolAcknowledge_t RICcontrolAcknowledge; + E2setupResponse_t E2setupResponse; + ResetResponse_t ResetResponse; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} SuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_SuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_SuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_SuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _SuccessfulOutcome_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/TimeToWait.c b/setup/xapp-bs-connector/asn1c_defs/TimeToWait.c new file mode 100644 index 0000000..6c1d6af --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/TimeToWait.c @@ -0,0 +1,63 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "TimeToWait.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +static asn_per_constraints_t asn_PER_type_TimeToWait_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 3, 3, 0, 5 } /* (0..5,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TimeToWait_value2enum_1[] = { + { 0, 3, "v1s" }, + { 1, 3, "v2s" }, + { 2, 3, "v5s" }, + { 3, 4, "v10s" }, + { 4, 4, "v20s" }, + { 5, 4, "v60s" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TimeToWait_enum2value_1[] = { + 3, /* v10s(3) */ + 0, /* v1s(0) */ + 4, /* v20s(4) */ + 1, /* v2s(1) */ + 2, /* v5s(2) */ + 5 /* v60s(5) */ + /* This list is extensible */ +}; +static const asn_INTEGER_specifics_t asn_SPC_TimeToWait_specs_1 = { + asn_MAP_TimeToWait_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TimeToWait_enum2value_1, /* N => "tag"; sorted by N */ + 6, /* Number of elements in the maps */ + 7, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TimeToWait_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TimeToWait = { + "TimeToWait", + "TimeToWait", + &asn_OP_NativeEnumerated, + asn_DEF_TimeToWait_tags_1, + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + asn_DEF_TimeToWait_tags_1, /* Same as above */ + sizeof(asn_DEF_TimeToWait_tags_1) + /sizeof(asn_DEF_TimeToWait_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TimeToWait_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TimeToWait_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/TimeToWait.h b/setup/xapp-bs-connector/asn1c_defs/TimeToWait.h new file mode 100644 index 0000000..a9ff45b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/TimeToWait.h @@ -0,0 +1,56 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _TimeToWait_H_ +#define _TimeToWait_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TimeToWait { + TimeToWait_v1s = 0, + TimeToWait_v2s = 1, + TimeToWait_v5s = 2, + TimeToWait_v10s = 3, + TimeToWait_v20s = 4, + TimeToWait_v60s = 5 + /* + * Enumeration is extensible + */ +} e_TimeToWait; + +/* TimeToWait */ +typedef long TimeToWait_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_TimeToWait; +asn_struct_free_f TimeToWait_free; +asn_struct_print_f TimeToWait_print; +asn_constr_check_f TimeToWait_constraint; +ber_type_decoder_f TimeToWait_decode_ber; +der_type_encoder_f TimeToWait_encode_der; +xer_type_decoder_f TimeToWait_decode_xer; +xer_type_encoder_f TimeToWait_encode_xer; +per_type_decoder_f TimeToWait_decode_uper; +per_type_encoder_f TimeToWait_encode_uper; +per_type_decoder_f TimeToWait_decode_aper; +per_type_encoder_f TimeToWait_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TimeToWait_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/TriggeringMessage.c b/setup/xapp-bs-connector/asn1c_defs/TriggeringMessage.c new file mode 100644 index 0000000..41f10ca --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/TriggeringMessage.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "TriggeringMessage.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TriggeringMessage_value2enum_1[] = { + { 0, 18, "initiating-message" }, + { 1, 18, "successful-outcome" }, + { 2, 21, "unsuccessfull-outcome" } +}; +static const unsigned int asn_MAP_TriggeringMessage_enum2value_1[] = { + 0, /* initiating-message(0) */ + 1, /* successful-outcome(1) */ + 2 /* unsuccessfull-outcome(2) */ +}; +const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1 = { + asn_MAP_TriggeringMessage_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TriggeringMessage_enum2value_1, /* N => "tag"; sorted by N */ + 3, /* Number of elements in the maps */ + 0, /* Enumeration is not extensible */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TriggeringMessage_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TriggeringMessage = { + "TriggeringMessage", + "TriggeringMessage", + &asn_OP_NativeEnumerated, + asn_DEF_TriggeringMessage_tags_1, + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + asn_DEF_TriggeringMessage_tags_1, /* Same as above */ + sizeof(asn_DEF_TriggeringMessage_tags_1) + /sizeof(asn_DEF_TriggeringMessage_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TriggeringMessage_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TriggeringMessage_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/TriggeringMessage.h b/setup/xapp-bs-connector/asn1c_defs/TriggeringMessage.h new file mode 100644 index 0000000..da7b498 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/TriggeringMessage.h @@ -0,0 +1,52 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-CommonDataTypes" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _TriggeringMessage_H_ +#define _TriggeringMessage_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TriggeringMessage { + TriggeringMessage_initiating_message = 0, + TriggeringMessage_successful_outcome = 1, + TriggeringMessage_unsuccessfull_outcome = 2 +} e_TriggeringMessage; + +/* TriggeringMessage */ +typedef long TriggeringMessage_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TriggeringMessage_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TriggeringMessage; +extern const asn_INTEGER_specifics_t asn_SPC_TriggeringMessage_specs_1; +asn_struct_free_f TriggeringMessage_free; +asn_struct_print_f TriggeringMessage_print; +asn_constr_check_f TriggeringMessage_constraint; +ber_type_decoder_f TriggeringMessage_decode_ber; +der_type_encoder_f TriggeringMessage_encode_der; +xer_type_decoder_f TriggeringMessage_decode_xer; +xer_type_encoder_f TriggeringMessage_encode_xer; +per_type_decoder_f TriggeringMessage_decode_uper; +per_type_encoder_f TriggeringMessage_encode_uper; +per_type_decoder_f TriggeringMessage_decode_aper; +per_type_encoder_f TriggeringMessage_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TriggeringMessage_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/TypeOfError.c b/setup/xapp-bs-connector/asn1c_defs/TypeOfError.c new file mode 100644 index 0000000..ad4e6cd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/TypeOfError.c @@ -0,0 +1,55 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "TypeOfError.h" + +/* + * This type is implemented using NativeEnumerated, + * so here we adjust the DEF accordingly. + */ +asn_per_constraints_t asn_PER_type_TypeOfError_constr_1 CC_NOTUSED = { + { APC_CONSTRAINED | APC_EXTENSIBLE, 1, 1, 0, 1 } /* (0..1,...) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static const asn_INTEGER_enum_map_t asn_MAP_TypeOfError_value2enum_1[] = { + { 0, 14, "not-understood" }, + { 1, 7, "missing" } + /* This list is extensible */ +}; +static const unsigned int asn_MAP_TypeOfError_enum2value_1[] = { + 1, /* missing(1) */ + 0 /* not-understood(0) */ + /* This list is extensible */ +}; +const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1 = { + asn_MAP_TypeOfError_value2enum_1, /* "tag" => N; sorted by tag */ + asn_MAP_TypeOfError_enum2value_1, /* N => "tag"; sorted by N */ + 2, /* Number of elements in the maps */ + 3, /* Extensions before this member */ + 1, /* Strict enumeration */ + 0, /* Native long size */ + 0 +}; +static const ber_tlv_tag_t asn_DEF_TypeOfError_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)) +}; +asn_TYPE_descriptor_t asn_DEF_TypeOfError = { + "TypeOfError", + "TypeOfError", + &asn_OP_NativeEnumerated, + asn_DEF_TypeOfError_tags_1, + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + asn_DEF_TypeOfError_tags_1, /* Same as above */ + sizeof(asn_DEF_TypeOfError_tags_1) + /sizeof(asn_DEF_TypeOfError_tags_1[0]), /* 1 */ + { 0, &asn_PER_type_TypeOfError_constr_1, NativeEnumerated_constraint }, + 0, 0, /* Defined elsewhere */ + &asn_SPC_TypeOfError_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/TypeOfError.h b/setup/xapp-bs-connector/asn1c_defs/TypeOfError.h new file mode 100644 index 0000000..b2cc876 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/TypeOfError.h @@ -0,0 +1,54 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-IEs" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _TypeOfError_H_ +#define _TypeOfError_H_ + + +#include + +/* Including external dependencies */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum TypeOfError { + TypeOfError_not_understood = 0, + TypeOfError_missing = 1 + /* + * Enumeration is extensible + */ +} e_TypeOfError; + +/* TypeOfError */ +typedef long TypeOfError_t; + +/* Implementation */ +extern asn_per_constraints_t asn_PER_type_TypeOfError_constr_1; +extern asn_TYPE_descriptor_t asn_DEF_TypeOfError; +extern const asn_INTEGER_specifics_t asn_SPC_TypeOfError_specs_1; +asn_struct_free_f TypeOfError_free; +asn_struct_print_f TypeOfError_print; +asn_constr_check_f TypeOfError_constraint; +ber_type_decoder_f TypeOfError_decode_ber; +der_type_encoder_f TypeOfError_encode_der; +xer_type_decoder_f TypeOfError_decode_xer; +xer_type_encoder_f TypeOfError_encode_xer; +per_type_decoder_f TypeOfError_decode_uper; +per_type_encoder_f TypeOfError_encode_uper; +per_type_decoder_f TypeOfError_decode_aper; +per_type_encoder_f TypeOfError_encode_aper; + +#ifdef __cplusplus +} +#endif + +#endif /* _TypeOfError_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/UnsuccessfulOutcome.c b/setup/xapp-bs-connector/asn1c_defs/UnsuccessfulOutcome.c new file mode 100644 index 0000000..4483d36 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/UnsuccessfulOutcome.c @@ -0,0 +1,349 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#include "UnsuccessfulOutcome.h" + +static const long asn_VAL_1_id_RICsubscription = 8; +static const long asn_VAL_1_reject = 0; +static const long asn_VAL_2_id_RICsubscriptionDelete = 9; +static const long asn_VAL_2_reject = 0; +static const long asn_VAL_3_id_RICserviceUpdate = 7; +static const long asn_VAL_3_reject = 0; +static const long asn_VAL_4_id_RICcontrol = 4; +static const long asn_VAL_4_reject = 0; +static const long asn_VAL_5_id_E2setup = 1; +static const long asn_VAL_5_reject = 0; +static const long asn_VAL_6_id_Reset = 3; +static const long asn_VAL_6_reject = 0; +static const long asn_VAL_7_id_RICindication = 5; +static const long asn_VAL_7_ignore = 1; +static const long asn_VAL_8_id_RICserviceQuery = 6; +static const long asn_VAL_8_ignore = 1; +static const long asn_VAL_9_id_ErrorIndication = 2; +static const long asn_VAL_9_ignore = 1; +static const asn_ioc_cell_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows[] = { + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_1_id_RICsubscription }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_1_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICsubscriptionDeleteRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICsubscriptionDeleteFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_2_id_RICsubscriptionDelete }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_2_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceUpdate }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICserviceUpdateFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_3_id_RICserviceUpdate }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_3_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICcontrolRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolAcknowledge }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_RICcontrolFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_4_id_RICcontrol }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_4_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_E2setupRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_E2setupResponse }, + { "&UnsuccessfulOutcome", aioc__type, &asn_DEF_E2setupFailure }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_5_id_E2setup }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_5_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ResetRequest }, + { "&SuccessfulOutcome", aioc__type, &asn_DEF_ResetResponse }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_6_id_Reset }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_6_reject }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICindication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_7_id_RICindication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_7_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_RICserviceQuery }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_8_id_RICserviceQuery }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_8_ignore }, + { "&InitiatingMessage", aioc__type, &asn_DEF_ErrorIndication }, + { "&SuccessfulOutcome", }, + { "&UnsuccessfulOutcome", }, + { "&procedureCode", aioc__value, &asn_DEF_ProcedureCode, &asn_VAL_9_id_ErrorIndication }, + { "&criticality", aioc__value, &asn_DEF_Criticality, &asn_VAL_9_ignore } +}; +static const asn_ioc_set_t asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1[] = { + { 9, 5, asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1_rows } +}; +static int +memb_procedureCode_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + long value; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + value = *(const long *)sptr; + + if((value >= 0 && value <= 255)) { + /* Constraint check succeeded */ + return 0; + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: constraint failed (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_criticality_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 4; /* &criticality */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_criticality_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_type_selector_result_t +select_UnsuccessfulOutcome_value_type(const asn_TYPE_descriptor_t *parent_type, const void *parent_sptr) { + asn_type_selector_result_t result = {0, 0}; + const asn_ioc_set_t *itable = asn_IOS_E2AP_ELEMENTARY_PROCEDURES_1; + size_t constraining_column = 3; /* &procedureCode */ + size_t for_column = 2; /* &UnsuccessfulOutcome */ + size_t row, presence_index = 0; + const long *constraining_value = (const long *)((const char *)parent_sptr + offsetof(struct UnsuccessfulOutcome, procedureCode)); + + for(row=0; row < itable->rows_count; row++) { + const asn_ioc_cell_t *constraining_cell = &itable->rows[row * itable->columns_count + constraining_column]; + const asn_ioc_cell_t *type_cell = &itable->rows[row * itable->columns_count + for_column]; + + if(type_cell->cell_kind == aioc__undefined) + continue; + + presence_index++; + if(constraining_cell->type_descriptor->op->compare_struct(constraining_cell->type_descriptor, constraining_value, constraining_cell->value_sptr) == 0) { + result.type_descriptor = type_cell->type_descriptor; + result.presence_index = presence_index; + break; + } + } + + return result; +} + +static int +memb_value_constraint_1(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + + if(1 /* No applicable constraints whatsoever */) { + /* Nothing is here. See below */ + } + + return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key); +} + +static asn_per_constraints_t asn_PER_memb_procedureCode_constr_2 CC_NOTUSED = { + { APC_CONSTRAINED, 8, 8, 0, 255 } /* (0..255) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_criticality_constr_3 CC_NOTUSED = { + { APC_CONSTRAINED, 2, 2, 0, 2 } /* (0..2) */, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_per_constraints_t asn_PER_memb_value_constr_4 CC_NOTUSED = { + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + { APC_UNCONSTRAINED, -1, -1, 0, 0 }, + 0, 0 /* No PER value map */ +}; +static asn_TYPE_member_t asn_MBR_value_4[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICsubscriptionDeleteFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICsubscriptionDeleteFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICsubscriptionDeleteFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICserviceUpdateFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICserviceUpdateFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICserviceUpdateFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.RICcontrolFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_RICcontrolFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "RICcontrolFailure" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome__value, choice.E2setupFailure), + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), + 0, + &asn_DEF_E2setupFailure, + 0, + { 0, 0, 0 }, + 0, 0, /* No default value */ + "E2setupFailure" + }, +}; +static const asn_TYPE_tag2member_t asn_MAP_value_tag2el_4[] = { + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 4 }, /* RICsubscriptionFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 3 }, /* RICsubscriptionDeleteFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 2 }, /* RICserviceUpdateFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 3, -3, 1 }, /* RICcontrolFailure */ + { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 4, -4, 0 } /* E2setupFailure */ +}; +static asn_CHOICE_specifics_t asn_SPC_value_specs_4 = { + sizeof(struct UnsuccessfulOutcome__value), + offsetof(struct UnsuccessfulOutcome__value, _asn_ctx), + offsetof(struct UnsuccessfulOutcome__value, present), + sizeof(((struct UnsuccessfulOutcome__value *)0)->present), + asn_MAP_value_tag2el_4, + 5, /* Count of tags in the map */ + 0, 0, + -1 /* Extensions start */ +}; +static /* Use -fall-defs-global to expose */ +asn_TYPE_descriptor_t asn_DEF_value_4 = { + "value", + "value", + &asn_OP_OPEN_TYPE, + 0, /* No effective tags (pointer) */ + 0, /* No effective tags (count) */ + 0, /* No tags (pointer) */ + 0, /* No tags (count) */ + { 0, 0, OPEN_TYPE_constraint }, + asn_MBR_value_4, + 5, /* Elements count */ + &asn_SPC_value_specs_4 /* Additional specs */ +}; + +asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[] = { + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, procedureCode), + (ASN_TAG_CLASS_CONTEXT | (0 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_ProcedureCode, + 0, + { 0, &asn_PER_memb_procedureCode_constr_2, memb_procedureCode_constraint_1 }, + 0, 0, /* No default value */ + "procedureCode" + }, + { ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, criticality), + (ASN_TAG_CLASS_CONTEXT | (1 << 2)), + -1, /* IMPLICIT tag at current level */ + &asn_DEF_Criticality, + select_UnsuccessfulOutcome_criticality_type, + { 0, &asn_PER_memb_criticality_constr_3, memb_criticality_constraint_1 }, + 0, 0, /* No default value */ + "criticality" + }, + { ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct UnsuccessfulOutcome, value), + (ASN_TAG_CLASS_CONTEXT | (2 << 2)), + +1, /* EXPLICIT tag at current level */ + &asn_DEF_value_4, + select_UnsuccessfulOutcome_value_type, + { 0, &asn_PER_memb_value_constr_4, memb_value_constraint_1 }, + 0, 0, /* No default value */ + "value" + }, +}; +static const ber_tlv_tag_t asn_DEF_UnsuccessfulOutcome_tags_1[] = { + (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)) +}; +static const asn_TYPE_tag2member_t asn_MAP_UnsuccessfulOutcome_tag2el_1[] = { + { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* procedureCode */ + { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* criticality */ + { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* value */ +}; +asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1 = { + sizeof(struct UnsuccessfulOutcome), + offsetof(struct UnsuccessfulOutcome, _asn_ctx), + asn_MAP_UnsuccessfulOutcome_tag2el_1, + 3, /* Count of tags in the map */ + 0, 0, 0, /* Optional elements (not needed) */ + -1, /* First extension addition */ +}; +asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome = { + "UnsuccessfulOutcome", + "UnsuccessfulOutcome", + &asn_OP_SEQUENCE, + asn_DEF_UnsuccessfulOutcome_tags_1, + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + asn_DEF_UnsuccessfulOutcome_tags_1, /* Same as above */ + sizeof(asn_DEF_UnsuccessfulOutcome_tags_1) + /sizeof(asn_DEF_UnsuccessfulOutcome_tags_1[0]), /* 1 */ + { 0, 0, SEQUENCE_constraint }, + asn_MBR_UnsuccessfulOutcome_1, + 3, /* Elements count */ + &asn_SPC_UnsuccessfulOutcome_specs_1 /* Additional specs */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/UnsuccessfulOutcome.h b/setup/xapp-bs-connector/asn1c_defs/UnsuccessfulOutcome.h new file mode 100644 index 0000000..5d8386e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/UnsuccessfulOutcome.h @@ -0,0 +1,89 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + * From ASN.1 module "E2AP-PDU-Descriptions" + * found in "/home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn" + * `asn1c -fno-include-deps -fcompound-names -findirect-choice -gen-PER -no-gen-OER` + */ + +#ifndef _UnsuccessfulOutcome_H_ +#define _UnsuccessfulOutcome_H_ + + +#include + +/* Including external dependencies */ +#include "ProcedureCode.h" +#include "Criticality.h" +#include +#include +#include "RICsubscriptionRequest.h" +#include "RICsubscriptionResponse.h" +#include "RICsubscriptionFailure.h" +#include "RICsubscriptionDeleteRequest.h" +#include "RICsubscriptionDeleteResponse.h" +#include "RICsubscriptionDeleteFailure.h" +#include "RICserviceUpdate.h" +#include "RICserviceUpdateAcknowledge.h" +#include "RICserviceUpdateFailure.h" +#include "RICcontrolRequest.h" +#include "RICcontrolAcknowledge.h" +#include "RICcontrolFailure.h" +#include "E2setupRequest.h" +#include "E2setupResponse.h" +#include "E2setupFailure.h" +#include "ResetRequest.h" +#include "ResetResponse.h" +#include "RICindication.h" +#include "RICserviceQuery.h" +#include "ErrorIndication.h" +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Dependencies */ +typedef enum UnsuccessfulOutcome__value_PR { + UnsuccessfulOutcome__value_PR_NOTHING, /* No components present */ + UnsuccessfulOutcome__value_PR_RICsubscriptionFailure, + UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure, + UnsuccessfulOutcome__value_PR_RICserviceUpdateFailure, + UnsuccessfulOutcome__value_PR_RICcontrolFailure, + UnsuccessfulOutcome__value_PR_E2setupFailure +} UnsuccessfulOutcome__value_PR; + +/* UnsuccessfulOutcome */ +typedef struct UnsuccessfulOutcome { + ProcedureCode_t procedureCode; + Criticality_t criticality; + struct UnsuccessfulOutcome__value { + UnsuccessfulOutcome__value_PR present; + union UnsuccessfulOutcome__value_u { + RICsubscriptionFailure_t RICsubscriptionFailure; + RICsubscriptionDeleteFailure_t RICsubscriptionDeleteFailure; + RICserviceUpdateFailure_t RICserviceUpdateFailure; + RICcontrolFailure_t RICcontrolFailure; + E2setupFailure_t E2setupFailure; + } choice; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; + } value; + + /* Context for parsing across buffer boundaries */ + asn_struct_ctx_t _asn_ctx; +} UnsuccessfulOutcome_t; + +/* Implementation */ +extern asn_TYPE_descriptor_t asn_DEF_UnsuccessfulOutcome; +extern asn_SEQUENCE_specifics_t asn_SPC_UnsuccessfulOutcome_specs_1; +extern asn_TYPE_member_t asn_MBR_UnsuccessfulOutcome_1[3]; + +#ifdef __cplusplus +} +#endif + +#endif /* _UnsuccessfulOutcome_H_ */ +#include diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_SEQUENCE_OF.c b/setup/xapp-bs-connector/asn1c_defs/asn_SEQUENCE_OF.c new file mode 100644 index 0000000..ec952fc --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_SEQUENCE_OF.c @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +typedef A_SEQUENCE_OF(void) asn_sequence; + +void +asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free) { + asn_sequence *as = (asn_sequence *)asn_sequence_of_x; + + if(as) { + void *ptr; + int n; + + if(number < 0 || number >= as->count) + return; /* Nothing to delete */ + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + /* + * Shift all elements to the left to hide the gap. + */ + --as->count; + for(n = number; n < as->count; n++) + as->array[n] = as->array[n+1]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_SEQUENCE_OF.h b/setup/xapp-bs-connector/asn1c_defs/asn_SEQUENCE_OF.h new file mode 100644 index 0000000..e35bc44 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_SEQUENCE_OF.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SEQUENCE_OF_H +#define ASN_SEQUENCE_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * SEQUENCE OF is the same as SET OF with a tiny difference: + * the delete operation preserves the initial order of elements + * and thus MAY operate in non-constant time. + */ +#define A_SEQUENCE_OF(type) A_SET_OF(type) + +#define ASN_SEQUENCE_ADD(headptr, ptr) \ + asn_sequence_add((headptr), (ptr)) + +/*********************************************** + * Implementation of the SEQUENCE OF structure. + */ + +#define asn_sequence_add asn_set_add +#define asn_sequence_empty asn_set_empty + +/* + * Delete the element from the set by its number (base 0). + * This is NOT a constant-time operation. + * The order of elements is preserved. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_sequence_del(void *asn_sequence_of_x, int number, int _do_free); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SEQUENCE_OF(void) asn_anonymous_sequence_; +#define _A_SEQUENCE_FROM_VOID(ptr) ((asn_anonymous_sequence_ *)(ptr)) +#define _A_CSEQUENCE_FROM_VOID(ptr) ((const asn_anonymous_sequence_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SEQUENCE_OF_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_SET_OF.c b/setup/xapp-bs-connector/asn1c_defs/asn_SET_OF.c new file mode 100644 index 0000000..944f2cb --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_SET_OF.c @@ -0,0 +1,88 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Add another element into the set. + */ +int +asn_set_add(void *asn_set_of_x, void *ptr) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as == 0 || ptr == 0) { + errno = EINVAL; /* Invalid arguments */ + return -1; + } + + /* + * Make sure there's enough space to insert an element. + */ + if(as->count == as->size) { + int _newsize = as->size ? (as->size << 1) : 4; + void *_new_arr; + _new_arr = REALLOC(as->array, _newsize * sizeof(as->array[0])); + if(_new_arr) { + as->array = (void **)_new_arr; + as->size = _newsize; + } else { + /* ENOMEM */ + return -1; + } + } + + as->array[as->count++] = ptr; + + return 0; +} + +void +asn_set_del(void *asn_set_of_x, int number, int _do_free) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + void *ptr; + if(number < 0 || number >= as->count) + return; + + if(_do_free && as->free) { + ptr = as->array[number]; + } else { + ptr = 0; + } + + as->array[number] = as->array[--as->count]; + + /* + * Invoke the third-party function only when the state + * of the parent structure is consistent. + */ + if(ptr) as->free(ptr); + } +} + +/* + * Free the contents of the set, do not free the set itself. + */ +void +asn_set_empty(void *asn_set_of_x) { + asn_anonymous_set_ *as = _A_SET_FROM_VOID(asn_set_of_x); + + if(as) { + if(as->array) { + if(as->free) { + while(as->count--) + as->free(as->array[as->count]); + } + FREEMEM(as->array); + as->array = 0; + } + as->count = 0; + as->size = 0; + } + +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_SET_OF.h b/setup/xapp-bs-connector/asn1c_defs/asn_SET_OF.h new file mode 100644 index 0000000..882e1a4 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_SET_OF.h @@ -0,0 +1,72 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_SET_OF_H +#define ASN_SET_OF_H + +#ifdef __cplusplus +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(decltype(*array)); \ + } +#else /* C */ +#define A_SET_OF(type) \ + struct { \ + type **array; \ + int count; /* Meaningful size */ \ + int size; /* Allocated size */ \ + void (*free)(type *); \ + } +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#define ASN_SET_ADD(headptr, ptr) \ + asn_set_add((headptr), (ptr)) + +/******************************************* + * Implementation of the SET OF structure. + */ + +/* + * Add another structure into the set by its pointer. + * RETURN VALUES: + * 0 for success and -1/errno for failure. + */ +int asn_set_add(void *asn_set_of_x, void *ptr); + +/* + * Delete the element from the set by its number (base 0). + * This is a constant-time operation. The order of elements before the + * deleted ones is guaranteed, the order of elements after the deleted + * one is NOT guaranteed. + * If _do_free is given AND the (*free) is initialized, the element + * will be freed using the custom (*free) function as well. + */ +void asn_set_del(void *asn_set_of_x, int number, int _do_free); + +/* + * Empty the contents of the set. Will free the elements, if (*free) is given. + * Will NOT free the set itself. + */ +void asn_set_empty(void *asn_set_of_x); + +/* + * Cope with different conversions requirements to/from void in C and C++. + * This is mostly useful for support library. + */ +typedef A_SET_OF(void) asn_anonymous_set_; +#define _A_SET_FROM_VOID(ptr) ((asn_anonymous_set_ *)(ptr)) +#define _A_CSET_FROM_VOID(ptr) ((const asn_anonymous_set_ *)(ptr)) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_SET_OF_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_application.c b/setup/xapp-bs-connector/asn1c_defs/asn_application.c new file mode 100644 index 0000000..2bff460 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_application.c @@ -0,0 +1,481 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +static asn_enc_rval_t asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_app_consume_bytes_f *callback, + void *callback_key); + + +struct callback_count_bytes_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + size_t computed_size; +}; + +/* + * Encoder which just counts bytes that come through it. + */ +static int +callback_count_bytes_cb(const void *data, size_t size, void *keyp) { + struct callback_count_bytes_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret >= 0) { + key->computed_size += size; + } + + return ret; +} + +struct overrun_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct dynamic_encoder_key { + void *buffer; + size_t buffer_size; + size_t computed_size; +}; + +struct callback_failure_catch_key { + asn_app_consume_bytes_f *callback; + void *callback_key; + int callback_failed; +}; + +/* + * Encoder which doesn't stop counting bytes + * even if it reaches the end of the buffer. + */ +static int +overrun_encoder_cb(const void *data, size_t size, void *keyp) { + struct overrun_encoder_key *key = keyp; + + if(key->computed_size + size > key->buffer_size) { + /* + * Avoid accident on the next call: + * stop adding bytes to the buffer. + */ + key->buffer_size = 0; + } else { + memcpy((char *)key->buffer + key->computed_size, data, size); + } + key->computed_size += size; + + return 0; +} + +/* + * Encoder which dynamically allocates output, and continues + * to count even if allocation failed. + */ +static int +dynamic_encoder_cb(const void *data, size_t size, void *keyp) { + struct dynamic_encoder_key *key = keyp; + + if(key->buffer) { + if(key->computed_size + size >= key->buffer_size) { + void *p; + size_t new_size = key->buffer_size; + + do { + new_size *= 2; + } while(new_size <= key->computed_size + size); + + p = REALLOC(key->buffer, new_size); + if(p) { + key->buffer = p; + key->buffer_size = new_size; + } else { + FREEMEM(key->buffer); + key->buffer = 0; + key->buffer_size = 0; + key->computed_size += size; + return 0; + } + } + memcpy((char *)key->buffer + key->computed_size, data, size); + } + + key->computed_size += size; + + return 0; +} + +/* + * Encoder which help convert the application level encoder failure into EIO. + */ +static int +callback_failure_catch_cb(const void *data, size_t size, void *keyp) { + struct callback_failure_catch_key *key = keyp; + int ret; + + ret = key->callback(data, size, key->callback_key); + if(ret < 0) { + key->callback_failed = 1; + } + + return ret; +} + +asn_enc_rval_t +asn_encode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + const void *sptr, asn_app_consume_bytes_f *callback, void *callback_key) { + struct callback_failure_catch_key cb_key; + asn_enc_rval_t er = {0,0,0}; + + if(!callback) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.callback_failed = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + callback_failure_catch_cb, &cb_key); + if(cb_key.callback_failed) { + assert(er.encoded == -1); + assert(errno == EBADF); + errno = EIO; + } + + return er; +} + +asn_enc_rval_t +asn_encode_to_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + void *buffer, size_t buffer_size) { + struct overrun_encoder_key buf_key; + asn_enc_rval_t er = {0,0,0}; + + if(buffer_size > 0 && !buffer) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + buf_key.buffer = buffer; + buf_key.buffer_size = buffer_size; + buf_key.computed_size = 0; + + er = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + overrun_encoder_cb, &buf_key); + + if(er.encoded >= 0 && (size_t)er.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + er.encoded, buf_key.computed_size); + assert(er.encoded < 0 || (size_t)er.encoded == buf_key.computed_size); + } + + return er; +} + +asn_encode_to_new_buffer_result_t +asn_encode_to_new_buffer(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr) { + struct dynamic_encoder_key buf_key; + asn_encode_to_new_buffer_result_t res; + + buf_key.buffer_size = 16; + buf_key.buffer = MALLOC(buf_key.buffer_size); + buf_key.computed_size = 0; + + res.result = asn_encode_internal(opt_codec_ctx, syntax, td, sptr, + dynamic_encoder_cb, &buf_key); + + if(res.result.encoded >= 0 + && (size_t)res.result.encoded != buf_key.computed_size) { + ASN_DEBUG("asn_encode() returned %" ASN_PRI_SSIZE + " yet produced %" ASN_PRI_SIZE " bytes", + res.result.encoded, buf_key.computed_size); + assert(res.result.encoded < 0 + || (size_t)res.result.encoded == buf_key.computed_size); + } + + res.buffer = buf_key.buffer; + + /* 0-terminate just in case. */ + if(res.buffer) { + assert(buf_key.computed_size < buf_key.buffer_size); + ((char *)res.buffer)[buf_key.computed_size] = '\0'; + } + + return res; +} + +static asn_enc_rval_t +asn_encode_internal(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, + const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_consume_bytes_f *callback, void *callback_key) { + asn_enc_rval_t er = {0,0,0}; + enum xer_encoder_flags_e xer_flags = XER_F_CANONICAL; + + (void)opt_codec_ctx; /* Parameters are not checked on encode yet. */ + + if(!td || !sptr) { + errno = EINVAL; + ASN__ENCODE_FAILED; + } + + switch(syntax) { + case ATS_NONSTANDARD_PLAINTEXT: + if(td->op->print_struct) { + struct callback_count_bytes_key cb_key; + cb_key.callback = callback; + cb_key.callback_key = callback_key; + cb_key.computed_size = 0; + if(td->op->print_struct(td, sptr, 1, callback_count_bytes_cb, + &cb_key) + < 0 + || callback_count_bytes_cb("\n", 1, &cb_key) < 0) { + errno = EBADF; /* Structure has incorrect form. */ + er.encoded = -1; + er.failed_type = td; + er.structure_ptr = sptr; + } else { + er.encoded = cb_key.computed_size; + er.failed_type = 0; + er.structure_ptr = 0; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + case ATS_RANDOM: + errno = ENOENT; /* Randomization doesn't make sense on output. */ + ASN__ENCODE_FAILED; + + case ATS_BER: + /* BER is a superset of DER. */ + /* Fall through. */ + case ATS_DER: + if(td->op->der_encoder) { + er = der_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->der_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* DER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_CER: + errno = ENOENT; /* Transfer syntax is not defined for any type. */ + ASN__ENCODE_FAILED; + +#ifdef ASN_DISABLE_OER_SUPPORT + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_OER_SUPPORT */ + case ATS_BASIC_OER: + /* CANONICAL-OER is a superset of BASIC-OER. */ + /* Fall through. */ + case ATS_CANONICAL_OER: + if(td->op->oer_encoder) { + er = oer_encode(td, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->oer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* OER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_OER_SUPPORT */ + +#ifdef ASN_DISABLE_PER_SUPPORT + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: + errno = ENOENT; /* PER is not defined. */ + ASN__ENCODE_FAILED; + break; +#else /* ASN_DISABLE_PER_SUPPORT */ + case ATS_UNALIGNED_BASIC_PER: + /* CANONICAL-UPER is a superset of BASIC-UPER. */ + /* Fall through. */ + case ATS_UNALIGNED_CANONICAL_PER: + if(td->op->uper_encoder) { + er = uper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->uper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* UPER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + case ATS_ALIGNED_BASIC_PER: + /* CANONICAL-APER is a superset of BASIC-APER. */ + /* Fall through. */ + case ATS_ALIGNED_CANONICAL_PER: + if(td->op->aper_encoder) { + er = aper_encode(td, 0, sptr, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->aper_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* APER is not defined for this type. */ + } + } else { + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + if(er.encoded == 0) { + /* Enforce "Complete Encoding" of X.691 #11.1 */ + if(callback("\0", 1, callback_key) < 0) { + errno = EBADF; + ASN__ENCODE_FAILED; + } + er.encoded = 8; /* Exactly 8 zero bits is added. */ + } + /* Convert bits into bytes */ + er.encoded = (er.encoded + 7) >> 3; + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; +#endif /* ASN_DISABLE_PER_SUPPORT */ + + case ATS_BASIC_XER: + /* CANONICAL-XER is a superset of BASIC-XER. */ + xer_flags &= ~XER_F_CANONICAL; + xer_flags |= XER_F_BASIC; + /* Fall through. */ + case ATS_CANONICAL_XER: + if(td->op->xer_encoder) { + er = xer_encode(td, sptr, xer_flags, callback, callback_key); + if(er.encoded == -1) { + if(er.failed_type && er.failed_type->op->xer_encoder) { + errno = EBADF; /* Structure has incorrect form. */ + } else { + errno = ENOENT; /* XER is not defined for this type. */ + } + } + } else { + errno = ENOENT; /* Transfer syntax is not defined for this type. */ + ASN__ENCODE_FAILED; + } + break; + + default: + errno = ENOENT; + ASN__ENCODE_FAILED; + } + + return er; +} + +asn_dec_rval_t +asn_decode(const asn_codec_ctx_t *opt_codec_ctx, + enum asn_transfer_syntax syntax, const asn_TYPE_descriptor_t *td, + void **sptr, const void *buffer, size_t size) { + if(!td || !td->op || !sptr || (size && !buffer)) { + ASN__DECODE_FAILED; + } + + switch(syntax) { + case ATS_CER: + case ATS_NONSTANDARD_PLAINTEXT: + default: + errno = ENOENT; + ASN__DECODE_FAILED; + + case ATS_RANDOM: + if(!td->op->random_fill) { + ASN__DECODE_FAILED; + } else { + if(asn_random_fill(td, sptr, 16000) == 0) { + asn_dec_rval_t ret = {RC_OK, 0}; + return ret; + } else { + ASN__DECODE_FAILED; + } + } + break; + + case ATS_DER: + case ATS_BER: + return ber_decode(opt_codec_ctx, td, sptr, buffer, size); + + case ATS_BASIC_OER: + case ATS_CANONICAL_OER: +#ifdef ASN_DISABLE_OER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return oer_decode(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_UNALIGNED_BASIC_PER: + case ATS_UNALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return uper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_ALIGNED_BASIC_PER: + case ATS_ALIGNED_CANONICAL_PER: +#ifdef ASN_DISABLE_PER_SUPPORT + errno = ENOENT; + ASN__DECODE_FAILED; +#else + return aper_decode_complete(opt_codec_ctx, td, sptr, buffer, size); +#endif + + case ATS_BASIC_XER: + case ATS_CANONICAL_XER: + return xer_decode(opt_codec_ctx, td, sptr, buffer, size); + } +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_application.h b/setup/xapp-bs-connector/asn1c_defs/asn_application.h new file mode 100644 index 0000000..034f646 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_application.h @@ -0,0 +1,171 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Application-level ASN.1 callbacks. + */ +#ifndef ASN_APPLICATION_H +#define ASN_APPLICATION_H + +#include "asn_system.h" /* for platform-dependent types */ +#include "asn_codecs.h" /* for ASN.1 codecs specifics */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A selection of ASN.1 Transfer Syntaxes to use with generalized + * encoders and decoders declared further in this .h file. + */ +enum asn_transfer_syntax { + /* Avoid appearance of a default transfer syntax. */ + ATS_INVALID = 0, + /* Plaintext output (not conforming to any standard), for debugging. */ + ATS_NONSTANDARD_PLAINTEXT, + /* Returns a randomly generated structure. */ + ATS_RANDOM, + /* + * X.690: + * BER: Basic Encoding Rules. + * DER: Distinguished Encoding Rules. + * CER: Canonical Encoding Rules. + * DER and CER are more strict variants of BER. + */ + ATS_BER, + ATS_DER, + ATS_CER, /* Only decoding is supported */ + /* + * X.696: + * OER: Octet Encoding Rules. + * CANONICAL-OER is a more strict variant of BASIC-OER. + */ + ATS_BASIC_OER, + ATS_CANONICAL_OER, + /* + * X.691: + * PER: Packed Encoding Rules. + * CANONICAL-PER is a more strict variant of BASIC-PER. + * NOTE: Produces or consumes a complete encoding (X.691 (08/2015) #11.1). + */ + ATS_UNALIGNED_BASIC_PER, + ATS_UNALIGNED_CANONICAL_PER, + ATS_ALIGNED_BASIC_PER, + ATS_ALIGNED_CANONICAL_PER, + /* + * X.693: + * XER: XML Encoding Rules. + * CANONICAL-XER is a more strict variant of BASIC-XER. + */ + ATS_BASIC_XER, + ATS_CANONICAL_XER +}; + +/* + * A generic encoder for any supported transfer syntax. + * RETURN VALUES: + * The (.encoded) field of the return value is REDEFINED to mean the following: + * >=0: The computed size of the encoded data. Can exceed the (buffer_size). + * -1: Error encoding the structure. See the error code in (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * The (.failed_type) and (.structure_ptr) MIGHT be set to the appropriate + * values at the place of failure, if at all possible. + * WARNING: The (.encoded) field of the return value can exceed the buffer_size. + * This is similar to snprintf(3) contract which might return values + * greater than the buffer size. + */ +asn_enc_rval_t asn_encode_to_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, void *buffer, size_t buffer_size); + +/* + * A variant of asn_encode_to_buffer() with automatically allocated buffer. + * RETURN VALUES: + * On success, returns a newly allocated (.buffer) containing the whole message. + * The message size is returned in (.result.encoded). + * On failure: + * (.buffer) is NULL, + * (.result.encoded) as in asn_encode_to_buffer(), + * The errno codes as in asn_encode_to_buffer(), plus the following: + * ENOMEM: Memory allocation failed due to system or internal limits. + * The user is responsible for freeing the (.buffer). + */ +typedef struct asn_encode_to_new_buffer_result_s { + void *buffer; /* NULL if failed to encode. */ + asn_enc_rval_t result; +} asn_encode_to_new_buffer_result_t; +asn_encode_to_new_buffer_result_t asn_encode_to_new_buffer( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode); + + +/* + * Generic type of an application-defined callback to return various + * types of data to the application. + * EXPECTED RETURN VALUES: + * -1: Failed to consume bytes. Abort the mission. + * Non-negative return values indicate success, and ignored. + */ +typedef int(asn_app_consume_bytes_f)(const void *buffer, size_t size, + void *application_specific_key); + + +/* + * A generic encoder for any supported transfer syntax. + * Returns the comprehensive encoding result descriptor (see asn_codecs.h). + * RETURN VALUES: + * The negative (.encoded) field of the return values is accompanied with the + * following error codes (errno): + * EINVAL: Incorrect parameters to the function, such as NULLs. + * ENOENT: Encoding transfer syntax is not defined (for this type). + * EBADF: The structure has invalid form or content constraint failed. + * EIO: The (callback) has returned negative value during encoding. + */ +asn_enc_rval_t asn_encode( + const asn_codec_ctx_t *opt_codec_parameters, /* See asn_codecs.h */ + enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_encode, + const void *structure_to_encode, + asn_app_consume_bytes_f *callback, void *callback_key); + + +/* + * A generic decoder for any supported transfer syntax. + */ +asn_dec_rval_t asn_decode( + const asn_codec_ctx_t *opt_codec_parameters, enum asn_transfer_syntax, + const struct asn_TYPE_descriptor_s *type_to_decode, + void **structure_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + + +/* + * A callback of this type is called whenever constraint validation fails + * on some ASN.1 type. See "constraints.h" for more details on constraint + * validation. + * This callback specifies a descriptor of the ASN.1 type which failed + * the constraint check, as well as human readable message on what + * particular constraint has failed. + */ +typedef void (asn_app_constraint_failed_f)(void *application_specific_key, + const struct asn_TYPE_descriptor_s *type_descriptor_which_failed, + const void *structure_which_failed_ptr, + const char *error_message_format, ...) CC_PRINTFLIKE(4, 5); + + +#ifdef __cplusplus +} +#endif + +#include "constr_TYPE.h" /* for asn_TYPE_descriptor_t */ + +#endif /* ASN_APPLICATION_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_bit_data.c b/setup/xapp-bs-connector/asn1c_defs/asn_bit_data.c new file mode 100644 index 0000000..fe4b89b --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_bit_data.c @@ -0,0 +1,333 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t * +asn_bit_data_new_contiguous(const void *data, size_t size_bits) { + size_t size_bytes = (size_bits + 7) / 8; + asn_bit_data_t *pd; + uint8_t *bytes; + + /* Get the extensions map */ + pd = CALLOC(1, sizeof(*pd) + size_bytes + 1); + if(!pd) { + return NULL; + } + bytes = (void *)(((char *)pd) + sizeof(*pd)); + memcpy(bytes, data, size_bytes); + bytes[size_bytes] = 0; + pd->buffer = bytes; + pd->nboff = 0; + pd->nbits = size_bits; + + return pd; +} + + +char * +asn_bit_data_string(asn_bit_data_t *pd) { + static char buf[2][32]; + static int n; + n = (n+1) % 2; + snprintf(buf[n], sizeof(buf[n]), + "{m=%" ASN_PRI_SIZE " span %" ASN_PRI_SIZE "[%" ASN_PRI_SIZE + "..%" ASN_PRI_SIZE "] (%" ASN_PRI_SIZE ")}", + pd->moved, ((uintptr_t)(pd->buffer) & 0xf), pd->nboff, pd->nbits, + pd->nbits - pd->nboff); + return buf[n]; +} + +void +asn_get_undo(asn_bit_data_t *pd, int nbits) { + if((ssize_t)pd->nboff < nbits) { + assert((ssize_t)pd->nboff < nbits); + } else { + pd->nboff -= nbits; + pd->moved -= nbits; + } +} + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + */ +int32_t +asn_get_few_bits(asn_bit_data_t *pd, int nbits) { + size_t off; /* Next after last bit offset */ + ssize_t nleft; /* Number of bits left in this stream */ + uint32_t accum; + const uint8_t *buf; + + if(nbits < 0) + return -1; + + nleft = pd->nbits - pd->nboff; + if(nbits > nleft) { + int32_t tailv, vhead; + if(!pd->refill || nbits > 31) return -1; + /* Accumulate unused bytes before refill */ + ASN_DEBUG("Obtain the rest %d bits (want %d)", + (int)nleft, (int)nbits); + tailv = asn_get_few_bits(pd, nleft); + if(tailv < 0) return -1; + /* Refill (replace pd contents with new data) */ + if(pd->refill(pd)) + return -1; + nbits -= nleft; + vhead = asn_get_few_bits(pd, nbits); + /* Combine the rest of previous pd with the head of new one */ + tailv = (tailv << nbits) | vhead; /* Could == -1 */ + return tailv; + } + + /* + * Normalize position indicator. + */ + if(pd->nboff >= 8) { + pd->buffer += (pd->nboff >> 3); + pd->nbits -= (pd->nboff & ~0x07); + pd->nboff &= 0x07; + } + pd->moved += nbits; + pd->nboff += nbits; + off = pd->nboff; + buf = pd->buffer; + + /* + * Extract specified number of bits. + */ + if(off <= 8) + accum = nbits ? (buf[0]) >> (8 - off) : 0; + else if(off <= 16) + accum = ((buf[0] << 8) + buf[1]) >> (16 - off); + else if(off <= 24) + accum = ((buf[0] << 16) + (buf[1] << 8) + buf[2]) >> (24 - off); + else if(off <= 31) + accum = (((uint32_t)buf[0] << 24) + (buf[1] << 16) + + (buf[2] << 8) + (buf[3])) >> (32 - off); + else if(nbits <= 31) { + asn_bit_data_t tpd = *pd; + /* Here are we with our 31-bits limit plus 1..7 bits offset. */ + asn_get_undo(&tpd, nbits); + /* The number of available bits in the stream allow + * for the following operations to take place without + * invoking the ->refill() function */ + accum = asn_get_few_bits(&tpd, nbits - 24) << 24; + accum |= asn_get_few_bits(&tpd, 24); + } else { + asn_get_undo(pd, nbits); + return -1; + } + + accum &= (((uint32_t)1 << nbits) - 1); + + ASN_DEBUG(" [PER got %2d<=%2d bits => span %d %+ld[%d..%d]:%02x (%d) => 0x%x]", + (int)nbits, (int)nleft, + (int)pd->moved, + (((long)pd->buffer) & 0xf), + (int)pd->nboff, (int)pd->nbits, + ((pd->buffer != NULL)?pd->buffer[0]:0), + (int)(pd->nbits - pd->nboff), + (int)accum); + + return accum; +} + +/* + * Extract a large number of bits from the specified PER data pointer. + */ +int +asn_get_many_bits(asn_bit_data_t *pd, uint8_t *dst, int alright, int nbits) { + int32_t value; + + if(alright && (nbits & 7)) { + /* Perform right alignment of a first few bits */ + value = asn_get_few_bits(pd, nbits & 0x07); + if(value < 0) return -1; + *dst++ = value; /* value is already right-aligned */ + nbits &= ~7; + } + + while(nbits) { + if(nbits >= 24) { + value = asn_get_few_bits(pd, 24); + if(value < 0) return -1; + *(dst++) = value >> 16; + *(dst++) = value >> 8; + *(dst++) = value; + nbits -= 24; + } else { + value = asn_get_few_bits(pd, nbits); + if(value < 0) return -1; + if(nbits & 7) { /* implies left alignment */ + value <<= 8 - (nbits & 7), + nbits += 8 - (nbits & 7); + if(nbits > 24) + *dst++ = value >> 24; + } + if(nbits > 16) + *dst++ = value >> 16; + if(nbits > 8) + *dst++ = value >> 8; + *dst++ = value; + break; + } + } + + return 0; +} + +/* + * Put a small number of bits (<= 31). + */ +int +asn_put_few_bits(asn_bit_outp_t *po, uint32_t bits, int obits) { + size_t off; /* Next after last bit offset */ + size_t omsk; /* Existing last byte meaningful bits mask */ + uint8_t *buf; + + if(obits <= 0 || obits >= 32) return obits ? -1 : 0; + + ASN_DEBUG("[PER put %d bits %x to %p+%d bits]", + obits, (int)bits, (void *)po->buffer, (int)po->nboff); + + /* + * Normalize position indicator. + */ + if(po->nboff >= 8) { + po->buffer += (po->nboff >> 3); + po->nbits -= (po->nboff & ~0x07); + po->nboff &= 0x07; + } + + /* + * Flush whole-bytes output, if necessary. + */ + if(po->nboff + obits > po->nbits) { + size_t complete_bytes; + if(!po->buffer) po->buffer = po->tmpspace; + complete_bytes = (po->buffer - po->tmpspace); + ASN_DEBUG("[PER output %ld complete + %ld]", + (long)complete_bytes, (long)po->flushed_bytes); + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) + return -1; + if(po->nboff) + po->tmpspace[0] = po->buffer[0]; + po->buffer = po->tmpspace; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + } + + /* + * Now, due to sizeof(tmpspace), we are guaranteed large enough space. + */ + buf = po->buffer; + omsk = ~((1 << (8 - po->nboff)) - 1); + off = (po->nboff + obits); + + /* Clear data of debris before meaningful bits */ + bits &= (((uint32_t)1 << obits) - 1); + + ASN_DEBUG("[PER out %d %u/%x (t=%d,o=%d) %x&%x=%x]", obits, + (int)bits, (int)bits, + (int)po->nboff, (int)off, + buf[0], (int)(omsk&0xff), + (int)(buf[0] & omsk)); + + if(off <= 8) /* Completely within 1 byte */ + po->nboff = off, + bits <<= (8 - off), + buf[0] = (buf[0] & omsk) | bits; + else if(off <= 16) + po->nboff = off, + bits <<= (16 - off), + buf[0] = (buf[0] & omsk) | (bits >> 8), + buf[1] = bits; + else if(off <= 24) + po->nboff = off, + bits <<= (24 - off), + buf[0] = (buf[0] & omsk) | (bits >> 16), + buf[1] = bits >> 8, + buf[2] = bits; + else if(off <= 31) + po->nboff = off, + bits <<= (32 - off), + buf[0] = (buf[0] & omsk) | (bits >> 24), + buf[1] = bits >> 16, + buf[2] = bits >> 8, + buf[3] = bits; + else { + if(asn_put_few_bits(po, bits >> (obits - 24), 24)) return -1; + if(asn_put_few_bits(po, bits, obits - 24)) return -1; + } + + ASN_DEBUG("[PER out %u/%x => %02x buf+%ld]", + (int)bits, (int)bits, buf[0], + (long)(po->buffer - po->tmpspace)); + + return 0; +} + + +/* + * Output a large number of bits. + */ +int +asn_put_many_bits(asn_bit_outp_t *po, const uint8_t *src, int nbits) { + + while(nbits) { + uint32_t value; + + if(nbits >= 24) { + value = (src[0] << 16) | (src[1] << 8) | src[2]; + src += 3; + nbits -= 24; + if(asn_put_few_bits(po, value, 24)) + return -1; + } else { + value = src[0]; + if(nbits > 8) + value = (value << 8) | src[1]; + if(nbits > 16) + value = (value << 8) | src[2]; + if(nbits & 0x07) + value >>= (8 - (nbits & 0x07)); + if(asn_put_few_bits(po, value, nbits)) + return -1; + break; + } + } + + return 0; +} + + +int +asn_put_aligned_flush(asn_bit_outp_t *po) { + uint32_t unused_bits = (0x7 & (8 - (po->nboff & 0x07))); + size_t complete_bytes = + (po->buffer ? po->buffer - po->tmpspace : 0) + ((po->nboff + 7) >> 3); + + if(unused_bits) { + po->buffer[po->nboff >> 3] &= ~0u << unused_bits; + } + + if(po->output(po->tmpspace, complete_bytes, po->op_key) < 0) { + return -1; + } else { + po->buffer = po->tmpspace; + po->nboff = 0; + po->nbits = 8 * sizeof(po->tmpspace); + po->flushed_bytes += complete_bytes; + return 0; + } +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_bit_data.h b/setup/xapp-bs-connector/asn1c_defs/asn_bit_data.h new file mode 100644 index 0000000..59de7af --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_bit_data.h @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_BIT_DATA +#define ASN_BIT_DATA + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * This structure describes a position inside an incoming PER bit stream. + */ +typedef struct asn_bit_data_s { + const uint8_t *buffer; /* Pointer to the octet stream */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits in the stream */ + size_t moved; /* Number of bits moved through this bit stream */ + int (*refill)(struct asn_bit_data_s *); + void *refill_key; +} asn_bit_data_t; + +/* + * Create a contiguous non-refillable bit data structure. + * Can be freed by FREEMEM(). + */ +asn_bit_data_t *asn_bit_data_new_contiguous(const void *data, size_t size_bits); + +/* + * Extract a small number of bits (<= 31) from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int32_t asn_get_few_bits(asn_bit_data_t *, int get_nbits); + +/* Undo the immediately preceeding "get_few_bits" operation */ +void asn_get_undo(asn_bit_data_t *, int get_nbits); + +/* + * Extract a large number of bits from the specified PER data pointer. + * This function returns -1 if the specified number of bits could not be + * extracted due to EOD or other conditions. + */ +int asn_get_many_bits(asn_bit_data_t *, uint8_t *dst, int right_align, + int get_nbits); + +/* Non-thread-safe debugging function, don't use it */ +char *asn_bit_data_string(asn_bit_data_t *); + +/* + * This structure supports forming bit output. + */ +typedef struct asn_bit_outp_s { + uint8_t *buffer; /* Pointer into the (tmpspace) */ + size_t nboff; /* Bit offset to the meaningful bit */ + size_t nbits; /* Number of bits left in (tmpspace) */ + uint8_t tmpspace[32]; /* Preliminary storage to hold data */ + int (*output)(const void *data, size_t size, void *op_key); + void *op_key; /* Key for (output) data callback */ + size_t flushed_bytes; /* Bytes already flushed through (output) */ +} asn_bit_outp_t; + +/* Output a small number of bits (<= 31) */ +int asn_put_few_bits(asn_bit_outp_t *, uint32_t bits, int obits); + +/* Output a large number of bits */ +int asn_put_many_bits(asn_bit_outp_t *, const uint8_t *src, int put_nbits); + +/* + * Flush whole bytes (0 or more) through (outper) member. + * The least significant bits which are not used are guaranteed to be set to 0. + * Returns -1 if callback returns -1. Otherwise, 0. + */ +int asn_put_aligned_flush(asn_bit_outp_t *); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_BIT_DATA */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_codecs.h b/setup/xapp-bs-connector/asn1c_defs/asn_codecs.h new file mode 100644 index 0000000..e75c270 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_codecs.h @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_H +#define ASN_CODECS_H + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * This structure defines a set of parameters that may be passed + * to every ASN.1 encoder or decoder function. + * WARNING: if max_stack_size member is set, and you are calling the + * function pointers of the asn_TYPE_descriptor_t directly, + * this structure must be ALLOCATED ON THE STACK! + * If you can't always satisfy this requirement, use ber_decode(), + * xer_decode() and uper_decode() functions instead. + */ +typedef struct asn_codec_ctx_s { + /* + * Limit the decoder routines to use no (much) more stack than a given + * number of bytes. Most of decoders are stack-based, and this + * would protect against stack overflows if the number of nested + * encodings is high. + * The OCTET STRING, BIT STRING and ANY BER decoders are heap-based, + * and are safe from this kind of overflow. + * A value from getrlimit(RLIMIT_STACK) may be used to initialize + * this variable. Be careful in multithreaded environments, as the + * stack size is rather limited. + */ + size_t max_stack_size; /* 0 disables stack bounds checking */ +} asn_codec_ctx_t; + +/* + * Type of the return value of the encoding functions (der_encode, xer_encode). + */ +typedef struct asn_enc_rval_s { + /* + * Number of bytes encoded. + * -1 indicates failure to encode the structure. + * In this case, the members below this one are meaningful. + */ + ssize_t encoded; + + /* + * Members meaningful when (encoded == -1), for post mortem analysis. + */ + + /* Type which cannot be encoded */ + const struct asn_TYPE_descriptor_s *failed_type; + + /* Pointer to the structure of that type */ + const void *structure_ptr; +} asn_enc_rval_t; +#define ASN__ENCODE_FAILED do { \ + asn_enc_rval_t tmp_error; \ + tmp_error.encoded = -1; \ + tmp_error.failed_type = td; \ + tmp_error.structure_ptr = sptr; \ + ASN_DEBUG("Failed to encode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__ENCODED_OK(rval) do { \ + rval.structure_ptr = 0; \ + rval.failed_type = 0; \ + return rval; \ +} while(0) + +/* + * Type of the return value of the decoding functions (ber_decode, xer_decode) + * + * Please note that the number of consumed bytes is ALWAYS meaningful, + * even if code==RC_FAIL. This is to indicate the number of successfully + * decoded bytes, hence providing a possibility to fail with more diagnostics + * (i.e., print the offending remainder of the buffer). + */ +enum asn_dec_rval_code_e { + RC_OK, /* Decoded successfully */ + RC_WMORE, /* More data expected, call again */ + RC_FAIL /* Failure to decode data */ +}; +typedef struct asn_dec_rval_s { + enum asn_dec_rval_code_e code; /* Result code */ + size_t consumed; /* Number of bytes consumed */ +} asn_dec_rval_t; +#define ASN__DECODE_FAILED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_FAIL; \ + tmp_error.consumed = 0; \ + ASN_DEBUG("Failed to decode element %s", td ? td->name : ""); \ + return tmp_error; \ +} while(0) +#define ASN__DECODE_STARVED do { \ + asn_dec_rval_t tmp_error; \ + tmp_error.code = RC_WMORE; \ + tmp_error.consumed = 0; \ + return tmp_error; \ +} while(0) + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_codecs_prim.c b/setup/xapp-bs-connector/asn1c_defs/asn_codecs_prim.c new file mode 100644 index 0000000..fc24247 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_codecs_prim.c @@ -0,0 +1,317 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Decode an always-primitive type. + */ +asn_dec_rval_t +ber_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buf_ptr, size_t size, int tag_mode) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr; + asn_dec_rval_t rval; + ber_tlv_len_t length = 0; /* =0 to avoid [incorrect] warning. */ + + /* + * If the structure is not there, allocate it. + */ + if(st == NULL) { + st = (ASN__PRIMITIVE_TYPE_t *)CALLOC(1, sizeof(*st)); + if(st == NULL) ASN__DECODE_FAILED; + *sptr = (void *)st; + } + + ASN_DEBUG("Decoding %s as plain primitive (tm=%d)", + td->name, tag_mode); + + /* + * Check tags and extract value length. + */ + rval = ber_check_tags(opt_codec_ctx, td, 0, buf_ptr, size, + tag_mode, 0, &length, 0); + if(rval.code != RC_OK) + return rval; + + ASN_DEBUG("%s length is %d bytes", td->name, (int)length); + + /* + * Make sure we have this length. + */ + buf_ptr = ((const char *)buf_ptr) + rval.consumed; + size -= rval.consumed; + if(length > (ber_tlv_len_t)size) { + rval.code = RC_WMORE; + rval.consumed = 0; + return rval; + } + + st->size = (int)length; + /* The following better be optimized away. */ + if(sizeof(st->size) != sizeof(length) + && (ber_tlv_len_t)st->size != length) { + st->size = 0; + ASN__DECODE_FAILED; + } + + st->buf = (uint8_t *)MALLOC(length + 1); + if(!st->buf) { + st->size = 0; + ASN__DECODE_FAILED; + } + + memcpy(st->buf, buf_ptr, length); + st->buf[length] = '\0'; /* Just in case */ + + rval.code = RC_OK; + rval.consumed += length; + + ASN_DEBUG("Took %ld/%ld bytes to encode %s", + (long)rval.consumed, + (long)length, td->name); + + return rval; +} + +/* + * Encode an always-primitive type using DER. + */ +asn_enc_rval_t +der_encode_primitive(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t erval = {0,0,0}; + const ASN__PRIMITIVE_TYPE_t *st = (const ASN__PRIMITIVE_TYPE_t *)sptr; + + ASN_DEBUG("%s %s as a primitive type (tm=%d)", + cb?"Encoding":"Estimating", td->name, tag_mode); + + erval.encoded = der_write_tags(td, st->size, tag_mode, 0, tag, + cb, app_key); + ASN_DEBUG("%s wrote tags %d", td->name, (int)erval.encoded); + if(erval.encoded == -1) { + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + + if(cb && st->buf) { + if(cb(st->buf, st->size, app_key) < 0) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = sptr; + return erval; + } + } else { + assert(st->buf || st->size == 0); + } + + erval.encoded += st->size; + ASN__ENCODED_OK(erval); +} + +void +ASN__PRIMITIVE_TYPE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)sptr; + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as a primitive type", td->name); + + if(st->buf) + FREEMEM(st->buf); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(sptr, 0, sizeof(ASN__PRIMITIVE_TYPE_t)); + break; + } +} + + +/* + * Local internal type passed around as an argument. + */ +struct xdp_arg_s { + const asn_TYPE_descriptor_t *type_descriptor; + void *struct_key; + xer_primitive_body_decoder_f *prim_body_decoder; + int decoded_something; + int want_more; +}; + +/* + * Since some kinds of primitive values can be encoded using value-specific + * tags (, , etc), the primitive decoder must + * be supplied with such tags to parse them as needed. + */ +static int +xer_decode__unexpected_tag(void *key, const void *chunk_buf, size_t chunk_size) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + + /* + * The chunk_buf is guaranteed to start at '<'. + */ + assert(chunk_size && ((const char *)chunk_buf)[0] == 0x3c); + + /* + * Decoding was performed once already. Prohibit doing it again. + */ + if(arg->decoded_something) + return -1; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return 0; + } + + return -1; +} + +static ssize_t +xer_decode__primitive_body(void *key, const void *chunk_buf, size_t chunk_size, int have_more) { + struct xdp_arg_s *arg = (struct xdp_arg_s *)key; + enum xer_pbd_rval bret; + size_t lead_wsp_size; + + if(arg->decoded_something) { + if(xer_whitespace_span(chunk_buf, chunk_size) == chunk_size) { + /* + * Example: + * "123 " + * ^- chunk_buf position. + */ + return chunk_size; + } + /* + * Decoding was done once already. Prohibit doing it again. + */ + return -1; + } + + if(!have_more) { + /* + * If we've received something like "1", we can't really + * tell whether it is really `1` or `123`, until we know + * that there is no more data coming. + * The have_more argument will be set to 1 once something + * like this is available to the caller of this callback: + * "1want_more = 1; + return -1; + } + + lead_wsp_size = xer_whitespace_span(chunk_buf, chunk_size); + chunk_buf = (const char *)chunk_buf + lead_wsp_size; + chunk_size -= lead_wsp_size; + + bret = arg->prim_body_decoder(arg->type_descriptor, + arg->struct_key, chunk_buf, chunk_size); + switch(bret) { + case XPBD_SYSTEM_FAILURE: + case XPBD_DECODER_LIMIT: + case XPBD_BROKEN_ENCODING: + break; + case XPBD_BODY_CONSUMED: + /* Tag decoded successfully */ + arg->decoded_something = 1; + /* Fall through */ + case XPBD_NOT_BODY_IGNORE: /* Safe to proceed further */ + return lead_wsp_size + chunk_size; + } + + return -1; +} + + +asn_dec_rval_t +xer_decode_primitive(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + size_t struct_size, const char *opt_mname, + const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder) { + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + asn_struct_ctx_t s_ctx; + struct xdp_arg_s s_arg; + asn_dec_rval_t rc; + + /* + * Create the structure if does not exist. + */ + if(!*sptr) { + *sptr = CALLOC(1, struct_size); + if(!*sptr) ASN__DECODE_FAILED; + } + + memset(&s_ctx, 0, sizeof(s_ctx)); + s_arg.type_descriptor = td; + s_arg.struct_key = *sptr; + s_arg.prim_body_decoder = prim_body_decoder; + s_arg.decoded_something = 0; + s_arg.want_more = 0; + + rc = xer_decode_general(opt_codec_ctx, &s_ctx, &s_arg, + xml_tag, buf_ptr, size, + xer_decode__unexpected_tag, xer_decode__primitive_body); + switch(rc.code) { + case RC_OK: + if(!s_arg.decoded_something) { + char ch; + ASN_DEBUG("Primitive body is not recognized, " + "supplying empty one"); + /* + * Decoding opportunity has come and gone. + * Where's the result? + * Try to feed with empty body, see if it eats it. + */ + if(prim_body_decoder(s_arg.type_descriptor, + s_arg.struct_key, &ch, 0) + != XPBD_BODY_CONSUMED) { + /* + * This decoder does not like empty stuff. + */ + ASN__DECODE_FAILED; + } + } + break; + case RC_WMORE: + /* + * Redo the whole thing later. + * We don't have a context to save intermediate parsing state. + */ + rc.consumed = 0; + break; + case RC_FAIL: + rc.consumed = 0; + if(s_arg.want_more) + rc.code = RC_WMORE; + else + ASN__DECODE_FAILED; + break; + } + return rc; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_codecs_prim.h b/setup/xapp-bs-connector/asn1c_defs/asn_codecs_prim.h new file mode 100644 index 0000000..fbc5576 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_codecs_prim.h @@ -0,0 +1,51 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_CODECS_PRIM_H +#define ASN_CODECS_PRIM_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct ASN__PRIMITIVE_TYPE_s { + uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */ + size_t size; /* Size of the buffer */ +} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */ + +asn_struct_free_f ASN__PRIMITIVE_TYPE_free; +ber_type_decoder_f ber_decode_primitive; +der_type_encoder_f der_encode_primitive; + +/* + * A callback specification for the xer_decode_primitive() function below. + */ +enum xer_pbd_rval { + XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */ + XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */ + XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */ + XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */ + XPBD_BODY_CONSUMED /* Body is recognized and consumed */ +}; +typedef enum xer_pbd_rval(xer_primitive_body_decoder_f)( + const asn_TYPE_descriptor_t *td, void *struct_ptr, const void *chunk_buf, + size_t chunk_size); + +/* + * Specific function to decode simple primitive types. + * Also see xer_decode_general() in xer_decoder.h + */ +asn_dec_rval_t xer_decode_primitive( + const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + size_t struct_size, const char *opt_mname, const void *buf_ptr, size_t size, + xer_primitive_body_decoder_f *prim_body_decoder); + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_CODECS_PRIM_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_constant.h b/setup/xapp-bs-connector/asn1c_defs/asn_constant.h new file mode 100644 index 0000000..cdae2a4 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_constant.h @@ -0,0 +1,23 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +#ifndef _ASN_CONSTANT_H +#define _ASN_CONSTANT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#define maxProtocolIEs (65535) +#define maxnoofErrors (256) +#define maxofRANfunctionID (256) +#define maxofRICactionID (16) +#define maxofRANParameters (255) + + +#ifdef __cplusplus +} +#endif + +#endif /* _ASN_CONSTANT_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_internal.c b/setup/xapp-bs-connector/asn1c_defs/asn_internal.c new file mode 100644 index 0000000..1aff95f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_internal.c @@ -0,0 +1,48 @@ +#include + +ssize_t +asn__format_to_callback(int (*cb)(const void *, size_t, void *key), void *key, + const char *fmt, ...) { + char scratch[64]; + char *buf = scratch; + size_t buf_size = sizeof(scratch); + int wrote; + int cb_ret; + + do { + va_list args; + va_start(args, fmt); + + wrote = vsnprintf(buf, buf_size, fmt, args); + if(wrote < (ssize_t)buf_size) { + if(wrote < 0) { + if(buf != scratch) FREEMEM(buf); + va_end(args); + return -1; + } + break; + } + + buf_size <<= 1; + if(buf == scratch) { + buf = MALLOC(buf_size); + if(!buf) return -1; + } else { + void *p = REALLOC(buf, buf_size); + if(!p) { + FREEMEM(buf); + return -1; + } + buf = p; + } + } while(1); + + cb_ret = cb(buf, wrote, key); + if(buf != scratch) FREEMEM(buf); + if(cb_ret < 0) { + return -1; + } + + return wrote; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_internal.h b/setup/xapp-bs-connector/asn1c_defs/asn_internal.h new file mode 100644 index 0000000..c4105ad --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_internal.h @@ -0,0 +1,159 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Declarations internally useful for the ASN.1 support code. + */ +#ifndef ASN_INTERNAL_H +#define ASN_INTERNAL_H +#define __EXTENSIONS__ /* for Sun */ + +#include "asn_application.h" /* Application-visible API */ + +#ifndef __NO_ASSERT_H__ /* Include assert.h only for internal use. */ +#include /* for assert() macro */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Environment version might be used to avoid running with the old library */ +#define ASN1C_ENVIRONMENT_VERSION 923 /* Compile-time version */ +int get_asn1c_environment_version(void); /* Run-time version */ + +#define CALLOC(nmemb, size) calloc(nmemb, size) +#define MALLOC(size) malloc(size) +#define REALLOC(oldptr, size) realloc(oldptr, size) +#define FREEMEM(ptr) free(ptr) + +#define asn_debug_indent 0 +#define ASN_DEBUG_INDENT_ADD(i) do{}while(0) + +#ifdef EMIT_ASN_DEBUG +#warning "Use ASN_EMIT_DEBUG instead of EMIT_ASN_DEBUG" +#define ASN_EMIT_DEBUG EMIT_ASN_DEBUG +#endif + +/* + * A macro for debugging the ASN.1 internals. + * You may enable or override it. + */ +#ifndef ASN_DEBUG /* If debugging code is not defined elsewhere... */ +#if ASN_EMIT_DEBUG == 1 /* And it was asked to emit this code... */ +#if !defined(BELL_LABS) /* Bell Labs */ + //#if __STDC_VERSION__ >= 199901L +#ifdef ASN_THREAD_SAFE +/* Thread safety requires sacrifice in output indentation: + * Retain empty definition of ASN_DEBUG_INDENT_ADD. */ +#else /* !ASN_THREAD_SAFE */ +#undef ASN_DEBUG_INDENT_ADD +#undef asn_debug_indent +int asn_debug_indent; +#define ASN_DEBUG_INDENT_ADD(i) do { asn_debug_indent += i; } while(0) +#endif /* ASN_THREAD_SAFE */ +#if defined(BELL_LABS) /* Bell Labs version */ +extern int logAsn1c(const char *filename, int linenumber, const char *format, ...); +#define ASN_DEBUG(fmt, args...) do { \ + (void) logAsn1c(__FILE__, __LINE__, fmt, ##args); \ + } while(0) +#else +#define ASN_DEBUG(fmt, args...) do { \ + int adi = asn_debug_indent; \ + while(adi--) fprintf(stderr, " "); \ + fprintf(stderr, fmt, ##args); \ + fprintf(stderr, " (%s:%d)\n", \ + __FILE__, __LINE__); \ + } while(0) +#endif /* BELL_LABS */ +#else /* !C99 */ +void CC_PRINTFLIKE(1, 2) ASN_DEBUG_f(const char *fmt, ...); +#define ASN_DEBUG ASN_DEBUG_f +#endif /* C99 */ +#else /* ASN_EMIT_DEBUG != 1 */ +#if __STDC_VERSION__ >= 199901L +#define ASN_DEBUG(...) do{}while(0) +#else /* not C99 */ +static void CC_PRINTFLIKE(1, 2) ASN_DEBUG(const char *fmt, ...) { (void)fmt; } +#endif /* C99 or better */ +#endif /* ASN_EMIT_DEBUG */ +#endif /* ASN_DEBUG */ + +/* + * Print to a callback. + * The callback is expected to return negative values on error. + * 0 and positive values are treated as success. + * RETURN VALUES: + * -1: Failed to format or invoke the callback. + * >0: Size of the data that got delivered to the callback. + */ +ssize_t CC_PRINTFLIKE(3, 4) +asn__format_to_callback( + int (*callback)(const void *, size_t, void *key), void *key, + const char *fmt, ...); + +/* + * Invoke the application-supplied callback and fail, if something is wrong. + */ +#define ASN__E_cbc(buf, size) (cb((buf), (size), app_key) < 0) +#define ASN__E_CALLBACK(size, foo) \ + do { \ + if(foo) goto cb_failed; \ + er.encoded += (size); \ + } while(0) +#define ASN__CALLBACK(buf, size) ASN__E_CALLBACK(size, ASN__E_cbc(buf, size)) +#define ASN__CALLBACK2(buf1, size1, buf2, size2) \ + ASN__E_CALLBACK((size1) + (size2), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2)) +#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3) \ + ASN__E_CALLBACK((size1) + (size2) + (size3), \ + ASN__E_cbc(buf1, size1) || ASN__E_cbc(buf2, size2) \ + || ASN__E_cbc(buf3, size3)) + +#define ASN__TEXT_INDENT(nl, level) \ + do { \ + int tmp_level = (level); \ + int tmp_nl = ((nl) != 0); \ + int tmp_i; \ + if(tmp_nl) ASN__CALLBACK("\n", 1); \ + if(tmp_level < 0) tmp_level = 0; \ + for(tmp_i = 0; tmp_i < tmp_level; tmp_i++) ASN__CALLBACK(" ", 4); \ + } while(0) + +#define _i_INDENT(nl) do { \ + int tmp_i; \ + if((nl) && cb("\n", 1, app_key) < 0) \ + return -1; \ + for(tmp_i = 0; tmp_i < ilevel; tmp_i++) \ + if(cb(" ", 4, app_key) < 0) \ + return -1; \ + } while(0) + +/* + * Check stack against overflow, if limit is set. + */ +#define ASN__DEFAULT_STACK_MAX (30000) +static int CC_NOTUSED +ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx) { + if(ctx && ctx->max_stack_size) { + + /* ctx MUST be allocated on the stack */ + ptrdiff_t usedstack = ((const char *)ctx - (const char *)&ctx); + if(usedstack > 0) usedstack = -usedstack; /* grows up! */ + + /* double negative required to avoid int wrap-around */ + if(usedstack < -(ptrdiff_t)ctx->max_stack_size) { + ASN_DEBUG("Stack limit %ld reached", + (long)ctx->max_stack_size); + return -1; + } + } + return 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_INTERNAL_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_ioc.h b/setup/xapp-bs-connector/asn1c_defs/asn_ioc.h new file mode 100644 index 0000000..7de210e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_ioc.h @@ -0,0 +1,51 @@ +/* + * Run-time support for Information Object Classes. + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_IOC_H +#define ASN_IOC_H + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; +struct asn_ioc_cell_s; + +/* + * X.681, #13 + */ +typedef struct asn_ioc_set_s { + size_t rows_count; + size_t columns_count; + const struct asn_ioc_cell_s *rows; +} asn_ioc_set_t; + + +typedef struct asn_ioc_cell_s { + const char *field_name; /* Is equal to corresponding column_name */ + enum { + aioc__undefined = 0, + aioc__value, + aioc__type, + aioc__open_type, + } cell_kind; + struct asn_TYPE_descriptor_s *type_descriptor; + const void *value_sptr; + struct { + size_t types_count; + struct { + unsigned choice_position; + } *types; + } open_type; +} asn_ioc_cell_t; + + +#ifdef __cplusplus +} +#endif + +#endif /* ASN_IOC_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_random_fill.c b/setup/xapp-bs-connector/asn1c_defs/asn_random_fill.c new file mode 100644 index 0000000..819cf70 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_random_fill.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +int +asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t length) { + + if(td && td->op->random_fill) { + asn_random_fill_result_t res = + td->op->random_fill(td, struct_ptr, 0, length); + return (res.code == ARFILL_OK) ? 0 : -1; + } else { + return -1; + } +} + +static uintmax_t +asn__intmax_range(intmax_t lb, intmax_t ub) { + assert(lb <= ub); + if((ub < 0) == (lb < 0)) { + return ub - lb; + } else if(lb < 0) { + return 1 + ((uintmax_t)ub + (uintmax_t)-(lb + 1)); + } else { + assert(!"Unreachable"); + return 0; + } +} + +intmax_t +asn_random_between(intmax_t lb, intmax_t rb) { + if(lb == rb) { + return lb; + } else { + const uintmax_t intmax_max = ((~(uintmax_t)0) >> 1); + uintmax_t range = asn__intmax_range(lb, rb); + uintmax_t value = 0; + uintmax_t got_entropy = 0; + + assert(RAND_MAX > 0xffffff); /* Seen 7ffffffd! */ + assert(range < intmax_max); + + for(; got_entropy < range;) { + got_entropy = (got_entropy << 24) | 0xffffff; + value = (value << 24) | (random() % 0xffffff); + } + + return lb + (intmax_t)(value % (range + 1)); + } +} diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_random_fill.h b/setup/xapp-bs-connector/asn1c_defs/asn_random_fill.h new file mode 100644 index 0000000..47f9b8a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_random_fill.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN_RANDOM_FILL +#define ASN_RANDOM_FILL + +/* Forward declarations */ +struct asn_TYPE_descriptor_s; +struct asn_encoding_constraints_s; + +/* + * Initialize a structure with random data according to the type specification + * and optional member constraints. + * ARGUMENTS: + * (max_length) - See (approx_max_length_limit). + * (memb_constraints) - Member constraints, if exist. + * The type can be constrained differently according + * to PER and OER specifications, so we find a value + * at the intersection of these constraints. + * In case the return differs from ARFILL_OK, the (struct_ptr) contents + * and (current_length) value remain in their original state. + */ +typedef struct asn_random_fill_result_s { + enum { + ARFILL_FAILED = -1, /* System error (memory?) */ + ARFILL_OK = 0, /* Initialization succeeded */ + ARFILL_SKIPPED = 1 /* Not done due to (length?) constraint */ + } code; + size_t length; /* Approximate number of bytes created. */ +} asn_random_fill_result_t; +typedef asn_random_fill_result_t(asn_random_fill_f)( + const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + const struct asn_encoding_constraints_s *memb_constraints, + size_t max_length); + +/* + * Returns 0 if the structure was properly initialized, -1 otherwise. + * The (approx_max_length_limit) specifies the approximate limit of the + * resulting structure in units closely resembling bytes. The actual result + * might be several times larger or smaller than the length limit. + */ +int asn_random_fill(const struct asn_TYPE_descriptor_s *td, void **struct_ptr, + size_t approx_max_length_limit); + +/* + * Returns a random number between min and max. + */ +intmax_t asn_random_between(intmax_t min, intmax_t max); + +#endif /* ASN_RANDOM_FILL */ diff --git a/setup/xapp-bs-connector/asn1c_defs/asn_system.h b/setup/xapp-bs-connector/asn1c_defs/asn_system.h new file mode 100644 index 0000000..fa8cf11 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/asn_system.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * Miscellaneous system-dependent types. + */ +#ifndef ASN_SYSTEM_H +#define ASN_SYSTEM_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifndef _DEFAULT_SOURCE +#define _DEFAULT_SOURCE 1 +#endif + +#ifndef _BSD_SOURCE +#define _BSD_SOURCE /* for snprintf() on some linux systems */ +#endif + +#include /* For snprintf(3) */ +#include /* For *alloc(3) */ +#include /* For memcpy(3) */ +#include /* For size_t */ +#include /* For LONG_MAX */ +#include /* For va_start */ +#include /* for offsetof and ptrdiff_t */ + +#ifdef _WIN32 + +#include +#define snprintf _snprintf +#define vsnprintf _vsnprintf + +/* To avoid linking with ws2_32.lib, here's the definition of ntohl() */ +#define sys_ntohl(l) ((((l) << 24) & 0xff000000) \ + | (((l) << 8) & 0xff0000) \ + | (((l) >> 8) & 0xff00) \ + | ((l >> 24) & 0xff)) + +#ifdef _MSC_VER /* MSVS.Net */ +#ifndef __cplusplus +#define inline __inline +#endif +#ifndef ASSUMESTDTYPES /* Standard types have been defined elsewhere */ +#define ssize_t SSIZE_T +#if _MSC_VER < 1600 +typedef char int8_t; +typedef short int16_t; +typedef int int32_t; +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned int uint32_t; +#else /* _MSC_VER >= 1600 */ +#include +#endif /* _MSC_VER < 1600 */ +#endif /* ASSUMESTDTYPES */ +#define WIN32_LEAN_AND_MEAN +#include +#include +#define isnan _isnan +#define finite _finite +#define copysign _copysign +#define ilogb _logb +#else /* !_MSC_VER */ +#include +#endif /* _MSC_VER */ + +#else /* !_WIN32 */ + +#if defined(__vxworks) +#include +#else /* !defined(__vxworks) */ + +#include /* C99 specifies this file */ +#include /* for ntohl() */ +#define sys_ntohl(foo) ntohl(foo) +#endif /* defined(__vxworks) */ + +#endif /* _WIN32 */ + +#if __GNUC__ >= 3 || defined(__clang__) +#define CC_ATTRIBUTE(attr) __attribute__((attr)) +#else +#define CC_ATTRIBUTE(attr) +#endif +#define CC_PRINTFLIKE(fmt, var) CC_ATTRIBUTE(format(printf, fmt, var)) +#define CC_NOTUSED CC_ATTRIBUTE(unused) +#ifndef CC_ATTR_NO_SANITIZE +#define CC_ATTR_NO_SANITIZE(what) CC_ATTRIBUTE(no_sanitize(what)) +#endif + +/* Figure out if thread safety is requested */ +#if !defined(ASN_THREAD_SAFE) && (defined(THREAD_SAFE) || defined(_REENTRANT)) +#define ASN_THREAD_SAFE +#endif /* Thread safety */ + +#ifndef offsetof /* If not defined by */ +#define offsetof(s, m) ((ptrdiff_t)&(((s *)0)->m) - (ptrdiff_t)((s *)0)) +#endif /* offsetof */ + +#ifndef MIN /* Suitable for comparing primitive types (integers) */ +#if defined(__GNUC__) +#define MIN(a,b) ({ __typeof a _a = a; __typeof b _b = b; \ + ((_a)<(_b)?(_a):(_b)); }) +#else /* !__GNUC__ */ +#define MIN(a,b) ((a)<(b)?(a):(b)) /* Unsafe variant */ +#endif /* __GNUC__ */ +#endif /* MIN */ + +#if __STDC_VERSION__ >= 199901L +#ifndef SIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#endif + +#ifndef RSIZE_MAX /* C11, Annex K */ +#define RSIZE_MAX (SIZE_MAX >> 1) +#endif +#ifndef RSSIZE_MAX /* Halve signed size even further than unsigned */ +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif +#else /* Old compiler */ +#undef SIZE_MAX +#undef RSIZE_MAX +#undef RSSIZE_MAX +#define SIZE_MAX ((~((size_t)0)) >> 1) +#define RSIZE_MAX (SIZE_MAX >> 1) +#define RSSIZE_MAX ((ssize_t)(RSIZE_MAX >> 1)) +#endif + +#if __STDC_VERSION__ >= 199901L +#define ASN_PRI_SIZE "zu" +#define ASN_PRI_SSIZE "zd" +#define ASN_PRIuMAX PRIuMAX +#define ASN_PRIdMAX PRIdMAX +#else +#define ASN_PRI_SIZE "lu" +#define ASN_PRI_SSIZE "ld" +#if LLONG_MAX > LONG_MAX +#define ASN_PRIuMAX "llu" +#define ASN_PRIdMAX "lld" +#else +#define ASN_PRIuMAX "lu" +#define ASN_PRIdMAX "ld" +#endif +#endif + +#endif /* ASN_SYSTEM_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/ber_decoder.c b/setup/xapp-bs-connector/asn1c_defs/ber_decoder.c new file mode 100644 index 0000000..75d6016 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ber_decoder.c @@ -0,0 +1,283 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) +#undef RETURN +#define RETURN(_code) do { \ + asn_dec_rval_t rval; \ + rval.code = _code; \ + if(opt_ctx) opt_ctx->step = step; /* Save context */ \ + if(_code == RC_OK || opt_ctx) \ + rval.consumed = consumed_myself; \ + else \ + rval.consumed = 0; /* Context-free */ \ + return rval; \ + } while(0) + +/* + * The BER decoder of any type. + */ +asn_dec_rval_t +ber_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *type_descriptor, void **struct_ptr, + const void *ptr, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return type_descriptor->op->ber_decoder(opt_codec_ctx, type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + ptr, size, /* Buffer and its size */ + 0 /* Default tag mode is 0 */ + ); +} + +/* + * Check the set of >> tags matches the definition. + */ +asn_dec_rval_t +ber_check_tags(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx, + const void *ptr, size_t size, int tag_mode, int last_tag_form, + ber_tlv_len_t *last_length, int *opt_tlv_form) { + ssize_t consumed_myself = 0; + ssize_t tag_len; + ssize_t len_len; + ber_tlv_tag_t tlv_tag; + ber_tlv_len_t tlv_len; + ber_tlv_len_t limit_len = -1; + int expect_00_terminators = 0; + int tlv_constr = -1; /* If CHOICE, opt_tlv_form is not given */ + int step = opt_ctx ? opt_ctx->step : 0; /* Where we left previously */ + int tagno; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + RETURN(RC_FAIL); + + /* + * So what does all this implicit skip stuff mean? + * Imagine two types, + * A ::= [5] IMPLICIT T + * B ::= [2] EXPLICIT T + * Where T is defined as + * T ::= [4] IMPLICIT SEQUENCE { ... } + * + * Let's say, we are starting to decode type A, given the + * following TLV stream: <5> <0>. What does this mean? + * It means that the type A contains type T which is, + * in turn, empty. + * Remember though, that we are still in A. We cannot + * just pass control to the type T decoder. Why? Because + * the type T decoder expects <4> <0>, not <5> <0>. + * So, we must make sure we are going to receive <5> while + * still in A, then pass control to the T decoder, indicating + * that the tag <4> was implicitly skipped. The decoder of T + * hence will be prepared to treat <4> as valid tag, and decode + * it appropriately. + */ + + tagno = step /* Continuing where left previously */ + + (tag_mode==1?-1:0) + ; + ASN_DEBUG("ber_check_tags(%s, size=%ld, tm=%d, step=%d, tagno=%d)", + td->name, (long)size, tag_mode, step, tagno); + /* assert(td->tags_count >= 1) May not be the case for CHOICE or ANY */ + + if(tag_mode == 0 && tagno == (int)td->tags_count) { + /* + * This must be the _untagged_ ANY type, + * which outermost tag isn't known in advance. + * Fetch the tag and length separately. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + ASN_DEBUG("Advancing %ld in ANY case", + (long)(tag_len + len_len)); + ADVANCE(tag_len + len_len); + } else { + assert(tagno < (int)td->tags_count); /* At least one loop */ + } + for((void)tagno; tagno < (int)td->tags_count; tagno++, step++) { + + /* + * Fetch and process T from TLV. + */ + tag_len = ber_fetch_tag(ptr, size, &tlv_tag); + ASN_DEBUG("Fetching tag from {%p,%ld}: " + "len %ld, step %d, tagno %d got %s", + ptr, (long)size, + (long)tag_len, step, tagno, + ber_tlv_tag_string(tlv_tag)); + switch(tag_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + tlv_constr = BER_TLV_CONSTRUCTED(ptr); + + /* + * If {I}, don't check anything. + * If {I,B,C}, check B and C unless we're at I. + */ + if(tag_mode != 0 && step == 0) { + /* + * We don't expect tag to match here. + * It's just because we don't know how the tag + * is supposed to look like. + */ + } else { + assert(tagno >= 0); /* Guaranteed by the code above */ + if(tlv_tag != td->tags[tagno]) { + /* + * Unexpected tag. Too bad. + */ + ASN_DEBUG("Expected: %s, " + "expectation failed (tn=%d, tm=%d)", + ber_tlv_tag_string(td->tags[tagno]), + tagno, tag_mode + ); + RETURN(RC_FAIL); + } + } + + /* + * Attention: if there are more tags expected, + * ensure that the current tag is presented + * in constructed form (it contains other tags!). + * If this one is the last one, check that the tag form + * matches the one given in descriptor. + */ + if(tagno < ((int)td->tags_count - 1)) { + if(tlv_constr == 0) { + ASN_DEBUG("tlv_constr = %d, expfail", + tlv_constr); + RETURN(RC_FAIL); + } + } else { + if(last_tag_form != tlv_constr + && last_tag_form != -1) { + ASN_DEBUG("last_tag_form %d != %d", + last_tag_form, tlv_constr); + RETURN(RC_FAIL); + } + } + + /* + * Fetch and process L from TLV. + */ + len_len = ber_fetch_length(tlv_constr, + (const char *)ptr + tag_len, size - tag_len, &tlv_len); + ASN_DEBUG("Fetching len = %ld", (long)len_len); + switch(len_len) { + case -1: RETURN(RC_FAIL); + case 0: RETURN(RC_WMORE); + } + + /* + * FIXME + * As of today, the chain of tags + * must either contain several indefinite length TLVs, + * or several definite length ones. + * No mixing is allowed. + */ + if(tlv_len == -1) { + /* + * Indefinite length. + */ + if(limit_len == -1) { + expect_00_terminators++; + } else { + ASN_DEBUG("Unexpected indefinite length " + "in a chain of definite lengths"); + RETURN(RC_FAIL); + } + ADVANCE(tag_len + len_len); + continue; + } else { + if(expect_00_terminators) { + ASN_DEBUG("Unexpected definite length " + "in a chain of indefinite lengths"); + RETURN(RC_FAIL); + } + } + + /* + * Check that multiple TLVs specify ever decreasing length, + * which is consistent. + */ + if(limit_len == -1) { + limit_len = tlv_len + tag_len + len_len; + if(limit_len < 0) { + /* Too great tlv_len value? */ + RETURN(RC_FAIL); + } + } else if(limit_len != tlv_len + tag_len + len_len) { + /* + * Inner TLV specifies length which is inconsistent + * with the outer TLV's length value. + */ + ASN_DEBUG("Outer TLV is %ld and inner is %ld", + (long)limit_len, (long)tlv_len); + RETURN(RC_FAIL); + } + + ADVANCE(tag_len + len_len); + + limit_len -= (tag_len + len_len); + if((ssize_t)size > limit_len) { + /* + * Make sure that we won't consume more bytes + * from the parent frame than the inferred limit. + */ + size = limit_len; + } + } + + if(opt_tlv_form) + *opt_tlv_form = tlv_constr; + if(expect_00_terminators) + *last_length = -expect_00_terminators; + else + *last_length = tlv_len; + + RETURN(RC_OK); +} diff --git a/setup/xapp-bs-connector/asn1c_defs/ber_decoder.h b/setup/xapp-bs-connector/asn1c_defs/ber_decoder.h new file mode 100644 index 0000000..1ac2a5e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ber_decoder.h @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_DECODER_H_ +#define _BER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_codec_ctx_s; /* Forward declaration */ + +/* + * The BER decoder of any type. + * This function may be invoked directly from the application. + * Decodes BER, DER and CER data (DER and CER are different subsets of BER). + * + * NOTE: Use the der_encode() function (der_encoder.h) to produce encoding + * which is compliant with ber_decode(). + */ +asn_dec_rval_t ber_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of that buffer */ +); + +/* + * Type of generic function which decodes the byte stream into the structure. + */ +typedef asn_dec_rval_t(ber_type_decoder_f)( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const void *buf_ptr, size_t size, int tag_mode); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Check that all tags correspond to the type definition (as given in head). + * On return, last_length would contain either a non-negative length of the + * value part of the last TLV, or the negative number of expected + * "end of content" sequences. The number may only be negative if the + * head->last_tag_form is non-zero. + */ +asn_dec_rval_t ber_check_tags( + const struct asn_codec_ctx_s *opt_codec_ctx, /* codec options */ + const struct asn_TYPE_descriptor_s *type_descriptor, + asn_struct_ctx_t *opt_ctx, /* saved decoding context */ + const void *ptr, size_t size, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {-1,0:1}: any, primitive, constr */ + ber_tlv_len_t *last_length, int *opt_tlv_form /* optional tag form */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_DECODER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/ber_tlv_length.c b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_length.c new file mode 100644 index 0000000..0a0deec --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_length.c @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r) { + const uint8_t *buf = (const uint8_t *)bufptr; + unsigned oct; + + if(size == 0) + return 0; /* Want more */ + + oct = *(const uint8_t *)buf; + if((oct & 0x80) == 0) { + /* + * Short definite length. + */ + *len_r = oct; /* & 0x7F */ + return 1; + } else { + ber_tlv_len_t len; + size_t skipped; + + if(_is_constructed && oct == 0x80) { + *len_r = -1; /* Indefinite length */ + return 1; + } + + if(oct == 0xff) { + /* Reserved in standard for future use. */ + return -1; + } + + oct &= 0x7F; /* Leave only the 7 LS bits */ + for(len = 0, buf++, skipped = 1; + oct && (++skipped <= size); buf++, oct--) { + + /* Verify that we won't overflow. */ + if(!(len >> ((8 * sizeof(len)) - (8+1)))) { + len = (len << 8) | *buf; + } else { + /* Too large length value. */ + return -1; + } + } + + if(oct == 0) { + if(len < 0 || len > RSSIZE_MAX) { + /* Length value out of sane range. */ + return -1; + } + + *len_r = len; + return skipped; + } + + return 0; /* Want more */ + } + +} + +ssize_t +ber_skip_length(const asn_codec_ctx_t *opt_codec_ctx, + int _is_constructed, const void *ptr, size_t size) { + ber_tlv_len_t vlen; /* Length of V in TLV */ + ssize_t tl; /* Length of L in TLV */ + ssize_t ll; /* Length of L in TLV */ + size_t skip; + + /* + * Make sure we didn't exceed the maximum stack size. + */ + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + return -1; + + /* + * Determine the size of L in TLV. + */ + ll = ber_fetch_length(_is_constructed, ptr, size, &vlen); + if(ll <= 0) return ll; + + /* + * Definite length. + */ + if(vlen >= 0) { + skip = ll + vlen; + if(skip > size) + return 0; /* Want more */ + return skip; + } + + /* + * Indefinite length! + */ + ASN_DEBUG("Skipping indefinite length"); + for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) { + ber_tlv_tag_t tag; + + /* Fetch the tag */ + tl = ber_fetch_tag(ptr, size, &tag); + if(tl <= 0) return tl; + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + ((const char *)ptr) + tl, size - tl); + if(ll <= 0) return ll; + + skip += tl + ll; + + /* + * This may be the end of the indefinite length structure, + * two consecutive 0 octets. + * Check if it is true. + */ + if(((const uint8_t *)ptr)[0] == 0 + && ((const uint8_t *)ptr)[1] == 0) + return skip; + + ptr = ((const char *)ptr) + tl + ll; + size -= tl + ll; + } + + /* UNREACHABLE */ +} + +size_t +der_tlv_length_serialize(ber_tlv_len_t len, void *bufp, size_t size) { + size_t required_size; /* Size of len encoding */ + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + int i; + + if(len <= 127) { + /* Encoded in 1 octet */ + if(size) *buf = (uint8_t)len; + return 1; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 8; i < 8 * (int)sizeof(len); i += 8) { + if(len >> i) + required_size++; + else + break; + } + + if(size <= required_size) + return required_size + 1; + + *buf++ = (uint8_t)(0x80 | required_size); /* Length of the encoding */ + + /* + * Produce the len encoding, space permitting. + */ + end = buf + required_size; + for(i -= 8; buf < end; i -= 8, buf++) + *buf = (uint8_t)(len >> i); + + return required_size + 1; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/ber_tlv_length.h b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_length.h new file mode 100644 index 0000000..d1e4d48 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_length.h @@ -0,0 +1,50 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_LENGTH_H_ +#define _BER_TLV_LENGTH_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef ssize_t ber_tlv_len_t; + +/* + * This function tries to fetch the length of the BER TLV value and place it + * in *len_r. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering length. + * >0: Number of bytes used from bufptr. + * On return with >0, len_r is constrained as -1..MAX, where -1 mean + * that the value is of indefinite length. + */ +ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size, + ber_tlv_len_t *len_r); + +/* + * This function expects bufptr to be positioned over L in TLV. + * It returns number of bytes occupied by L and V together, suitable + * for skipping. The function properly handles indefinite length. + * RETURN VALUES: + * Standard {-1,0,>0} convention. + */ +ssize_t ber_skip_length( + const struct asn_codec_ctx_s *opt_codec_ctx, /* optional context */ + int _is_constructed, const void *bufptr, size_t size); + +/* + * This function serializes the length (L from TLV) in DER format. + * It always returns number of bytes necessary to represent the length, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t der_tlv_length_serialize(ber_tlv_len_t len, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_LENGTH_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/ber_tlv_tag.c b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_tag.c new file mode 100644 index 0000000..4a7d732 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_tag.c @@ -0,0 +1,144 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +ssize_t +ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) { + ber_tlv_tag_t val; + ber_tlv_tag_t tclass; + size_t skipped; + + if(size == 0) + return 0; + + val = *(const uint8_t *)ptr; + tclass = (val >> 6); + if((val &= 0x1F) != 0x1F) { + /* + * Simple form: everything encoded in a single octet. + * Tag Class is encoded using two least significant bits. + */ + *tag_r = (val << 2) | tclass; + return 1; + } + + /* + * Each octet contains 7 bits of useful information. + * The MSB is 0 if it is the last octet of the tag. + */ + for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2; + skipped <= size; + ptr = ((const char *)ptr) + 1, skipped++) { + unsigned int oct = *(const uint8_t *)ptr; + if(oct & 0x80) { + val = (val << 7) | (oct & 0x7F); + /* + * Make sure there are at least 9 bits spare + * at the MS side of a value. + */ + if(val >> ((8 * sizeof(val)) - 9)) { + /* + * We would not be able to accomodate + * any more tag bits. + */ + return -1; + } + } else { + val = (val << 7) | oct; + *tag_r = (val << 2) | tclass; + return skipped; + } + } + + return 0; /* Want more */ +} + + +ssize_t +ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *f) { + char buf[sizeof("[APPLICATION ]") + 32]; + ssize_t ret; + + ret = ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + if(ret >= (ssize_t)sizeof(buf) || ret < 2) { + errno = EPERM; + return -1; + } + + return fwrite(buf, 1, ret, f); +} + +ssize_t +ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t size) { + const char *type = 0; + int ret; + + switch(tag & 0x3) { + case ASN_TAG_CLASS_UNIVERSAL: type = "UNIVERSAL "; break; + case ASN_TAG_CLASS_APPLICATION: type = "APPLICATION "; break; + case ASN_TAG_CLASS_CONTEXT: type = ""; break; + case ASN_TAG_CLASS_PRIVATE: type = "PRIVATE "; break; + } + + ret = snprintf(buf, size, "[%s%u]", type, ((unsigned)tag) >> 2); + if(ret <= 0 && size) buf[0] = '\0'; /* against broken libc's */ + + return ret; +} + +char * +ber_tlv_tag_string(ber_tlv_tag_t tag) { + static char buf[sizeof("[APPLICATION ]") + 32]; + + (void)ber_tlv_tag_snprint(tag, buf, sizeof(buf)); + + return buf; +} + + +size_t +ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufp, size_t size) { + int tclass = BER_TAG_CLASS(tag); + ber_tlv_tag_t tval = BER_TAG_VALUE(tag); + uint8_t *buf = (uint8_t *)bufp; + uint8_t *end; + size_t required_size; + size_t i; + + if(tval <= 30) { + /* Encoded in 1 octet */ + if(size) buf[0] = (tclass << 6) | tval; + return 1; + } else if(size) { + *buf++ = (tclass << 6) | 0x1F; + size--; + } + + /* + * Compute the size of the subsequent bytes. + */ + for(required_size = 1, i = 7; i < 8 * sizeof(tval); i += 7) { + if(tval >> i) + required_size++; + else + break; + } + + if(size < required_size) + return required_size + 1; + + /* + * Fill in the buffer, space permitting. + */ + end = buf + required_size - 1; + for(i -= 7; buf < end; i -= 7, buf++) + *buf = 0x80 | ((tval >> i) & 0x7F); + *buf = (tval & 0x7F); /* Last octet without high bit */ + + return required_size + 1; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/ber_tlv_tag.h b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_tag.h new file mode 100644 index 0000000..ce227ad --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/ber_tlv_tag.h @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _BER_TLV_TAG_H_ +#define _BER_TLV_TAG_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum asn_tag_class { + ASN_TAG_CLASS_UNIVERSAL = 0, /* 0b00 */ + ASN_TAG_CLASS_APPLICATION = 1, /* 0b01 */ + ASN_TAG_CLASS_CONTEXT = 2, /* 0b10 */ + ASN_TAG_CLASS_PRIVATE = 3 /* 0b11 */ +}; +typedef unsigned ber_tlv_tag_t; /* BER TAG from Tag-Length-Value */ + +/* + * Tag class is encoded together with tag value for optimization purposes. + */ +#define BER_TAG_CLASS(tag) ((tag) & 0x3) +#define BER_TAG_VALUE(tag) ((tag) >> 2) +#define BER_TLV_CONSTRUCTED(tagptr) (((*(const uint8_t *)tagptr)&0x20)?1:0) + +#define BER_TAGS_EQUAL(tag1, tag2) ((tag1) == (tag2)) + +/* + * Several functions for printing the TAG in the canonical form + * (i.e. "[PRIVATE 0]"). + * Return values correspond to their libc counterparts (if any). + */ +ssize_t ber_tlv_tag_snprint(ber_tlv_tag_t tag, char *buf, size_t buflen); +ssize_t ber_tlv_tag_fwrite(ber_tlv_tag_t tag, FILE *); +char *ber_tlv_tag_string(ber_tlv_tag_t tag); + + +/* + * This function tries to fetch the tag from the input stream. + * RETURN VALUES: + * 0: More data expected than bufptr contains. + * -1: Fatal error deciphering tag. + * >0: Number of bytes used from bufptr. tag_r will contain the tag. + */ +ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r); + +/* + * This function serializes the tag (T from TLV) in BER format. + * It always returns number of bytes necessary to represent the tag, + * it is a caller's responsibility to check the return value + * against the supplied buffer's size. + */ +size_t ber_tlv_tag_serialize(ber_tlv_tag_t tag, void *bufptr, size_t size); + +#ifdef __cplusplus +} +#endif + +#endif /* _BER_TLV_TAG_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_CHOICE.c b/setup/xapp-bs-connector/asn1c_defs/constr_CHOICE.c new file mode 100644 index 0000000..613e6ea --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_CHOICE.c @@ -0,0 +1,1511 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * See the definitions. + */ +static unsigned _fetch_present_idx(const void *struct_ptr, unsigned off, + unsigned size); +static void _set_present_idx(void *sptr, unsigned offset, unsigned size, + unsigned pres); +static const void *_get_member_ptr(const asn_TYPE_descriptor_t *, + const void *sptr, asn_TYPE_member_t **elm, + unsigned *present); + +/* + * Tags are canonically sorted in the tag to member table. + */ +static int +_search4tag(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) + return 0; + else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + +/* + * The decoder of the CHOICE type. + */ +asn_dec_rval_t +CHOICE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + ssize_t tag_len; /* Length of TLV's T */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as CHOICE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + if(tag_mode || td->tags_count) { + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, -1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) { + /* ?Substracted below! */ + ctx->left += rval.consumed; + } + ADVANCE(rval.consumed); + } else { + ctx->left = -1; + } + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("In %s CHOICE tag length %d", td->name, (int)tag_len); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + do { + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key; + + key.el_tag = tlv_tag; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _search4tag); + if(t2m) { + /* + * Found the element corresponding to the tag. + */ + NEXT_PHASE(ctx); + ctx->step = t2m->el_no; + break; + } else if(specs->ext_start == -1) { + ASN_DEBUG("Unexpected tag %s " + "in non-extensible CHOICE %s", + ber_tlv_tag_string(tlv_tag), td->name); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + + ASN_DEBUG("Skipping unknown tag %s", + ber_tlv_tag_string(tlv_tag)); + + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + RETURN(RC_OK); + } + } while(0); + + case 2: + /* + * PHASE 2. + * Read in the element. + */ + do { + asn_TYPE_member_t *elm;/* CHOICE's element */ + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &elements[ctx->step]; + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + /* Set presence to be able to free it properly at any time */ + _set_present_idx(st, specs->pres_offset, + specs->pres_size, ctx->step + 1); + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, elm->type, + memb_ptr2, ptr, LEFT, elm->tag_mode); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + RETURN(RC_FAIL); + case RC_FAIL: /* Fatal error */ + RETURN(rval.code); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } while(0); + + NEXT_PHASE(ctx); + + /* Fall through */ + case 3: + ASN_DEBUG("CHOICE %s Leftover: %ld, size = %ld, tm=%d, tc=%d", + td->name, (long)ctx->left, (long)size, + tag_mode, td->tags_count); + + if(ctx->left > 0) { + /* + * The type must be fully decoded + * by the CHOICE member-specific decoder. + */ + RETURN(RC_FAIL); + } + + if(ctx->left == -1 + && !(tag_mode || td->tags_count)) { + /* + * This is an untagged CHOICE. + * It doesn't contain nothing + * except for the member itself, including all its tags. + * The decoding is completed. + */ + NEXT_PHASE(ctx); + break; + } + + /* + * Read in the "end of data chunks"'s. + */ + while(ctx->left < 0) { + ssize_t tl; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * Expected <0><0>... + */ + if(((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + continue; + } + } else { + ASN_DEBUG("Unexpected continuation in %s", + td->name); + RETURN(RC_FAIL); + } + + /* UNREACHABLE */ + } + + NEXT_PHASE(ctx); + case 4: + /* No meaningful work here */ + break; + } + + RETURN(RC_OK); +} + +asn_enc_rval_t +CHOICE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE element */ + asn_enc_rval_t erval = {0,0,0}; + const void *memb_ptr; + size_t computed_size = 0; + unsigned present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("%s %s as CHOICE", + cb?"Encoding":"Estimating", td->name); + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) { + if(present == 0 && td->elements_count == 0) { + /* The CHOICE is empty?! */ + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + ASN__ENCODE_FAILED; + } + + /* + * Seek over the present member of the structure. + */ + elm = &td->elements[present-1]; + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(memb_ptr == 0) { + if(elm->optional) { + erval.encoded = 0; + ASN__ENCODED_OK(erval); + } + /* Mandatory element absent */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* + * If the CHOICE itself is tagged EXPLICIT: + * T ::= [2] EXPLICIT CHOICE { ... } + * Then emit the appropriate tags. + */ + if(tag_mode == 1 || td->tags_count) { + /* + * For this, we need to pre-compute the member. + */ + ssize_t ret; + + /* Encode member with its tag */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, 0, 0); + if(erval.encoded == -1) + return erval; + + /* Encode CHOICE with parent or my own tag */ + ret = der_write_tags(td, erval.encoded, tag_mode, 1, tag, + cb, app_key); + if(ret == -1) + ASN__ENCODE_FAILED; + computed_size += ret; + } + + /* + * Encode the single underlying member. + */ + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + elm->tag_mode, elm->tag, cb, app_key); + if(erval.encoded == -1) + return erval; + + ASN_DEBUG("Encoded CHOICE member in %ld bytes (+%ld)", + (long)erval.encoded, (long)computed_size); + + erval.encoded += computed_size; + + return erval; +} + +ber_tlv_tag_t +CHOICE_outmost_tag(const asn_TYPE_descriptor_t *td, const void *ptr, int tag_mode, ber_tlv_tag_t tag) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + assert(tag_mode == 0); (void)tag_mode; + assert(tag == 0); (void)tag; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + if(present > 0 && present <= td->elements_count) { + const asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *) + ((const char *)ptr + elm->memb_offset); + } else { + memb_ptr = (const void *) + ((const char *)ptr + elm->memb_offset); + } + + return asn_TYPE_outmost_tag(elm->type, memb_ptr, + elm->tag_mode, elm->tag); + } else { + return (ber_tlv_tag_t)-1; + } +} + +int +CHOICE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + return 0; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory CHOICE element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + return elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } else { + ASN__CTFAIL(app_key, td, sptr, + "%s: no CHOICE element given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = (const void *)(((const char *)buf_ptr) + num); \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +CHOICE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value of a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + if(ctx->phase == 0 && !*xml_tag) + ctx->phase = 1; /* Skip the outer tag checking phase */ + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Only waiting for closing tag. + * Phase 4: Skipping unknown extensions. + * Phase 5: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 4;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the member. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + unsigned old_present; + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Start/Continue decoding the inner member */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + buf_ptr, size); + XER_ADVANCE(tmprval.consumed); + ASN_DEBUG("XER/CHOICE: itdf: [%s] code=%d", + elm->type->name, tmprval.code); + old_present = _fetch_present_idx(st, + specs->pres_offset, specs->pres_size); + assert(old_present == 0 || old_present == edx + 1); + /* Record what we've got */ + _set_present_idx(st, + specs->pres_offset, specs->pres_size, edx + 1); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 3; + /* Fall through */ + } + + /* No need to wait for closing tag; special mode. */ + if(ctx->phase == 3 && !*xml_tag) { + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/CHOICE checked [%c%c%c%c] vs [%s], tcv=%d", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + xml_tag, tcv); + + /* Skip the extensions section */ + if(ctx->phase == 4) { + ASN_DEBUG("skip_unknown(%d, %ld)", + tcv, (long)ctx->left); + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 5; + RETURN(RC_FAIL); + case 1: + ctx->phase = 3; + /* Fall through */ + case 0: + XER_ADVANCE(ch_size); + continue; + case 2: + ctx->phase = 3; + break; + } + } + + switch(tcv) { + case XCT_BOTH: + break; /* No CHOICE? */ + case XCT_CLOSING: + if(ctx->phase != 3) + break; + XER_ADVANCE(ch_size); + ctx->phase = 5; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + if(ctx->phase != 1) + break; /* Really unexpected */ + + /* + * Search which inner member corresponds to this tag. + */ + for(edx = 0; edx < td->elements_count; edx++) { + elm = &td->elements[edx]; + tcv = xer_check_tag(buf_ptr,ch_size,elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + edx = td->elements_count; + break; /* Phase out */ + } + break; + } + if(edx != td->elements_count) + continue; + + /* It is expected extension */ + if(specs->ext_start != -1) { + ASN_DEBUG("Got anticipated extension"); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + ctx->phase = 3; /* Terminating */ + } else { + ctx->left = 1; + ctx->phase = 4; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag [%c%c%c%c] in CHOICE [%s]" + " (ph=%d, tag=%s)", + ch_size>0?((const uint8_t *)buf_ptr)[0]:'?', + ch_size>1?((const uint8_t *)buf_ptr)[1]:'?', + ch_size>2?((const uint8_t *)buf_ptr)[2]:'?', + ch_size>3?((const uint8_t *)buf_ptr)[3]:'?', + td->name, ctx->phase, xml_tag); + break; + } + + ctx->phase = 5; /* Phase out, just in case */ + RETURN(RC_FAIL); +} + + +asn_enc_rval_t +CHOICE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + unsigned present = 0; + + if(!sptr) + ASN__ENCODE_FAILED; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + if(present == 0 || present > td->elements_count) { + ASN__ENCODE_FAILED; + } else { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr = NULL; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + er.encoded = 0; + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + 1, flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!(flags & XER_F_CANONICAL)) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +asn_dec_rval_t +CHOICE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) { + ASN_DEBUG("CHOICE presence from wire %d", value); + value = specs->from_canonical_order[value]; + ASN_DEBUG("CHOICE presence index effective %d", value); + } + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + unsigned present; + int present_enc; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present == 0 || present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present_enc = specs->to_canonical_order[present]; + else + present_enc = present; + + if(ct && ct->range_bits >= 0) { + if(present_enc < ct->lower_bound + || present_enc > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG( + "CHOICE member %d (enc %d) is an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + ASN_DEBUG("CHOICE member %d (enc %d) is not an extension (%ld..%ld)", + present, present_enc, ct->lower_bound, ct->upper_bound); + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + + elm = &td->elements[present]; + ASN_DEBUG("CHOICE member \"%s\" %d (as %d)", elm->name, present, + present_enc); + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present_enc, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) ASN__ENCODE_FAILED; + if(uper_put_nsnnwn(po, present_enc - specs->ext_start)) + ASN__ENCODE_FAILED; + if(uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +asn_dec_rval_t +CHOICE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + asn_dec_rval_t rv; + const asn_per_constraint_t *ct; + asn_TYPE_member_t *elm; /* CHOICE's element */ + void *memb_ptr; + void **memb_ptr2; + void *st = *sptr; + int value; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted */ + } + + if(ct && ct->range_bits >= 0) { + value = per_get_few_bits(pd, ct->range_bits); + if(value < 0) ASN__DECODE_STARVED; + ASN_DEBUG("CHOICE %s got index %d in range %d", + td->name, value, ct->range_bits); + if(value > ct->upper_bound) + ASN__DECODE_FAILED; + } else { + if(specs->ext_start == -1) + ASN__DECODE_FAILED; + value = uper_get_nsnnwn(pd); + if(value < 0) ASN__DECODE_STARVED; + value += specs->ext_start; + if((unsigned)value >= td->elements_count) + ASN__DECODE_FAILED; + } + + /* Adjust if canonical order is different from natural order */ + if(specs->from_canonical_order) + value = specs->from_canonical_order[value]; + + /* Set presence to be able to free it later */ + _set_present_idx(st, specs->pres_offset, specs->pres_size, value + 1); + + elm = &td->elements[value]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + ASN_DEBUG("Discovered CHOICE %s encodes %s", td->name, elm->name); + + if(ct && ct->range_bits >= 0) { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } else { + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + + if(rv.code != RC_OK) + ASN_DEBUG("Failed to decode %s in %s (CHOICE) %d", + elm->name, td->name, rv.code); + return rv; +} + +asn_enc_rval_t +CHOICE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm; /* CHOICE's element */ + const asn_per_constraint_t *ct; + const void *memb_ptr; + int present; + + if(!sptr) ASN__ENCODE_FAILED; + + ASN_DEBUG("Encoding %s as CHOICE using ALIGNED PER", td->name); + + if(constraints) ct = &constraints->value; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->value; + else ct = 0; + + present = _fetch_present_idx(sptr, + specs->pres_offset, specs->pres_size); + + /* + * If the structure was not initialized properly, it cannot be encoded: + * can't deduce what to encode in the choice type. + */ + if(present <= 0 || (unsigned)present > td->elements_count) + ASN__ENCODE_FAILED; + else + present--; + + /* Adjust if canonical order is different from natural order */ + if(specs->to_canonical_order) + present = specs->to_canonical_order[present]; + + ASN_DEBUG("Encoding %s CHOICE element %d", td->name, present); + + if(ct && ct->range_bits >= 0) { + if(present < ct->lower_bound + || present > ct->upper_bound) { + if(ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 1, 1)) + ASN__ENCODE_FAILED; + } else { + ASN__ENCODE_FAILED; + } + ct = 0; + } + } + if(ct && ct->flags & APC_EXTENSIBLE) { + if(per_put_few_bits(po, 0, 1)) + ASN__ENCODE_FAILED; + } + + elm = &td->elements[present]; + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr = *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) ASN__ENCODE_FAILED; + } else { + memb_ptr = (const char *)sptr + elm->memb_offset; + } + + if(ct && ct->range_bits >= 0) { + if(per_put_few_bits(po, present, ct->range_bits)) + ASN__ENCODE_FAILED; + + return elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po); + } else { + asn_enc_rval_t rval = {0,0,0}; + if(specs->ext_start == -1) + ASN__ENCODE_FAILED; + if (ct) { + if(aper_put_nsnnwn(po, ct->range_bits, present - specs->ext_start)) + ASN__ENCODE_FAILED; + } + if(aper_open_type_put(elm->type, elm->encoding_constraints.per_constraints, + memb_ptr, po)) + ASN__ENCODE_FAILED; + rval.encoded = 0; + ASN__ENCODED_OK(rval); + } +} + +int +CHOICE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + const asn_CHOICE_specifics_t *specs = (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset,specs->pres_size); + + /* + * Print that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Print member's name and stuff */ + if(0) { + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + } + + return elm->type->op->print_struct(elm->type, memb_ptr, ilevel, + cb, app_key); + } else { + return (cb("", 8, app_key) < 0) ? -1 : 0; + } +} + +void +CHOICE_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!td || !ptr) + return; + + ASN_DEBUG("Freeing %s as CHOICE", td->name); + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(ptr, specs->pres_offset, specs->pres_size); + + /* + * Free that element. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *elm = &td->elements[present-1]; + void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)ptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)ptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } +} + + +/* + * The following functions functions offer protection against -fshort-enums, + * compatible with little- and big-endian machines. + * If assertion is triggered, either disable -fshort-enums, or add an entry + * here with the ->pres_size of your target stracture. + * Unless the target structure is packed, the ".present" member + * is guaranteed to be aligned properly. ASN.1 compiler itself does not + * produce packed code. + */ +static unsigned +_fetch_present_idx(const void *struct_ptr, unsigned pres_offset, + unsigned pres_size) { + const void *present_ptr; + unsigned present; + + present_ptr = ((const char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): present = *(const unsigned int *)present_ptr; break; + case sizeof(short): present = *(const unsigned short *)present_ptr; break; + case sizeof(char): present = *(const unsigned char *)present_ptr; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + return 0; /* If not aborted, pass back safe value */ + } + + return present; +} + +static void +_set_present_idx(void *struct_ptr, unsigned pres_offset, unsigned pres_size, + unsigned present) { + void *present_ptr; + present_ptr = ((char *)struct_ptr) + pres_offset; + + switch(pres_size) { + case sizeof(int): *(unsigned int *)present_ptr = present; break; + case sizeof(short): *(unsigned short *)present_ptr = present; break; + case sizeof(char): *(unsigned char *)present_ptr = present; break; + default: + /* ANSI C mandates enum to be equivalent to integer */ + assert(pres_size != sizeof(int)); + } +} + +static const void * +_get_member_ptr(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_TYPE_member_t **elm_ptr, unsigned *present_out) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned present; + + if(!sptr) { + *elm_ptr = NULL; + *present_out = 0; + return NULL; + } + + /* + * Figure out which CHOICE element is encoded. + */ + present = _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + *present_out = present; + + /* + * The presence index is intentionally 1-based to avoid + * treating zeroed structure as a valid one. + */ + if(present > 0 && present <= td->elements_count) { + asn_TYPE_member_t *const elm = &td->elements[present - 1]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + *elm_ptr = elm; + return memb_ptr; + } else { + *elm_ptr = NULL; + return NULL; + } + +} + +int +CHOICE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) { + asn_TYPE_member_t *aelm; + asn_TYPE_member_t *belm; + unsigned apresent = 0; + unsigned bpresent = 0; + const void *amember = _get_member_ptr(td, aptr, &aelm, &apresent); + const void *bmember = _get_member_ptr(td, bptr, &belm, &bpresent); + + if(amember && bmember) { + if(apresent == bpresent) { + assert(aelm == belm); + return aelm->type->op->compare_struct(aelm->type, amember, bmember); + } else if(apresent < bpresent) { + return -1; + } else { + return 1; + } + } else if(!amember) { + return -1; + } else { + return 1; + } +} + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned +CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, const void *sptr) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + return _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); +} + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int +CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, void *sptr, + unsigned present) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + unsigned old_present; + + if(!sptr) { + return -1; + } + + if(present > td->elements_count) + return -1; + + old_present = + _fetch_present_idx(sptr, specs->pres_offset, specs->pres_size); + if(present == old_present) + return 0; + + if(old_present != 0) { + assert(old_present <= td->elements_count); + ASN_STRUCT_RESET(*td, sptr); + } + + _set_present_idx(sptr, specs->pres_offset, specs->pres_size, present); + + return 0; +} + + +asn_random_fill_result_t +CHOICE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_CHOICE_specifics_t *specs = + (const asn_CHOICE_specifics_t *)td->specifics; + asn_random_fill_result_t res; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm; + unsigned present; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + void *st = *sptr; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + present = asn_random_between(1, td->elements_count); + elm = &td->elements[present - 1]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + res = elm->type->op->random_fill(elm->type, memb_ptr2, + &elm->encoding_constraints, max_length); + _set_present_idx(st, specs->pres_offset, specs->pres_size, present); + if(res.code == ARFILL_OK) { + *sptr = st; + } else { + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + } + + return res; +} + + +asn_TYPE_operation_t asn_OP_CHOICE = { + CHOICE_free, + CHOICE_print, + CHOICE_compare, + CHOICE_decode_ber, + CHOICE_encode_der, + CHOICE_decode_xer, + CHOICE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + CHOICE_decode_oer, + CHOICE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + CHOICE_decode_uper, + CHOICE_encode_uper, + CHOICE_decode_aper, + CHOICE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + CHOICE_random_fill, + CHOICE_outmost_tag +}; diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_CHOICE.h b/setup/xapp-bs-connector/asn1c_defs/constr_CHOICE.h new file mode 100644 index 0000000..a1999ed --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_CHOICE.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_CHOICE_H_ +#define _CONSTR_CHOICE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_CHOICE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_codec_ctx_t member */ + unsigned pres_offset; /* Identifier of the present member */ + unsigned pres_size; /* Size of the identifier (enum) */ + + /* + * Tags to members mapping table. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* Canonical ordering of CHOICE elements, for PER */ + const unsigned *to_canonical_order; + const unsigned *from_canonical_order; + + /* + * Extensions-related stuff. + */ + signed ext_start; /* First member of extensions, or -1 */ +} asn_CHOICE_specifics_t; + +/* + * A set specialized functions dealing with the CHOICE type. + */ +asn_struct_free_f CHOICE_free; +asn_struct_print_f CHOICE_print; +asn_struct_compare_f CHOICE_compare; +asn_constr_check_f CHOICE_constraint; +ber_type_decoder_f CHOICE_decode_ber; +der_type_encoder_f CHOICE_encode_der; +xer_type_decoder_f CHOICE_decode_xer; +xer_type_encoder_f CHOICE_encode_xer; +oer_type_decoder_f CHOICE_decode_oer; +oer_type_encoder_f CHOICE_encode_oer; +per_type_decoder_f CHOICE_decode_uper; +per_type_encoder_f CHOICE_encode_uper; +per_type_decoder_f CHOICE_decode_aper; +per_type_encoder_f CHOICE_encode_aper; +asn_outmost_tag_f CHOICE_outmost_tag; +asn_random_fill_f CHOICE_random_fill; +extern asn_TYPE_operation_t asn_OP_CHOICE; + +/* + * Return the 1-based choice variant presence index. + * Returns 0 in case of error. + */ +unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td, + const void *structure_ptr); + +/* + * Sets or resets the 1-based choice variant presence index. + * In case a previous index is not zero, the currently selected structure + * member is freed and zeroed-out first. + * Returns 0 on success and -1 on error. + */ +int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td, + void *structure_ptr, unsigned present); + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_CHOICE_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE.c b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE.c new file mode 100644 index 0000000..43dcac7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE.c @@ -0,0 +1,2059 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * Check whether we are inside the extensions group. + */ +#define IN_EXTENSION_GROUP(specs, memb_idx) \ + ((specs)->first_extension >= 0 \ + && (unsigned)(specs)->first_extension <= (memb_idx)) + +/* + * Tags are canonically sorted in the tag2element map. + */ +static int +_t2e_cmp(const void *ap, const void *bp) { + const asn_TYPE_tag2member_t *a = (const asn_TYPE_tag2member_t *)ap; + const asn_TYPE_tag2member_t *b = (const asn_TYPE_tag2member_t *)bp; + + int a_class = BER_TAG_CLASS(a->el_tag); + int b_class = BER_TAG_CLASS(b->el_tag); + + if(a_class == b_class) { + ber_tlv_tag_t a_value = BER_TAG_VALUE(a->el_tag); + ber_tlv_tag_t b_value = BER_TAG_VALUE(b->el_tag); + + if(a_value == b_value) { + if(a->el_no > b->el_no) + return 1; + /* + * Important: we do not check + * for a->el_no <= b->el_no! + */ + return 0; + } else if(a_value < b_value) + return -1; + else + return 1; + } else if(a_class < b_class) { + return -1; + } else { + return 1; + } +} + + +/* + * The decoder of the SEQUENCE type. + */ +asn_dec_rval_t +SEQUENCE_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + const asn_TYPE_member_t *elements = td->elements; + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* SEQUENCE element's index */ + + ASN_DEBUG("Decoding %s as SEQUENCE", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + NEXT_PHASE(ctx); + + ASN_DEBUG("Structure consumes %ld bytes, buffer %ld", + (long)ctx->left, (long)size); + + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next member from the list of + * this structure's elements. + * (ctx->step) stores the member being processed + * between invocations and the microphase {0,1} of parsing + * that member: + * step = ( * 2 + ). + */ + for(edx = ((size_t)ctx->step >> 1); edx < td->elements_count; + edx++, ctx->step = (ctx->step & ~1) + 2) { + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + ssize_t tag_len; /* Length of TLV's T */ + size_t opt_edx_end; /* Next non-optional element */ + size_t n; + int use_bsearch; + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + ASN_DEBUG("In %s SEQUENCE left %d, edx=%" ASN_PRI_SIZE " flags=%d" + " opt=%d ec=%d", + td->name, (int)ctx->left, edx, + elements[edx].flags, elements[edx].optional, + td->elements_count); + + if(ctx->left == 0 /* No more stuff is expected */ + && ( + /* Explicit OPTIONAL specification reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx))) { + ASN_DEBUG("End of SEQUENCE %s", td->name); + /* + * Found the legitimate end of the structure. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + ASN_DEBUG("Current tag in %s SEQUENCE for element %" ASN_PRI_SIZE " " + "(%s) is %s encoded in %d bytes, of frame %ld", + td->name, edx, elements[edx].name, + ber_tlv_tag_string(tlv_tag), (int)tag_len, (long)LEFT); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) { + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } else if(((const uint8_t *)ptr)[1] == 0) { + ASN_DEBUG("edx = %" ASN_PRI_SIZE ", opt = %d, ec=%d", edx, + elements[edx].optional, td->elements_count); + if((edx + elements[edx].optional == td->elements_count) + || IN_EXTENSION_GROUP(specs, edx)) { + /* + * Yeah, baby! Found the terminator + * of the indefinite length structure. + */ + /* + * Proceed to the canonical + * finalization function. + * No advancing is necessary. + */ + goto phase3; + } + } + } + + /* + * Find the next available type with this tag. + */ + use_bsearch = 0; + opt_edx_end = edx + elements[edx].optional + 1; + if(opt_edx_end > td->elements_count) + opt_edx_end = td->elements_count; /* Cap */ + else if(opt_edx_end - edx > 8) { + /* Limit the scope of linear search... */ + opt_edx_end = edx + 8; + use_bsearch = 1; + /* ... and resort to bsearch() */ + } + for(n = edx; n < opt_edx_end; n++) { + if(BER_TAGS_EQUAL(tlv_tag, elements[n].tag)) { + /* + * Found element corresponding to the tag + * being looked at. + * Reposition over the right element. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].flags & ATF_ANY_TYPE) { + /* + * This is the ANY type, which may bear + * any flag whatsoever. + */ + edx = n; + ctx->step = 1 + 2 * edx; /* Remember! */ + goto microphase2; + } else if(elements[n].tag == (ber_tlv_tag_t)-1) { + use_bsearch = 1; + break; + } + } + if(use_bsearch) { + /* + * Resort to a binary search over + * sorted array of tags. + */ + const asn_TYPE_tag2member_t *t2m; + asn_TYPE_tag2member_t key = {0, 0, 0, 0}; + key.el_tag = tlv_tag; + key.el_no = edx; + t2m = (const asn_TYPE_tag2member_t *)bsearch(&key, + specs->tag2el, specs->tag2el_count, + sizeof(specs->tag2el[0]), _t2e_cmp); + if(t2m) { + const asn_TYPE_tag2member_t *best = 0; + const asn_TYPE_tag2member_t *t2m_f, *t2m_l; + size_t edx_max = edx + elements[edx].optional; + /* + * Rewind to the first element with that tag, + * `cause bsearch() does not guarantee order. + */ + t2m_f = t2m + t2m->toff_first; + t2m_l = t2m + t2m->toff_last; + for(t2m = t2m_f; t2m <= t2m_l; t2m++) { + if(t2m->el_no > edx_max) break; + if(t2m->el_no < edx) continue; + best = t2m; + } + if(best) { + edx = best->el_no; + ctx->step = 1 + 2 * edx; + goto microphase2; + } + } + n = opt_edx_end; + } + if(n == opt_edx_end) { + /* + * If tag is unknown, it may be either + * an unknown (thus, incorrect) tag, + * or an extension (...), + * or an end of the indefinite-length structure. + */ + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { + ASN_DEBUG("Unexpected tag %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + ASN_DEBUG("Expected tag %s (%s)%s", + ber_tlv_tag_string(elements[edx].tag), + elements[edx].name, + elements[edx].optional + ?" or alternatives":""); + RETURN(RC_FAIL); + } else { + /* Skip this tag */ + ssize_t skip; + edx += elements[edx].optional; + + ASN_DEBUG("Skipping unexpected %s (at %" ASN_PRI_SIZE ")", + ber_tlv_tag_string(tlv_tag), edx); + skip = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tag_len, + LEFT - tag_len); + ASN_DEBUG("Skip length %d in %s", + (int)skip, td->name); + switch(skip) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(skip + tag_len); + ctx->step -= 2; + edx--; + continue; /* Try again with the next tag */ + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + ASN_DEBUG("Inside SEQUENCE %s MF2", td->name); + + /* + * Compute the position of the member inside a structure, + * and also a type of containment (it may be contained + * as pointer or using inline inclusion). + */ + if(elements[edx].flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elements[edx].memb_offset); + } else { + /* + * A pointer to a pointer + * holding the start of the structure + */ + memb_ptr = (char *)st + elements[edx].memb_offset; + memb_ptr2 = &memb_ptr; + } + /* + * Invoke the member fetch routine according to member's type + */ + if(elements[edx].flags & ATF_OPEN_TYPE) { + rval = OPEN_TYPE_ber_get(opt_codec_ctx, td, st, &elements[edx], ptr, LEFT); + } else { + rval = elements[edx].type->op->ber_decoder(opt_codec_ctx, + elements[edx].type, + memb_ptr2, ptr, LEFT, + elements[edx].tag_mode); + } + ASN_DEBUG("In %s SEQUENCE decoded %" ASN_PRI_SIZE " %s of %d " + "in %d bytes rval.code %d, size=%d", + td->name, edx, elements[edx].type->name, + (int)LEFT, (int)rval.consumed, rval.code, (int)size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + ASN_DEBUG("Size violation (c->l=%ld <= s=%ld)", + (long)ctx->left, (long)size); + /* Fall through */ + case RC_FAIL: /* Fatal error */ + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all structure members) */ + + phase3: + ctx->phase = 3; + /* Fall through */ + case 3: /* 00 and other tags expected */ + case 4: /* only 00's expected */ + + ASN_DEBUG("SEQUENCE %s Leftover: %ld, size = %ld", + td->name, (long)ctx->left, (long)size); + + /* + * Skip everything until the end of the SEQUENCE. + */ + while(ctx->left) { + ssize_t tl, ll; + + tl = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tl) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + /* + * If expected <0><0>... + */ + if(ctx->left < 0 + && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Correctly finished with <0><0>. + */ + ADVANCE(2); + ctx->left++; + ctx->phase = 4; + continue; + } + } + + if(!IN_EXTENSION_GROUP(specs, td->elements_count) + || ctx->phase == 4) { + ASN_DEBUG("Unexpected continuation " + "of a non-extensible type " + "%s (SEQUENCE): %s", + td->name, + ber_tlv_tag_string(tlv_tag)); + RETURN(RC_FAIL); + } + + ll = ber_skip_length(opt_codec_ctx, + BER_TLV_CONSTRUCTED(ptr), + (const char *)ptr + tl, LEFT - tl); + switch(ll) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + ADVANCE(tl + ll); + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + + +/* + * The DER encoder of the SEQUENCE type. + */ +asn_enc_rval_t +SEQUENCE_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t computed_size = 0; + asn_enc_rval_t erval = {0,0,0}; + ssize_t ret; + size_t edx; + + ASN_DEBUG("%s %s as SEQUENCE", + cb?"Encoding":"Estimating", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + erval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s estimated %ld bytes", + edx, elm->name, (long)erval.encoded); + } + + /* + * Encode the TLV for the sequence itself. + */ + ret = der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + ASN_DEBUG("Wrote tags: %ld (+%ld)", (long)ret, (long)computed_size); + if(ret == -1) + ASN__ENCODE_FAILED; + erval.encoded = computed_size + ret; + + if(!cb) ASN__ENCODED_OK(erval); + + /* + * Encode all members. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + asn_enc_rval_t tmperval = {0,0,0}; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) continue; + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + tmperval = elm->type->op->der_encoder(elm->type, *memb_ptr2, + elm->tag_mode, elm->tag, cb, app_key); + if(tmperval.encoded == -1) + return tmperval; + computed_size -= tmperval.encoded; + ASN_DEBUG("Member %" ASN_PRI_SIZE " %s of SEQUENCE %s encoded in %ld bytes", + edx, elm->name, td->name, (long)tmperval.encoded); + } + + if(computed_size != 0) + /* + * Encoded size is not equal to the computed size. + */ + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(erval); +} + + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) \ + do { \ + size_t num = (num_bytes); \ + ptr = ((const char *)ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SEQUENCE_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_TYPE_member_t *elements = td->elements; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval; /* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + size_t edx; /* Element index */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + * Phase 3: Skipping unknown extensions. + * Phase 4: PHASED OUT + */ + for(edx = ctx->step; ctx->phase <= 3;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + asn_TYPE_member_t *elm; + + /* + * Go inside the inner member of a sequence. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval; + void *memb_ptr_dontuse; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + elm = &td->elements[edx]; + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr_dontuse = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr_dontuse; /* Only use of memb_ptr_dontuse */ + } + + if(elm->flags & ATF_OPEN_TYPE) { + tmprval = OPEN_TYPE_xer_get(opt_codec_ctx, td, st, elm, ptr, size); + } else { + /* Invoke the inner type decoder, m.b. multiple times */ + tmprval = elm->type->op->xer_decoder(opt_codec_ctx, + elm->type, memb_ptr2, elm->name, + ptr, size); + } + XER_ADVANCE(tmprval.consumed); + if(tmprval.code != RC_OK) + RETURN(tmprval.code); + ctx->phase = 1; /* Back to body processing */ + ctx->step = ++edx; + ASN_DEBUG("XER/SEQUENCE phase => %d, step => %d", + ctx->phase, ctx->step); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SEQUENCE: tcv = %d, ph=%d [%s]", + tcv, ctx->phase, xml_tag); + + /* Skip the extensions section */ + if(ctx->phase == 3) { + switch(xer_skip_unknown(tcv, &ctx->left)) { + case -1: + ctx->phase = 4; + RETURN(RC_FAIL); + case 0: + XER_ADVANCE(ch_size); + continue; + case 1: + XER_ADVANCE(ch_size); + ctx->phase = 1; + continue; + case 2: + ctx->phase = 1; + break; + } + } + + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + if(edx >= td->elements_count || + /* Explicit OPTIONAL specs reaches the end */ + (edx + elements[edx].optional == td->elements_count) || + /* All extensions are optional */ + IN_EXTENSION_GROUP(specs, edx)) { + XER_ADVANCE(ch_size); + ctx->phase = 4; /* Phase out */ + RETURN(RC_OK); + } else { + ASN_DEBUG("Premature end of XER SEQUENCE"); + RETURN(RC_FAIL); + } + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SEQUENCE: tcv=%d, ph=%d, edx=%" ASN_PRI_SIZE "", + tcv, ctx->phase, edx); + if(ctx->phase != 1) { + break; /* Really unexpected */ + } + + if(edx < td->elements_count) { + /* + * Search which member corresponds to this tag. + */ + size_t n; + size_t edx_end = edx + elements[edx].optional + 1; + if(edx_end > td->elements_count) + edx_end = td->elements_count; + for(n = edx; n < edx_end; n++) { + elm = &td->elements[n]; + tcv = xer_check_tag(ptr, ch_size, elm->name); + switch(tcv) { + case XCT_BOTH: + case XCT_OPENING: + /* + * Process this member. + */ + ctx->step = edx = n; + ctx->phase = 2; + break; + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + continue; + default: + n = edx_end; + break; /* Phase out */ + } + break; + } + if(n != edx_end) + continue; + } else { + ASN_DEBUG("Out of defined members: %" ASN_PRI_SIZE "/%u", + edx, td->elements_count); + } + + /* It is expected extension */ + if(IN_EXTENSION_GROUP(specs, + edx + (edx < td->elements_count + ? elements[edx].optional : 0))) { + ASN_DEBUG("Got anticipated extension at %" ASN_PRI_SIZE "", + edx); + /* + * Check for (XCT_BOTH or XCT_UNKNOWN_BO) + * By using a mask. Only record a pure + * tags. + */ + if(tcv & XCT_CLOSING) { + /* Found without body */ + } else { + ctx->left = 1; + ctx->phase = 3; /* Skip ...'s */ + } + XER_ADVANCE(ch_size); + continue; + } + + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SEQUENCE [%c%c%c%c%c%c]", + size>0?((const char *)ptr)[0]:'.', + size>1?((const char *)ptr)[1]:'.', + size>2?((const char *)ptr)[2]:'.', + size>3?((const char *)ptr)[3]:'.', + size>4?((const char *)ptr)[4]:'.', + size>5?((const char *)ptr)[5]:'.'); + break; + } + + ctx->phase = 4; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + +asn_enc_rval_t +SEQUENCE_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + int xcan = (flags & XER_F_CANONICAL); + asn_TYPE_descriptor_t *tmp_def_val_td = 0; + void *tmp_def_val = 0; + size_t edx; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_enc_rval_t tmper = {0,0,0}; + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + const char *mname = elm->name; + unsigned int mlen = strlen(mname); + + if(elm->flags & ATF_POINTER) { + memb_ptr = + *(const void *const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + assert(tmp_def_val == 0); + if(elm->default_value_set) { + if(elm->default_value_set(&tmp_def_val)) { + ASN__ENCODE_FAILED; + } else { + memb_ptr = tmp_def_val; + tmp_def_val_td = elm->type; + } + } else if(elm->optional) { + continue; + } else { + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + /* Print the member itself */ + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmp_def_val) { + ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + tmp_def_val = 0; + } + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("", 1); + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + if(tmp_def_val) ASN_STRUCT_FREE(*tmp_def_val_td, tmp_def_val); + ASN__ENCODE_FAILED; +} + +int +SEQUENCE_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + size_t edx; + int ret; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) continue; + /* Print line */ + /* Fall through */ + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + /* Indentation */ + _i_INDENT(1); + + /* Print the member's name and stuff */ + if(cb(elm->name, strlen(elm->name), app_key) < 0 + || cb(": ", 2, app_key) < 0) + return -1; + + /* Print the member itself */ + ret = elm->type->op->print_struct(elm->type, memb_ptr, ilevel + 1, + cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SEQUENCE_free(const asn_TYPE_descriptor_t *td, void *sptr, + enum asn_struct_free_method method) { + size_t edx; + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_struct_ctx_t *ctx; /* Decoder context */ + + if(!td || !sptr) + return; + + ASN_DEBUG("Freeing %s as SEQUENCE", td->name); + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; + if(elm->flags & ATF_POINTER) { + memb_ptr = *(void **)((char *)sptr + elm->memb_offset); + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } else { + memb_ptr = (void *)((char *)sptr + elm->memb_offset); + ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr); + } + } + + /* Clean parsing context */ + ctx = (asn_struct_ctx_t *)((char *)sptr + specs->ctx_offset); + FREEMEM(ctx->ptr); + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(sptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset( + sptr, 0, + ((const asn_SEQUENCE_specifics_t *)(td->specifics))->struct_size); + break; + } +} + +int +SEQUENCE_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + size_t edx; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + /* + * Iterate over structure members and check their validity. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; + + if(elm->flags & ATF_POINTER) { + memb_ptr = *(const void * const *)((const char *)sptr + elm->memb_offset); + if(!memb_ptr) { + if(elm->optional) + continue; + ASN__CTFAIL(app_key, td, sptr, + "%s: mandatory element %s absent (%s:%d)", + td->name, elm->name, __FILE__, __LINE__); + return -1; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + } + + if(elm->encoding_constraints.general_constraints) { + int ret = elm->encoding_constraints.general_constraints(elm->type, memb_ptr, + ctfailcb, app_key); + if(ret) return ret; + } else { + return elm->type->encoding_constraints.general_constraints(elm->type, + memb_ptr, ctfailcb, app_key); + } + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; + edx < (specs->first_extension < 0 ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + + assert(!IN_EXTENSION_GROUP(specs, edx)); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_uper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = uper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, (long)bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, + *memb_ptr2); + rv = uper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: break; + case 0: continue; + default: + if(uper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + ASN_DEBUG("Skipped overflow extension"); + continue; + } + break; + } + + FREEMEM(epres); + } + + if(specs->first_extension >= 0) { + unsigned i; + /* Fill DEFAULT members in extensions */ + for(i = specs->roms_count; i < specs->roms_count + specs->aoms_count; + i++) { + asn_TYPE_member_t *elm; + void **memb_ptr2; /* Pointer to member pointer */ + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s:%s (@%" ASN_PRI_SIZE ") present => %d", elm->name, + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) { + return -1; + } + /* Encode as open type field */ + if(po2 && present + && uper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, + *memb_ptr2, po2)) + return -1; + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (UPER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE__handle_extensions(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(*memb_ptr2) == 0) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void *const *memb_ptr2; /* Pointer to that pointer */ + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = + (const void *const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %" ASN_PRI_SIZE " not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(*memb_ptr2) == 0) + continue; + + ASN_DEBUG("Encoding %s->%s:%s", td->name, elm->name, elm->type->name); + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, *memb_ptr2, + po); + if(er.encoded == -1) return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of extensions %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(uper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE__handle_extensions(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE__handle_extensions(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +asn_dec_rval_t +SEQUENCE_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + const asn_SEQUENCE_specifics_t *specs = (const asn_SEQUENCE_specifics_t *)td->specifics; + void *st = *sptr; /* Target structure. */ + int extpresent; /* Extension additions are present */ + uint8_t *opres; /* Presence of optional root members */ + asn_per_data_t opmd; + asn_dec_rval_t rv; + size_t edx; + + (void)constraints; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + + ASN_DEBUG("Decoding %s as SEQUENCE (APER)", td->name); + + /* Handle extensions */ + if(specs->first_extension < 0) { + extpresent = 0; + } else { + extpresent = per_get_few_bits(pd, 1); + if(extpresent < 0) ASN__DECODE_STARVED; + } + + /* Prepare a place and read-in the presence bitmap */ + memset(&opmd, 0, sizeof(opmd)); + if(specs->roms_count) { + opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1); + if(!opres) ASN__DECODE_FAILED; + /* Get the presence map */ + if(per_get_many_bits(pd, opres, 0, specs->roms_count)) { + FREEMEM(opres); + ASN__DECODE_STARVED; + } + opmd.buffer = opres; + opmd.nbits = specs->roms_count; + ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)", + td->name, specs->roms_count, *opres); + } else { + opres = 0; + } + + /* + * Get the sequence ROOT elements. + */ + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ +#if 0 + int padding; +#endif + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } +#if 0 + /* Get Padding */ + padding = (8 - (pd->moved % 8)) % 8; + if(padding > 0) + ASN_DEBUG("For element %s,offset= %ld Padding bits = %d", td->name, pd->moved, padding); +#if 0 /* old way of removing padding */ + per_get_few_bits(pd, padding); +#else /* Experimental fix proposed by @mhanna123 */ + if(edx != (td->elements_count-1)) + per_get_few_bits(pd, padding); + else { + if(specs->roms_count && (padding > 0)) + ASN_DEBUG(">>>>> not skipping padding of %d bits for element:%ld out of %d", padding, edx, td->elements_count); + else + per_get_few_bits(pd, padding); + } +#endif /* dealing with padding */ +#endif + /* Deal with optionality */ + if(elm->optional) { + int present = per_get_few_bits(&opmd, 1); + ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)", + td->name, elm->name, present, + (int)opmd.nboff, (int)opmd.nbits); + if(present == 0) { + /* This element is not present */ + if(elm->default_value_set) { + /* Fill-in DEFAULT */ + if(elm->default_value_set(memb_ptr2)) { + FREEMEM(opres); + ASN__DECODE_FAILED; + } + ASN_DEBUG("Filled-in default"); + } + /* The member is just not present */ + continue; + } + /* Fall through */ + } + + /* Fetch the member from the stream */ + ASN_DEBUG("Decoding member \"%s\" in %s", elm->name, td->name); + + if(elm->flags & ATF_OPEN_TYPE) { + rv = OPEN_TYPE_aper_get(opt_codec_ctx, td, st, elm, pd); + } else { + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + } + if(rv.code != RC_OK) { + ASN_DEBUG("Failed decode %s in %s", + elm->name, td->name); + FREEMEM(opres); + return rv; + } + } + + /* Optionality map is not needed anymore */ + FREEMEM(opres); + + /* + * Deal with extensions. + */ + if(extpresent) { + ssize_t bmlength; + uint8_t *epres; /* Presence of extension members */ + asn_per_data_t epmd; + + bmlength = aper_get_nslength(pd); + if(bmlength < 0) ASN__DECODE_STARVED; + + ASN_DEBUG("Extensions %" ASN_PRI_SSIZE " present in %s", bmlength, td->name); + + epres = (uint8_t *)MALLOC((bmlength + 15) >> 3); + if(!epres) ASN__DECODE_STARVED; + + /* Get the extensions map */ + if(per_get_many_bits(pd, epres, 0, bmlength)) + ASN__DECODE_STARVED; + + memset(&epmd, 0, sizeof(epmd)); + epmd.buffer = epres; + epmd.nbits = bmlength; + ASN_DEBUG("Read in extensions bitmap for %s of %ld bits (%x..)", + td->name, bmlength, *epres); + + /* Go over extensions and read them in */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%ld is not extension", edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (void *)((char *)st + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + present = per_get_few_bits(&epmd, 1); + if(present <= 0) { + if(present < 0) break; /* No more extensions */ + continue; + } + + ASN_DEBUG("Decoding member %s in %s %p", elm->name, td->name, *memb_ptr2); + rv = aper_open_type_get(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, memb_ptr2, pd); + if(rv.code != RC_OK) { + FREEMEM(epres); + return rv; + } + } + + /* Skip over overflow extensions which aren't present + * in this system's version of the protocol */ + for(;;) { + ASN_DEBUG("Getting overflow extensions"); + switch(per_get_few_bits(&epmd, 1)) { + case -1: + break; + case 0: + continue; + default: + if(aper_open_type_skip(opt_codec_ctx, pd)) { + FREEMEM(epres); + ASN__DECODE_STARVED; + } + } + break; + } + + FREEMEM(epres); + } + + /* Fill DEFAULT members in extensions */ + for(edx = specs->roms_count; edx < specs->roms_count + + specs->aoms_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + void **memb_ptr2; /* Pointer to member pointer */ + + if(!elm->default_value_set) continue; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (void **)((char *)st + + elm->memb_offset); + if(*memb_ptr2) continue; + } else { + continue; /* Extensions are all optionals */ + } + + /* Set default value */ + if(elm->default_value_set(memb_ptr2)) { + ASN__DECODE_FAILED; + } + } + + rv.consumed = 0; + rv.code = RC_OK; + return rv; +} + +static int +SEQUENCE_handle_extensions_aper(const asn_TYPE_descriptor_t *td, + const void *sptr, + asn_per_outp_t *po1, asn_per_outp_t *po2) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + int exts_present = 0; + int exts_count = 0; + size_t edx; + + if(specs->first_extension < 0) { + return 0; + } + + /* Find out which extensions are present */ + for(edx = specs->first_extension; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + if(!IN_EXTENSION_GROUP(specs, edx)) { + ASN_DEBUG("%s (@%ld) is not extension", elm->type->name, edx); + continue; + } + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + ASN_DEBUG("checking %s (@%ld) present => %d", + elm->type->name, edx, present); + exts_count++; + exts_present += present; + + /* Encode as presence marker */ + if(po1 && per_put_few_bits(po1, present, 1)) + return -1; + /* Encode as open type field */ + if(po2 && present && aper_open_type_put(elm->type, + elm->encoding_constraints.per_constraints, *memb_ptr2, po2)) + return -1; + + } + + return exts_present ? exts_count : 0; +} + +asn_enc_rval_t +SEQUENCE_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_SEQUENCE_specifics_t *specs + = (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_enc_rval_t er = {0,0,0}; + int n_extensions; + size_t edx; + size_t i; + + (void)constraints; + + if(!sptr) + ASN__ENCODE_FAILED; + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE (APER)", td->name); + + /* + * X.691#18.1 Whether structure is extensible + * and whether to encode extensions + */ + if(specs->first_extension < 0) { + n_extensions = 0; /* There are no extensions to encode */ + } else { + n_extensions = SEQUENCE_handle_extensions_aper(td, sptr, 0, 0); + if(n_extensions < 0) ASN__ENCODE_FAILED; + if(per_put_few_bits(po, n_extensions ? 1 : 0, 1)) { + ASN__ENCODE_FAILED; + } + } + + /* Encode a presence bitmap */ + for(i = 0; i < specs->roms_count; i++) { + asn_TYPE_member_t *elm; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + int present; + + edx = specs->oms[i]; + elm = &td->elements[edx]; + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + present = (*memb_ptr2 != 0); + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + present = 1; + } + + /* Eliminate default values */ + if(present && elm->default_value_cmp + && elm->default_value_cmp(memb_ptr2) == 1) + present = 0; + + ASN_DEBUG("Element %s %s %s->%s is %s", + elm->flags & ATF_POINTER ? "ptr" : "inline", + elm->default_value_cmp ? "def" : "wtv", + td->name, elm->name, present ? "present" : "absent"); + if(per_put_few_bits(po, present, 1)) + ASN__ENCODE_FAILED; + } + + /* + * Encode the sequence ROOT elements. + */ + ASN_DEBUG("first_extension = %d, elements = %d", specs->first_extension, + td->elements_count); + for(edx = 0; + edx < ((specs->first_extension < 0) ? td->elements_count + : (size_t)specs->first_extension); + edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *memb_ptr; /* Pointer to the member */ + const void * const *memb_ptr2; /* Pointer to that pointer */ + + if(IN_EXTENSION_GROUP(specs, edx)) + continue; + + ASN_DEBUG("About to encode %s", elm->type->name); + + /* Fetch the pointer to this member */ + if(elm->flags & ATF_POINTER) { + memb_ptr2 = (const void * const *)((const char *)sptr + elm->memb_offset); + if(!*memb_ptr2) { + ASN_DEBUG("Element %s %ld not present", + elm->name, edx); + if(elm->optional) + continue; + /* Mandatory element is missing */ + ASN__ENCODE_FAILED; + } + } else { + memb_ptr = (const void *)((const char *)sptr + elm->memb_offset); + memb_ptr2 = &memb_ptr; + } + + /* Eliminate default values */ + if(elm->default_value_cmp && elm->default_value_cmp(memb_ptr2) == 1) + continue; + + ASN_DEBUG("Encoding %s->%s", td->name, elm->name); + er = elm->type->op->aper_encoder(elm->type, elm->encoding_constraints.per_constraints, + *memb_ptr2, po); + if(er.encoded == -1) + return er; + } + + /* No extensions to encode */ + if(!n_extensions) ASN__ENCODED_OK(er); + + ASN_DEBUG("Length of %d bit-map", n_extensions); + /* #18.8. Write down the presence bit-map length. */ + if(aper_put_nslength(po, n_extensions)) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Bit-map of %d elements", n_extensions); + /* #18.7. Encoding the extensions presence bit-map. */ + /* TODO: act upon NOTE in #18.7 for canonical PER */ + if(SEQUENCE_handle_extensions_aper(td, sptr, po, 0) != n_extensions) + ASN__ENCODE_FAILED; + + ASN_DEBUG("Writing %d extensions", n_extensions); + /* #18.9. Encode extensions as open type fields. */ + if(SEQUENCE_handle_extensions_aper(td, sptr, 0, po) != n_extensions) + ASN__ENCODE_FAILED; + + ASN__ENCODED_OK(er); +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + size_t edx; + + for(edx = 0; edx < td->elements_count; edx++) { + asn_TYPE_member_t *elm = &td->elements[edx]; + const void *amemb; + const void *bmemb; + int ret; + + if(elm->flags & ATF_POINTER) { + amemb = + *(const void *const *)((const char *)aptr + elm->memb_offset); + bmemb = + *(const void *const *)((const char *)bptr + elm->memb_offset); + if(!amemb) { + if(!bmemb) continue; + if(elm->default_value_cmp + && elm->default_value_cmp(bmemb) == 0) { + /* A is absent, but B is present and equal to DEFAULT */ + continue; + } + return -1; + } else if(!bmemb) { + if(elm->default_value_cmp + && elm->default_value_cmp(amemb) == 0) { + /* B is absent, but A is present and equal to DEFAULT */ + continue; + } + return 1; + } + } else { + amemb = (const void *)((const char *)aptr + elm->memb_offset); + bmemb = (const void *)((const char *)bptr + elm->memb_offset); + } + + ret = elm->type->op->compare_struct(elm->type, amemb, bmemb); + if(ret != 0) return ret; + } + + return 0; +} + +asn_TYPE_operation_t asn_OP_SEQUENCE = { + SEQUENCE_free, + SEQUENCE_print, + SEQUENCE_compare, + SEQUENCE_decode_ber, + SEQUENCE_encode_der, + SEQUENCE_decode_xer, + SEQUENCE_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_decode_oer, + SEQUENCE_encode_oer, +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_decode_uper, + SEQUENCE_encode_uper, + SEQUENCE_decode_aper, + SEQUENCE_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SEQUENCE_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constr, + size_t max_length) { + const asn_SEQUENCE_specifics_t *specs = + (const asn_SEQUENCE_specifics_t *)td->specifics; + asn_random_fill_result_t result_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + void *st = *sptr; + size_t edx; + + if(max_length == 0) return result_skipped; + + (void)constr; + + if(st == NULL) { + st = CALLOC(1, specs->struct_size); + if(st == NULL) { + return result_failed; + } + } + + for(edx = 0; edx < td->elements_count; edx++) { + const asn_TYPE_member_t *elm = &td->elements[edx]; + void *memb_ptr; /* Pointer to the member */ + void **memb_ptr2; /* Pointer to that pointer */ + asn_random_fill_result_t tmpres; + + if(elm->optional && asn_random_between(0, 4) == 2) { + /* Sometimes decide not to fill the optional value */ + continue; + } + + if(elm->flags & ATF_POINTER) { + /* Member is a pointer to another structure */ + memb_ptr2 = (void **)((char *)st + elm->memb_offset); + } else { + memb_ptr = (char *)st + elm->memb_offset; + memb_ptr2 = &memb_ptr; + } + + tmpres = elm->type->op->random_fill( + elm->type, memb_ptr2, &elm->encoding_constraints, + max_length > result_ok.length ? max_length - result_ok.length : 0); + switch(tmpres.code) { + case ARFILL_OK: + result_ok.length += tmpres.length; + continue; + case ARFILL_SKIPPED: + assert(!(elm->flags & ATF_POINTER) || *memb_ptr2 == NULL); + continue; + case ARFILL_FAILED: + if(st == *sptr) { + ASN_STRUCT_RESET(*td, st); + } else { + ASN_STRUCT_FREE(*td, st); + } + return tmpres; + } + } + + *sptr = st; + + return result_ok; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE.h b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE.h new file mode 100644 index 0000000..a22ed3a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_H_ +#define _CONSTR_SEQUENCE_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SEQUENCE_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* + * Tags to members mapping table (sorted). + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Optional members of the extensions root (roms) or additions (aoms). + * Meaningful for PER. + */ + const int *oms; /* Optional MemberS */ + unsigned roms_count; /* Root optional members count */ + unsigned aoms_count; /* Additions optional members count */ + + /* + * Description of an extensions group. + * Root components are clustered at the beginning of the structure, + * whereas extensions are clustered at the end. -1 means not extensible. + */ + signed first_extension; /* First extension addition */ +} asn_SEQUENCE_specifics_t; + + +/* + * A set specialized functions dealing with the SEQUENCE type. + */ +asn_struct_free_f SEQUENCE_free; +asn_struct_print_f SEQUENCE_print; +asn_struct_compare_f SEQUENCE_compare; +asn_constr_check_f SEQUENCE_constraint; +ber_type_decoder_f SEQUENCE_decode_ber; +der_type_encoder_f SEQUENCE_encode_der; +xer_type_decoder_f SEQUENCE_decode_xer; +xer_type_encoder_f SEQUENCE_encode_xer; +oer_type_decoder_f SEQUENCE_decode_oer; +oer_type_encoder_f SEQUENCE_encode_oer; +per_type_decoder_f SEQUENCE_decode_uper; +per_type_encoder_f SEQUENCE_encode_uper; +per_type_decoder_f SEQUENCE_decode_aper; +per_type_encoder_f SEQUENCE_encode_aper; +asn_random_fill_f SEQUENCE_random_fill; +extern asn_TYPE_operation_t asn_OP_SEQUENCE; + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SEQUENCE_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE_OF.c b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE_OF.c new file mode 100644 index 0000000..10f18cf --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE_OF.c @@ -0,0 +1,358 @@ +/*- + * Copyright (c) 2003, 2004, 2006 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The DER encoder of the SEQUENCE OF type. + */ +asn_enc_rval_t +SEQUENCE_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *ptr, + int tag_mode, ber_tlv_tag_t tag, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(ptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + asn_enc_rval_t erval = {0,0,0}; + int edx; + + ASN_DEBUG("Estimating size of SEQUENCE OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + 0, 0); + if(erval.encoded == -1) + return erval; + computed_size += erval.encoded; + } + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = der_write_tags(td, computed_size, tag_mode, 1, tag, + cb, app_key); + if(encoding_size == -1) { + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + return erval; + } + + computed_size += encoding_size; + if(!cb) { + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of SEQUENCE OF %s", td->name); + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) continue; + erval = elm->type->op->der_encoder(elm->type, memb_ptr, + 0, elm->tag, + cb, app_key); + if(erval.encoded == -1) + return erval; + encoding_size += erval.encoded; + } + + if(computed_size != (size_t)encoding_size) { + /* + * Encoded size is not equal to the computed size. + */ + erval.encoded = -1; + erval.failed_type = td; + erval.structure_ptr = ptr; + } else { + erval.encoded = computed_size; + erval.structure_ptr = 0; + erval.failed_type = 0; + } + + return erval; +} + +asn_enc_rval_t +SEQUENCE_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, + int ilevel, enum xer_encoder_flags_e flags, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 + : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, ilevel + 1, + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + if(!xcan) ASN__TEXT_INDENT(1, ilevel + 1); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_enc_rval_t +SEQUENCE_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + const asn_TYPE_member_t *elm = td->elements; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + void *memb_ptr = list->array[edx]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->uper_encoder( + elm->type, elm->encoding_constraints.per_constraints, memb_ptr, + po); + if(er.encoded == -1) ASN__ENCODE_FAILED; + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + ASN__ENCODED_OK(er); +} + +asn_enc_rval_t +SEQUENCE_OF_encode_aper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + const asn_anonymous_sequence_ *list; + const asn_per_constraint_t *ct; + asn_enc_rval_t er = {0,0,0}; + asn_TYPE_member_t *elm = td->elements; + int seq; + + if(!sptr) ASN__ENCODE_FAILED; + list = _A_CSEQUENCE_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF size (%d) using ALIGNED PER", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = (list->count < ct->lower_bound + || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", + ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) + ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) + ASN__ENCODE_FAILED; + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ +/* if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; +*/ + if (aper_put_length(po, ct->upper_bound - ct->lower_bound + 1, list->count - ct->lower_bound) < 0) + ASN__ENCODE_FAILED; + } + + for(seq = -1; seq < list->count;) { + ssize_t mayEncode; + if(seq < 0) seq = 0; + if(ct && ct->effective_bits >= 0) { + mayEncode = list->count; + } else { + mayEncode = aper_put_length(po, -1, list->count - seq); + if(mayEncode < 0) ASN__ENCODE_FAILED; + } + + while(mayEncode--) { + void *memb_ptr = list->array[seq++]; + if(!memb_ptr) ASN__ENCODE_FAILED; + er = elm->type->op->aper_encoder(elm->type, + elm->encoding_constraints.per_constraints, memb_ptr, po); + if(er.encoded == -1) + ASN__ENCODE_FAILED; + } + } + + ASN__ENCODED_OK(er); +} +#endif /* ASN_DISABLE_PER_SUPPORT */ + +int +SEQUENCE_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_sequence_ *a = _A_CSEQUENCE_FROM_VOID(aptr); + const asn_anonymous_sequence_ *b = _A_CSEQUENCE_FROM_VOID(bptr); + ssize_t idx; + + if(a && b) { + ssize_t common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, a->array[idx], b->array[idx]); + if(ret) return ret; + } + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SEQUENCE_OF = { + SEQUENCE_OF_free, + SEQUENCE_OF_print, + SEQUENCE_OF_compare, + SEQUENCE_OF_decode_ber, + SEQUENCE_OF_encode_der, + SEQUENCE_OF_decode_xer, + SEQUENCE_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SEQUENCE_OF_decode_oer, /* Same as SET OF decoder. */ + SEQUENCE_OF_encode_oer, /* Same as SET OF encoder */ +#endif /* ASN_DISABLE_OER_SUPPORT */ +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SEQUENCE_OF_decode_uper, /* Same as SET OF decoder */ + SEQUENCE_OF_encode_uper, + SEQUENCE_OF_decode_aper, + SEQUENCE_OF_encode_aper, +#endif /* ASN_DISABLE_PER_SUPPORT */ + SEQUENCE_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE_OF.h b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE_OF.h new file mode 100644 index 0000000..6857f0f --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_SEQUENCE_OF.h @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SEQUENCE_OF_H_ +#define _CONSTR_SEQUENCE_OF_H_ + +#include +#include /* Implemented using SET OF */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * A set specialized functions dealing with the SEQUENCE OF type. + * Generally implemented using SET OF. + */ +asn_struct_compare_f SEQUENCE_OF_compare; +der_type_encoder_f SEQUENCE_OF_encode_der; +xer_type_encoder_f SEQUENCE_OF_encode_xer; +per_type_encoder_f SEQUENCE_OF_encode_uper; +per_type_encoder_f SEQUENCE_OF_encode_aper; +extern asn_TYPE_operation_t asn_OP_SEQUENCE_OF; + +#define SEQUENCE_OF_free SET_OF_free +#define SEQUENCE_OF_print SET_OF_print +#define SEQUENCE_OF_constraint SET_OF_constraint +#define SEQUENCE_OF_decode_ber SET_OF_decode_ber +#define SEQUENCE_OF_decode_xer SET_OF_decode_xer +#define SEQUENCE_OF_decode_oer SET_OF_decode_oer +#define SEQUENCE_OF_encode_oer SET_OF_encode_oer +#define SEQUENCE_OF_decode_uper SET_OF_decode_uper +#define SEQUENCE_OF_decode_aper SET_OF_decode_aper +#define SEQUENCE_OF_random_fill SET_OF_random_fill + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_OF_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_SET_OF.c b/setup/xapp-bs-connector/asn1c_defs/constr_SET_OF.c new file mode 100644 index 0000000..bf1dc27 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_SET_OF.c @@ -0,0 +1,1441 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Number of bytes left for this structure. + * (ctx->left) indicates the number of bytes _transferred_ for the structure. + * (size) contains the number of bytes in the buffer passed. + */ +#define LEFT ((size<(size_t)ctx->left)?size:(size_t)ctx->left) + +/* + * If the subprocessor function returns with an indication that it wants + * more data, it may well be a fatal decoding problem, because the + * size is constrained by the 's L, even if the buffer size allows + * reading more data. + * For example, consider the buffer containing the following TLVs: + * ... + * The TLV length clearly indicates that one byte is expected in V, but + * if the V processor returns with "want more data" even if the buffer + * contains way more data than the V processor have seen. + */ +#define SIZE_VIOLATION (ctx->left >= 0 && (size_t)ctx->left <= size) + +/* + * This macro "eats" the part of the buffer which is definitely "consumed", + * i.e. was correctly converted into local representation or rightfully skipped. + */ +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + ptr = ((const char *)ptr) + num;\ + size -= num; \ + if(ctx->left >= 0) \ + ctx->left -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Switch to the next phase of parsing. + */ +#undef NEXT_PHASE +#undef PHASE_OUT +#define NEXT_PHASE(ctx) do { \ + ctx->phase++; \ + ctx->step = 0; \ + } while(0) +#define PHASE_OUT(ctx) do { ctx->phase = 10; } while(0) + +/* + * Return a standardized complex structure. + */ +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself;\ + return rval; \ + } while(0) + +/* + * The decoder of the SET OF type. + */ +asn_dec_rval_t +SET_OF_decode_ber(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *ptr, size_t size, int tag_mode) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + + /* + * Parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + ber_tlv_tag_t tlv_tag; /* T from TLV */ + asn_dec_rval_t rval; /* Return code from subparsers */ + + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + ASN_DEBUG("Decoding %s as SET OF", td->name); + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) { + RETURN(RC_FAIL); + } + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Start to parse where left previously + */ + switch(ctx->phase) { + case 0: + /* + * PHASE 0. + * Check that the set of tags associated with given structure + * perfectly fits our expectations. + */ + + rval = ber_check_tags(opt_codec_ctx, td, ctx, ptr, size, + tag_mode, 1, &ctx->left, 0); + if(rval.code != RC_OK) { + ASN_DEBUG("%s tagging check failed: %d", + td->name, rval.code); + return rval; + } + + if(ctx->left >= 0) + ctx->left += rval.consumed; /* ?Substracted below! */ + ADVANCE(rval.consumed); + + ASN_DEBUG("Structure consumes %ld bytes, " + "buffer %ld", (long)ctx->left, (long)size); + + NEXT_PHASE(ctx); + /* Fall through */ + case 1: + /* + * PHASE 1. + * From the place where we've left it previously, + * try to decode the next item. + */ + for(;; ctx->step = 0) { + ssize_t tag_len; /* Length of TLV's T */ + + if(ctx->step & 1) + goto microphase2; + + /* + * MICROPHASE 1: Synchronize decoding. + */ + + if(ctx->left == 0) { + ASN_DEBUG("End of SET OF %s", td->name); + /* + * No more things to decode. + * Exit out of here. + */ + PHASE_OUT(ctx); + RETURN(RC_OK); + } + + /* + * Fetch the T from TLV. + */ + tag_len = ber_fetch_tag(ptr, LEFT, &tlv_tag); + switch(tag_len) { + case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE); + /* Fall through */ + case -1: RETURN(RC_FAIL); + } + + if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) { + if(LEFT < 2) { + if(SIZE_VIOLATION) + RETURN(RC_FAIL); + else + RETURN(RC_WMORE); + } else if(((const uint8_t *)ptr)[1] == 0) { + /* + * Found the terminator of the + * indefinite length structure. + */ + break; + } + } + + /* Outmost tag may be unknown and cannot be fetched/compared */ + if(elm->tag != (ber_tlv_tag_t)-1) { + if(BER_TAGS_EQUAL(tlv_tag, elm->tag)) { + /* + * The new list member of expected type has arrived. + */ + } else { + ASN_DEBUG("Unexpected tag %s fixed SET OF %s", + ber_tlv_tag_string(tlv_tag), td->name); + ASN_DEBUG("%s SET OF has tag %s", + td->name, ber_tlv_tag_string(elm->tag)); + RETURN(RC_FAIL); + } + } + + /* + * MICROPHASE 2: Invoke the member-specific decoder. + */ + ctx->step |= 1; /* Confirm entering next microphase */ + microphase2: + + /* + * Invoke the member fetch routine according to member's type + */ + rval = elm->type->op->ber_decoder(opt_codec_ctx, + elm->type, &ctx->ptr, ptr, LEFT, 0); + ASN_DEBUG("In %s SET OF %s code %d consumed %d", + td->name, elm->type->name, + rval.code, (int)rval.consumed); + switch(rval.code) { + case RC_OK: + { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + else + ctx->ptr = 0; + } + break; + case RC_WMORE: /* More data expected */ + if(!SIZE_VIOLATION) { + ADVANCE(rval.consumed); + RETURN(RC_WMORE); + } + /* Fall through */ + case RC_FAIL: /* Fatal error */ + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + RETURN(RC_FAIL); + } /* switch(rval) */ + + ADVANCE(rval.consumed); + } /* for(all list members) */ + + NEXT_PHASE(ctx); + case 2: + /* + * Read in all "end of content" TLVs. + */ + while(ctx->left < 0) { + if(LEFT < 2) { + if(LEFT > 0 && ((const char *)ptr)[0] != 0) { + /* Unexpected tag */ + RETURN(RC_FAIL); + } else { + RETURN(RC_WMORE); + } + } + if(((const char *)ptr)[0] == 0 + && ((const char *)ptr)[1] == 0) { + ADVANCE(2); + ctx->left++; + } else { + RETURN(RC_FAIL); + } + } + + PHASE_OUT(ctx); + } + + RETURN(RC_OK); +} + +/* + * Internally visible buffer holding a single encoded element. + */ +struct _el_buffer { + uint8_t *buf; + size_t length; + size_t allocated_size; + unsigned bits_unused; +}; +/* Append bytes to the above structure */ +static int _el_addbytes(const void *buffer, size_t size, void *el_buf_ptr) { + struct _el_buffer *el_buf = (struct _el_buffer *)el_buf_ptr; + + if(el_buf->length + size > el_buf->allocated_size) { + size_t new_size = el_buf->allocated_size ? el_buf->allocated_size : 8; + void *p; + + do { + new_size <<= 2; + } while(el_buf->length + size > new_size); + + p = REALLOC(el_buf->buf, new_size); + if(p) { + el_buf->buf = p; + el_buf->allocated_size = new_size; + } else { + return -1; + } + } + + memcpy(el_buf->buf + el_buf->length, buffer, size); + + el_buf->length += size; + return 0; +} + +static void assert_unused_bits(const struct _el_buffer* p) { + if(p->length) { + assert((p->buf[p->length-1] & ~(0xff << p->bits_unused)) == 0); + } else { + assert(p->bits_unused == 0); + } +} + +static int _el_buf_cmp(const void *ap, const void *bp) { + const struct _el_buffer *a = (const struct _el_buffer *)ap; + const struct _el_buffer *b = (const struct _el_buffer *)bp; + size_t common_len; + int ret = 0; + + if(a->length < b->length) + common_len = a->length; + else + common_len = b->length; + + if (a->buf && b->buf) { + ret = memcmp(a->buf, b->buf, common_len); + } + if(ret == 0) { + if(a->length < b->length) + ret = -1; + else if(a->length > b->length) + ret = 1; + /* Ignore unused bits. */ + assert_unused_bits(a); + assert_unused_bits(b); + } + + return ret; +} + +static void +SET_OF__encode_sorted_free(struct _el_buffer *el_buf, size_t count) { + size_t i; + + for(i = 0; i < count; i++) { + FREEMEM(el_buf[i].buf); + } + + FREEMEM(el_buf); +} + +enum SET_OF__encode_method { + SOES_DER, /* Distinguished Encoding Rules */ + SOES_CUPER /* Canonical Unaligned Packed Encoding Rules */ +}; + +static struct _el_buffer * +SET_OF__encode_sorted(const asn_TYPE_member_t *elm, + const asn_anonymous_set_ *list, + enum SET_OF__encode_method method) { + struct _el_buffer *encoded_els; + int edx; + + encoded_els = + (struct _el_buffer *)CALLOC(list->count, sizeof(encoded_els[0])); + if(encoded_els == NULL) { + return NULL; + } + + /* + * Encode all members. + */ + for(edx = 0; edx < list->count; edx++) { + const void *memb_ptr = list->array[edx]; + struct _el_buffer *encoding_el = &encoded_els[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) break; + + /* + * Encode the member into the prepared space. + */ + switch(method) { + case SOES_DER: + erval = elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, + _el_addbytes, encoding_el); + break; + case SOES_CUPER: + erval = uper_encode(elm->type, + elm->encoding_constraints.per_constraints, + memb_ptr, _el_addbytes, encoding_el); + if(erval.encoded != -1) { + size_t extra_bits = erval.encoded % 8; + assert(encoding_el->length == (size_t)(erval.encoded + 7) / 8); + encoding_el->bits_unused = (8 - extra_bits) & 0x7; + } + break; + default: + assert(!"Unreachable"); + break; + } + if(erval.encoded < 0) break; + } + + if(edx == list->count) { + /* + * Sort the encoded elements according to their encoding. + */ + qsort(encoded_els, list->count, sizeof(encoded_els[0]), _el_buf_cmp); + + return encoded_els; + } else { + SET_OF__encode_sorted_free(encoded_els, edx); + return NULL; + } +} + + +/* + * The DER encoder of the SET OF type. + */ +asn_enc_rval_t +SET_OF_encode_der(const asn_TYPE_descriptor_t *td, const void *sptr, + int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, + void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + size_t computed_size = 0; + ssize_t encoding_size = 0; + struct _el_buffer *encoded_els; + int edx; + + ASN_DEBUG("Estimating size for SET OF %s", td->name); + + /* + * Gather the length of the underlying members sequence. + */ + for(edx = 0; edx < list->count; edx++) { + void *memb_ptr = list->array[edx]; + asn_enc_rval_t erval = {0,0,0}; + + if(!memb_ptr) ASN__ENCODE_FAILED; + + erval = + elm->type->op->der_encoder(elm->type, memb_ptr, 0, elm->tag, 0, 0); + if(erval.encoded == -1) return erval; + computed_size += erval.encoded; + } + + + /* + * Encode the TLV for the sequence itself. + */ + encoding_size = + der_write_tags(td, computed_size, tag_mode, 1, tag, cb, app_key); + if(encoding_size < 0) { + ASN__ENCODE_FAILED; + } + computed_size += encoding_size; + + if(!cb || list->count == 0) { + asn_enc_rval_t erval = {0,0,0}; + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } + + ASN_DEBUG("Encoding members of %s SET OF", td->name); + + /* + * DER mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the + * encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_DER); + + /* + * Report encoded elements to the application. + * Dispose of temporary sorted members table. + */ + for(edx = 0; edx < list->count; edx++) { + struct _el_buffer *encoded_el = &encoded_els[edx]; + /* Report encoded chunks to the application */ + if(cb(encoded_el->buf, encoded_el->length, app_key) < 0) { + break; + } else { + encoding_size += encoded_el->length; + } + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if(edx == list->count) { + asn_enc_rval_t erval = {0,0,0}; + assert(computed_size == (size_t)encoding_size); + erval.encoded = computed_size; + ASN__ENCODED_OK(erval); + } else { + ASN__ENCODE_FAILED; + } +} + +#undef XER_ADVANCE +#define XER_ADVANCE(num_bytes) do { \ + size_t num = num_bytes; \ + buf_ptr = ((const char *)buf_ptr) + num;\ + size -= num; \ + consumed_myself += num; \ + } while(0) + +/* + * Decode the XER (XML) data. + */ +asn_dec_rval_t +SET_OF_decode_xer(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const char *opt_mname, const void *buf_ptr, size_t size) { + /* + * Bring closer parts of structure description. + */ + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *element = td->elements; + const char *elm_tag; + const char *xml_tag = opt_mname ? opt_mname : td->xml_tag; + + /* + * ... and parts of the structure being constructed. + */ + void *st = *struct_ptr; /* Target structure. */ + asn_struct_ctx_t *ctx; /* Decoder context */ + + asn_dec_rval_t rval = {RC_OK, 0};/* Return value from a decoder */ + ssize_t consumed_myself = 0; /* Consumed bytes from ptr */ + + /* + * Create the target structure if it is not present already. + */ + if(st == 0) { + st = *struct_ptr = CALLOC(1, specs->struct_size); + if(st == 0) RETURN(RC_FAIL); + } + + /* Which tag is expected for the downstream */ + if(specs->as_XMLValueList) { + elm_tag = (specs->as_XMLValueList == 1) ? 0 : ""; + } else { + elm_tag = (*element->name) + ? element->name : element->type->xml_tag; + } + + /* + * Restore parsing context. + */ + ctx = (asn_struct_ctx_t *)((char *)st + specs->ctx_offset); + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + * Phase 2: Processing inner type. + */ + for(; ctx->phase <= 2;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Go inside the inner member of a set. + */ + if(ctx->phase == 2) { + asn_dec_rval_t tmprval = {RC_OK, 0}; + + /* Invoke the inner type decoder, m.b. multiple times */ + ASN_DEBUG("XER/SET OF element [%s]", elm_tag); + tmprval = element->type->op->xer_decoder(opt_codec_ctx, + element->type, &ctx->ptr, elm_tag, + buf_ptr, size); + if(tmprval.code == RC_OK) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + if(ASN_SET_ADD(list, ctx->ptr) != 0) + RETURN(RC_FAIL); + ctx->ptr = 0; + XER_ADVANCE(tmprval.consumed); + } else { + XER_ADVANCE(tmprval.consumed); + RETURN(tmprval.code); + } + ctx->phase = 1; /* Back to body processing */ + ASN_DEBUG("XER/SET OF phase => %d", ctx->phase); + /* Fall through */ + } + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, + buf_ptr, size, &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + case PXER_TEXT: /* Ignore free-standing text */ + XER_ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + ASN_DEBUG("XER/SET OF: tcv = %d, ph=%d t=%s", + tcv, ctx->phase, xml_tag); + switch(tcv) { + case XCT_CLOSING: + if(ctx->phase == 0) break; + ctx->phase = 0; + /* Fall through */ + case XCT_BOTH: + if(ctx->phase == 0) { + /* No more things to decode */ + XER_ADVANCE(ch_size); + ctx->phase = 3; /* Phase out */ + RETURN(RC_OK); + } + /* Fall through */ + case XCT_OPENING: + if(ctx->phase == 0) { + XER_ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + } + /* Fall through */ + case XCT_UNKNOWN_OP: + case XCT_UNKNOWN_BO: + + ASN_DEBUG("XER/SET OF: tcv=%d, ph=%d", tcv, ctx->phase); + if(ctx->phase == 1) { + /* + * Process a single possible member. + */ + ctx->phase = 2; + continue; + } + /* Fall through */ + default: + break; + } + + ASN_DEBUG("Unexpected XML tag in SET OF"); + break; + } + + ctx->phase = 3; /* "Phase out" on hard failure */ + RETURN(RC_FAIL); +} + + + +typedef struct xer_tmp_enc_s { + void *buffer; + size_t offset; + size_t size; +} xer_tmp_enc_t; +static int +SET_OF_encode_xer_callback(const void *buffer, size_t size, void *key) { + xer_tmp_enc_t *t = (xer_tmp_enc_t *)key; + if(t->offset + size >= t->size) { + size_t newsize = (t->size << 2) + size; + void *p = REALLOC(t->buffer, newsize); + if(!p) return -1; + t->buffer = p; + t->size = newsize; + } + memcpy((char *)t->buffer + t->offset, buffer, size); + t->offset += size; + return 0; +} +static int +SET_OF_xer_order(const void *aptr, const void *bptr) { + const xer_tmp_enc_t *a = (const xer_tmp_enc_t *)aptr; + const xer_tmp_enc_t *b = (const xer_tmp_enc_t *)bptr; + size_t minlen = a->offset; + int ret; + if(b->offset < minlen) minlen = b->offset; + /* Well-formed UTF-8 has this nice lexicographical property... */ + ret = memcmp(a->buffer, b->buffer, minlen); + if(ret != 0) return ret; + if(a->offset == b->offset) + return 0; + if(a->offset == minlen) + return -1; + return 1; +} + + +asn_enc_rval_t +SET_OF_encode_xer(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + enum xer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0,0,0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + const char *mname = specs->as_XMLValueList + ? 0 : ((*elm->name) ? elm->name : elm->type->xml_tag); + size_t mlen = mname ? strlen(mname) : 0; + int xcan = (flags & XER_F_CANONICAL); + xer_tmp_enc_t *encs = 0; + size_t encs_count = 0; + void *original_app_key = app_key; + asn_app_consume_bytes_f *original_cb = cb; + int i; + + if(!sptr) ASN__ENCODE_FAILED; + + if(xcan) { + encs = (xer_tmp_enc_t *)MALLOC(list->count * sizeof(encs[0])); + if(!encs) ASN__ENCODE_FAILED; + cb = SET_OF_encode_xer_callback; + } + + er.encoded = 0; + + for(i = 0; i < list->count; i++) { + asn_enc_rval_t tmper = {0,0,0}; + + void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + if(encs) { + memset(&encs[encs_count], 0, sizeof(encs[0])); + app_key = &encs[encs_count]; + encs_count++; + } + + if(mname) { + if(!xcan) ASN__TEXT_INDENT(1, ilevel); + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + } + + if(!xcan && specs->as_XMLValueList == 1) + ASN__TEXT_INDENT(1, ilevel + 1); + tmper = elm->type->op->xer_encoder(elm->type, memb_ptr, + ilevel + (specs->as_XMLValueList != 2), + flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + if(tmper.encoded == 0 && specs->as_XMLValueList) { + const char *name = elm->type->xml_tag; + size_t len = strlen(name); + ASN__CALLBACK3("<", 1, name, len, "/>", 2); + } + + if(mname) { + ASN__CALLBACK3("", 1); + } + + } + + if(!xcan) ASN__TEXT_INDENT(1, ilevel - 1); + + if(encs) { + xer_tmp_enc_t *enc = encs; + xer_tmp_enc_t *end = encs + encs_count; + ssize_t control_size = 0; + + er.encoded = 0; + cb = original_cb; + app_key = original_app_key; + qsort(encs, encs_count, sizeof(encs[0]), SET_OF_xer_order); + + for(; enc < end; enc++) { + ASN__CALLBACK(enc->buffer, enc->offset); + FREEMEM(enc->buffer); + enc->buffer = 0; + control_size += enc->offset; + } + assert(control_size == er.encoded); + } + + goto cleanup; +cb_failed: + ASN__ENCODE_FAILED; +cleanup: + if(encs) { + size_t n; + for(n = 0; n < encs_count; n++) { + FREEMEM(encs[n].buffer); + } + FREEMEM(encs); + } + ASN__ENCODED_OK(er); +} + +int +SET_OF_print(const asn_TYPE_descriptor_t *td, const void *sptr, int ilevel, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_TYPE_member_t *elm = td->elements; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int ret; + int i; + + if(!sptr) return (cb("", 8, app_key) < 0) ? -1 : 0; + + /* Dump preamble */ + if(cb(td->name, strlen(td->name), app_key) < 0 + || cb(" ::= {", 6, app_key) < 0) + return -1; + + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + if(!memb_ptr) continue; + + _i_INDENT(1); + + ret = elm->type->op->print_struct(elm->type, memb_ptr, + ilevel + 1, cb, app_key); + if(ret) return ret; + } + + ilevel--; + _i_INDENT(1); + + return (cb("}", 1, app_key) < 0) ? -1 : 0; +} + +void +SET_OF_free(const asn_TYPE_descriptor_t *td, void *ptr, + enum asn_struct_free_method method) { + if(td && ptr) { + const asn_SET_OF_specifics_t *specs; + asn_TYPE_member_t *elm = td->elements; + asn_anonymous_set_ *list = _A_SET_FROM_VOID(ptr); + asn_struct_ctx_t *ctx; /* Decoder context */ + int i; + + /* + * Could not use set_of_empty() because of (*free) + * incompatibility. + */ + for(i = 0; i < list->count; i++) { + void *memb_ptr = list->array[i]; + if(memb_ptr) + ASN_STRUCT_FREE(*elm->type, memb_ptr); + } + list->count = 0; /* No meaningful elements left */ + + asn_set_empty(list); /* Remove (list->array) */ + + specs = (const asn_SET_OF_specifics_t *)td->specifics; + ctx = (asn_struct_ctx_t *)((char *)ptr + specs->ctx_offset); + if(ctx->ptr) { + ASN_STRUCT_FREE(*elm->type, ctx->ptr); + ctx->ptr = 0; + } + + switch(method) { + case ASFM_FREE_EVERYTHING: + FREEMEM(ptr); + break; + case ASFM_FREE_UNDERLYING: + break; + case ASFM_FREE_UNDERLYING_AND_RESET: + memset(ptr, 0, specs->struct_size); + break; + } + } +} + +int +SET_OF_constraint(const asn_TYPE_descriptor_t *td, const void *sptr, + asn_app_constraint_failed_f *ctfailcb, void *app_key) { + const asn_TYPE_member_t *elm = td->elements; + asn_constr_check_f *constr; + const asn_anonymous_set_ *list = _A_CSET_FROM_VOID(sptr); + int i; + + if(!sptr) { + ASN__CTFAIL(app_key, td, sptr, + "%s: value not given (%s:%d)", + td->name, __FILE__, __LINE__); + return -1; + } + + constr = elm->encoding_constraints.general_constraints; + if(!constr) constr = elm->type->encoding_constraints.general_constraints; + + /* + * Iterate over the members of an array. + * Validate each in turn, until one fails. + */ + for(i = 0; i < list->count; i++) { + const void *memb_ptr = list->array[i]; + int ret; + + if(!memb_ptr) continue; + + ret = constr(elm->type, memb_ptr, ctfailcb, app_key); + if(ret) return ret; + } + + return 0; +} + +#ifndef ASN_DISABLE_PER_SUPPORT + +asn_dec_rval_t +SET_OF_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = per_get_few_bits(pd, ct->effective_bits); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = uper_get_length(pd, -1, 0, &repeat); + ASN_DEBUG("Got to decode %" ASN_PRI_SSIZE " elements (eff %d)", + nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->uper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) { + if(rv.consumed == 0 && nelems > 200) { + /* Protect from SET OF NULL compression bombs. */ + ASN__DECODE_FAILED; + } + continue; + } + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +asn_enc_rval_t +SET_OF_encode_uper(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + const asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + const asn_TYPE_member_t *elm = td->elements; + struct _el_buffer *encoded_els; + asn_enc_rval_t er = {0,0,0}; + size_t encoded_edx; + + if(!sptr) ASN__ENCODE_FAILED; + + list = _A_CSET_FROM_VOID(sptr); + + er.encoded = 0; + + ASN_DEBUG("Encoding %s as SEQUENCE OF (%d)", td->name, list->count); + + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + /* If extensible constraint, check if size is in root */ + if(ct) { + int not_in_root = + (list->count < ct->lower_bound || list->count > ct->upper_bound); + ASN_DEBUG("lb %ld ub %ld %s", ct->lower_bound, ct->upper_bound, + ct->flags & APC_EXTENSIBLE ? "ext" : "fix"); + if(ct->flags & APC_EXTENSIBLE) { + /* Declare whether size is in extension root */ + if(per_put_few_bits(po, not_in_root, 1)) ASN__ENCODE_FAILED; + if(not_in_root) ct = 0; + } else if(not_in_root && ct->effective_bits >= 0) { + ASN__ENCODE_FAILED; + } + + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + if(per_put_few_bits(po, list->count - ct->lower_bound, + ct->effective_bits)) + ASN__ENCODE_FAILED; + } else if(list->count == 0) { + /* When the list is empty add only the length determinant + * X.691, #20.6 and #11.9.4.1 + */ + if (uper_put_length(po, 0, 0)) { + ASN__ENCODE_FAILED; + } + ASN__ENCODED_OK(er); + } + + + /* + * Canonical UPER #22.1 mandates dynamic sorting of the SET OF elements + * according to their encodings. Build an array of the encoded elements. + */ + encoded_els = SET_OF__encode_sorted(elm, list, SOES_CUPER); + + for(encoded_edx = 0; (ssize_t)encoded_edx < list->count;) { + ssize_t may_encode; + size_t edx; + int need_eom = 0; + + if(ct && ct->effective_bits >= 0) { + may_encode = list->count; + } else { + may_encode = + uper_put_length(po, list->count - encoded_edx, &need_eom); + if(may_encode < 0) ASN__ENCODE_FAILED; + } + + for(edx = encoded_edx; edx < encoded_edx + may_encode; edx++) { + const struct _el_buffer *el = &encoded_els[edx]; + if(asn_put_many_bits(po, el->buf, + (8 * el->length) - el->bits_unused) < 0) { + break; + } + } + + if(need_eom && uper_put_length(po, 0, 0)) + ASN__ENCODE_FAILED; /* End of Message length */ + + encoded_edx += may_encode; + } + + SET_OF__encode_sorted_free(encoded_els, list->count); + + if((ssize_t)encoded_edx == list->count) { + ASN__ENCODED_OK(er); + } else { + ASN__ENCODE_FAILED; + } +} + +asn_dec_rval_t +SET_OF_decode_aper(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv = {RC_OK, 0}; + const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics; + const asn_TYPE_member_t *elm = td->elements; /* Single one */ + void *st = *sptr; + asn_anonymous_set_ *list; + const asn_per_constraint_t *ct; + int repeat = 0; + ssize_t nelems; + + if(ASN__STACK_OVERFLOW_CHECK(opt_codec_ctx)) + ASN__DECODE_FAILED; + + /* + * Create the target structure if it is not present already. + */ + if(!st) { + st = *sptr = CALLOC(1, specs->struct_size); + if(!st) ASN__DECODE_FAILED; + } + list = _A_SET_FROM_VOID(st); + + /* Figure out which constraints to use */ + if(constraints) ct = &constraints->size; + else if(td->encoding_constraints.per_constraints) + ct = &td->encoding_constraints.per_constraints->size; + else ct = 0; + + if(ct && ct->flags & APC_EXTENSIBLE) { + int value = per_get_few_bits(pd, 1); + if(value < 0) ASN__DECODE_STARVED; + if(value) ct = 0; /* Not restricted! */ + } + + if(ct && ct->effective_bits >= 0) { + /* X.691, #19.5: No length determinant */ + nelems = aper_get_nsnnwn(pd, ct->upper_bound - ct->lower_bound + 1); + ASN_DEBUG("Preparing to fetch %ld+%ld elements from %s", + (long)nelems, ct->lower_bound, td->name); + if(nelems < 0) ASN__DECODE_STARVED; + nelems += ct->lower_bound; + } else { + nelems = -1; + } + + do { + int i; + if(nelems < 0) { + nelems = aper_get_length(pd, ct ? ct->upper_bound - ct->lower_bound + 1 : -1, + ct ? ct->effective_bits : -1, &repeat); + ASN_DEBUG("Got to decode %d elements (eff %d)", + (int)nelems, (int)(ct ? ct->effective_bits : -1)); + if(nelems < 0) ASN__DECODE_STARVED; + } + + for(i = 0; i < nelems; i++) { + void *ptr = 0; + ASN_DEBUG("SET OF %s decoding", elm->type->name); + rv = elm->type->op->aper_decoder(opt_codec_ctx, elm->type, + elm->encoding_constraints.per_constraints, &ptr, pd); + ASN_DEBUG("%s SET OF %s decoded %d, %p", + td->name, elm->type->name, rv.code, ptr); + if(rv.code == RC_OK) { + if(ASN_SET_ADD(list, ptr) == 0) + continue; + ASN_DEBUG("Failed to add element into %s", + td->name); + /* Fall through */ + rv.code = RC_FAIL; + } else { + ASN_DEBUG("Failed decoding %s of %s (SET OF)", + elm->type->name, td->name); + } + if(ptr) ASN_STRUCT_FREE(*elm->type, ptr); + return rv; + } + + nelems = -1; /* Allow uper_get_length() */ + } while(repeat); + + ASN_DEBUG("Decoded %s as SET OF", td->name); + + rv.code = RC_OK; + rv.consumed = 0; + return rv; +} + +#endif /* ASN_DISABLE_PER_SUPPORT */ + +struct comparable_ptr { + const asn_TYPE_descriptor_t *td; + const void *sptr; +}; + +static int +SET_OF__compare_cb(const void *aptr, const void *bptr) { + const struct comparable_ptr *a = aptr; + const struct comparable_ptr *b = bptr; + assert(a->td == b->td); + return a->td->op->compare_struct(a->td, a->sptr, b->sptr); +} + +int +SET_OF_compare(const asn_TYPE_descriptor_t *td, const void *aptr, + const void *bptr) { + const asn_anonymous_set_ *a = _A_CSET_FROM_VOID(aptr); + const asn_anonymous_set_ *b = _A_CSET_FROM_VOID(bptr); + + if(a && b) { + struct comparable_ptr *asorted; + struct comparable_ptr *bsorted; + ssize_t common_length; + ssize_t idx; + + if(a->count == 0) { + if(b->count) return -1; + return 0; + } else if(b->count == 0) { + return 1; + } + + asorted = MALLOC(a->count * sizeof(asorted[0])); + bsorted = MALLOC(b->count * sizeof(bsorted[0])); + if(!asorted || !bsorted) { + FREEMEM(asorted); + FREEMEM(bsorted); + return -1; + } + + for(idx = 0; idx < a->count; idx++) { + asorted[idx].td = td->elements->type; + asorted[idx].sptr = a->array[idx]; + } + + for(idx = 0; idx < b->count; idx++) { + bsorted[idx].td = td->elements->type; + bsorted[idx].sptr = b->array[idx]; + } + + qsort(asorted, a->count, sizeof(asorted[0]), SET_OF__compare_cb); + qsort(bsorted, b->count, sizeof(bsorted[0]), SET_OF__compare_cb); + + common_length = (a->count < b->count ? a->count : b->count); + for(idx = 0; idx < common_length; idx++) { + int ret = td->elements->type->op->compare_struct( + td->elements->type, asorted[idx].sptr, bsorted[idx].sptr); + if(ret) { + FREEMEM(asorted); + FREEMEM(bsorted); + return ret; + } + } + + FREEMEM(asorted); + FREEMEM(bsorted); + + if(idx < b->count) /* more elements in b */ + return -1; /* a is shorter, so put it first */ + if(idx < a->count) return 1; + } else if(!a) { + return -1; + } else if(!b) { + return 1; + } + + return 0; +} + + +asn_TYPE_operation_t asn_OP_SET_OF = { + SET_OF_free, + SET_OF_print, + SET_OF_compare, + SET_OF_decode_ber, + SET_OF_encode_der, + SET_OF_decode_xer, + SET_OF_encode_xer, +#ifdef ASN_DISABLE_OER_SUPPORT + 0, + 0, +#else + SET_OF_decode_oer, + SET_OF_encode_oer, +#endif +#ifdef ASN_DISABLE_PER_SUPPORT + 0, + 0, + 0, + 0, +#else + SET_OF_decode_uper, + SET_OF_encode_uper, + SET_OF_decode_aper, + 0, /* SET_OF_encode_aper */ +#endif /* ASN_DISABLE_PER_SUPPORT */ + SET_OF_random_fill, + 0 /* Use generic outmost tag fetcher */ +}; + + +asn_random_fill_result_t +SET_OF_random_fill(const asn_TYPE_descriptor_t *td, void **sptr, + const asn_encoding_constraints_t *constraints, + size_t max_length) { + const asn_SET_OF_specifics_t *specs = + (const asn_SET_OF_specifics_t *)td->specifics; + asn_random_fill_result_t res_ok = {ARFILL_OK, 0}; + asn_random_fill_result_t result_failed = {ARFILL_FAILED, 0}; + asn_random_fill_result_t result_skipped = {ARFILL_SKIPPED, 0}; + const asn_TYPE_member_t *elm = td->elements; + void *st = *sptr; + long max_elements = 5; + long slb = 0; /* Lower size bound */ + long sub = 0; /* Upper size bound */ + size_t rnd_len; + + if(max_length == 0) return result_skipped; + + if(st == NULL) { + st = (*sptr = CALLOC(1, specs->struct_size)); + if(st == NULL) { + return result_failed; + } + } + + switch(asn_random_between(0, 6)) { + case 0: max_elements = 0; break; + case 1: max_elements = 1; break; + case 2: max_elements = 5; break; + case 3: max_elements = max_length; break; + case 4: max_elements = max_length / 2; break; + case 5: max_elements = max_length / 4; break; + default: break; + } + sub = slb + max_elements; + + if(!constraints || !constraints->per_constraints) + constraints = &td->encoding_constraints; + if(constraints->per_constraints) { + const asn_per_constraint_t *pc = &constraints->per_constraints->size; + if(pc->flags & APC_SEMI_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->lower_bound + max_elements; + } else if(pc->flags & APC_CONSTRAINED) { + slb = pc->lower_bound; + sub = pc->upper_bound; + if(sub - slb > max_elements) sub = slb + max_elements; + } + } + + /* Bias towards edges of allowed space */ + switch(asn_random_between(-1, 4)) { + default: + case -1: + /* Prepare lengths somewhat outside of constrained range. */ + if(constraints->per_constraints + && (constraints->per_constraints->size.flags & APC_EXTENSIBLE)) { + switch(asn_random_between(0, 5)) { + default: + case 0: + rnd_len = 0; + break; + case 1: + if(slb > 0) { + rnd_len = slb - 1; + } else { + rnd_len = 0; + } + break; + case 2: + rnd_len = asn_random_between(0, slb); + break; + case 3: + if(sub < (ssize_t)max_length) { + rnd_len = sub + 1; + } else { + rnd_len = max_length; + } + break; + case 4: + if(sub < (ssize_t)max_length) { + rnd_len = asn_random_between(sub + 1, max_length); + } else { + rnd_len = max_length; + } + break; + case 5: + rnd_len = max_length; + break; + } + break; + } + /* Fall through */ + case 0: + rnd_len = asn_random_between(slb, sub); + break; + case 1: + if(slb < sub) { + rnd_len = asn_random_between(slb + 1, sub); + break; + } + /* Fall through */ + case 2: + rnd_len = asn_random_between(slb, slb); + break; + case 3: + if(slb < sub) { + rnd_len = asn_random_between(slb, sub - 1); + break; + } + /* Fall through */ + case 4: + rnd_len = asn_random_between(sub, sub); + break; + } + + for(; rnd_len > 0; rnd_len--) { + asn_anonymous_set_ *list = _A_SET_FROM_VOID(st); + void *ptr = 0; + asn_random_fill_result_t tmpres = elm->type->op->random_fill( + elm->type, &ptr, &elm->encoding_constraints, + (max_length > res_ok.length ? max_length - res_ok.length : 0) + / rnd_len); + switch(tmpres.code) { + case ARFILL_OK: + ASN_SET_ADD(list, ptr); + res_ok.length += tmpres.length; + break; + case ARFILL_SKIPPED: + break; + case ARFILL_FAILED: + assert(ptr == 0); + return tmpres; + } + } + + return res_ok; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_SET_OF.h b/setup/xapp-bs-connector/asn1c_defs/constr_SET_OF.h new file mode 100644 index 0000000..7681062 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_SET_OF.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef CONSTR_SET_OF_H +#define CONSTR_SET_OF_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct asn_SET_OF_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + + /* XER-specific stuff */ + int as_XMLValueList; /* The member type must be encoded like this */ +} asn_SET_OF_specifics_t; + +/* + * A set specialized functions dealing with the SET OF type. + */ +asn_struct_free_f SET_OF_free; +asn_struct_print_f SET_OF_print; +asn_struct_compare_f SET_OF_compare; +asn_constr_check_f SET_OF_constraint; +ber_type_decoder_f SET_OF_decode_ber; +der_type_encoder_f SET_OF_encode_der; +xer_type_decoder_f SET_OF_decode_xer; +xer_type_encoder_f SET_OF_encode_xer; +oer_type_decoder_f SET_OF_decode_oer; +oer_type_encoder_f SET_OF_encode_oer; +per_type_decoder_f SET_OF_decode_uper; +per_type_encoder_f SET_OF_encode_uper; +per_type_decoder_f SET_OF_decode_aper; +per_type_encoder_f SET_OF_encode_aper; +asn_random_fill_f SET_OF_random_fill; +extern asn_TYPE_operation_t asn_OP_SET_OF; + +#ifdef __cplusplus +} +#endif + +#endif /* CONSTR_SET_OF_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_TYPE.c b/setup/xapp-bs-connector/asn1c_defs/constr_TYPE.c new file mode 100644 index 0000000..aefaefd --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_TYPE.c @@ -0,0 +1,80 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * Version of the ASN.1 infrastructure shipped with compiler. + */ +int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; } + +static asn_app_consume_bytes_f _print2fp; + +/* + * Return the outmost tag of the type. + */ +ber_tlv_tag_t +asn_TYPE_outmost_tag(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag) { + + if(tag_mode) + return tag; + + if(type_descriptor->tags_count) + return type_descriptor->tags[0]; + + return type_descriptor->op->outmost_tag(type_descriptor, struct_ptr, 0, 0); +} + +/* + * Print the target language's structure in human readable form. + */ +int +asn_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, + const void *struct_ptr) { + if(!stream) stream = stdout; + if(!td || !struct_ptr) { + errno = EINVAL; + return -1; + } + + /* Invoke type-specific printer */ + if(td->op->print_struct(td, struct_ptr, 1, _print2fp, stream)) { + return -1; + } + + /* Terminate the output */ + if(_print2fp("\n", 1, stream)) { + return -1; + } + + return fflush(stream); +} + +/* Dump the data into the specified stdio stream */ +static int +_print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + + +/* + * Some compilers do not support variable args macros. + * This function is a replacement of ASN_DEBUG() macro. + */ +void ASN_DEBUG_f(const char *fmt, ...); +void ASN_DEBUG_f(const char *fmt, ...) { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} diff --git a/setup/xapp-bs-connector/asn1c_defs/constr_TYPE.h b/setup/xapp-bs-connector/asn1c_defs/constr_TYPE.h new file mode 100644 index 0000000..d80dea5 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constr_TYPE.h @@ -0,0 +1,262 @@ +/* + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +/* + * This file contains the declaration structure called "ASN.1 Type Definition", + * which holds all information necessary for encoding and decoding routines. + * This structure even contains pointer to these encoding and decoding routines + * for each defined ASN.1 type. + */ +#ifndef _CONSTR_TYPE_H_ +#define _CONSTR_TYPE_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ +struct asn_TYPE_member_s; /* Forward declaration */ + +/* + * This type provides the context information for various ASN.1 routines, + * primarily ones doing decoding. A member _asn_ctx of this type must be + * included into certain target language's structures, such as compound types. + */ +typedef struct asn_struct_ctx_s { + short phase; /* Decoding phase */ + short step; /* Elementary step of a phase */ + int context; /* Other context information */ + void *ptr; /* Decoder-specific stuff (stack elements) */ + ber_tlv_len_t left; /* Number of bytes left, -1 for indefinite */ +} asn_struct_ctx_t; + +#include /* Basic Encoding Rules decoder */ +#include /* Distinguished Encoding Rules encoder */ +#include /* Decoder of XER (XML, text) */ +#include /* Encoder into XER (XML, text) */ +#include /* Packet Encoding Rules decoder */ +#include /* Packet Encoding Rules encoder */ +#include /* Subtype constraints support */ +#include /* Random structures support */ + +#ifdef ASN_DISABLE_OER_SUPPORT +typedef void (oer_type_decoder_f)(void); +typedef void (oer_type_encoder_f)(void); +typedef void asn_oer_constraints_t; +#else +#include /* Octet Encoding Rules encoder */ +#include /* Octet Encoding Rules encoder */ +#endif + +/* + * Free the structure according to its specification. + * Use one of ASN_STRUCT_{FREE,RESET,CONTENTS_ONLY} macros instead. + * Do not use directly. + */ +enum asn_struct_free_method { + ASFM_FREE_EVERYTHING, /* free(struct_ptr) and underlying members */ + ASFM_FREE_UNDERLYING, /* free underlying members */ + ASFM_FREE_UNDERLYING_AND_RESET /* FREE_UNDERLYING + memset(0) */ +}; +typedef void (asn_struct_free_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + void *struct_ptr, enum asn_struct_free_method); + +/* + * Free the structure including freeing the memory pointed to by ptr itself. + */ +#define ASN_STRUCT_FREE(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_EVERYTHING) + +/* + * Free the memory used by the members of the structure without freeing the + * the structure pointer itself. + * ZERO-OUT the structure to the safe clean state. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + */ +#define ASN_STRUCT_RESET(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING_AND_RESET) + +/* + * Free memory used by the members of the structure without freeing + * the structure pointer itself. + * (Retaining the pointer may be useful in case the structure is allocated + * statically or arranged on the stack, yet its elements are dynamic.) + * AVOID using it in the application code; + * Use a safer ASN_STRUCT_RESET() instead. + */ +#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \ + (asn_DEF).op->free_struct(&(asn_DEF), (ptr), ASFM_FREE_UNDERLYING) + +/* + * Print the structure according to its specification. + */ +typedef int(asn_struct_print_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, + int level, /* Indentation level */ + asn_app_consume_bytes_f *callback, void *app_key); + +/* + * Compare two structs between each other. + * Returns <0 if struct_A is "smaller" than struct_B, >0 if "greater", + * and =0 if "equal to", for some type-specific, stable definition of + * "smaller", "greater" and "equal to". + */ +typedef int (asn_struct_compare_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_A, + const void *struct_B); + +/* + * Return the outmost tag of the type. + * If the type is untagged CHOICE, the dynamic operation is performed. + * NOTE: This function pointer type is only useful internally. + * Do not use it in your application. + */ +typedef ber_tlv_tag_t (asn_outmost_tag_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, int tag_mode, ber_tlv_tag_t tag); +/* The instance of the above function type; used internally. */ +asn_outmost_tag_f asn_TYPE_outmost_tag; + +/* + * Fetch the desired type of the Open Type based on the + * Information Object Set driven constraints. + */ +typedef struct asn_type_selector_result_s { + const struct asn_TYPE_descriptor_s *type_descriptor; /* Type encoded. */ + unsigned presence_index; /* Associated choice variant. */ +} asn_type_selector_result_t; +typedef asn_type_selector_result_t(asn_type_selector_f)( + const struct asn_TYPE_descriptor_s *parent_type_descriptor, + const void *parent_structure_ptr); + +/* + * Generalized functions for dealing with the speciic type. + * May be directly invoked by applications. + */ +typedef struct asn_TYPE_operation_s { + asn_struct_free_f *free_struct; /* Free the structure */ + asn_struct_print_f *print_struct; /* Human readable output */ + asn_struct_compare_f *compare_struct; /* Compare two structures */ + ber_type_decoder_f *ber_decoder; /* Generic BER decoder */ + der_type_encoder_f *der_encoder; /* Canonical DER encoder */ + xer_type_decoder_f *xer_decoder; /* Generic XER decoder */ + xer_type_encoder_f *xer_encoder; /* [Canonical] XER encoder */ + oer_type_decoder_f *oer_decoder; /* Generic OER decoder */ + oer_type_encoder_f *oer_encoder; /* Canonical OER encoder */ + per_type_decoder_f *uper_decoder; /* Unaligned PER decoder */ + per_type_encoder_f *uper_encoder; /* Unaligned PER encoder */ + per_type_decoder_f *aper_decoder; /* Aligned PER decoder */ + per_type_encoder_f *aper_encoder; /* Aligned PER encoder */ + asn_random_fill_f *random_fill; /* Initialize with a random value */ + asn_outmost_tag_f *outmost_tag; /* */ +} asn_TYPE_operation_t; + +/* + * A constraints tuple specifying both the OER and PER constraints. + */ +typedef struct asn_encoding_constraints_s { + const struct asn_oer_constraints_s *oer_constraints; + const struct asn_per_constraints_s *per_constraints; + asn_constr_check_f *general_constraints; +} asn_encoding_constraints_t; + +/* + * The definitive description of the destination language's structure. + */ +typedef struct asn_TYPE_descriptor_s { + const char *name; /* A name of the ASN.1 type. "" in some cases. */ + const char *xml_tag; /* Name used in XML tag */ + + /* + * Generalized functions for dealing with the specific type. + * May be directly invoked by applications. + */ + asn_TYPE_operation_t *op; + + /*********************************************************************** + * Internally useful members. Not to be used by applications directly. * + **********************************************************************/ + + /* + * Tags that are expected to occur. + */ + const ber_tlv_tag_t *tags; /* Effective tags sequence for this type */ + unsigned tags_count; /* Number of tags which are expected */ + const ber_tlv_tag_t *all_tags; /* Every tag for BER/containment */ + unsigned all_tags_count; /* Number of tags */ + + /* OER, PER, and general constraints */ + asn_encoding_constraints_t encoding_constraints; + + /* + * An ASN.1 production type members (members of SEQUENCE, SET, CHOICE). + */ + struct asn_TYPE_member_s *elements; + unsigned elements_count; + + /* + * Additional information describing the type, used by appropriate + * functions above. + */ + const void *specifics; +} asn_TYPE_descriptor_t; + +/* + * This type describes an element of the constructed type, + * i.e. SEQUENCE, SET, CHOICE, etc. + */ + enum asn_TYPE_flags_e { + ATF_NOFLAGS, + ATF_POINTER = 0x01, /* Represented by the pointer */ + ATF_OPEN_TYPE = 0x02, /* Open Type */ + ATF_ANY_TYPE = 0x04 /* ANY type (deprecated!) */ + }; +typedef struct asn_TYPE_member_s { + enum asn_TYPE_flags_e flags; /* Element's presentation flags */ + unsigned optional; /* Following optional members, including current */ + unsigned memb_offset; /* Offset of the element */ + ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ + int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ + asn_TYPE_descriptor_t *type; /* Member type descriptor */ + asn_type_selector_f *type_selector; /* IoS runtime type selector */ + asn_encoding_constraints_t encoding_constraints; + int (*default_value_cmp)(const void *sptr); /* Compare DEFAULT */ + int (*default_value_set)(void **sptr); /* Set DEFAULT */ + const char *name; /* ASN.1 identifier of the element */ +} asn_TYPE_member_t; + +/* + * BER tag to element number mapping. + */ +typedef struct asn_TYPE_tag2member_s { + ber_tlv_tag_t el_tag; /* Outmost tag of the member */ + unsigned el_no; /* Index of the associated member, base 0 */ + int toff_first; /* First occurence of the el_tag, relative */ + int toff_last; /* Last occurence of the el_tag, relative */ +} asn_TYPE_tag2member_t; + +/* + * This function prints out the contents of the target language's structure + * (struct_ptr) into the file pointer (stream) in human readable form. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem dumping the structure. + * (See also xer_fprint() in xer_encoder.h) + */ +int asn_fprint(FILE *stream, /* Destination stream descriptor */ + const asn_TYPE_descriptor_t *td, /* ASN.1 type descriptor */ + const void *struct_ptr); /* Structure to be printed */ + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_TYPE_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/constraints.c b/setup/xapp-bs-connector/asn1c_defs/constraints.c new file mode 100644 index 0000000..df3c6c1 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constraints.c @@ -0,0 +1,93 @@ +#include +#include + +int +asn_generic_no_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Nothing to check */ + return 0; +} + +int +asn_generic_unknown_constraint(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, + asn_app_constraint_failed_f *cb, void *key) { + (void)type_descriptor; /* Unused argument */ + (void)struct_ptr; /* Unused argument */ + (void)cb; /* Unused argument */ + (void)key; /* Unused argument */ + + /* Unknown how to check */ + return 0; +} + +struct errbufDesc { + const asn_TYPE_descriptor_t *failed_type; + const void *failed_struct_ptr; + char *errbuf; + size_t errlen; +}; + +static void +_asn_i_ctfailcb(void *key, const asn_TYPE_descriptor_t *td, const void *sptr, + const char *fmt, ...) { + struct errbufDesc *arg = key; + va_list ap; + ssize_t vlen; + ssize_t maxlen; + + arg->failed_type = td; + arg->failed_struct_ptr = sptr; + + maxlen = arg->errlen; + if(maxlen <= 0) + return; + + va_start(ap, fmt); + vlen = vsnprintf(arg->errbuf, maxlen, fmt, ap); + va_end(ap); + if(vlen >= maxlen) { + arg->errbuf[maxlen-1] = '\0'; /* Ensuring libc correctness */ + arg->errlen = maxlen - 1; /* Not counting termination */ + return; + } else if(vlen >= 0) { + arg->errbuf[vlen] = '\0'; /* Ensuring libc correctness */ + arg->errlen = vlen; /* Not counting termination */ + } else { + /* + * The libc on this system is broken. + */ + vlen = sizeof("") - 1; + maxlen--; + arg->errlen = vlen < maxlen ? vlen : maxlen; + memcpy(arg->errbuf, "", arg->errlen); + arg->errbuf[arg->errlen] = 0; + } + + return; +} + +int +asn_check_constraints(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, char *errbuf, size_t *errlen) { + struct errbufDesc arg; + int ret; + + arg.failed_type = 0; + arg.failed_struct_ptr = 0; + arg.errbuf = errbuf; + arg.errlen = errlen ? *errlen : 0; + + ret = type_descriptor->encoding_constraints.general_constraints( + type_descriptor, struct_ptr, _asn_i_ctfailcb, &arg); + if(ret == -1 && errlen) *errlen = arg.errlen; + + return ret; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/constraints.h b/setup/xapp-bs-connector/asn1c_defs/constraints.h new file mode 100644 index 0000000..0bd86a9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/constraints.h @@ -0,0 +1,62 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef ASN1_CONSTRAINTS_VALIDATOR_H +#define ASN1_CONSTRAINTS_VALIDATOR_H + +#include /* Platform-dependent types */ + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Validate the structure according to the ASN.1 constraints. + * If errbuf and errlen are given, they shall be pointing to the appropriate + * buffer space and its length before calling this function. Alternatively, + * they could be passed as NULL's. If constraints validation fails, + * errlen will contain the actual number of bytes taken from the errbuf + * to encode an error message (properly 0-terminated). + * + * RETURN VALUES: + * This function returns 0 in case all ASN.1 constraints are met + * and -1 if one or more constraints were failed. + */ +int asn_check_constraints( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Target language's structure */ + char *errbuf, /* Returned error description */ + size_t *errlen /* Length of the error description */ +); + + +/* + * Generic type for constraint checking callback, + * associated with every type descriptor. + */ +typedef int(asn_constr_check_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct_ptr, + asn_app_constraint_failed_f *optional_callback, /* Log the error */ + void *optional_app_key /* Opaque key passed to a callback */ +); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +asn_constr_check_f asn_generic_no_constraint; /* No constraint whatsoever */ +asn_constr_check_f asn_generic_unknown_constraint; /* Not fully supported */ + +/* + * Invoke the callback with a complete error message. + */ +#define ASN__CTFAIL if(ctfailcb) ctfailcb + +#ifdef __cplusplus +} +#endif + +#endif /* ASN1_CONSTRAINTS_VALIDATOR_H */ diff --git a/setup/xapp-bs-connector/asn1c_defs/der_encoder.c b/setup/xapp-bs-connector/asn1c_defs/der_encoder.c new file mode 100644 index 0000000..2c6a6f7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/der_encoder.c @@ -0,0 +1,194 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +static ssize_t der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, int constructed); + +/* + * The DER encoder of any type. + */ +asn_enc_rval_t +der_encode(const asn_TYPE_descriptor_t *type_descriptor, const void *struct_ptr, + asn_app_consume_bytes_f *consume_bytes, void *app_key) { + ASN_DEBUG("DER encoder invoked for %s", + type_descriptor->name); + + /* + * Invoke type-specific encoder. + */ + return type_descriptor->op->der_encoder( + type_descriptor, struct_ptr, /* Pointer to the destination structure */ + 0, 0, consume_bytes, app_key); +} + +/* + * Argument type and callback necessary for der_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +/* + * A variant of the der_encode() which encodes the data into the provided buffer + */ +asn_enc_rval_t +der_encode_to_buffer(const asn_TYPE_descriptor_t *type_descriptor, + const void *struct_ptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg arg; + asn_enc_rval_t ec; + + arg.buffer = buffer; + arg.left = buffer_size; + + ec = type_descriptor->op->der_encoder(type_descriptor, + struct_ptr, /* Pointer to the destination structure */ + 0, 0, encode_to_buffer_cb, &arg); + if(ec.encoded != -1) { + assert(ec.encoded == (ssize_t)(buffer_size - arg.left)); + /* Return the encoded contents size */ + } + return ec; +} + + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t +der_write_tags(const asn_TYPE_descriptor_t *sd, size_t struct_length, + int tag_mode, int last_tag_form, + ber_tlv_tag_t tag, /* EXPLICIT or IMPLICIT tag */ + asn_app_consume_bytes_f *cb, void *app_key) { +#define ASN1_DER_MAX_TAGS_COUNT 4 + ber_tlv_tag_t + tags_buf_scratch[ASN1_DER_MAX_TAGS_COUNT * sizeof(ber_tlv_tag_t)]; + ssize_t lens[ASN1_DER_MAX_TAGS_COUNT * sizeof(ssize_t)]; + const ber_tlv_tag_t *tags; /* Copy of tags stream */ + int tags_count; /* Number of tags */ + size_t overall_length; + int i; + + ASN_DEBUG("Writing tags (%s, tm=%d, tc=%d, tag=%s, mtc=%d)", + sd->name, tag_mode, sd->tags_count, + ber_tlv_tag_string(tag), + tag_mode + ?(sd->tags_count+1 + -((tag_mode == -1) && sd->tags_count)) + :sd->tags_count + ); + + if(sd->tags_count + 1 > ASN1_DER_MAX_TAGS_COUNT) { + ASN_DEBUG("System limit %d on tags count", ASN1_DER_MAX_TAGS_COUNT); + return -1; + } + + if(tag_mode) { + /* + * Instead of doing shaman dance like we do in ber_check_tags(), + * allocate a small array on the stack + * and initialize it appropriately. + */ + int stag_offset; + ber_tlv_tag_t *tags_buf = tags_buf_scratch; + tags_count = sd->tags_count + + 1 /* EXPLICIT or IMPLICIT tag is given */ + - ((tag_mode == -1) && sd->tags_count); + /* Copy tags over */ + tags_buf[0] = tag; + stag_offset = -1 + ((tag_mode == -1) && sd->tags_count); + for(i = 1; i < tags_count; i++) + tags_buf[i] = sd->tags[i + stag_offset]; + tags = tags_buf; + } else { + tags = sd->tags; + tags_count = sd->tags_count; + } + + /* No tags to write */ + if(tags_count == 0) + return 0; + + /* + * Array of tags is initialized. + * Now, compute the size of the TLV pairs, from right to left. + */ + overall_length = struct_length; + for(i = tags_count - 1; i >= 0; --i) { + lens[i] = der_write_TL(tags[i], overall_length, 0, 0, 0); + if(lens[i] == -1) return -1; + overall_length += lens[i]; + lens[i] = overall_length - lens[i]; + } + + if(!cb) return overall_length - struct_length; + + ASN_DEBUG("Encoding %s TL sequence (%d elements)", sd->name, + tags_count); + + /* + * Encode the TL sequence for real. + */ + for(i = 0; i < tags_count; i++) { + ssize_t len; + int _constr; + + /* Check if this tag happens to be constructed */ + _constr = (last_tag_form || i < (tags_count - 1)); + + len = der_write_TL(tags[i], lens[i], cb, app_key, _constr); + if(len == -1) return -1; + } + + return overall_length - struct_length; +} + +static ssize_t +der_write_TL(ber_tlv_tag_t tag, ber_tlv_len_t len, + asn_app_consume_bytes_f *cb, void *app_key, + int constructed) { + uint8_t buf[32]; + size_t size = 0; + int buf_size = cb?sizeof(buf):0; + ssize_t tmp; + + /* Serialize tag (T from TLV) into possibly zero-length buffer */ + tmp = ber_tlv_tag_serialize(tag, buf, buf_size); + if(tmp == -1 || tmp > (ssize_t)sizeof(buf)) return -1; + size += tmp; + + /* Serialize length (L from TLV) into possibly zero-length buffer */ + tmp = der_tlv_length_serialize(len, buf+size, buf_size?buf_size-size:0); + if(tmp == -1) return -1; + size += tmp; + + if(size > sizeof(buf)) + return -1; + + /* + * If callback is specified, invoke it, and check its return value. + */ + if(cb) { + if(constructed) *buf |= 0x20; + if(cb(buf, size, app_key) < 0) + return -1; + } + + return size; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/der_encoder.h b/setup/xapp-bs-connector/asn1c_defs/der_encoder.h new file mode 100644 index 0000000..e93944e --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/der_encoder.h @@ -0,0 +1,68 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _DER_ENCODER_H_ +#define _DER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The DER encoder of any type. May be invoked by the application. + * Produces DER- and BER-compliant encoding. (DER is a subset of BER). + * + * NOTE: Use the ber_decode() function (ber_decoder.h) to decode data + * produced by der_encode(). + */ +asn_enc_rval_t der_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* A variant of der_encode() which encodes data into the pre-allocated buffer */ +asn_enc_rval_t der_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (maximum) */ +); + +/* + * Type of the generic DER encoder. + */ +typedef asn_enc_rval_t(der_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + ber_tlv_tag_t tag, asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Write out leading TL[v] sequence according to the type definition. + */ +ssize_t der_write_tags(const struct asn_TYPE_descriptor_s *type_descriptor, + size_t struct_length, + int tag_mode, /* {-1,0,1}: IMPLICIT, no, EXPLICIT */ + int last_tag_form, /* {0,!0}: prim, constructed */ + ber_tlv_tag_t tag, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _DER_ENCODER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/pdu_collection.c b/setup/xapp-bs-connector/asn1c_defs/pdu_collection.c new file mode 100644 index 0000000..3925869 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/pdu_collection.c @@ -0,0 +1,30 @@ +/* + * Generated by asn1c-0.9.29 (http://lionet.info/asn1c) + */ + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +extern struct asn_TYPE_descriptor_s asn_DEF_E2AP_PDU; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_HelloWorld_EventTriggerDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_HelloWorld_ActionDefinition; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_HelloWorld_IndicationHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_HelloWorld_IndicationMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_HelloWorld_ControlHeader; +extern struct asn_TYPE_descriptor_s asn_DEF_E2SM_HelloWorld_ControlMessage; +extern struct asn_TYPE_descriptor_s asn_DEF_HW_ControlCommand; + + +struct asn_TYPE_descriptor_s *asn_pdu_collection[] = { + /* From module E2AP-PDU-Descriptions in /home/sjana/ASN-Defns/e2ap-oran-wg3-v01.00.asn */ + &asn_DEF_E2AP_PDU, + /* From module E2SM-HelloWorld-IEs in /home/sjana/ASN-Defns/e2sm-HelloWorld-v002.asn */ + &asn_DEF_E2SM_HelloWorld_EventTriggerDefinition, + &asn_DEF_E2SM_HelloWorld_ActionDefinition, + &asn_DEF_E2SM_HelloWorld_IndicationHeader, + &asn_DEF_E2SM_HelloWorld_IndicationMessage, + &asn_DEF_E2SM_HelloWorld_ControlHeader, + &asn_DEF_E2SM_HelloWorld_ControlMessage, + &asn_DEF_HW_ControlCommand, + 0 +}; + diff --git a/setup/xapp-bs-connector/asn1c_defs/per_decoder.c b/setup/xapp-bs-connector/asn1c_defs/per_decoder.c new file mode 100644 index 0000000..8a3e39d --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_decoder.c @@ -0,0 +1,185 @@ +#include +#include +#include + +/* + * Decode a "Production of a complete encoding", X.691#10.1. + * The complete encoding contains at least one byte, and is an integral + * multiple of 8 bytes. + */ +asn_dec_rval_t +uper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = uper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +uper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->uper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->uper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %ld, counted %ld", + (long)rval.consumed, (long)pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + +asn_dec_rval_t +aper_decode_complete(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, + const void *buffer, size_t size) { + asn_dec_rval_t rval; + + rval = aper_decode(opt_codec_ctx, td, sptr, buffer, size, 0, 0); + if(rval.consumed) { + /* + * We've always given 8-aligned data, + * so convert bits to integral bytes. + */ + rval.consumed += 7; + rval.consumed >>= 3; + } else if(rval.code == RC_OK) { + if(size) { + if(((const uint8_t *)buffer)[0] == 0) { + rval.consumed = 1; /* 1 byte */ + } else { + ASN_DEBUG("Expecting single zeroed byte"); + rval.code = RC_FAIL; + } + } else { + /* Must contain at least 8 bits. */ + rval.code = RC_WMORE; + } + } + + return rval; +} + +asn_dec_rval_t +aper_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **sptr, const void *buffer, + size_t size, int skip_bits, int unused_bits) { + asn_codec_ctx_t s_codec_ctx; + asn_dec_rval_t rval; + asn_per_data_t pd; + + if(skip_bits < 0 || skip_bits > 7 + || unused_bits < 0 || unused_bits > 7 + || (unused_bits > 0 && !size)) + ASN__DECODE_FAILED; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* Fill in the position indicator */ + memset(&pd, 0, sizeof(pd)); + pd.buffer = (const uint8_t *)buffer; + pd.nboff = skip_bits; + pd.nbits = 8 * size - unused_bits; /* 8 is CHAR_BIT from */ + if(pd.nboff > pd.nbits) + ASN__DECODE_FAILED; + + /* + * Invoke type-specific decoder. + */ + if(!td->op->aper_decoder) + ASN__DECODE_FAILED; /* PER is not compiled in */ + rval = td->op->aper_decoder(opt_codec_ctx, td, 0, sptr, &pd); + if(rval.code == RC_OK) { + /* Return the number of consumed bits */ + rval.consumed = ((pd.buffer - (const uint8_t *)buffer) << 3) + + pd.nboff - skip_bits; + ASN_DEBUG("PER decoding consumed %zu, counted %zu", + rval.consumed, pd.moved); + assert(rval.consumed == pd.moved); + } else { + /* PER codec is not a restartable */ + rval.consumed = 0; + } + return rval; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/per_decoder.h b/setup/xapp-bs-connector/asn1c_defs/per_decoder.h new file mode 100644 index 0000000..eea474a --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_decoder.h @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_DECODER_H_ +#define _PER_DECODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER decoder of a "complete encoding" as per X.691 (08/2015) #11.1. + * On success, this call always returns (.consumed >= 1), as per #11.1.3. + */ +asn_dec_rval_t uper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Unaligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t uper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of the input data buffer, in bytes */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ +); + +/* + * Aligned PER decoder of a "complete encoding" as per X.691#10.1. + * On success, this call always returns (.consumed >= 1), in BITS, as per X.691#10.1.3. + */ +asn_dec_rval_t aper_decode_complete( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ + ); + +/* + * Aligned PER decoder of any ASN.1 type. May be invoked by the application. + * WARNING: This call returns the number of BITS read from the stream. Beware. + */ +asn_dec_rval_t aper_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */ + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size, /* Size of data buffer */ + int skip_bits, /* Number of unused leading bits, 0..7 */ + int unused_bits /* Number of unused tailing bits, 0..7 */ + ); + +/* + * Type of the type-specific PER decoder function. + */ +typedef asn_dec_rval_t(per_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, void **struct_ptr, + asn_per_data_t *per_data); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_DECODER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/per_encoder.c b/setup/xapp-bs-connector/asn1c_defs/per_encoder.c new file mode 100644 index 0000000..a35e1f0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_encoder.c @@ -0,0 +1,265 @@ +#include +#include +#include + +static int _uper_encode_flush_outp(asn_per_outp_t *po); + +static int +ignore_output(const void *data, size_t size, void *app_key) { + (void)data; + (void)size; + (void)app_key; + return 0; +} + +asn_enc_rval_t +uper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->uper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb ? cb : ignore_output; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->uper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_uper_encode_flush_outp(&po)) ASN__ENCODE_FAILED; + } + + return er; +} + +/* + * Argument type and callback necessary for uper_encode_to_buffer(). + */ +typedef struct enc_to_buf_arg { + void *buffer; + size_t left; +} enc_to_buf_arg; +static int encode_to_buffer_cb(const void *buffer, size_t size, void *key) { + enc_to_buf_arg *arg = (enc_to_buf_arg *)key; + + if(arg->left < size) + return -1; /* Data exceeds the available buffer size */ + + memcpy(arg->buffer, buffer, size); + arg->buffer = ((char *)arg->buffer) + size; + arg->left -= size; + + return 0; +} + +asn_enc_rval_t +uper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using UNALIGNED PER", td->name); + + return uper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +typedef struct enc_dyn_arg { + void *buffer; + size_t length; + size_t allocated; +} enc_dyn_arg; +static int +encode_dyn_cb(const void *buffer, size_t size, void *key) { + enc_dyn_arg *arg = key; + if(arg->length + size >= arg->allocated) { + size_t new_size = arg->allocated ? arg->allocated : 8; + void *p; + + do { + new_size <<= 2; + } while(arg->length + size >= new_size); + + p = REALLOC(arg->buffer, new_size); + if(!p) { + FREEMEM(arg->buffer); + memset(arg, 0, sizeof(*arg)); + return -1; + } + arg->buffer = p; + arg->allocated = new_size; + } + memcpy(((char *)arg->buffer) + arg->length, buffer, size); + arg->length += size; + return 0; +} +ssize_t +uper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = uper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +/* + * Internally useful functions. + */ + +/* Flush partially filled buffer */ +static int +_uper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); +} + +asn_enc_rval_t +aper_encode_to_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void *buffer, size_t buffer_size) { + enc_to_buf_arg key; + + key.buffer = buffer; + key.left = buffer_size; + + if(td) ASN_DEBUG("Encoding \"%s\" using ALIGNED PER", td->name); + + return aper_encode(td, constraints, sptr, encode_to_buffer_cb, &key); +} + +ssize_t +aper_encode_to_new_buffer(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, void **buffer_r) { + asn_enc_rval_t er = {0,0,0}; + enc_dyn_arg key; + + memset(&key, 0, sizeof(key)); + + er = aper_encode(td, constraints, sptr, encode_dyn_cb, &key); + switch(er.encoded) { + case -1: + FREEMEM(key.buffer); + return -1; + case 0: + FREEMEM(key.buffer); + key.buffer = MALLOC(1); + if(key.buffer) { + *(char *)key.buffer = '\0'; + *buffer_r = key.buffer; + return 1; + } else { + return -1; + } + default: + *buffer_r = key.buffer; + ASN_DEBUG("Complete encoded in %ld bits", (long)er.encoded); + return ((er.encoded + 7) >> 3); + } +} + +static int +_aper_encode_flush_outp(asn_per_outp_t *po) { + uint8_t *buf; + + if(po->nboff == 0 && po->buffer == po->tmpspace) + return 0; + + buf = po->buffer + (po->nboff >> 3); + /* Make sure we account for the last, partially filled */ + if(po->nboff & 0x07) { + buf[0] &= 0xff << (8 - (po->nboff & 0x07)); + buf++; + } + + if (po->output) { + return po->output(po->tmpspace, buf - po->tmpspace, po->op_key); + } + return 0; +} + +asn_enc_rval_t +aper_encode(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_app_consume_bytes_f *cb, void *app_key) { + asn_per_outp_t po; + asn_enc_rval_t er = {0,0,0}; + + /* + * Invoke type-specific encoder. + */ + if(!td || !td->op->aper_encoder) + ASN__ENCODE_FAILED; /* PER is not compiled in */ + + po.buffer = po.tmpspace; + po.nboff = 0; + po.nbits = 8 * sizeof(po.tmpspace); + po.output = cb; + po.op_key = app_key; + po.flushed_bytes = 0; + + er = td->op->aper_encoder(td, constraints, sptr, &po); + if(er.encoded != -1) { + size_t bits_to_flush; + + bits_to_flush = ((po.buffer - po.tmpspace) << 3) + po.nboff; + + /* Set number of bits encoded to a firm value */ + er.encoded = (po.flushed_bytes << 3) + bits_to_flush; + + if(_aper_encode_flush_outp(&po)) + ASN__ENCODE_FAILED; + } + + return er; +} diff --git a/setup/xapp-bs-connector/asn1c_defs/per_encoder.h b/setup/xapp-bs-connector/asn1c_defs/per_encoder.h new file mode 100644 index 0000000..b615ef0 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_encoder.h @@ -0,0 +1,93 @@ +/*- + * Copyright (c) 2006-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_ENCODER_H_ +#define _PER_ENCODER_H_ + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * Unaligned PER encoder of any ASN.1 type. May be invoked by the application. + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. Use the following formula to convert to bytes: + * bytes = ((.encoded + 7) / 8) + */ +asn_enc_rval_t uper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +asn_enc_rval_t aper_encode( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + asn_app_consume_bytes_f *consume_bytes_cb, /* Data collector */ + void *app_key /* Arbitrary callback argument */ +); + +/* + * A variant of uper_encode() which encodes data into the existing buffer + * WARNING: This function returns the number of encoded bits in the .encoded + * field of the return value. + */ +asn_enc_rval_t uper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); + +asn_enc_rval_t aper_encode_to_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void *buffer, /* Pre-allocated buffer */ + size_t buffer_size /* Initial buffer size (max) */ +); +/* + * A variant of uper_encode_to_buffer() which allocates buffer itself. + * Returns the number of bytes in the buffer or -1 in case of failure. + * WARNING: This function produces a "Production of the complete encoding", + * with length of at least one octet. Contrast this to precise bit-packing + * encoding of uper_encode() and uper_encode_to_buffer(). + */ +ssize_t uper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, + const void *struct_ptr, /* Structure to be encoded */ + void **buffer_r /* Buffer allocated and returned */ +); + +ssize_t +aper_encode_to_new_buffer( + const struct asn_TYPE_descriptor_s *td, + const asn_per_constraints_t *constraints, + const void *sptr, + void **buffer_r +); + +/* + * Type of the generic PER encoder function. + */ +typedef asn_enc_rval_t(per_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const asn_per_constraints_t *constraints, const void *struct_ptr, + asn_per_outp_t *per_output); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_ENCODER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/per_opentype.c b/setup/xapp-bs-connector/asn1c_defs/per_opentype.c new file mode 100644 index 0000000..28f3cb6 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_opentype.c @@ -0,0 +1,533 @@ +/* + * Copyright (c) 2007 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include +#include + +typedef struct uper_ugot_key { + asn_per_data_t oldpd; /* Old per data source */ + size_t unclaimed; + size_t ot_moved; /* Number of bits moved by OT processing */ + int repeat; +} uper_ugot_key; + +static int uper_ugot_refill(asn_per_data_t *pd); +static int per_skip_bits(asn_per_data_t *pd, int skip_nbits); +static asn_dec_rval_t uper_sot_suck(const asn_codec_ctx_t *, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +/* + * Encode an "open type field". + * #10.1, #10.2 + */ +int +uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, const void *sptr, + asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = uper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + ASN_DEBUG("Open type put %s of length %" ASN_PRI_SSIZE " + overhead (1byte?)", td->name, + size); + + bptr = buf; + do { + int need_eom = 0; + ssize_t may_save = uper_put_length(po, size, &need_eom); + ASN_DEBUG("Prepending length %" ASN_PRI_SSIZE + " to %s and allowing to save %" ASN_PRI_SSIZE, + size, td->name, may_save); + if(may_save < 0) break; + if(per_put_many_bits(po, bptr, may_save * 8)) break; + bptr = (char *)bptr + may_save; + size -= may_save; + if(need_eom && uper_put_length(po, 0, 0)) { + FREEMEM(buf); + return -1; + } + } while(size); + + FREEMEM(buf); + if(size) return -1; + + return 0; +} + +static asn_dec_rval_t +uper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = uper_get_length(pd, -1, 0, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +static asn_dec_rval_t CC_NOTUSED +uper_open_type_get_complex(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + uper_ugot_key arg; + asn_dec_rval_t rv; + ssize_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s from %s", td->name, + asn_bit_data_string(pd)); + arg.oldpd = *pd; + arg.unclaimed = 0; + arg.ot_moved = 0; + arg.repeat = 1; + pd->refill = uper_ugot_refill; + pd->refill_key = &arg; + pd->nbits = pd->nboff; /* 0 good bits at this point, will refill */ + pd->moved = 0; /* This now counts the open type size in bits */ + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->uper_decoder(ctx, td, constraints, sptr, pd); + ASN_DEBUG_INDENT_ADD(-4); + +#define UPDRESTOREPD do { \ + /* buffer and nboff are valid, preserve them. */ \ + pd->nbits = arg.oldpd.nbits - (pd->moved - arg.ot_moved); \ + pd->moved = arg.oldpd.moved + (pd->moved - arg.ot_moved); \ + pd->refill = arg.oldpd.refill; \ + pd->refill_key = arg.oldpd.refill_key; \ + } while(0) + + if(rv.code != RC_OK) { + UPDRESTOREPD; + return rv; + } + + ASN_DEBUG("OpenType %s pd%s old%s unclaimed=%d, repeat=%d", td->name, + asn_bit_data_string(pd), + asn_bit_data_string(&arg.oldpd), + (int)arg.unclaimed, (int)arg.repeat); + + padding = pd->moved % 8; + if(padding) { + int32_t pvalue; + if(padding > 7) { + ASN_DEBUG("Too large padding %d in open type", + (int)padding); + rv.code = RC_FAIL; + UPDRESTOREPD; + return rv; + } + padding = 8 - padding; + ASN_DEBUG("Getting padding of %d bits", (int)padding); + pvalue = per_get_few_bits(pd, padding); + switch(pvalue) { + case -1: + ASN_DEBUG("Padding skip failed"); + UPDRESTOREPD; + ASN__DECODE_STARVED; + case 0: break; + default: + ASN_DEBUG("Non-blank padding (%d bits 0x%02x)", + (int)padding, (int)pvalue); + UPDRESTOREPD; + ASN__DECODE_FAILED; + } + } + if(pd->nboff != pd->nbits) { + ASN_DEBUG("Open type %s overhead pd%s old%s", td->name, + asn_bit_data_string(pd), asn_bit_data_string(&arg.oldpd)); + if(1) { + UPDRESTOREPD; + ASN__DECODE_FAILED; + } else { + arg.unclaimed += pd->nbits - pd->nboff; + } + } + + /* Adjust pd back so it points to original data */ + UPDRESTOREPD; + + /* Skip data not consumed by the decoder */ + if(arg.unclaimed) { + ASN_DEBUG("Getting unclaimed %d", (int)arg.unclaimed); + switch(per_skip_bits(pd, arg.unclaimed)) { + case -1: + ASN_DEBUG("Claim of %d failed", (int)arg.unclaimed); + ASN__DECODE_STARVED; + case 0: + ASN_DEBUG("Got claim of %d", (int)arg.unclaimed); + break; + default: + /* Padding must be blank */ + ASN_DEBUG("Non-blank unconsumed padding"); + ASN__DECODE_FAILED; + } + arg.unclaimed = 0; + } + + if(arg.repeat) { + ASN_DEBUG("Not consumed the whole thing"); + rv.code = RC_FAIL; + return rv; + } + + return rv; +} + + +asn_dec_rval_t +uper_open_type_get(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + return uper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +uper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_TYPE_operation_t s_op; + asn_dec_rval_t rv; + + s_td.name = ""; + s_td.op = &s_op; + s_op.uper_decoder = uper_sot_suck; + + rv = uper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + +/* + * Internal functions. + */ + +static asn_dec_rval_t +uper_sot_suck(const asn_codec_ctx_t *ctx, const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, + asn_per_data_t *pd) { + asn_dec_rval_t rv; + + (void)ctx; + (void)td; + (void)constraints; + (void)sptr; + + while(per_get_few_bits(pd, 1) >= 0); + + rv.code = RC_OK; + rv.consumed = pd->moved; + + return rv; +} + +static int +uper_ugot_refill(asn_per_data_t *pd) { + uper_ugot_key *arg = pd->refill_key; + ssize_t next_chunk_bytes, next_chunk_bits; + ssize_t avail; + + asn_per_data_t *oldpd = &arg->oldpd; + + ASN_DEBUG("REFILLING pd->moved=%ld, oldpd->moved=%ld", + (long)pd->moved, (long)oldpd->moved); + + /* Advance our position to where pd is */ + oldpd->buffer = pd->buffer; + oldpd->nboff = pd->nboff; + oldpd->nbits -= pd->moved - arg->ot_moved; + oldpd->moved += pd->moved - arg->ot_moved; + arg->ot_moved = pd->moved; + + if(arg->unclaimed) { + /* Refill the container */ + if(per_get_few_bits(oldpd, 1)) + return -1; + if(oldpd->nboff == 0) { + assert(0); + return -1; + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff - 1; + pd->nbits = oldpd->nbits; + ASN_DEBUG("UNCLAIMED <- return from (pd->moved=%ld)", + (long)pd->moved); + return 0; + } + + if(!arg->repeat) { + ASN_DEBUG("Want more but refill doesn't have it"); + return -1; + } + + next_chunk_bytes = uper_get_length(oldpd, -1, 0, &arg->repeat); + ASN_DEBUG("Open type LENGTH %ld bytes at off %ld, repeat %ld", + (long)next_chunk_bytes, (long)oldpd->moved, (long)arg->repeat); + if(next_chunk_bytes < 0) return -1; + if(next_chunk_bytes == 0) { + pd->refill = 0; /* No more refills, naturally */ + assert(!arg->repeat); /* Implementation guarantee */ + } + next_chunk_bits = next_chunk_bytes << 3; + avail = oldpd->nbits - oldpd->nboff; + if(avail >= next_chunk_bits) { + pd->nbits = oldpd->nboff + next_chunk_bits; + arg->unclaimed = 0; + ASN_DEBUG("!+Parent frame %ld bits, alloting %ld [%ld..%ld] (%ld)", + (long)next_chunk_bits, (long)oldpd->moved, + (long)oldpd->nboff, (long)oldpd->nbits, + (long)(oldpd->nbits - oldpd->nboff)); + } else { + pd->nbits = oldpd->nbits; + arg->unclaimed = next_chunk_bits - avail; + ASN_DEBUG("!-Parent frame %ld, require %ld, will claim %ld", + (long)avail, (long)next_chunk_bits, + (long)arg->unclaimed); + } + pd->buffer = oldpd->buffer; + pd->nboff = oldpd->nboff; + ASN_DEBUG("Refilled pd%s old%s", + asn_bit_data_string(pd), asn_bit_data_string(oldpd)); + return 0; +} + +static int +per_skip_bits(asn_per_data_t *pd, int skip_nbits) { + int hasNonZeroBits = 0; + while(skip_nbits > 0) { + int skip; + + /* per_get_few_bits() is more efficient when nbits <= 24 */ + if(skip_nbits < 24) + skip = skip_nbits; + else + skip = 24; + skip_nbits -= skip; + + switch(per_get_few_bits(pd, skip)) { + case -1: return -1; /* Starving */ + case 0: continue; /* Skipped empty space */ + default: hasNonZeroBits = 1; continue; + } + } + return hasNonZeroBits; +} + +static asn_dec_rval_t +aper_open_type_get_simple(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) { + asn_dec_rval_t rv; + ssize_t chunk_bytes; + int repeat; + uint8_t *buf = 0; + size_t bufLen = 0; + size_t bufSize = 0; + asn_per_data_t spd; + size_t padding; + + ASN__STACK_OVERFLOW_CHECK(ctx); + + ASN_DEBUG("Getting open type %s...", td->name); + + do { + chunk_bytes = aper_get_length(pd, -1, -1, &repeat); + if(chunk_bytes < 0) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + if(bufLen + chunk_bytes > bufSize) { + void *ptr; + bufSize = chunk_bytes + (bufSize << 2); + ptr = REALLOC(buf, bufSize); + if(!ptr) { + FREEMEM(buf); + ASN__DECODE_FAILED; + } + buf = ptr; + } + if(per_get_many_bits(pd, buf + bufLen, 0, chunk_bytes << 3)) { + FREEMEM(buf); + ASN__DECODE_STARVED; + } + bufLen += chunk_bytes; + } while(repeat); + + ASN_DEBUG("Getting open type %s encoded in %ld bytes", td->name, + (long)bufLen); + + memset(&spd, 0, sizeof(spd)); + spd.buffer = buf; + spd.nbits = bufLen << 3; + + ASN_DEBUG_INDENT_ADD(+4); + rv = td->op->aper_decoder(ctx, td, constraints, sptr, &spd); + ASN_DEBUG_INDENT_ADD(-4); + + if(rv.code == RC_OK) { + /* Check padding validity */ + padding = spd.nbits - spd.nboff; + if (((padding > 0 && padding < 8) || + /* X.691#10.1.3 */ + (spd.nboff == 0 && spd.nbits == 8 && spd.buffer == buf)) && + per_get_few_bits(&spd, padding) == 0) { + /* Everything is cool */ + FREEMEM(buf); + return rv; + } + FREEMEM(buf); + if(padding >= 8) { + ASN_DEBUG("Too large padding %d in open type", (int)padding); + ASN__DECODE_FAILED; + } else { + ASN_DEBUG("No padding"); + } + } else { + FREEMEM(buf); + /* rv.code could be RC_WMORE, nonsense in this context */ + rv.code = RC_FAIL; /* Noone would give us more */ + } + + return rv; +} + +int +aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po) { + void *buf; + void *bptr; + ssize_t size; + size_t toGo; + + ASN_DEBUG("Open type put %s ...", td->name); + + size = aper_encode_to_new_buffer(td, constraints, sptr, &buf); + if(size <= 0) return -1; + + for(bptr = buf, toGo = size; toGo;) { + ssize_t maySave = aper_put_length(po, -1, toGo); + if(maySave < 0) break; + if(per_put_many_bits(po, bptr, maySave * 8)) break; + bptr = (char *)bptr + maySave; + toGo -= maySave; + } + + FREEMEM(buf); + if(toGo) return -1; + + ASN_DEBUG("Open type put %s of length %ld + overhead (1byte?)", + td->name, size); + + return 0; +} + +asn_dec_rval_t +aper_open_type_get(const asn_codec_ctx_t *ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd) { + + return aper_open_type_get_simple(ctx, td, constraints, sptr, pd); +} + +int +aper_open_type_skip(const asn_codec_ctx_t *ctx, asn_per_data_t *pd) { + asn_TYPE_descriptor_t s_td; + asn_dec_rval_t rv; + asn_TYPE_operation_t op_t; + + memset(&op_t, 0, sizeof(op_t)); + s_td.name = ""; + s_td.op = &op_t; + s_td.op->aper_decoder = uper_sot_suck; + + rv = aper_open_type_get(ctx, &s_td, 0, 0, pd); + if(rv.code != RC_OK) + return -1; + else + return 0; +} + + diff --git a/setup/xapp-bs-connector/asn1c_defs/per_opentype.h b/setup/xapp-bs-connector/asn1c_defs/per_opentype.h new file mode 100644 index 0000000..1493b2d --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_opentype.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2007-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_OPENTYPE_H_ +#define _PER_OPENTYPE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + +int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, + asn_per_data_t *pd); + +/* + * X.691 (2015/08), #11.2 + * Returns -1 if error is encountered. 0 if all OK. + */ +int uper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +asn_dec_rval_t aper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + void **sptr, asn_per_data_t *pd); + + +int aper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd); + +int aper_open_type_put(const asn_TYPE_descriptor_t *td, + const asn_per_constraints_t *constraints, + const void *sptr, asn_per_outp_t *po); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_OPENTYPE_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/per_support.c b/setup/xapp-bs-connector/asn1c_defs/per_support.c new file mode 100644 index 0000000..2285677 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_support.c @@ -0,0 +1,489 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * X.691-201508 #10.9 General rules for encoding a length determinant. + * Get the optionally constrained length "n" from the stream. + */ +ssize_t +uper_get_length(asn_per_data_t *pd, int ebits, size_t lower_bound, + int *repeat) { + ssize_t value; + + *repeat = 0; + + /* #11.9.4.1 Encoding if constrained (according to effective bits) */ + if(ebits >= 0 && ebits <= 16) { + value = per_get_few_bits(pd, ebits); + if(value >= 0) value += lower_bound; + return value; + } + + value = per_get_few_bits(pd, 8); + if((value & 0x80) == 0) { /* #11.9.3.6 */ + return (value & 0x7F); + } else if((value & 0x40) == 0) { /* #11.9.3.7 */ + /* bit 8 ... set to 1 and bit 7 ... set to zero */ + value = ((value & 0x3f) << 8) | per_get_few_bits(pd, 8); + return value; /* potential -1 from per_get_few_bits passes through. */ + } else if(value < 0) { + ASN_DEBUG("END of stream reached for PER"); + return -1; + } + value &= 0x3f; /* this is "m" from X.691, #11.9.3.8 */ + if(value < 1 || value > 4) { + return -1; /* Prohibited by #11.9.3.8 */ + } + *repeat = 1; + return (16384 * value); +} + +/* + * Get the normally small length "n". + * This procedure used to decode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +ssize_t +uper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%d", (int)length); + return length; + } else { + int repeat; + length = uper_get_length(pd, -1, 0, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +/* + * Get the normally small non-negative whole number. + * X.691, #10.6 + */ +ssize_t +uper_get_nsnnwn(asn_per_data_t *pd) { + ssize_t value; + + value = per_get_few_bits(pd, 7); + if(value & 64) { /* implicit (value < 0) */ + value &= 63; + value <<= 2; + value |= per_get_few_bits(pd, 2); + if(value & 128) /* implicit (value < 0) */ + return -1; + if(value == 0) + return 0; + if(value >= 3) + return -1; + value = per_get_few_bits(pd, 8 * value); + return value; + } + + return value; +} + +/* + * X.691-11/2008, #11.6 + * Encoding of a normally small non-negative whole number + */ +int +uper_put_nsnnwn(asn_per_outp_t *po, int n) { + int bytes; + + if(n <= 63) { + if(n < 0) return -1; + return per_put_few_bits(po, n, 7); + } + if(n < 256) + bytes = 1; + else if(n < 65536) + bytes = 2; + else if(n < 256 * 65536) + bytes = 3; + else + return -1; /* This is not a "normally small" value */ + if(per_put_few_bits(po, bytes, 8)) + return -1; + + return per_put_few_bits(po, n, 8 * bytes); +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *out_value, int nbits) { + unsigned long lhalf; /* Lower half of the number*/ + long half; + + if(nbits <= 31) { + half = per_get_few_bits(pd, nbits); + if(half < 0) return -1; + *out_value = half; + return 0; + } + + if((size_t)nbits > 8 * sizeof(*out_value)) + return -1; /* RANGE */ + + half = per_get_few_bits(pd, 31); + if(half < 0) return -1; + + if(uper_get_constrained_whole_number(pd, &lhalf, nbits - 31)) + return -1; + + *out_value = ((unsigned long)half << (nbits - 31)) | lhalf; + return 0; +} + + +/* X.691-2008/11, #11.5.6 -> #11.3 */ +int +uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, + int nbits) { + if(nbits <= 31) { + return per_put_few_bits(po, v, nbits); + } else { + /* Put higher portion first, followed by lower 31-bit */ + if(uper_put_constrained_whole_number_u(po, v >> 31, nbits - 31)) + return -1; + return per_put_few_bits(po, v, 31); + } +} + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "n" (or part of it) into the stream. + */ +ssize_t +uper_put_length(asn_per_outp_t *po, size_t length, int *need_eom) { + int dummy = 0; + if(!need_eom) need_eom = &dummy; + + if(length <= 127) { /* #11.9.3.6 */ + *need_eom = 0; + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } else if(length < 16384) { /* #10.9.3.7 */ + *need_eom = 0; + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + } + + *need_eom = 0 == (length & 16383); + length >>= 14; + if(length > 4) { + *need_eom = 0; + length = 4; + } + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); + +} + + +/* + * Put the normally small length "n" into the stream. + * This procedure used to encode length of extensions bit-maps + * for SET and SEQUENCE types. + */ +int +uper_put_nslength(asn_per_outp_t *po, size_t length) { + if(length <= 64) { + /* #11.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length - 1, 7) ? -1 : 0; + } else { + int need_eom = 0; + if(uper_put_length(po, length, &need_eom) != (ssize_t)length + || need_eom) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +static int +per__long_range(long lb, long ub, unsigned long *range_r) { + unsigned long bounds_range; + if((ub < 0) == (lb < 0)) { + bounds_range = ub - lb; + } else if(lb < 0) { + assert(ub >= 0); + bounds_range = 1 + ((unsigned long)ub + (unsigned long)-(lb + 1)); + } else { + assert(!"Unreachable"); + return -1; + } + *range_r = bounds_range; + return 0; +} + +int +per_long_range_rebase(long v, long lb, long ub, unsigned long *output) { + unsigned long range; + + assert(lb <= ub); + + if(v < lb || v > ub || per__long_range(lb, ub, &range) < 0) { + /* Range error. */ + return -1; + } + + /* + * Fundamentally what we're doing is returning (v-lb). + * However, this triggers undefined behavior when the word width + * of signed (v) is the same as the size of unsigned (*output). + * In practice, it triggers the UndefinedSanitizer. Therefore we shall + * compute the ranges accurately to avoid C's undefined behavior. + */ + if((v < 0) == (lb < 0)) { + *output = v-lb; + return 0; + } else if(v < 0) { + unsigned long rebased = 1 + (unsigned long)-(v+1) + (unsigned long)lb; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else if(lb < 0) { + unsigned long rebased = 1 + (unsigned long)-(lb+1) + (unsigned long)v; + assert(rebased <= range); /* By construction */ + *output = rebased; + return 0; + } else { + assert(!"Unreachable"); + return -1; + } +} + +int +per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp) { + unsigned long range; + + if(per__long_range(lb, ub, &range) != 0) { + return -1; + } + + if(inp > range) { + /* + * We can encode something in the given number of bits that technically + * exceeds the range. This is an avenue for security errors, + * so we don't allow that. + */ + return -1; + } + + if(inp <= LONG_MAX) { + *outp = (long)inp + lb; + } else { + *outp = (lb + LONG_MAX + 1) + (long)((inp - LONG_MAX) - 1); + } + + return 0; +} + +int32_t +aper_get_align(asn_per_data_t *pd) { + + if(pd->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)pd->nboff & 0x7)); + return per_get_few_bits(pd, 8 - (pd->nboff & 0x7)); + } + return 0; +} + +ssize_t +aper_get_length(asn_per_data_t *pd, int range, int ebits, int *repeat) { + ssize_t value; + + *repeat = 0; + + if (range <= 65536 && range >= 0) + return aper_get_nsnnwn(pd, range); + + if (aper_get_align(pd) < 0) + return -1; + + if(ebits >= 0) return per_get_few_bits(pd, ebits); + + value = per_get_few_bits(pd, 8); + if(value < 0) return -1; + if((value & 128) == 0) /* #10.9.3.6 */ + return (value & 0x7F); + if((value & 64) == 0) { /* #10.9.3.7 */ + value = ((value & 63) << 8) | per_get_few_bits(pd, 8); + if(value < 0) return -1; + return value; + } + value &= 63; /* this is "m" from X.691, #10.9.3.8 */ + if(value < 1 || value > 4) + return -1; + *repeat = 1; + return (16384 * value); +} + +ssize_t +aper_get_nslength(asn_per_data_t *pd) { + ssize_t length; + + ASN_DEBUG("Getting normally small length"); + + if(per_get_few_bits(pd, 1) == 0) { + length = per_get_few_bits(pd, 6) + 1; + if(length <= 0) return -1; + ASN_DEBUG("l=%ld", length); + return length; + } else { + int repeat; + length = aper_get_length(pd, -1, -1, &repeat); + if(length >= 0 && !repeat) return length; + return -1; /* Error, or do not support >16K extensions */ + } +} + +ssize_t +aper_get_nsnnwn(asn_per_data_t *pd, int range) { + ssize_t value; + int bytes = 0; + + ASN_DEBUG("getting nsnnwn with range %d", range); + + if(range <= 255) { + int i; + + if (range < 0) return -1; + /* 1 -> 8 bits */ + for (i = 1; i <= 8; i++) { + int upper = 1 << i; + if (upper >= range) + break; + } + value = per_get_few_bits(pd, i); + return value; + } else if (range == 256){ + /* 1 byte */ + bytes = 1; + } else if (range <= 65536) { + /* 2 bytes */ + bytes = 2; + } else { + return -1; + } + if (aper_get_align(pd) < 0) + return -1; + value = per_get_few_bits(pd, 8 * bytes); + return value; +} + +int aper_put_align(asn_per_outp_t *po) { + + if(po->nboff & 0x7) { + ASN_DEBUG("Aligning %ld bits", 8 - ((unsigned long)po->nboff & 0x7)); + if(per_put_few_bits(po, 0x00, (8 - (po->nboff & 0x7)))) + return -1; + } + return 0; +} + +ssize_t +aper_put_length(asn_per_outp_t *po, int range, size_t length) { + + ASN_DEBUG("APER put length %zu with range %d", length, range); + + /* 10.9 X.691 Note 2 */ + if (range <= 65536 && range >= 0) + return aper_put_nsnnwn(po, range, length); + + if (aper_put_align(po) < 0) + return -1; + + if(length <= 127) /* #10.9.3.6 */{ + return per_put_few_bits(po, length, 8) + ? -1 : (ssize_t)length; + } + else if(length < 16384) /* #10.9.3.7 */ + return per_put_few_bits(po, length|0x8000, 16) + ? -1 : (ssize_t)length; + + length >>= 14; + if(length > 4) length = 4; + + return per_put_few_bits(po, 0xC0 | length, 8) + ? -1 : (ssize_t)(length << 14); +} + + +int +aper_put_nslength(asn_per_outp_t *po, size_t length) { + + if(length <= 64) { + /* #10.9.3.4 */ + if(length == 0) return -1; + return per_put_few_bits(po, length-1, 7) ? -1 : 0; + } else { + if(aper_put_length(po, -1, length) != (ssize_t)length) { + /* This might happen in case of >16K extensions */ + return -1; + } + } + + return 0; +} + +int +aper_put_nsnnwn(asn_per_outp_t *po, int range, int number) { + int bytes; + + ASN_DEBUG("aper put nsnnwn %d with range %d", number, range); + /* 10.5.7.1 X.691 */ + if(range < 0) { + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (number <= bits) + break; + } + bytes = i; + assert(i <= 4); + } + if(range <= 255) { + int i; + for (i = 1; i <= 8; i++) { + int bits = 1 << i; + if (range <= bits) + break; + } + return per_put_few_bits(po, number, i); + } else if(range == 256) { + bytes = 1; + } else if(range <= 65536) { + bytes = 2; + } else { /* Ranges > 64K */ + int i; + for (i = 1; ; i++) { + int bits = 1 << (8 * i); + if (range <= bits) + break; + } + assert(i <= 4); + bytes = i; + } + if(aper_put_align(po) < 0) /* Aligning on octet */ + return -1; +/* if(per_put_few_bits(po, bytes, 8)) + return -1; +*/ + return per_put_few_bits(po, number, 8 * bytes); +} diff --git a/setup/xapp-bs-connector/asn1c_defs/per_support.h b/setup/xapp-bs-connector/asn1c_defs/per_support.h new file mode 100644 index 0000000..23079c9 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/per_support.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2005-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _PER_SUPPORT_H_ +#define _PER_SUPPORT_H_ + +#include /* Platform-specific types */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Pre-computed PER constraints. + */ +typedef struct asn_per_constraint_s { + enum asn_per_constraint_flags { + APC_UNCONSTRAINED = 0x0, /* No PER visible constraints */ + APC_SEMI_CONSTRAINED = 0x1, /* Constrained at "lb" */ + APC_CONSTRAINED = 0x2, /* Fully constrained */ + APC_EXTENSIBLE = 0x4 /* May have extension */ + } flags; + int range_bits; /* Full number of bits in the range */ + int effective_bits; /* Effective bits */ + long lower_bound; /* "lb" value */ + long upper_bound; /* "ub" value */ +} asn_per_constraint_t; +typedef struct asn_per_constraints_s { + asn_per_constraint_t value; + asn_per_constraint_t size; + int (*value2code)(unsigned int value); + int (*code2value)(unsigned int code); +} asn_per_constraints_t; + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_data_s asn_per_data_t; +#define per_get_few_bits(data, bits) asn_get_few_bits(data, bits) +#define per_get_undo(data, bits) asn_get_undo(data, bits) +#define per_get_many_bits(data, dst, align, bits) \ + asn_get_many_bits(data, dst, align, bits) + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Get the length "n" from the Unaligned PER stream. + */ +ssize_t uper_get_length(asn_per_data_t *pd, int effective_bound_bits, + size_t lower_bound, int *repeat); + +ssize_t aper_get_length(asn_per_data_t *pd, int range, + int effective_bound_bits, int *repeat); + +/* + * Get the normally small length "n". + */ +ssize_t uper_get_nslength(asn_per_data_t *pd); +ssize_t aper_get_nslength(asn_per_data_t *pd); + +/* + * Get the normally small non-negative whole number. + */ +ssize_t uper_get_nsnnwn(asn_per_data_t *pd); +ssize_t aper_get_nsnnwn(asn_per_data_t *pd, int range); + +/* X.691-2008/11, #11.5.6 */ +int uper_get_constrained_whole_number(asn_per_data_t *pd, unsigned long *v, int nbits); + + +/* Temporary compatibility layer. Will get removed. */ +typedef struct asn_bit_outp_s asn_per_outp_t; +#define per_put_few_bits(out, bits, obits) asn_put_few_bits(out, bits, obits) +#define per_put_many_bits(out, src, nbits) asn_put_many_bits(out, src, nbits) +#define per_put_aligned_flush(out) asn_put_aligned_flush(out) + + +/* + * Rebase the given value as an offset into the range specified by the + * lower bound (lb) and upper bound (ub). + * RETURN VALUES: + * -1: Conversion failed due to range problems. + * 0: Conversion was successful. + */ +int per_long_range_rebase(long v, long lb, long ub, unsigned long *output); +/* The inverse operation: restores the value by the offset and its bounds. */ +int per_long_range_unrebase(unsigned long inp, long lb, long ub, long *outp); + +/* X.691-2008/11, #11.5 */ +int uper_put_constrained_whole_number_u(asn_per_outp_t *po, unsigned long v, int nbits); + +/* + * X.691 (08/2015) #11.9 "General rules for encoding a length determinant" + * Put the length "whole_length" to the Unaligned PER stream. + * If (opt_need_eom) is given, it will be set to 1 if final 0-length is needed. + * In that case, invoke uper_put_length(po, 0, 0) after encoding the last block. + * This function returns the number of units which may be flushed + * in the next units saving iteration. + */ +ssize_t uper_put_length(asn_per_outp_t *po, size_t whole_length, + int *opt_need_eom); + +ssize_t aper_put_length(asn_per_outp_t *po, int range, size_t length); + +/* Align the current bit position to octet bundary */ +int aper_put_align(asn_per_outp_t *po); +int32_t aper_get_align(asn_per_data_t *pd); + +/* + * Put the normally small length "n" to the Unaligned PER stream. + * Returns 0 or -1. + */ +int uper_put_nslength(asn_per_outp_t *po, size_t length); + +int aper_put_nslength(asn_per_outp_t *po, size_t length); + +/* + * Put the normally small non-negative whole number. + */ +int uper_put_nsnnwn(asn_per_outp_t *po, int n); + +int aper_put_nsnnwn(asn_per_outp_t *po, int range, int number); + +#ifdef __cplusplus +} +#endif + +#endif /* _PER_SUPPORT_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/xer_decoder.c b/setup/xapp-bs-connector/asn1c_defs/xer_decoder.c new file mode 100644 index 0000000..5b87703 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/xer_decoder.c @@ -0,0 +1,369 @@ +/* + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include /* XER/XML parsing support */ + + +/* + * Decode the XER encoding of a given type. + */ +asn_dec_rval_t +xer_decode(const asn_codec_ctx_t *opt_codec_ctx, + const asn_TYPE_descriptor_t *td, void **struct_ptr, + const void *buffer, size_t size) { + asn_codec_ctx_t s_codec_ctx; + + /* + * Stack checker requires that the codec context + * must be allocated on the stack. + */ + if(opt_codec_ctx) { + if(opt_codec_ctx->max_stack_size) { + s_codec_ctx = *opt_codec_ctx; + opt_codec_ctx = &s_codec_ctx; + } + } else { + /* If context is not given, be security-conscious anyway */ + memset(&s_codec_ctx, 0, sizeof(s_codec_ctx)); + s_codec_ctx.max_stack_size = ASN__DEFAULT_STACK_MAX; + opt_codec_ctx = &s_codec_ctx; + } + + /* + * Invoke type-specific decoder. + */ + return td->op->xer_decoder(opt_codec_ctx, td, struct_ptr, 0, buffer, size); +} + + + +struct xer__cb_arg { + pxml_chunk_type_e chunk_type; + size_t chunk_size; + const void *chunk_buf; + int callback_not_invoked; +}; + +static int +xer__token_cb(pxml_chunk_type_e type, const void *_chunk_data, size_t _chunk_size, void *key) { + struct xer__cb_arg *arg = (struct xer__cb_arg *)key; + arg->chunk_type = type; + arg->chunk_size = _chunk_size; + arg->chunk_buf = _chunk_data; + arg->callback_not_invoked = 0; + return -1; /* Terminate the XML parsing */ +} + +/* + * Fetch the next token from the XER/XML stream. + */ +ssize_t +xer_next_token(int *stateContext, const void *buffer, size_t size, pxer_chunk_type_e *ch_type) { + struct xer__cb_arg arg; + int new_stateContext = *stateContext; + ssize_t ret; + + arg.callback_not_invoked = 1; + ret = pxml_parse(&new_stateContext, buffer, size, xer__token_cb, &arg); + if(ret < 0) return -1; + if(arg.callback_not_invoked) { + assert(ret == 0); /* No data was consumed */ + *ch_type = PXER_WMORE; + return 0; /* Try again with more data */ + } else { + assert(arg.chunk_size); + assert(arg.chunk_buf == buffer); + } + + /* + * Translate the XML chunk types into more convenient ones. + */ + switch(arg.chunk_type) { + case PXML_TEXT: + *ch_type = PXER_TEXT; + break; + case PXML_TAG: + *ch_type = PXER_WMORE; + return 0; /* Want more */ + case PXML_TAG_END: + *ch_type = PXER_TAG; + break; + case PXML_COMMENT: + case PXML_COMMENT_END: + *ch_type = PXER_COMMENT; + break; + } + + *stateContext = new_stateContext; + return arg.chunk_size; +} + +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define RANGLE 0x3e /* '>' */ + +xer_check_tag_e +xer_check_tag(const void *buf_ptr, int size, const char *need_tag) { + const char *buf = (const char *)buf_ptr; + const char *end; + xer_check_tag_e ct = XCT_OPENING; + + if(size < 2 || buf[0] != LANGLE || buf[size-1] != RANGLE) { + if(size >= 2) + ASN_DEBUG("Broken XML tag: \"%c...%c\"", + buf[0], buf[size - 1]); + return XCT_BROKEN; + } + + /* + * Determine the tag class. + */ + if(buf[1] == CSLASH) { + buf += 2; /* advance past "" */ + ct = XCT_CLOSING; + if(size > 0 && buf[size-1] == CSLASH) + return XCT_BROKEN; /* */ + } else { + buf++; /* advance past "<" */ + size -= 2; /* strip "<" and ">" */ + if(size > 0 && buf[size-1] == CSLASH) { + ct = XCT_BOTH; + size--; /* One more, for "/" */ + } + } + + /* Sometimes we don't care about the tag */ + if(!need_tag || !*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + /* + * Determine the tag name. + */ + for(end = buf + size; buf < end; buf++, need_tag++) { + int b = *buf, n = *need_tag; + if(b != n) { + if(n == 0) { + switch(b) { + case 0x09: case 0x0a: case 0x0c: case 0x0d: + case 0x20: + /* "": whitespace is normal */ + return ct; + } + } + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + } + if(b == 0) + return XCT_BROKEN; /* Embedded 0 in buf?! */ + } + if(*need_tag) + return (xer_check_tag_e)(XCT__UNK__MASK | ct); + + return ct; +} + + +#undef ADVANCE +#define ADVANCE(num_bytes) do { \ + size_t num = (num_bytes); \ + buf_ptr = ((const char *)buf_ptr) + num; \ + size -= num; \ + consumed_myself += num; \ + } while(0) + +#undef RETURN +#define RETURN(_code) do { \ + rval.code = _code; \ + rval.consumed = consumed_myself; \ + if(rval.code != RC_OK) \ + ASN_DEBUG("Failed with %d", rval.code); \ + return rval; \ + } while(0) + +#define XER_GOT_BODY(chunk_buf, chunk_size, size) do { \ + ssize_t converted_size = body_receiver \ + (struct_key, chunk_buf, chunk_size, \ + (size_t)chunk_size < size); \ + if(converted_size == -1) RETURN(RC_FAIL); \ + if(converted_size == 0 \ + && size == (size_t)chunk_size) \ + RETURN(RC_WMORE); \ + chunk_size = converted_size; \ + } while(0) +#define XER_GOT_EMPTY() do { \ + if(body_receiver(struct_key, 0, 0, size > 0) == -1) \ + RETURN(RC_FAIL); \ + } while(0) + +/* + * Generalized function for decoding the primitive values. + */ +asn_dec_rval_t +xer_decode_general(const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, + const char *xml_tag, /* Expected XML tag */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder) + (void *struct_key, const void *chunk_buf, size_t chunk_size), + ssize_t (*body_receiver) + (void *struct_key, const void *chunk_buf, size_t chunk_size, + int have_more) + ) { + + asn_dec_rval_t rval; + ssize_t consumed_myself = 0; + + (void)opt_codec_ctx; + + /* + * Phases of XER/XML processing: + * Phase 0: Check that the opening tag matches our expectations. + * Phase 1: Processing body and reacting on closing tag. + */ + if(ctx->phase > 1) RETURN(RC_FAIL); + for(;;) { + pxer_chunk_type_e ch_type; /* XER chunk type */ + ssize_t ch_size; /* Chunk size */ + xer_check_tag_e tcv; /* Tag check value */ + + /* + * Get the next part of the XML stream. + */ + ch_size = xer_next_token(&ctx->context, buf_ptr, size, + &ch_type); + if(ch_size == -1) { + RETURN(RC_FAIL); + } else { + switch(ch_type) { + case PXER_WMORE: + RETURN(RC_WMORE); + case PXER_COMMENT: /* Got XML comment */ + ADVANCE(ch_size); /* Skip silently */ + continue; + case PXER_TEXT: + if(ctx->phase == 0) { + /* + * We have to ignore whitespace here, + * but in order to be forward compatible + * with EXTENDED-XER (EMBED-VALUES, #25) + * any text is just ignored here. + */ + } else { + XER_GOT_BODY(buf_ptr, ch_size, size); + } + ADVANCE(ch_size); + continue; + case PXER_TAG: + break; /* Check the rest down there */ + } + } + + assert(ch_type == PXER_TAG && size); + + tcv = xer_check_tag(buf_ptr, ch_size, xml_tag); + /* + * Phase 0: + * Expecting the opening tag + * for the type being processed. + * Phase 1: + * Waiting for the closing XML tag. + */ + switch(tcv) { + case XCT_BOTH: + if(ctx->phase) break; + /* Finished decoding of an empty element */ + XER_GOT_EMPTY(); + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_OPENING: + if(ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 1; /* Processing body phase */ + continue; + case XCT_CLOSING: + if(!ctx->phase) break; + ADVANCE(ch_size); + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + case XCT_UNKNOWN_BO: + /* + * Certain tags in the body may be expected. + */ + if(opt_unexpected_tag_decoder + && opt_unexpected_tag_decoder(struct_key, + buf_ptr, ch_size) >= 0) { + /* Tag's processed fine */ + ADVANCE(ch_size); + if(!ctx->phase) { + /* We are not expecting + * the closing tag anymore. */ + ctx->phase = 2; /* Phase out */ + RETURN(RC_OK); + } + continue; + } + /* Fall through */ + default: + break; /* Unexpected tag */ + } + + ASN_DEBUG("Unexpected XML tag (expected \"%s\")", xml_tag); + break; /* Dark and mysterious things have just happened */ + } + + RETURN(RC_FAIL); +} + + +size_t +xer_whitespace_span(const void *chunk_buf, size_t chunk_size) { + const char *p = (const char *)chunk_buf; + const char *pend = p + chunk_size; + + for(; p < pend; p++) { + switch(*p) { + /* X.693, #8.1.4 + * HORISONTAL TAB (9) + * LINE FEED (10) + * CARRIAGE RETURN (13) + * SPACE (32) + */ + case 0x09: case 0x0a: case 0x0d: case 0x20: + continue; + default: + break; + } + break; + } + return (p - (const char *)chunk_buf); +} + +/* + * This is a vastly simplified, non-validating XML tree skipper. + */ +int +xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth) { + assert(*depth > 0); + switch(tcv) { + case XCT_BOTH: + case XCT_UNKNOWN_BO: + /* These negate each other. */ + return 0; + case XCT_OPENING: + case XCT_UNKNOWN_OP: + ++(*depth); + return 0; + case XCT_CLOSING: + case XCT_UNKNOWN_CL: + if(--(*depth) == 0) + return (tcv == XCT_CLOSING) ? 2 : 1; + return 0; + default: + return -1; + } +} diff --git a/setup/xapp-bs-connector/asn1c_defs/xer_decoder.h b/setup/xapp-bs-connector/asn1c_defs/xer_decoder.h new file mode 100644 index 0000000..b951c41 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/xer_decoder.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_DECODER_H_ +#define _XER_DECODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* + * The XER decoder of any ASN.1 type. May be invoked by the application. + * Decodes CANONICAL-XER and BASIC-XER. + */ +asn_dec_rval_t xer_decode( + const struct asn_codec_ctx_s *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, + void **struct_ptr, /* Pointer to a target structure's pointer */ + const void *buffer, /* Data to be decoded */ + size_t size /* Size of data buffer */ +); + +/* + * Type of the type-specific XER decoder function. + */ +typedef asn_dec_rval_t(xer_type_decoder_f)( + const asn_codec_ctx_t *opt_codec_ctx, + const struct asn_TYPE_descriptor_s *type_descriptor, void **struct_ptr, + const char *opt_mname, /* Member name */ + const void *buf_ptr, size_t size); + +/******************************* + * INTERNALLY USEFUL FUNCTIONS * + *******************************/ + +/* + * Generalized function for decoding the primitive values. + * Used by more specialized functions, such as OCTET_STRING_decode_xer_utf8 + * and others. This function should not be used by applications, as its API + * is subject to changes. + */ +asn_dec_rval_t xer_decode_general( + const asn_codec_ctx_t *opt_codec_ctx, + asn_struct_ctx_t *ctx, /* Type decoder context */ + void *struct_key, /* Treated as opaque pointer */ + const char *xml_tag, /* Expected XML tag name */ + const void *buf_ptr, size_t size, + int (*opt_unexpected_tag_decoder)(void *struct_key, const void *chunk_buf, + size_t chunk_size), + ssize_t (*body_receiver)(void *struct_key, const void *chunk_buf, + size_t chunk_size, int have_more)); + + +/* + * Fetch the next XER (XML) token from the stream. + * The function returns the number of bytes occupied by the chunk type, + * returned in the _ch_type. The _ch_type is only set (and valid) when + * the return value is >= 0. + */ + typedef enum pxer_chunk_type { + PXER_WMORE, /* Chunk type is not clear, more data expected. */ + PXER_TAG, /* Complete XER tag */ + PXER_TEXT, /* Plain text between XER tags */ + PXER_COMMENT /* A comment, may be part of */ + } pxer_chunk_type_e; +ssize_t xer_next_token(int *stateContext, + const void *buffer, size_t size, pxer_chunk_type_e *_ch_type); + +/* + * This function checks the buffer against the tag name is expected to occur. + */ + typedef enum xer_check_tag { + XCT_BROKEN = 0, /* The tag is broken */ + XCT_OPENING = 1, /* This is the tag */ + XCT_CLOSING = 2, /* This is the tag */ + XCT_BOTH = 3, /* This is the tag */ + XCT__UNK__MASK = 4, /* Mask of everything unexpected */ + XCT_UNKNOWN_OP = 5, /* Unexpected tag */ + XCT_UNKNOWN_CL = 6, /* Unexpected tag */ + XCT_UNKNOWN_BO = 7 /* Unexpected tag */ + } xer_check_tag_e; +xer_check_tag_e xer_check_tag(const void *buf_ptr, int size, + const char *need_tag); + +/* + * Get the number of bytes consisting entirely of XER whitespace characters. + * RETURN VALUES: + * >=0: Number of whitespace characters in the string. + */ +size_t xer_whitespace_span(const void *chunk_buf, size_t chunk_size); + +/* + * Skip the series of anticipated extensions. + */ +int xer_skip_unknown(xer_check_tag_e tcv, ber_tlv_len_t *depth); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_DECODER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/xer_encoder.c b/setup/xapp-bs-connector/asn1c_defs/xer_encoder.c new file mode 100644 index 0000000..4177ede --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/xer_encoder.c @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2003, 2004 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include +#include + +/* + * The XER encoder of any type. May be invoked by the application. + */ +asn_enc_rval_t +xer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, + enum xer_encoder_flags_e xer_flags, asn_app_consume_bytes_f *cb, + void *app_key) { + asn_enc_rval_t er = {0, 0, 0}; + asn_enc_rval_t tmper; + const char *mname; + size_t mlen; + int xcan = (xer_flags & XER_F_CANONICAL) ? 1 : 2; + + if(!td || !sptr) goto cb_failed; + + mname = td->xml_tag; + mlen = strlen(mname); + + ASN__CALLBACK3("<", 1, mname, mlen, ">", 1); + + tmper = td->op->xer_encoder(td, sptr, 1, xer_flags, cb, app_key); + if(tmper.encoded == -1) return tmper; + er.encoded += tmper.encoded; + + ASN__CALLBACK3("\n", xcan); + + ASN__ENCODED_OK(er); +cb_failed: + ASN__ENCODE_FAILED; +} + +/* + * This is a helper function for xer_fprint, which directs all incoming data + * into the provided file descriptor. + */ +static int +xer__print2fp(const void *buffer, size_t size, void *app_key) { + FILE *stream = (FILE *)app_key; + + if(fwrite(buffer, 1, size, stream) != size) + return -1; + + return 0; +} + +int +xer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) { + asn_enc_rval_t er = {0,0,0}; + + if(!stream) stream = stdout; + if(!td || !sptr) + return -1; + + er = xer_encode(td, sptr, XER_F_BASIC, xer__print2fp, stream); + if(er.encoded == -1) + return -1; + + return fflush(stream); +} + +struct xer_buffer { + char *buffer; + size_t buffer_size; + size_t allocated_size; +}; + +static int +xer__buffer_append(const void *buffer, size_t size, void *app_key) { + struct xer_buffer *xb = app_key; + + while(xb->buffer_size + size + 1 > xb->allocated_size) { + size_t new_size = 2 * (xb->allocated_size ? xb->allocated_size : 64); + char *new_buf = MALLOC(new_size); + if(!new_buf) return -1; + if (xb->buffer) { + memcpy(new_buf, xb->buffer, xb->buffer_size); + } + FREEMEM(xb->buffer); + xb->buffer = new_buf; + xb->allocated_size = new_size; + } + + memcpy(xb->buffer + xb->buffer_size, buffer, size); + xb->buffer_size += size; + xb->buffer[xb->buffer_size] = '\0'; + return 0; +} + +enum xer_equivalence_e +xer_equivalent(const struct asn_TYPE_descriptor_s *td, const void *struct1, + const void *struct2, FILE *opt_debug_stream) { + struct xer_buffer xb1 = {0, 0, 0}; + struct xer_buffer xb2 = {0, 0, 0}; + asn_enc_rval_t e1, e2; + asn_dec_rval_t rval; + void *sptr = NULL; + + if(!td || !struct1 || !struct2) { + if(opt_debug_stream) { + if(!td) fprintf(opt_debug_stream, "Type descriptor missing\n"); + if(!struct1) fprintf(opt_debug_stream, "Structure 1 missing\n"); + if(!struct2) fprintf(opt_debug_stream, "Structure 2 missing\n"); + } + return XEQ_FAILURE; + } + + e1 = xer_encode(td, struct1, XER_F_BASIC, xer__buffer_append, &xb1); + if(e1.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + return XEQ_ENCODE1_FAILED; + } + + e2 = xer_encode(td, struct2, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of %s failed\n", td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ENCODE1_FAILED; + } + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structures XER-encoded into different byte streams:\n=== " + "Structure 1 ===\n%s\n=== Structure 2 ===\n%s\n", + xb1.buffer, xb2.buffer); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DIFFERENT; + } else { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Both structures encoded into the same XER byte stream " + "of size %" ASN_PRI_SIZE ":\n%s", + xb1.buffer_size, xb1.buffer); + } + } + + rval = xer_decode(NULL, td, (void **)&sptr, xb1.buffer, + xb1.buffer_size); + switch(rval.code) { + case RC_OK: + break; + case RC_WMORE: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decode unexpectedly requires " + "more data:\n%s\n", + td->name, xb1.buffer); + } + /* Fall through */ + case RC_FAIL: + default: + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Structure %s XER decoding resulted in failure.\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_DECODE_FAILED; + } + + if(rval.consumed != xb1.buffer_size + && ((rval.consumed > xb1.buffer_size) + || xer_whitespace_span(xb1.buffer + rval.consumed, + xb1.buffer_size - rval.consumed) + != (xb1.buffer_size - rval.consumed))) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "Round-trip decode of %s required less bytes (%" ASN_PRI_SIZE ") than " + "encoded (%" ASN_PRI_SIZE ")\n", + td->name, rval.consumed, xb1.buffer_size); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + /* + * Reuse xb2 to encode newly decoded structure. + */ + FREEMEM(xb2.buffer); + memset(&xb2, 0, sizeof(xb2)); + + e2 = xer_encode(td, sptr, XER_F_BASIC, xer__buffer_append, &xb2); + if(e2.encoded == -1) { + if(opt_debug_stream) { + fprintf(stderr, "XER Encoding of round-trip decode of %s failed\n", + td->name); + } + ASN_STRUCT_FREE(*td, sptr); + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + ASN_STRUCT_FREE(*td, sptr); + sptr = 0; + + if(xb1.buffer_size != xb2.buffer_size + || memcmp(xb1.buffer, xb2.buffer, xb1.buffer_size) != 0) { + if(opt_debug_stream) { + fprintf(opt_debug_stream, + "XER Encoding of round-trip decode of %s resulted in " + "different byte stream:\n" + "=== Original ===\n%s\n" + "=== Round-tripped ===\n%s\n", + xb1.buffer, xb2.buffer, td->name); + } + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_ROUND_TRIP_FAILED; + } + + FREEMEM(xb1.buffer); + FREEMEM(xb2.buffer); + return XEQ_SUCCESS; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/xer_encoder.h b/setup/xapp-bs-connector/asn1c_defs/xer_encoder.h new file mode 100644 index 0000000..9d75922 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/xer_encoder.h @@ -0,0 +1,83 @@ +/*- + * Copyright (c) 2004-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_ENCODER_H_ +#define _XER_ENCODER_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +struct asn_TYPE_descriptor_s; /* Forward declaration */ + +/* Flags used by the xer_encode() and (*xer_type_encoder_f), defined below */ +enum xer_encoder_flags_e { + /* Mode of encoding */ + XER_F_BASIC = 0x01, /* BASIC-XER (pretty-printing) */ + XER_F_CANONICAL = 0x02 /* Canonical XER (strict rules) */ +}; + +/* + * The XER encoder of any type. May be invoked by the application. + * Produces CANONICAL-XER and BASIC-XER depending on the (xer_flags). + */ +asn_enc_rval_t xer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, + void *app_key /* Arbitrary callback argument */ +); + +/* + * The variant of the above function which dumps the BASIC-XER (XER_F_BASIC) + * output into the chosen file pointer. + * RETURN VALUES: + * 0: The structure is printed. + * -1: Problem printing the structure. + * WARNING: No sensible errno value is returned. + */ +int xer_fprint(FILE *stream, const struct asn_TYPE_descriptor_s *td, + const void *struct_ptr); + +/* + * A helper function that uses XER encoding/decoding to verify that: + * - Both structures encode into the same BASIC XER. + * - Both resulting XER byte streams can be decoded back. + * - Both decoded structures encode into the same BASIC XER (round-trip). + * All of this verifies equivalence between structures and a round-trip. + * ARGUMENTS: + * (opt_debug_stream) - If specified, prints ongoing details. + */ +enum xer_equivalence_e { + XEQ_SUCCESS, /* The only completely positive return value */ + XEQ_FAILURE, /* General failure */ + XEQ_ENCODE1_FAILED, /* First sructure XER encoding failed */ + XEQ_ENCODE2_FAILED, /* Second structure XER encoding failed */ + XEQ_DIFFERENT, /* Structures encoded into different XER */ + XEQ_DECODE_FAILED, /* Decode of the XER data failed */ + XEQ_ROUND_TRIP_FAILED /* Bad round-trip */ +}; +enum xer_equivalence_e xer_equivalent( + const struct asn_TYPE_descriptor_s *type_descriptor, const void *struct1, + const void *struct2, FILE *opt_debug_stream); + +/* + * Type of the generic XER encoder. + */ +typedef asn_enc_rval_t(xer_type_encoder_f)( + const struct asn_TYPE_descriptor_s *type_descriptor, + const void *struct_ptr, /* Structure to be encoded */ + int ilevel, /* Level of indentation */ + enum xer_encoder_flags_e xer_flags, + asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ + void *app_key /* Arbitrary callback argument */ +); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_ENCODER_H_ */ diff --git a/setup/xapp-bs-connector/asn1c_defs/xer_support.c b/setup/xapp-bs-connector/asn1c_defs/xer_support.c new file mode 100644 index 0000000..36b4bfb --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/xer_support.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003, 2004, 2005 Lev Walkin . + * All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#include +#include + +/* Parser states */ +typedef enum { + ST_TEXT, + ST_TAG_START, + ST_TAG_BODY, + ST_TAG_QUOTE_WAIT, + ST_TAG_QUOTED_STRING, + ST_TAG_UNQUOTED_STRING, + ST_COMMENT_WAIT_DASH1, /* ""[0] */ + ST_COMMENT_CLO_RT /* "-->"[1] */ +} pstate_e; + +static const int +_charclass[256] = { + 0,0,0,0,0,0,0,0, 0,1,1,0,1,1,0,0, + 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, + 2,2,2,2,2,2,2,2, 2,2,0,0,0,0,0,0, /* 01234567 89 */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* ABCDEFG HIJKLMNO */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0, /* PQRSTUVW XYZ */ + 0,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, /* abcdefg hijklmno */ + 3,3,3,3,3,3,3,3, 3,3,3,0,0,0,0,0 /* pqrstuvw xyz */ +}; +#define WHITESPACE(c) (_charclass[(unsigned char)(c)] == 1) +#define ALNUM(c) (_charclass[(unsigned char)(c)] >= 2) +#define ALPHA(c) (_charclass[(unsigned char)(c)] == 3) + +/* Aliases for characters, ASCII/UTF-8 */ +#define EXCLAM 0x21 /* '!' */ +#define CQUOTE 0x22 /* '"' */ +#define CDASH 0x2d /* '-' */ +#define CSLASH 0x2f /* '/' */ +#define LANGLE 0x3c /* '<' */ +#define CEQUAL 0x3d /* '=' */ +#define RANGLE 0x3e /* '>' */ +#define CQUEST 0x3f /* '?' */ + +/* Invoke token callback */ +#define TOKEN_CB_CALL(type, _ns, _current_too, _final) do { \ + int _ret; \ + pstate_e ns = _ns; \ + ssize_t _sz = (p - chunk_start) + _current_too; \ + if (!_sz) { \ + /* Shortcut */ \ + state = _ns; \ + break; \ + } \ + _ret = cb(type, chunk_start, _sz, key); \ + if(_ret < _sz) { \ + if(_current_too && _ret == -1) \ + state = ns; \ + goto finish; \ + } \ + chunk_start = p + _current_too; \ + state = ns; \ + } while(0) + +#define TOKEN_CB(_type, _ns, _current_too) \ + TOKEN_CB_CALL(_type, _ns, _current_too, 0) + +#define PXML_TAG_FINAL_CHUNK_TYPE PXML_TAG_END +#define PXML_COMMENT_FINAL_CHUNK_TYPE PXML_COMMENT_END + +#define TOKEN_CB_FINAL(_type, _ns, _current_too) \ + TOKEN_CB_CALL( _type ## _FINAL_CHUNK_TYPE , _ns, _current_too, 1) + +/* + * Parser itself + */ +ssize_t pxml_parse(int *stateContext, const void *xmlbuf, size_t size, pxml_callback_f *cb, void *key) { + pstate_e state = (pstate_e)*stateContext; + const char *chunk_start = (const char *)xmlbuf; + const char *p = chunk_start; + const char *end = p + size; + + for(; p < end; p++) { + int C = *(const unsigned char *)p; + switch(state) { + case ST_TEXT: + /* + * Initial state: we're in the middle of some text, + * or just have started. + */ + if (C == LANGLE) + /* We're now in the tag, probably */ + TOKEN_CB(PXML_TEXT, ST_TAG_START, 0); + break; + case ST_TAG_START: + if (ALPHA(C) || (C == CSLASH)) + state = ST_TAG_BODY; + else if (C == EXCLAM) + state = ST_COMMENT_WAIT_DASH1; + else + /* + * Not characters and not whitespace. + * Must be something like "3 < 4". + */ + TOKEN_CB(PXML_TEXT, ST_TEXT, 1);/* Flush as data */ + break; + case ST_TAG_BODY: + switch(C) { + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + case LANGLE: + /* + * The previous tag wasn't completed, but still + * recognized as valid. (Mozilla-compatible) + */ + TOKEN_CB_FINAL(PXML_TAG, ST_TAG_START, 0); + break; + case CEQUAL: + state = ST_TAG_QUOTE_WAIT; + break; + } + break; + case ST_TAG_QUOTE_WAIT: + /* + * State after the equal sign ("=") in the tag. + */ + switch(C) { + case CQUOTE: + state = ST_TAG_QUOTED_STRING; + break; + case RANGLE: + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + break; + default: + if(!WHITESPACE(C)) + /* Unquoted string value */ + state = ST_TAG_UNQUOTED_STRING; + } + break; + case ST_TAG_QUOTED_STRING: + /* + * Tag attribute's string value in quotes. + */ + if(C == CQUOTE) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_TAG_UNQUOTED_STRING: + if(C == RANGLE) { + /* End of the tag */ + TOKEN_CB_FINAL(PXML_TAG, ST_TEXT, 1); + } else if(WHITESPACE(C)) { + /* Return back to the tag state */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH1: + if(C == CDASH) { + state = ST_COMMENT_WAIT_DASH2; + } else { + /* Some ordinary tag. */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT_WAIT_DASH2: + if(C == CDASH) { + /* Seen "<--" */ + state = ST_COMMENT; + } else { + /* Some ordinary tag */ + state = ST_TAG_BODY; + } + break; + case ST_COMMENT: + if(C == CDASH) { + state = ST_COMMENT_CLO_DASH2; + } + break; + case ST_COMMENT_CLO_DASH2: + if(C == CDASH) { + state = ST_COMMENT_CLO_RT; + } else { + /* This is not an end of a comment */ + state = ST_COMMENT; + } + break; + case ST_COMMENT_CLO_RT: + if(C == RANGLE) { + TOKEN_CB_FINAL(PXML_COMMENT, ST_TEXT, 1); + } else if(C == CDASH) { + /* Maintain current state, still waiting for '>' */ + } else { + state = ST_COMMENT; + } + break; + } /* switch(*ptr) */ + } /* for() */ + + /* + * Flush the partially processed chunk, state permitting. + */ + if(p - chunk_start) { + switch (state) { + case ST_COMMENT: + TOKEN_CB(PXML_COMMENT, state, 0); + break; + case ST_TEXT: + TOKEN_CB(PXML_TEXT, state, 0); + break; + default: break; /* a no-op */ + } + } + +finish: + *stateContext = (int)state; + return chunk_start - (const char *)xmlbuf; +} + diff --git a/setup/xapp-bs-connector/asn1c_defs/xer_support.h b/setup/xapp-bs-connector/asn1c_defs/xer_support.h new file mode 100644 index 0000000..c3a36e7 --- /dev/null +++ b/setup/xapp-bs-connector/asn1c_defs/xer_support.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2003, 2004 X/IO Labs, xiolabs.com. + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _XER_SUPPORT_H_ +#define _XER_SUPPORT_H_ + +#include /* Platform-specific types */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Types of data transferred to the application. + */ +typedef enum { + PXML_TEXT, /* Plain text between XML tags. */ + PXML_TAG, /* A tag, starting with '<'. */ + PXML_COMMENT, /* An XML comment, including "". */ + /* + * The following chunk types are reported if the chunk + * terminates the specified XML element. + */ + PXML_TAG_END, /* Tag ended */ + PXML_COMMENT_END /* Comment ended */ +} pxml_chunk_type_e; + +/* + * Callback function that is called by the parser when parsed data is + * available. The _opaque is the pointer to a field containing opaque user + * data specified in pxml_create() call. The chunk type is _type and the text + * data is the piece of buffer identified by _bufid (as supplied to + * pxml_feed() call) starting at offset _offset and of _size bytes size. + * The chunk is NOT '\0'-terminated. + */ +typedef int (pxml_callback_f)(pxml_chunk_type_e _type, + const void *_chunk_data, size_t _chunk_size, void *_key); + +/* + * Parse the given buffer as it were a chunk of XML data. + * Invoke the specified callback each time the meaninful data is found. + * This function returns number of bytes consumed from the bufer. + * It will always be lesser than or equal to the specified _size. + * The next invocation of this function must account the difference. + */ +ssize_t pxml_parse(int *_stateContext, const void *_buf, size_t _size, + pxml_callback_f *cb, void *_key); + +#ifdef __cplusplus +} +#endif + +#endif /* _XER_SUPPORT_H_ */ diff --git a/setup/xapp-bs-connector/build_xapp.sh b/setup/xapp-bs-connector/build_xapp.sh new file mode 100755 index 0000000..2c6b93a --- /dev/null +++ b/setup/xapp-bs-connector/build_xapp.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +export DEBUG=0 +export CONNECTOR_DIR=/home/xapp-bs-connector + +# these are replaced through the dockerfile +export GNB_ID +export XAPP_ID + +# get build clean from cli arguments +if [ $# -ne 0 ]; then + BUILD_CLEAN=1 +fi + +# setup debug field +sed -i "s/^#define DEBUG.*/#define DEBUG ${DEBUG}/g" ${CONNECTOR_DIR}/src/xapp.hpp + +# setup parameters +if [ -n "${GNB_ID}" ]; then + sed -i "s/^#define GNB_ID.*/#define GNB_ID \"${GNB_ID}\"/g" ${CONNECTOR_DIR}/src/xapp.hpp +fi + +if [ -n "${XAPP_ID}" ]; then + sed -i "s/^#define XAPP_REQ_ID.*/#define XAPP_REQ_ID ${XAPP_ID}/g" ${CONNECTOR_DIR}/src/xapp.hpp +fi + +# build +if [ ${BUILD_CLEAN} ]; then + cd ${CONNECTOR_DIR}/src && make clean && make -j ${nproc} && make install && ldconfig +else + cd ${CONNECTOR_DIR}/src && make -j ${nproc} && make install && ldconfig +fi diff --git a/setup/xapp-bs-connector/container-tag.yaml b/setup/xapp-bs-connector/container-tag.yaml new file mode 100644 index 0000000..eef6e88 --- /dev/null +++ b/setup/xapp-bs-connector/container-tag.yaml @@ -0,0 +1,4 @@ +# this is used by CI jobs to apply a tag when it builds the image +--- +tag: '1.0.6' + diff --git a/setup/xapp-bs-connector/docs/_static/logo.png b/setup/xapp-bs-connector/docs/_static/logo.png new file mode 100644 index 0000000..c3b6ce5 Binary files /dev/null and b/setup/xapp-bs-connector/docs/_static/logo.png differ diff --git a/setup/xapp-bs-connector/docs/conf.py b/setup/xapp-bs-connector/docs/conf.py new file mode 100644 index 0000000..10d44bc --- /dev/null +++ b/setup/xapp-bs-connector/docs/conf.py @@ -0,0 +1,9 @@ +from docs_conf.conf import * +linkcheck_ignore = [ + 'http://localhost.*', + 'http://127.0.0.1.*', + 'https://gerrit.o-ran-sc.org.*' +] +#extensions = ['sphinx.ext.autosectionlabel'] +#intersphinx_mapping = {} +#intersphinx_mapping['ric-app-hw'] = ('https://o-ran-sc-doc.readthedocs.io/projects/o-ran-sc-ric-app-hw/en/%s' % 'latest') diff --git a/setup/xapp-bs-connector/docs/conf.yaml b/setup/xapp-bs-connector/docs/conf.yaml new file mode 100644 index 0000000..69f1b7f --- /dev/null +++ b/setup/xapp-bs-connector/docs/conf.yaml @@ -0,0 +1,3 @@ +--- +project_cfg: oran +project: ric-app-hw diff --git a/setup/xapp-bs-connector/docs/e2sm-HelloWorld-v001.asn b/setup/xapp-bs-connector/docs/e2sm-HelloWorld-v001.asn new file mode 100755 index 0000000..d55cf9b --- /dev/null +++ b/setup/xapp-bs-connector/docs/e2sm-HelloWorld-v001.asn @@ -0,0 +1,199 @@ +-- ASN1START +-- ************************************************************** +-- E2SM-HelloWorld +-- Information Element Definitions +-- +-- ************************************************************** + +E2SM-HelloWorld-IEs { } + +DEFINITIONS AUTOMATIC TAGS ::= + +BEGIN + +-- ************************************************************** +-- +-- Lists +-- +-- ************************************************************** + +maxofRANParameters INTEGER ::= 255 + +-- E2 Service model IEs + +-- --------------------------------------------------- +-- Event Trigger Definition OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-HelloWorld-EventTriggerDefinition IE +E2SM-HelloWorld-EventTriggerDefinition ::= CHOICE{ + eventDefinition-Format1 E2SM-HelloWorld-EventTriggerDefinition-Format1, + ... +} + +-- E2SM-HelloWorld-eventTriggerDefinition IE Format 1 +E2SM-HelloWorld-EventTriggerDefinition-Format1 ::= SEQUENCE{ + triggerNature HW-TriggerNature, + ... +} + +-- --------------------------------------------------- +-- Action Definition OCTET STRING contents +-- --------------------------------------------------- +E2SM-HelloWorld-ActionDefinition ::= CHOICE{ + actionDefinition-Format1 E2SM-HelloWorld-ActionDefinition-Format1, + ... +} + +-- E2SM-HelloWorld-actionDefinition IE used for Action Format 1 +E2SM-HelloWorld-ActionDefinition-Format1 ::= SEQUENCE{ + ranParameter-List SEQUENCE (SIZE(1..maxofRANParameters)) OF RANparameter-Item OPTIONAL, + ... +} + + + +-- --------------------------------------------------- +-- Indication Header OCTET STRING contents +-- --------------------------------------------------- + +E2SM-HelloWorld-IndicationHeader ::= CHOICE{ + indicationHeader-Format1 E2SM-HelloWorld-IndicationHeader-Format1, + ... +} + +-- E2SM-HelloWorld-indicationHeader Format 1 +E2SM-HelloWorld-IndicationHeader-Format1 ::= SEQUENCE{ + indicationHeaderParam HW-Header, + ... +} + +-- --------------------------------------------------- +-- Indication Message OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-HelloWorld-indicationMessage IE +E2SM-HelloWorld-IndicationMessage ::= CHOICE{ + indicationMessage-Format1 E2SM-HelloWorld-IndicationMessage-Format1, + ... +} + +-- E2SM-HelloWorld-IndicationMessage Format 1 +E2SM-HelloWorld-IndicationMessage-Format1 ::= SEQUENCE{ + indicationMsgParam HW-Message, + ... +} + + +-- --------------------------------------------------- +-- Call Process ID +-- --------------------------------------------------- + +-- Not defined in this E2SM + +-- --------------------------------------------------- +-- Control Header OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-HelloWorld-ControlHeader +E2SM-HelloWorld-ControlHeader ::= CHOICE{ + controlHeader-Format1 E2SM-HelloWorld-ControlHeader-Format1, + ... +} + +-- E2SM-HelloWorld-ControlHeader Format 1 +E2SM-HelloWorld-ControlHeader-Format1 ::= SEQUENCE{ + controlHeaderParam HW-Header, + ... +} + + +-- --------------------------------------------------- +-- Control Message OCTET STRING contents +-- --------------------------------------------------- + +-- E2SM-HelloWorld-ControlMessage +E2SM-HelloWorld-ControlMessage ::= CHOICE{ + controlMessage-Format1 E2SM-HelloWorld-ControlMessage-Format1, + ... +} + +-- E2SM-HelloWorld-controlMessage Format 1 +E2SM-HelloWorld-ControlMessage-Format1 ::= SEQUENCE{ + controlMsgParam HW-Message, + ... +} + +-- --------------------------------------------------- +-- commmon IEs +-- --------------------------------------------------- + +-- A +-- B +-- C +-- D +-- E +-- F +-- G +-- H + +HW-Header ::= INTEGER + +HW-Message ::= OCTET STRING + +HW-TriggerNature ::= ENUMERATED{ + now, + onchange, + ... +} +-- I +-- J +-- K +-- L +-- M +-- N +-- O +-- P +-- Q +-- R + + +RANparameter-Item ::= SEQUENCE { + ranParameter-ID RANparameter-ID, + ranParameter-Name RANparameter-Name, + ranParameter-Test RANparameter-Test, + ranParameter-Value RANparameter-Value, + ... +} + + +RANparameter-ID ::= INTEGER (0..maxofRANParameters) + +RANparameter-Name ::= OCTET STRING + +RANparameter-Test ::= ENUMERATED{ + equal, + greaterthan, + lessthan, + contains, + present, + ... +} + +RANparameter-Value ::= OCTET STRING + +-- S +-- T +-- U +-- V +-- W +-- X +-- Y +-- Z + +END +-- ASN1STOP + + + + diff --git a/setup/xapp-bs-connector/docs/favicon.ico b/setup/xapp-bs-connector/docs/favicon.ico new file mode 100644 index 0000000..00b0fd0 Binary files /dev/null and b/setup/xapp-bs-connector/docs/favicon.ico differ diff --git a/setup/xapp-bs-connector/docs/index.rst b/setup/xapp-bs-connector/docs/index.rst new file mode 100644 index 0000000..bba24b6 --- /dev/null +++ b/setup/xapp-bs-connector/docs/index.rst @@ -0,0 +1,20 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. Copyright (C) 2020 AT&T + + +Welcome to O-RAN SC HelloWorld xAPP Documentation +======================================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + overview.rst + release-notes.rst + installation-guide.rst + user-guide.rst + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/setup/xapp-bs-connector/docs/installation-guide.rst b/setup/xapp-bs-connector/docs/installation-guide.rst new file mode 100755 index 0000000..e99fd14 --- /dev/null +++ b/setup/xapp-bs-connector/docs/installation-guide.rst @@ -0,0 +1,70 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. Copyright (C) 2020 AT&T + + +Installation Guide +================== + +.. contents:: + :depth: 3 + :local: + +Abstract +-------- + +This document describes how to install the HelloWorld (HW) xAPP. + +Version history + ++--------------------+--------------------+--------------------+--------------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2020-05-19 |1.0.0 |Shraboni Jana | Bronze Release | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ + + +Introduction +------------ + +This document provides guidelines on how to install and configure the HW xAPP in various environments/operating modes. +The audience of this document is assumed to have good knowledge in RIC Platform. + + +Preface +------- +The HW xAPP can be run directly as a Linux binary, as a docker image, or in a pod in a Kubernetes environment. The first +two can be used for testing/evaluation. The last option is how an xAPP is deployed in the RAN Intelligent Controller environment. +This document covers all three methods. + + + + +Software Installation and Deployment +------------------------------------ +The build process assumes a Linux environment with a gcc (>= 4.0) compatible compiler and has been tested on Ubuntu. For building docker images, +the Docker environment must be present in the system. + + +Build Process +~~~~~~~~~~~~~ +The HW xAPP can be either tested as a Linux binary or as a docker image. + 1. **Linux binary**: + The HW xAPP may be compiled and invoked directly. Pre-requisite software packages that must be installed prior to compiling are documented in the Dockerfile in the repository. README file in the repository mentions the steps to be followed to make "hw-xapp-main" binary. + + 2. **Docker Image**: From the root of the repository, run *docker --no-cache build -t ./* . + + +Deployment +~~~~~~~~~~ +**Invoking xAPP docker container directly** (not in RIC Kubernetes env.): + xAPP descriptor(config-file.json) is available say under directory /home/test-config, the docker image can be invoked as *docker run --net host -it --rm -v "/home/test-config:/opt/ric/config" --name "HW-xAPP" *. + + +Testing +-------- + +Unit tests for various modules of the HW xAPP are under the *test/* repository. HW xAPP uses Google Test Framework for unit testing. Currently, the unit tests must be compiled and executed in a Linux environment (*make* in test directory) and Docker Image(*docker build -f Dockerfile-Unit-Tests .*). All software packages required for compiling the HW xAPP must be installed (as listed in the Dockerfile-Unit-Tests) for linux binary. + diff --git a/setup/xapp-bs-connector/docs/overview.rst b/setup/xapp-bs-connector/docs/overview.rst new file mode 100644 index 0000000..30dd9e9 --- /dev/null +++ b/setup/xapp-bs-connector/docs/overview.rst @@ -0,0 +1,27 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. Copyright (C) 2020 AT&T + + + + +HelloWorld xAPP Overview +================================ + +The HelloWorld(HW) xAPP repository contains open-source code for a prototype xAPP for near real-time +RAN Intelligent Controller. The HW xAPP aims to provide basic implementation of : + +-E2, A1 interfaces interactions. + +-Read-write operations into a persistent storage. + +-xAPP Configuration management. + +-RMR & A1 Healthcheck + + +The HW xAPP code is intended to follow xAPP C++ Framework to implement the prototype. + + + + diff --git a/setup/xapp-bs-connector/docs/release-notes.rst b/setup/xapp-bs-connector/docs/release-notes.rst new file mode 100644 index 0000000..38bbd7a --- /dev/null +++ b/setup/xapp-bs-connector/docs/release-notes.rst @@ -0,0 +1,79 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. Copyright (C) 2020 AT&T + + +Release Notes +============= + + +This document provides the release notes for the Bronze Release of the HelloWorld (HW) xAPP. + +.. contents:: + :depth: 3 + :local: + + +Version history +--------------- + ++--------------------+--------------------+--------------------+--------------------+ +| **Date** | **Ver.** | **Author** | **Comment** | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ +| 2020-06-09 | 1.0.6 | Shraboni Jana | Sixth draft | +| | | | | ++--------------------+--------------------+--------------------+--------------------+ + + + +Summary +------- + +The Bronze release of the HW xAPP demonstrates E2 and A1 interface interactions, persistent storage read-write, RMR and A1 healthcheck. +HW xAPP uses its HelloWorld E2SM (can be found at hw/src/xapp-asn/e2sm/) for ASN PDUs. + + +Release Data +------------ + ++--------------------------------------+--------------------------------------+ +| **Project** | RAN Intelligent Controller | +| | | ++--------------------------------------+--------------------------------------+ +| **Repo/commit-ID** | ric-app/hw | +| | | ++--------------------------------------+--------------------------------------+ +| **Release designation** | Bronze | +| | | ++--------------------------------------+--------------------------------------+ +| **Release date** | 2020-21-05 | +| | | ++--------------------------------------+--------------------------------------+ +| **Purpose of the delivery** | open-source Hello World xAPP | +| | | +| | | ++--------------------------------------+--------------------------------------+ + +Components +---------- + +- *src/* contains the main source code. Under that directory : + + + *xapp.hpp, xapp.cc* is generic class which implements all the xAPP functionalities for xapp developer to pick and choose. + + *xapp-utils/* contains generic classes for - persistent data management, configuration management, RMR send/receive etc. + + *xapp-asn/* contains generic classes for generating/processing ASN1 E2AP and E2SM messages. + + *xapp-mgmt/* contains code specific xapp management of subscriptions and received messages. + +- *test/* contains unit tests showing how to use various components. + + + + +Limitations +----------- +- The HW xAPP doesn't have any usecase in particular to display SDL capabilities and hence incorporated only in unit tests. + +- The subscription process assumes, on sending subscription request results in valid subscription response. + +- The HW xAPP doesn't address any RIC usecase in particular. diff --git a/setup/xapp-bs-connector/docs/requirements-docs.txt b/setup/xapp-bs-connector/docs/requirements-docs.txt new file mode 100644 index 0000000..09a0c1c --- /dev/null +++ b/setup/xapp-bs-connector/docs/requirements-docs.txt @@ -0,0 +1,5 @@ +sphinx +sphinx-rtd-theme +sphinxcontrib-httpdomain +recommonmark +lfdocs-conf diff --git a/setup/xapp-bs-connector/docs/user-guide.rst b/setup/xapp-bs-connector/docs/user-guide.rst new file mode 100755 index 0000000..2e94d9f --- /dev/null +++ b/setup/xapp-bs-connector/docs/user-guide.rst @@ -0,0 +1,209 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. Copyright (C) 2020 AT&T + +============================================================================================ +HelloWorld xAPP (C++) +============================================================================================ +-------------------------------------------------------------------------------------------- +User's Guide +-------------------------------------------------------------------------------------------- + +Introduction +============================================================================================ + +The RIC platform provides set of functions that the xAPPs can use to accomplish their tasks. +The HW xAPP is envisioned to provide xAPP developers, examples of implementing these sets of functions. +Note, HW xAPP does not address/implement any RIC Usecases. + +HelloWorld xAPP Features +============================================================================================ + +RIC Platform provides many APIs and libraries to aid the development of xAPPs. All xAPPs will have some custom +processing functional logic core to the xApp and some additional non-functional platform related processing using +these APIs and libraries. HW xAPP attempts to show the usage of such additional platform processing using RIC platform APIs and libraries. + + +The Hello World xApp demonstrates how an xApp uses the A1, and E2 interfaces and persistent database read-write operations. +The following paragraphs cover the various steps involved to create an HelloWorld xApp instance, setting its configuration, +retrieving R-NIB data, sending subscription, connecting SDL, RME & A1 Healthcheck and usage of "Hello World SM" + +HelloWorld Creation +============================================================================================ + +The creation of the xApp instance is as simple as invoking +the object's constructor with two required parameters: + + +HW xAPP, may choose to create following objects for obtaining desired set of functionalities provided under xapp-utils: + +XappRmr +-------------------------------------------------------------------------------------------- +An xAPP can have the capability of receiving and sending rmr messages. This is achieved by creating an XappRmr object. The constructor of xAPPRMR object requires xAPP developer to provide +xAPP's listening port and developer configurable number of attempts need to be made to send the message. The key functionalities of the class being : + +1. Setting RMR initial context: ...xapp_rmr_init(...) + +2. Sending RMR message: ...xapp_rmr_send(xapp_rmr_header, void*) + +3. Receiving RMR message: ...xapp_rmr_receive(msghandler,...) + +The RMR Header can be defined using xapp_rmr_header : +:: + + typedef struct{ + struct timespec ts; + int32_t message_type; //mandatory + int32_t state; + int32_t payload_length; //mandatory + unsigned char sid[RMR_MAX_SID]; + unsigned char src[RMR_MAX_SRC]; + unsigned char meid[RMR_MAX_MEID]; + + } xapp_rmr_header; + +Except for message type and payload length, its developers prerogative to use remaining header information. +The XappMsgHandler (msghandler) instance in xapp_rmr_receive function handles received messages. The handling of messages is based on +the usecase catered by a xAPP. Hence, XappMsgHandler class used in HW xAPP is not very comprehensive and addresses only Healthcheck Messages. + +XappSettings +------------------------------------------------------------------------------------------- +An xAPP has the capability to use environment variables or xapp-descriptor information as its configuration settings +creating XappSettings object, whose key functions being : + +1. Loading Default Settings: ...loadDefaultSettings() + +2. Loading Environment Variables: ...loadEnvVarSettings() + +3. Loading Command Line Settings: ...loadCmdlineSettings(argc, argv) + +XappSDL +-------------------------------------------------------------------------------------------- +An xAPP can have the capability to read and write into a persistent storage (key-value store) creating XappSDL object. +for a namespace. The key functionalities available currently are: + + +1. Getting Data from SDL: ... get_data(...); + +2. Setting Data to SDL: ... set_data(...); + +The HW xAPP can be instantiationed as following: +:: + + HW_Xapp = Xapp(XappRmr object, XappSettings object,...); + + +HelloWorld E2 and A1 Message Handling +============================================================================================ +Helper Objects +-------------------------------------------------------------------------------------------- +HW xAPP creates wrapper datastructures mirroring ASN and JSON messages. These datastructures facilitate processing of +E2 and A1 messages in the xAPP. A sample helper object for A1 Health Check message being: +:: + + struct a1_policy_helper{ + std::string operation; + std::string policy_type_id; + std::string policy_instance_id; + std::string handler_id; + std::string status; + }; + +And a sample E2AP Control datastructure: +:: + + struct ric_control_helper{ + ric_control_helper(void):req_id(1), req_seq_no(1), func_id(0), action_id(1), control_ack(-1), cause(0), sub_cause(0), control_status(1), control_msg(0), control_msg_size(0), control_header(0), control_header_size(0), call_process_id(0), call_process_id_size(0){}; + long int req_id, req_seq_no, func_id, action_id, control_ack, cause, sub_cause, control_status; + + unsigned char* control_msg; + size_t control_msg_size; + + unsigned char* control_header; + size_t control_header_size; + + unsigned char *call_process_id; + size_t call_process_id_size; + + }; + +As mentioned, these datastructures are very much tied to the message specifications. + + + +ASN Encoding/Decoding +-------------------------------------------------------------------------------------------- +RIC platform provided ASN1C (modified) library is used for processing ASN1 messages. HW xAPP, for each +ASN message type, uses a class which is responsible for handling a particular message type. +The class encapsulates, the APIs and datastructures used in ASN1C using helper objects. For example: +:: + + class ric_control_response{ + ... + bool encode_e2ap_control_response(..., ric_control_helper &); + bool set_fields(..., ric_control_helper &); + bool get_fields(..., ric_control_helper &); + ... + } + +Note, the helper objects and message type processing classes can be found under xapp-asn subdirectories. + +E2AP Subscription +-------------------------------------------------------------------------------------------- +In HW xAPP, we consider sunny-side scenario, in which for a E2AP subscription request sent, it is assumed, +that HW xAPP will be receiving E2AP subscription response. Handling advanced subscription (class SubscriptionHandler) flows is out of the +scope of HW xAPP. Current form of class SubscriptionHandler has following key functionalities: + +1. manage_subscription_request(...) + +2. manage_subscription_response(...) + + +The manage_subscription_request function waits for the response for a specified time for subscription response +and if no response is received within a specified time, gives a time out error message. A subscription message +is created using ASN Encodong/Decoding and Helper classes. (Refer test_sub.h). HW xAPP sends the subscriptions based +on the gNodeB IDs received from RNIB. Please refer following function in xapp.* for RNIB transactions: set_rnib_gnblist(...) + + +E2SM Subscription, Indication, Control +-------------------------------------------------------------------------------------------- +HellowWorld E2SM (e2sm-HelloWorld-v001.asn) is an example E2SM available in the docs directory. The Helper and +encoding/decoding classes are in xapp-asn/e2sm. Sample code for control message E2SM: +:: + + //ControlHeader + unsigned char header_buf[128]; + size_t header_buf_len = 128; + + //ControlMessage + unsigned char msg_buf[128]; + size_t msg_buf_len = 128; + + bool res; + + e2sm_control_helper e2sm_cntrldata; //helper object + e2sm_control e2sm_cntrl; //encoding/decoding object + + unsigned char msg[20] = "HelloWorld"; + + e2sm_cntrldata.header = 1001; + e2sm_cntrldata.message = msg; + e2sm_cntrldata.message_len = strlen((const char*)e2sm_cntrldata.message); + + + // Encode the control header + res = e2sm_cntrl.encode_control_header(&header_buf[0], &header_buf_len, e2sm_cntrldata); + if(!res) + std::cout << e2sm_cntrl.get_error() << std::endl; + + // Encode the control message + res = e2sm_cntrl.encode_control_message(&msg_buf[0], &msg_buf_len, e2sm_cntrldata); + if(!res) + std::cout << e2sm_cntrl.get_error() << std::endl; + + +RMR and A1 Healtcheck +-------------------------------------------------------------------------------------------- +On receiving health check request message types (A1_HEALTHCHECK_REQ, RMR_HEALTHCHECK_REQ), HW xAPP sends RMR +response (A1_HEALTHCHECK_RES, RMR_HEALTHCHECK_RESP) adding appropriate responses using RMR Return to Sender +functionality. diff --git a/setup/xapp-bs-connector/external_socket_tester.py b/setup/xapp-bs-connector/external_socket_tester.py new file mode 100644 index 0000000..dccc073 --- /dev/null +++ b/setup/xapp-bs-connector/external_socket_tester.py @@ -0,0 +1,13 @@ +import socket + + +if __name__ == '__main__': + + client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + client.connect(('127.0.0.1', 7000)) + + msg = 'terminate' + bytes_num = client.send(msg.encode('utf-8')) + print('Socket sent ' + str(bytes_num) + ' bytes') + + client.close() diff --git a/setup/xapp-bs-connector/init/config-file.json b/setup/xapp-bs-connector/init/config-file.json new file mode 100644 index 0000000..d3dce7f --- /dev/null +++ b/setup/xapp-bs-connector/init/config-file.json @@ -0,0 +1,49 @@ + { + "xapp_name": "hwxapp", + "version": "1.0.0", + "containers": [ + { + "name": "hwxapp", + "image": { + "registry": "nexus3.o-ran-sc.org:10002", + "name": "o-ran-sc/ric-app-hw", + "tag": "1.0.6" + } + } + ], + "messaging": { + "ports": [ + { + "name": "rmr-data", + "container": "hwxapp", + "port": 4560, + "rxMessages": [ + "RIC_SUB_RESP", + "A1_POLICY_REQ", "RIC_HEALTH_CHECK_REQ" + ], + "txMessages": [ "RIC_SUB_REQ", "A1_POLICY_RESP", "A1_POLICY_QUERY", "RIC_HEALTH_CHECK_RESP" ], + "policies": [1], + "description": "rmr receive data port for HWxapp" + }, + { + "name": "rmr-route", + "container": "hwxapp", + "port": 4561, + "description": "rmr route port for hwxapp" + } + ] + }, + "rmr": { + "protPort": "tcp:4560", + "maxSize": 2072, + "numWorkers": 1, + "txMessages": [ + "RIC_SUB_REQ", "A1_POLICY_RESP", "A1_POLICY_QUERY", "RIC_HEALTH_CHECK_RESP" + ], + "rxMessages": [ + "RIC_SUB_RESP", + "A1_POLICY_REQ", "RIC_HEALTH_CHECK_REQ" + ], + "policies": [1] + } + } diff --git a/setup/xapp-bs-connector/init/init_script.py b/setup/xapp-bs-connector/init/init_script.py new file mode 100644 index 0000000..c6a2b40 --- /dev/null +++ b/setup/xapp-bs-connector/init/init_script.py @@ -0,0 +1,140 @@ +#================================================================================== + +# Copyright (c) 2018-2019 AT&T Intellectual Property. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#================================================================================== + +# +# Author : Ashwin Sridharan +# Date : Feb 2019 +# + + +# This initialization script reads in a json from the specified config map path +# to set up the initializations (route config map, variables etc) for the main +# xapp process + +import json; +import sys; +import os; +import signal; +import time; +import ast; + +def signal_handler(signum, frame): + print("Received signal {0}\n".format(signum)); + if(xapp_subprocess == None or xapp_pid == None): + print("No xapp running. Quiting without sending signal to xapp\n"); + else: + print("Sending signal {0} to xapp ...".format(signum)); + xapp_subprocess.send_signal(signum); + + +def parseConfigJson(config): + + for k1 in config.keys(): + if k1 in ParseSection: + result = ParseSection[k1](config); + if result == False: + return False; + + +# for k2 in config[k1].keys(): + #print(k2); +# if k2 in ParseSection: +# result = ParseSection[k2](config[k1]); +# if result == False: +# return False; + + + +def getMessagingInfo(config): + if 'messaging' in config.keys() and 'ports' in config['messaging'].keys(): + port_list = config['messaging']['ports'] + for portdesc in port_list : + if 'port' in portdesc.keys() and 'name' in portdesc.keys() and portdesc['name'] == 'rmr-data': + lport = portdesc['port'] + # Set the environment variable + os.environ["HW_PORT"] = str(lport) + return True; + if lport == 0: + print("Error! No valid listening port"); + return False; + +def getXappName(config): + myKey = "xapp_name"; + if myKey not in config.keys(): + print(("Error ! No information found for {0} in config\n".format(myKey))); + return False; + + xapp_name = config[myKey]; + print("Xapp Name is: " + xapp_name); + os.environ["XAPP_NAME"] = xapp_name; + +default_routing_file = "/tmp/routeinfo/routes.txt"; +lport = 0; +ParseSection = {}; +ParseSection["xapp_name"] = getXappName; +ParseSection["messaging"] = getMessagingInfo; + + +#================================================================ +if __name__ == "__main__": + + import subprocess; +# cmd = ["../src/hw_xapp_main"]; + cmd = ["/usr/local/bin/hw_xapp_main"]; + + if len(sys.argv) > 1: + config_file = sys.argv[1]; + else: + print("Error! No configuration file specified\n"); + sys.exit(1); + + if len(sys.argv) > 2: + cmd[0] = sys.argv[2]; + + with open(config_file, 'r') as f: + try: + config = json.load(f); + except Exception as e: + print(("Error loading json file from {0}. Reason = {1}\n".format(config_file, e))); + sys.exit(1); + + result = parseConfigJson(config); + time.sleep(10); + if result == False: + print("Error parsing json. Not executing xAPP"); + sys.exit(1); + + else: + + # Register signal handlers + signal.signal(signal.SIGINT, signal_handler); + signal.signal(signal.SIGTERM, signal_handler); + + # Start the xAPP + #print("Executing xAPP ...."); + xapp_subprocess = subprocess.Popen(cmd, shell = False, stdin=None, stdout=None, stderr = None); + xapp_pid = xapp_subprocess.pid; + + # Periodically poll the process every 5 seconds to check if still alive + while(1): + xapp_status = xapp_subprocess.poll(); + if xapp_status == None: + time.sleep(5); + else: + print("XaPP terminated via signal {0}\n".format(-1 * xapp_status)); + break; + diff --git a/setup/xapp-bs-connector/init/routes.txt b/setup/xapp-bs-connector/init/routes.txt new file mode 100644 index 0000000..c593e85 --- /dev/null +++ b/setup/xapp-bs-connector/init/routes.txt @@ -0,0 +1,6 @@ +newrt|start +rte|20011|service-ricplt-a1mediator-rmr.ricplt:4562 +rte|20012|service-ricplt-a1mediator-rmr.ricplt:4562 +rte|12010|10.0.2.10:38000 +rte|12040|10.0.2.10:38000 +newrt|end diff --git a/setup/xapp-bs-connector/init/schema.json b/setup/xapp-bs-connector/init/schema.json new file mode 100644 index 0000000..3d8f476 --- /dev/null +++ b/setup/xapp-bs-connector/init/schema.json @@ -0,0 +1,229 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://example.com/root.json", + "type": "object", + "title": "The Root Schema", + "required": [ + "service_ports", + "rmr", + "envs" + ], + "properties": { + "service_ports": { + "$id": "#/properties/service_ports", + "type": "object", + "title": "The Service_ports Schema", + "required": [ + "xapp_port", + "rmr_port" + ], + "properties": { + "xapp_port": { + "$id": "#/properties/service_ports/properties/xapp_port", + "type": "integer", + "title": "The Xapp_port Schema", + "default": 0, + "examples": [ + 4560 + ] + }, + "rmr_port": { + "$id": "#/properties/service_ports/properties/rmr_port", + "type": "integer", + "title": "The Rmr_port Schema", + "default": 0, + "examples": [ + 4561 + ] + } + } + }, + "rmr": { + "$id": "#/properties/rmr", + "type": "object", + "title": "The Rmr Schema", + "required": [ + "protPort", + "maxSize", + "numWorkers", + "txMessages", + "rxMessages", + "file_path", + "contents" + ], + "properties": { + "protPort": { + "$id": "#/properties/rmr/properties/protPort", + "type": "string", + "title": "The Protport Schema", + "default": "", + "examples": [ + "tcp:4560" + ], + "pattern": "^(.*)$" + }, + "maxSize": { + "$id": "#/properties/rmr/properties/maxSize", + "type": "integer", + "title": "The Maxsize Schema", + "default": 0, + "examples": [ + 2072 + ] + }, + "numWorkers": { + "$id": "#/properties/rmr/properties/numWorkers", + "type": "integer", + "title": "The Numworkers Schema", + "default": 0, + "examples": [ + 1 + ] + }, + "txMessages": { + "$id": "#/properties/rmr/properties/txMessages", + "type": "array", + "title": "The Txmessages Schema", + "items": { + "$id": "#/properties/rmr/properties/txMessages/items", + "type": "string", + "title": "The Items Schema", + "default": "", + "examples": [ + "RIC_SUB_REQ", + "RIC_SUB_DEL_REQ" + ], + "pattern": "^(.*)$" + } + }, + "rxMessages": { + "$id": "#/properties/rmr/properties/rxMessages", + "type": "array", + "title": "The Rxmessages Schema", + "items": { + "$id": "#/properties/rmr/properties/rxMessages/items", + "type": "string", + "title": "The Items Schema", + "default": "", + "examples": [ + "RIC_SUB_RESP", + "RIC_SUB_FAILURE", + "RIC_SUB_DEL_RESP", + "RIC_SUB_DEL_FAILURE", + "RIC_INDICATION" + ], + "pattern": "^(.*)$" + } + }, + "file_path": { + "$id": "#/properties/rmr/properties/file_path", + "type": "string", + "title": "The File_path Schema", + "default": "", + "examples": [ + "/tmp/routeinfo/routes.txt" + ], + "pattern": "^(.*)$" + }, + "contents": { + "$id": "#/properties/rmr/properties/contents", + "type": "string", + "title": "The Contents Schema", + "default": "", + "examples": [ + "newrt|start\nrte|0|localhost:4560\nrte|2|localhost:4591\nrte|10002|localhost:4560\nrte|10005|localhost:4560\nrte|10003|localhost:4591\nrte|12010|localhost:4591\nrte|12020|localhost:4591\nrte|12011|localhost:4560\nrte|12012|localhost:4560\nrte|12021|localhost:4560\nrte|12022|localhost:4560\nrte|20000|localhost:4560\nrte|20001|localhost:4566\nnewrt|end " + ], + "pattern": "^(.*)$" + } + } + }, + "envs": { + "$id": "#/properties/envs", + "type": "object", + "title": "The Envs Schema", + "required": [ + "gNodeB", + "THREADS", + "A1_SCHEMA_FILE", + "VES_SCHEMA_FILE", + "SAMPLE_FILE", + "VES_COLLECTOR_URL", + "VES_MEAUSUREMENT_INTERVAL" + ], + "properties": { + "gNodeB": { + "$id": "#/properties/envs/properties/gNodeB", + "type": "string", + "title": "The Gnodeb Schema", + "default": "", + "examples": [ + "NYC123" + ], + "pattern": "^(.*)$" + }, + "THREADS": { + "$id": "#/properties/envs/properties/THREADS", + "type": "string", + "title": "The Threads Schema", + "default": "", + "examples": [ + "1" + ], + "pattern": "^(.*)$" + }, + "A1_SCHEMA_FILE": { + "$id": "#/properties/envs/properties/A1_SCHEMA_FILE", + "type": "string", + "title": "The A1_schema_file Schema", + "default": "", + "examples": [ + "/etc/xapp/adm-ctrl-xapp-schema.json" + ], + "pattern": "^(.*)$" + }, + "VES_SCHEMA_FILE": { + "$id": "#/properties/envs/properties/VES_SCHEMA_FILE", + "type": "string", + "title": "The Ves_schema_file Schema", + "default": "", + "examples": [ + "/etc/xapp/ves_schema.json" + ], + "pattern": "^(.*)$" + }, + "SAMPLE_FILE": { + "$id": "#/properties/envs/properties/SAMPLE_FILE", + "type": "string", + "title": "The Sample_file Schema", + "default": "", + "examples": [ + "/etc/xapp/samples.json" + ], + "pattern": "^(.*)$" + }, + "VES_COLLECTOR_URL": { + "$id": "#/properties/envs/properties/VES_COLLECTOR_URL", + "type": "string", + "title": "The Ves_collector_url Schema", + "default": "", + "examples": [ + "127.0.0.1:6350" + ], + "pattern": "^(.*)$" + }, + "VES_MEAUSUREMENT_INTERVAL": { + "$id": "#/properties/envs/properties/VES_MEAUSUREMENT_INTERVAL", + "type": "string", + "title": "The Ves_meausurement_interval Schema", + "default": "", + "examples": [ + "10" + ], + "pattern": "^(.*)$" + } + } + } + } +} + diff --git a/setup/xapp-bs-connector/releases/container-release-app_hw.yaml b/setup/xapp-bs-connector/releases/container-release-app_hw.yaml new file mode 100644 index 0000000..14fa580 --- /dev/null +++ b/setup/xapp-bs-connector/releases/container-release-app_hw.yaml @@ -0,0 +1,11 @@ +--- +distribution_type: container +container_release_tag: 1.0.6 +container_pull_registry: nexus3.o-ran-sc.org:10004 +container_push_registry: nexus3.o-ran-sc.org:10002 +project: ric-app/hw +ref: ddcb3f18bd50f8c04b90068c326e0ab828e20b6b +containers: + - name: ric-app-hw + version: 1.0.6 + diff --git a/setup/xapp-bs-connector/rmr-version.yaml b/setup/xapp-bs-connector/rmr-version.yaml new file mode 100644 index 0000000..ceaf505 --- /dev/null +++ b/setup/xapp-bs-connector/rmr-version.yaml @@ -0,0 +1,3 @@ +# Communicate to CI which version of RMR to install in the build/vet environment +--- +version: 4.0.5 diff --git a/setup/xapp-bs-connector/run_xapp.sh b/setup/xapp-bs-connector/run_xapp.sh new file mode 100755 index 0000000..2d51721 --- /dev/null +++ b/setup/xapp-bs-connector/run_xapp.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +cd /home/xapp-bs-connector/init/ && python3 init_script.py config-file.json diff --git a/setup/xapp-bs-connector/schemas/hwxapp-policy.json b/setup/xapp-bs-connector/schemas/hwxapp-policy.json new file mode 100644 index 0000000..6f322ea --- /dev/null +++ b/setup/xapp-bs-connector/schemas/hwxapp-policy.json @@ -0,0 +1,22 @@ +{ + "downstream_policy_message": { + "policy_type_id":21000, + "operation":"CREATE", + "policy_instance_id":"Hello-world", + "payload":{ + "class":12, + "enforce":true, + "window_length":20, + "blocking_rate":20, + "trigger_threshold":10 + } + }, + + "notify_policy_message": { + "policy_instance_id":"Hello-world", + "policy_type_id":21000, + "status":"OK", + "handler_id":"HWxAPP1234" + } +} + diff --git a/setup/xapp-bs-connector/schemas/hwxapp-ves.json b/setup/xapp-bs-connector/schemas/hwxapp-ves.json new file mode 100644 index 0000000..7bbf969 --- /dev/null +++ b/setup/xapp-bs-connector/schemas/hwxapp-ves.json @@ -0,0 +1,30 @@ +{ + + "metrics": { + "event": { + "commonEventHeader": { + "startEpochMicrosec": 1542231546086613, + "eventId": "HW Requests", + "eventType": "HW Request Rate", + "priority": "Normal", + "version": "4.0.1", + "reportingEntityName": "HW xAPP", + "sequence": 0, + "domain": "measurement", + "lastEpochMicrosec": 1542231556086613, + "eventName": "Measurement_vGMUX", + "sourceName": "hw-xapp", + "vesEventListenerVersion": "7.0.1" + }, + "measurementFields": { + "additionalFields":{ + "Class Id":1, + "HW Request Count":"100", + "HW Accept Count":"10" + }, + "measurementInterval":60, + "measurementFieldsVersion":"4.0" + } + } + } +} diff --git a/setup/xapp-bs-connector/src/.routes.txt.swp b/setup/xapp-bs-connector/src/.routes.txt.swp new file mode 100644 index 0000000..e36a7e7 Binary files /dev/null and b/setup/xapp-bs-connector/src/.routes.txt.swp differ diff --git a/setup/xapp-bs-connector/src/Makefile b/setup/xapp-bs-connector/src/Makefile new file mode 100755 index 0000000..0d2a00e --- /dev/null +++ b/setup/xapp-bs-connector/src/Makefile @@ -0,0 +1,79 @@ +CXX:= g++ --std=c++14 -O2 -L/usr/local/lib +CC:= gcc -O2 -L/usr/local/lib + +SRC:=./ +HWSRC:=./ +UTILSRC=./xapp-utils +MSGSRC:=./xapp-mgmt + +ASNSRC:=../asn1c_defs +E2APSRC:=./xapp-asn/e2ap +E2SMSRC:=./xapp-asn/e2sm + +####### Logging library and flags +CLOGFLAGS:= `pkg-config mdclog --cflags` +LOG_LIBS:= `pkg-config mdclog --libs` +CURL_LIBS:= `pkg-config libcurl --libs` +RNIB_LIBS:= -pthread /usr/local/include/rnib/rnibreader.a +######## Keep include dirs separate so we have transparency + + +BASEFLAGS= -Wall -std=c++14 $(CLOGFLAGS) +C_BASEFLAGS= -Wall $(CLOGFLAGS) -DASN_DISABLE_OER_SUPPORT + +XAPPFLAGS= -I./ +HWFLAGS= -I./ +UTILFLAGS= -I$(UTILSRC) +MSGFLAGS= -I$(MSGSRC) + +ASNFLAGS=-I$(ASNSRC) -DASN_DISABLE_OER_SUPPORT +E2APFLAGS = -I$(E2APSRC) +E2SMFLAGS = -I$(E2SMSRC) + +########libs + +LIBS= -lsdl -lrmr_si -lpthread -lm $(LOG_LIBS) $(CURL_LIBS) $(RNIB_LIBS) +COV_FLAGS= -fprofile-arcs -ftest-coverage + +####### +HWXAPP_SRC= hw_xapp_main.cc +XAPP_SRC= xapp.cc +UTIL_SRC= $(wildcard $(UTILSRC)/*.cc) +MSG_SRC= $(wildcard $(MSGSRC)/*.cc) + +E2AP_SRC= $(wildcard $(E2APSRC)/*.cc) +E2SM_SRC= $(wildcard $(E2SMSRC)/*.cc) +ASN1C_SRC= $(wildcard $(ASNSRC)/*.c) + +##############Objects +UTIL_OBJ=${UTIL_SRC:.cc=.o} +XAPP_OBJ=${XAPP_SRC:.cc=.o} +HWXAPP_OBJ= ${HWXAPP_SRC:.cc=.o} +MSG_OBJ= ${MSG_SRC:.cc=.o} + +E2AP_OBJ = $(E2AP_SRC:.cc=.o) +E2SM_OBJ = $(E2SM_SRC:.cc=.o) +ASN1C_MODULES = $(ASN1C_SRC:.c=.o) + +$(ASN1C_MODULES): export CFLAGS = $(C_BASEFLAGS) $(ASNFLAGS) +$(UTIL_OBJ):export CPPFLAGS=$(BASEFLAGS) $(UTILFLAGS) $(E2APFLAGS) $(E2SMFLAGS) $(ASNFLAGS) $(MSGFLAGS) + +$(MSG_OBJ):export CPPFLAGS=$(BASEFLAGS) $(MSGFLAGS) $(ASNFLAGS) $(E2APFLAGS) $(E2SMFLAGS) +$(E2AP_OBJ): export CPPFLAGS = $(BASEFLAGS) $(ASNFLAGS) $(E2APFLAGS) +$(E2SM_OBJ): export CPPFLAGS = $(BASEFLAGS) $(ASNFLAGS) $(E2SMFLAGS) +$(XAPP_OBJ): export CPPFLAGS = $(BASEFLAGS) $(XAPPFLAGS) $(UTILFLAGS) $(MSGFLAGS) $(E2APFLAGS) $(E2SMFLAGS) $(ASNFLAGS) + +$(HWXAPP_OBJ):export CPPFLAGS=$(BASEFLAGS) $(HWFLAGS) $(XAPPFLAGS) $(UTILFLAGS) $(MSGFLAGS) $(E2APFLAGS) $(E2SMFLAGS) $(ASNFLAGS) + +OBJ= $(HWXAPP_OBJ) $(UTIL_OBJ) $(MSG_OBJ) $(ASN1C_MODULES) $(E2AP_OBJ) $(E2SM_OBJ) $(XAPP_OBJ) + +print-% : ; @echo $* = $($*) + +hw_xapp_main: $(OBJ) + $(CXX) -o $@ $(OBJ) $(LIBS) $(RNIBFLAGS) $(CPPFLAGS) $(CLOGFLAGS) agent_connector.cc + +install: hw_xapp_main + install -D hw_xapp_main /usr/local/bin/hw_xapp_main + +clean: + -rm *.o $(ASNSRC)/*.o $(E2APSRC)/*.o $(UTILSRC)/*.o $(E2SMSRC)/*.o $(MSGSRC)/*.o $(SRC)/*.o hw_xapp_main diff --git a/setup/xapp-bs-connector/src/README b/setup/xapp-bs-connector/src/README new file mode 100644 index 0000000..41a7ee3 --- /dev/null +++ b/setup/xapp-bs-connector/src/README @@ -0,0 +1,34 @@ +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + +This repository consists of HelloWorld Xapp developed in C++. Its envisioned to be the most simplest example Xapp. +It is required to have following features + +1) E2 Subscription Handling +2) A1 Policy Handling +3) SDL Access +4) Health Check +5)... + + + + +Steps for installation/running HWXapp. + +$ source ./run_xapp.sh +$ make +$ ./hw_xapp_main diff --git a/setup/xapp-bs-connector/src/agent_connector.cc b/setup/xapp-bs-connector/src/agent_connector.cc new file mode 100644 index 0000000..0e1479f --- /dev/null +++ b/setup/xapp-bs-connector/src/agent_connector.cc @@ -0,0 +1,141 @@ +#include "agent_connector.hpp" + + +// open client of control socket with agent +int open_control_socket_agent(const char* dest_ip, const int dest_port) { + + std::cout << "Opening control socket with host " << dest_ip << ":" << dest_port << std::endl; + + int control_sckfd = socket(AF_INET, SOCK_STREAM, 0); + if (control_sckfd < 0) { + std::cout << "ERROR: OPEN SOCKET" << std::endl; + close(control_sckfd); + return -1; + } + + // SET SOCKET OPTIONS TO RELEASE THE SOCKET ADDRESS IMMEDIATELY AFTER + // THE SOCKET IS CLOSED + int option(1); + setsockopt(control_sckfd, SOL_SOCKET, SO_REUSEADDR, (char*)&option, sizeof(option)); + + struct sockaddr_in dest_addr = {0}; + dest_addr.sin_family = AF_INET; + dest_addr.sin_port = htons(dest_port); + + // convert dest_ip from char* to network address + if (inet_pton(AF_INET, dest_ip, &dest_addr.sin_addr) <= 0) { + std::cout << "ERROR CONVERTING IP TO INTERNET ADDR" << std::endl; + close(control_sckfd); // if conversion fail, close the socket and return error -2 + return -2; + } + + if (connect(control_sckfd, (struct sockaddr *) &dest_addr, sizeof(dest_addr)) < 0) { + std::cout << "ERROR: CONNECT" << std::endl; + close(control_sckfd); + return -3; + } + + // update map + std::string agent_ip; + agent_ip.assign(dest_ip); + // std::cout << "Agent IP " << agent_ip << std::endl; + agentIp_socket[agent_ip] = control_sckfd; + + return 0; +} + + +// close control sockets +void close_control_socket_agent(void) { + + std::cout << "Closing control sockets with agent(s)" << std::endl; + + std::map::iterator it; + for (it = agentIp_socket.begin(); it != agentIp_socket.end(); ++it) { + std::string agent_ip = it->first; + int control_sckfd = it->second; + + close(control_sckfd); + } + + // clear maps + std::cout << "Clearing maps" << std::endl; + agentIp_socket.clear(); + agentIp_gnbId.clear(); +} + + +// find agent IP of socket to use with gNB id +std::string find_agent_ip_from_gnb(unsigned char* gnb_id_trans) { + + std::map::iterator it_sck; + std::map::iterator it_gnb; + std::string agent_ip; + + // convert transaction identifier (unsigned char*) to string + std::string gnb_id(reinterpret_cast(gnb_id_trans)); + + // check if gnb_id is already in agentIp_gnbId map + bool found = false; + for (it_gnb = agentIp_gnbId.begin(); it_gnb != agentIp_gnbId.end(); ++it_gnb) { + if (gnb_id.compare(it_gnb->second) == 0) { + agent_ip = it_gnb->first; + found = true; + break; + } + } + + if (!found) { + // check if agent_ip is already in agentIp_gnbId map + for (it_sck = agentIp_socket.begin(); it_sck != agentIp_socket.end(); ++it_sck) { + agent_ip = it_sck->first; + + it_gnb = agentIp_gnbId.find(agent_ip); + if (it_gnb == agentIp_gnbId.end()) { + // insert into agentIp_gnbId map + agentIp_gnbId[agent_ip] = gnb_id; + break; + } + } + } + + return agent_ip; +} + + +// send through socket +int send_socket(char* buf, std::string dest_ip) { + + int control_sckfd = -1; + + // get socket file descriptor + std::map::iterator it; + for (it = agentIp_socket.begin(); it != agentIp_socket.end(); ++it) { + std::string agent_ip = it->first; + + if (dest_ip.compare(agent_ip) == 0) { + control_sckfd = it->second; + break; + } + } + + if (control_sckfd == -1) { + std::cout << "ERROR: Could not find socket for destination " << dest_ip << std::endl; + return -1; + } + + // const size_t max_size = 512; + // char buf[max_size] = "Hello, Server!"; // store the data in a buffer + size_t data_size = strlen(buf); + int sent_size = send(control_sckfd ,buf, data_size, 0); + + if(sent_size < 0) { // the send returns a size of -1 in case of errors + std::cout << "ERROR: SEND to agent " << dest_ip << std::endl; + return -2; + } + else { + std::cout << "Message sent" << std::endl; + } + + return 0; +} diff --git a/setup/xapp-bs-connector/src/agent_connector.hpp b/setup/xapp-bs-connector/src/agent_connector.hpp new file mode 100644 index 0000000..aadd05b --- /dev/null +++ b/setup/xapp-bs-connector/src/agent_connector.hpp @@ -0,0 +1,32 @@ + + +#ifndef AGENT_CONNECTOR_HPP_ +#define AGENT_CONNECTOR_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define AGENT_0 "127.0.0.1" + +// vector of agent IPs +extern std::vector drl_agent_ip; + +// key: DRL agent IP, value: socket file descriptor +extern std::map agentIp_socket; + +// key: DRL agent IP, value: gNB id +extern std::map agentIp_gnbId; + +int open_control_socket_agent(const char* dest_ip, const int dest_port); +void close_control_socket_agent(void); +std::string find_agent_ip_from_gnb(unsigned char* gnb_id); +int send_socket(char* buf, std::string dest_ip); + +#endif diff --git a/setup/xapp-bs-connector/src/hw_xapp_main.cc b/setup/xapp-bs-connector/src/hw_xapp_main.cc new file mode 100644 index 0000000..5d043a0 --- /dev/null +++ b/setup/xapp-bs-connector/src/hw_xapp_main.cc @@ -0,0 +1,97 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * hw_xapp_main.cc + * Created on: Dec, 2019 + * Author: Shraboni Jana + */ + +#include "xapp.hpp" +#include + +void signalHandler( int signum ) { + cout << "Interrupt signal (" << signum << ") received.\n"; + exit(signum); +} + +int main(int argc, char *argv[]){ + + // Get the thread id + std::thread::id my_id = std::this_thread::get_id(); + std::stringstream thread_id; + std::stringstream ss; + + thread_id << my_id; + + mdclog_write(MDCLOG_INFO, "Starting thread %s", thread_id.str().c_str()); + + //get configuration + XappSettings config; + //change the priority depending upon application requirement + config.loadDefaultSettings(); + config.loadEnvVarSettings(); + config.loadCmdlineSettings(argc, argv); + + //Register signal handler to stop + signal(SIGINT, signalHandler); + signal(SIGTERM, signalHandler); + + //getting the listening port and xapp name info + std::string port = config[XappSettings::SettingName::HW_PORT]; + std::string name = config[XappSettings::SettingName::XAPP_NAME]; + + //initialize rmr + std::unique_ptr rmr = std::make_unique(port); + rmr->xapp_rmr_init(true); + + + //Create Subscription Handler if Xapp deals with Subscription. + std::unique_ptr sub_handler = std::make_unique(); + + //create HelloWorld Xapp Instance. + std::unique_ptr hw_xapp; + hw_xapp = std::make_unique(std::ref(config),std::ref(*rmr)); + + mdclog_write(MDCLOG_INFO, "Created Hello World Xapp Instance"); + + sleep(1); + //Startup E2 subscription and A1 policy + //hw_xapp->startup(std::ref(*sub_handler)); + + //start listener threads and register message handlers. + int num_threads = std::stoi(config[XappSettings::SettingName::THREADS]); + mdclog_write(MDCLOG_INFO, "Starting Listener Threads. Number of Workers = %d", num_threads); + + std::unique_ptr mp_handler = std::make_unique(config[XappSettings::SettingName::XAPP_ID], std::ref(*sub_handler)); + hw_xapp->start_xapp_receiver(std::ref(*mp_handler)); + + sleep(1); + + hw_xapp->startup(std::ref(*sub_handler)); + + //xapp->shutdown(); + + while(1){ + sleep(1); + } + + return 0; +} + + + diff --git a/setup/xapp-bs-connector/src/routes.txt b/setup/xapp-bs-connector/src/routes.txt new file mode 100755 index 0000000..7feb73a --- /dev/null +++ b/setup/xapp-bs-connector/src/routes.txt @@ -0,0 +1,13 @@ +newrt|start +rte|100|127.0.0.1:4560 +rte|101|127.0.0.1:4560 +rte|20010|127.0.0.1:4560 +rte|20011|127.0.0.1:4560 +rte|20012|127.0.0.1:4560 +rte|12010|127.0.0.1:4560 +rte|12011|127.0.0.1:4560 +rte|12012|127.0.0.1:4560 +rte|12020|127.0.0.1:4560 +rte|12021|127.0.0.1:4560 +rte|12022|127.0.0.1:4560 +newrt|end diff --git a/setup/xapp-bs-connector/src/run_xapp.sh b/setup/xapp-bs-connector/src/run_xapp.sh new file mode 100755 index 0000000..f65a4b7 --- /dev/null +++ b/setup/xapp-bs-connector/src/run_xapp.sh @@ -0,0 +1,21 @@ +#! /bin/bash + +export RMR_SEED_RT="routes.txt" +export RMR_RTG_SVC="9999" +export XAPP_NAME="HELLOWORLD_XAPP" +export HW_PORTS="4560" +export MSG_MAX_BUFFER="2048" +export THREADS="1" +export VERBOSE="0" +export CONFIG_FILE="config/config-file.json" +export GNODEB="NYC123" +export XAPP_ID="3489-er492k-92389" +export A1_SCHEMA_FILE="schemas/hwxapp-policy.json" +export VES_SCHEMA_FILE="schemas/hwxapp-ves.json" +export VES_COLLECTOR_URL="127.0.0.1:6350" +export VES_MEASUREMENT_INTERVAL="10" +export LOG_LEVEL="MDCLOG_ERR" +export OPERATING_MODE="CONTROL" + + + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control.cc new file mode 100644 index 0000000..638b618 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control.cc @@ -0,0 +1,266 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_control_request.c + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#include "e2ap_control.hpp" + +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) +ric_control_request::ric_control_request(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2AP_PDU_t * )calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = 0; + initMsg = (InitiatingMessage_t * )calloc(1, sizeof(InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = 0; + IE_array = (RICcontrolRequest_IEs_t *)calloc(NUM_CONTROL_REQUEST_IES, sizeof(RICcontrolRequest_IEs_t)); + assert(IE_array != 0); + + e2ap_pdu_obj->present = E2AP_PDU_PR_initiatingMessage; + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + + +}; + + +// Clear assigned protocolIE list from RIC control_request IE container +ric_control_request::~ric_control_request(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing E2AP Control Request object memory"); + + RICcontrolRequest_t *ricControl_Request = &(initMsg->value.choice.RICcontrolRequest); + for(int i = 0; i < ricControl_Request->protocolIEs.list.size; i++){ + ricControl_Request->protocolIEs.list.array[i] = 0; + } + + if (ricControl_Request->protocolIEs.list.size > 0){ + free(ricControl_Request->protocolIEs.list.array); + ricControl_Request->protocolIEs.list.size = 0; + ricControl_Request->protocolIEs.list.count = 0; + } + + free(IE_array); + free(initMsg); + e2ap_pdu_obj->choice.initiatingMessage = 0; + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed E2AP Control Request object mempory"); + +} + + +bool ric_control_request::encode_e2ap_control_request(unsigned char *buf, size_t *size, ric_control_helper & dinput){ + + initMsg->procedureCode = ProcedureCode_id_RICcontrol; + initMsg->criticality = Criticality_ignore; + initMsg->value.present = InitiatingMessage__value_PR_RICcontrolRequest; + + bool res; + + res = set_fields(initMsg, dinput); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding control . Reason = " + error_string; + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool ric_control_request::set_fields(InitiatingMessage_t *initMsg, ric_control_helper &dinput){ + unsigned int ie_index; + + if (initMsg == 0){ + error_string = "Invalid reference for E2AP Control_Request message in set_fields"; + return false; + } + + RICcontrolRequest_t * ric_control_request = &(initMsg->value.choice.RICcontrolRequest); + ric_control_request->protocolIEs.list.count = 0; // reset + + // for(i = 0; i < NUM_CONTROL_REQUEST_IES;i++){ + // memset(&(IE_array[i]), 0, sizeof(RICcontrolRequest_IEs_t)); + // } + + // Mandatory IE + ie_index = 0; + RICcontrolRequest_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICcontrolRequest_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = dinput.req_id; + //ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + // Mandatory IE + ie_index = 1; + RICcontrolRequest_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICcontrolRequest_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = dinput.func_id; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + + // Mandatory IE + ie_index = 2; + RICcontrolRequest_IEs_t *ies_richead = &IE_array[ie_index]; + ies_richead->criticality = Criticality_reject; + ies_richead->id = ProtocolIE_ID_id_RICcontrolHeader; + ies_richead->value.present = RICcontrolRequest_IEs__value_PR_RICcontrolHeader; + RICcontrolHeader_t *richeader_ie = &ies_richead->value.choice.RICcontrolHeader; + richeader_ie->buf = dinput.control_header; + richeader_ie->size = dinput.control_header_size; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + // Mandatory IE + ie_index = 3; + RICcontrolRequest_IEs_t *ies_indmsg = &IE_array[ie_index]; + ies_indmsg->criticality = Criticality_reject; + ies_indmsg->id = ProtocolIE_ID_id_RICcontrolMessage; + ies_indmsg->value.present = RICcontrolRequest_IEs__value_PR_RICcontrolMessage; + RICcontrolMessage_t *ricmsg_ie = &ies_indmsg->value.choice.RICcontrolMessage; + ricmsg_ie->buf = dinput.control_msg; + ricmsg_ie->size = dinput.control_msg_size; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + // Optional IE + ie_index = 4; + if (dinput.control_ack >= 0){ + RICcontrolRequest_IEs_t *ies_indtyp = &IE_array[ie_index]; + ies_indtyp->criticality = Criticality_reject; + ies_indtyp->id = ProtocolIE_ID_id_RICcontrolAckRequest; + ies_indtyp->value.present = RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest; + RICcontrolAckRequest_t *ricackreq_ie = &ies_indtyp->value.choice.RICcontrolAckRequest; + *ricackreq_ie = dinput.control_ack; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + } + + // Optional IE + ie_index = 5; + if(dinput.call_process_id_size > 0){ + RICcontrolRequest_IEs_t *ies_callprocid = &IE_array[ie_index]; + ies_callprocid->criticality = Criticality_reject; + ies_callprocid->id = ProtocolIE_ID_id_RICcallProcessID; + ies_callprocid->value.present = RICcontrolRequest_IEs__value_PR_RICcallProcessID; + RICcallProcessID_t *riccallprocessid_ie = &ies_callprocid->value.choice.RICcallProcessID; + riccallprocessid_ie->buf = dinput.call_process_id; + riccallprocessid_ie->size = dinput.call_process_id_size; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + } + return true; + +}; + + + + +bool ric_control_request:: get_fields(InitiatingMessage_t * init_msg, ric_control_helper &dout) +{ + if (init_msg == 0){ + error_string = "Invalid reference for E2AP Control_Request message in get_fields"; + return false; + } + + + for(int edx = 0; edx < init_msg->value.choice.RICcontrolRequest.protocolIEs.list.count; edx++) { + RICcontrolRequest_IEs_t *memb_ptr = init_msg->value.choice.RICcontrolRequest.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICcontrolHeader): + dout.control_header = memb_ptr->value.choice.RICcontrolHeader.buf; + dout.control_header_size = memb_ptr->value.choice.RICcontrolHeader.size; + break; + + case (ProtocolIE_ID_id_RICcontrolMessage): + dout.control_msg = memb_ptr->value.choice.RICcontrolMessage.buf; + dout.control_msg_size = memb_ptr->value.choice.RICcontrolMessage.size; + break; + + case (ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + break; + + case (ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + //dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + case (ProtocolIE_ID_id_RICcontrolAckRequest): + dout.control_ack = memb_ptr->value.choice.RICcontrolAckRequest; + break; + + default: + break; + } + + } + + return true; + +} + +InitiatingMessage_t * ric_control_request::get_message(void) { + return initMsg; +} diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control.hpp new file mode 100644 index 0000000..2a2272c --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control.hpp @@ -0,0 +1,66 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef E2AP_RIC_CONTROL_REQUEST_H_ +#define E2AP_RIC_CONTROL_REQUEST_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "e2ap_control_helper.hpp" + +#define NUM_CONTROL_REQUEST_IES 6 + + +class ric_control_request{ + +public: + ric_control_request(void); + ~ric_control_request(void); + + bool encode_e2ap_control_request(unsigned char *, size_t *, ric_control_helper &); + InitiatingMessage_t * get_message (void) ; + bool set_fields(InitiatingMessage_t *, ric_control_helper &); + bool get_fields(InitiatingMessage_t *, ric_control_helper &); + std::string get_error(void) const {return error_string ; }; +private: + + E2AP_PDU_t * e2ap_pdu_obj; + InitiatingMessage_t *initMsg; + RICcontrolRequest_IEs_t *IE_array; + std::string error_string; + + char errbuf[128]; + size_t errbuf_len = 128; +}; + + +#endif /* E2AP_RIC_CONTROL_REQUEST_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_helper.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_helper.hpp new file mode 100644 index 0000000..d01013e --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_helper.hpp @@ -0,0 +1,50 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef CONTROL_HELPER_H +#define CONTROL_HELPER_H + +// control and indication helper objects are very similar and can be merged into one +// currently leaving them as two distnict entities till final design becomes clear + +typedef struct ric_control_helper ric_control_helper; + +struct ric_control_helper{ + ric_control_helper(void):req_id(1), req_seq_no(1), func_id(0), action_id(1), control_ack(-1), cause(0), sub_cause(0), control_status(1), control_msg(0), control_msg_size(0), control_header(0), control_header_size(0), call_process_id(0), call_process_id_size(0){}; + + long int req_id, req_seq_no, func_id, action_id, control_ack, cause, sub_cause, control_status; + + unsigned char* control_msg; + size_t control_msg_size; + + unsigned char* control_header; + size_t control_header_size; + + unsigned char *call_process_id; + size_t call_process_id_size; + +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_response.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_response.cc new file mode 100644 index 0000000..6b7c9b5 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_response.cc @@ -0,0 +1,415 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + */ +/* + * ric_control_response.c + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#include "e2ap_control_response.hpp" + +// Set up the initiating message and also allocate protocolIEs in container +// Note : this bypasses requirement to use ASN_SEQUENCE_ADD. We can directly +// assign pointers to the array in ProtocolIE. However, this also leaves us on the +// hook to manually clear the memory + +ric_control_response::ric_control_response(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2AP_PDU_t * )calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + successMsg = 0; + successMsg = (SuccessfulOutcome_t * )calloc(1, sizeof(SuccessfulOutcome_t)); + assert(successMsg != 0); + + successMsg->procedureCode = ProcedureCode_id_RICcontrol; + successMsg->criticality = Criticality_reject; + successMsg->value.present = SuccessfulOutcome__value_PR_RICcontrolAcknowledge; + + + unsuccessMsg = 0; + unsuccessMsg = (UnsuccessfulOutcome_t * )calloc(1, sizeof(UnsuccessfulOutcome_t)); + assert(unsuccessMsg != 0); + + + unsuccessMsg->procedureCode = ProcedureCode_id_RICcontrol; + unsuccessMsg->criticality = Criticality_reject; + unsuccessMsg->value.present = UnsuccessfulOutcome__value_PR_RICcontrolFailure; + + IE_array = 0; + IE_array = (RICcontrolAcknowledge_IEs_t *)calloc(NUM_CONTROL_ACKNOWLEDGE_IES, sizeof(RICcontrolAcknowledge_IEs_t)); + assert(IE_array != 0); + + RICcontrolAcknowledge_t * ric_acknowledge = &(successMsg->value.choice.RICcontrolAcknowledge); + for(int i = 0; i < NUM_CONTROL_ACKNOWLEDGE_IES; i++){ + ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), &(IE_array[i])); + } + + + IE_failure_array = 0; + IE_failure_array = (RICcontrolFailure_IEs_t *)calloc(NUM_CONTROL_FAILURE_IES, sizeof(RICcontrolFailure_IEs_t)); + assert(IE_failure_array != 0); + + RICcontrolFailure_t * ric_failure = &(unsuccessMsg->value.choice.RICcontrolFailure); + for(int i = 0; i < NUM_CONTROL_FAILURE_IES; i++){ + ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), &(IE_failure_array[i])); + } + +}; + + +// Clear assigned protocolIE list from RIC control_request IE container +ric_control_response::~ric_control_response(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing E2AP Control Response object memory"); + + RICcontrolAcknowledge_t * ric_acknowledge = &(successMsg->value.choice.RICcontrolAcknowledge); + for(int i = 0; i < ric_acknowledge->protocolIEs.list.size; i++){ + ric_acknowledge->protocolIEs.list.array[i] = 0; + } + if (ric_acknowledge->protocolIEs.list.size > 0){ + free(ric_acknowledge->protocolIEs.list.array); + ric_acknowledge->protocolIEs.list.array = 0; + ric_acknowledge->protocolIEs.list.count = 0; + } + + RICcontrolFailure_t * ric_failure = &(unsuccessMsg->value.choice.RICcontrolFailure); + for(int i = 0; i < ric_failure->protocolIEs.list.size; i++){ + ric_failure->protocolIEs.list.array[i] = 0; + } + if (ric_failure->protocolIEs.list.size > 0){ + free(ric_failure->protocolIEs.list.array); + ric_failure->protocolIEs.list.array = 0; + ric_failure->protocolIEs.list.count = 0; + } + + free(IE_array); + free(IE_failure_array); + free(successMsg); + free(unsuccessMsg); + + e2ap_pdu_obj->choice.initiatingMessage = 0; + e2ap_pdu_obj->present = E2AP_PDU_PR_initiatingMessage; + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed E2AP Control Response object mempory"); +} + + +bool ric_control_response::encode_e2ap_control_response(unsigned char *buf, size_t *size, ric_control_helper & dinput, bool is_success){ + + bool res; + if (is_success){ + res = set_fields(successMsg, dinput); + } + else{ + res = set_fields(unsuccessMsg, dinput); + } + + if (!res){ + return false; + } + + + if (is_success){ + e2ap_pdu_obj->choice.successfulOutcome = successMsg; + e2ap_pdu_obj->present = E2AP_PDU_PR_successfulOutcome ; + } + else{ + e2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg; + e2ap_pdu_obj->present = E2AP_PDU_PR_unsuccessfulOutcome ; + + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding control response. Reason = " + error_string; + return false; + } + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding E2AP Control response . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool ric_control_response::set_fields(SuccessfulOutcome_t *successMsg, ric_control_helper &dinput){ + unsigned int ie_index; + + if (successMsg == 0){ + error_string = "Invalid reference for E2AP Control Acknowledge in set_fields"; + return false; + } + + // for(i = 0; i < NUM_CONTROL_ACKNOWLEDGE_IES;i++){ + // memset(&(IE_array[i]), 0, sizeof(RICcontrolAcknowledge_IEs_t)); + // } + + //RICcontrolAcknowledge_t * ric_acknowledge = &(successMsg->value.choice.RICcontrolAcknowledge); + //ric_acknowledge->protocolIEs.list.count = 0; + + ie_index = 0; + RICcontrolAcknowledge_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICcontrolAcknowledge_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = dinput.req_id; + //ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + //ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_ricreq); + + ie_index = 1; + RICcontrolAcknowledge_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICcontrolAcknowledge_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = dinput.func_id; + //ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_ranfunc); + + // ie_index = 2; + // RICcontrolAcknowledge_IEs_t *ies_riccallprocessid = &IE_array[ie_index]; + // ies_riccallprocessid->criticality = Criticality_reject; + // ies_riccallprocessid->id = ProtocolIE_ID_id_RICcallProcessID; + // ies_riccallprocessid->value.present = RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID; + // RICcallProcessID_t *riccallprocessid_ie = &ies_riccallprocessid->value.choice.RICcallProcessID; + // riccallprocessid_ie->buf = dinput.call_process_id; + // riccallprocessid_ie->size = dinput.call_process_id_size; + // ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_riccallprocessid); + + ie_index = 2; + RICcontrolAcknowledge_IEs_t *ies_ric_cause = &IE_array[ie_index]; + ies_ric_cause->criticality = Criticality_reject; + ies_ric_cause->id = ProtocolIE_ID_id_RICcontrolStatus; + ies_ric_cause->value.present = RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus; + ies_ric_cause->value.choice.RICcontrolStatus = dinput.control_status; + //ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_ric_cause); + + return true; + +}; + +bool ric_control_response::set_fields(UnsuccessfulOutcome_t *unsuccessMsg, ric_control_helper &dinput){ + unsigned int ie_index; + + if (unsuccessMsg == 0){ + error_string = "Invalid reference for E2AP Control Failure in set_fields"; + return false; + } + + // for(i = 0; i < NUM_CONTROL_FAILURE_IES;i++){ + // memset(&(IE_failure_array[i]), 0, sizeof(RICcontrolFailure_IEs_t)); + // } + + //RICcontrolFailure_t * ric_failure = &(unsuccessMsg->value.choice.RICcontrolFailure); + //ric_failure->protocolIEs.list.count = 0; + + ie_index = 0; + RICcontrolFailure_IEs_t *ies_ricreq = &IE_failure_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICcontrolFailure_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &(ies_ricreq->value.choice.RICrequestID); + ricrequest_ie->ricRequestorID = dinput.req_id; + //ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + //ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_ricreq); + + ie_index = 1; + RICcontrolFailure_IEs_t *ies_ranfunc = &IE_failure_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICcontrolFailure_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &(ies_ranfunc->value.choice.RANfunctionID); + *ranfunction_ie = dinput.func_id; + //ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_ranfunc); + + // ie_index = 2; + // RICcontrolFailure_IEs_t *ies_riccallprocessid = &IE_failure_array[i]; + // ies_riccallprocessid->criticality = Criticality_reject; + // ies_riccallprocessid->id = ProtocolIE_ID_id_RICcallProcessID; + // ies_riccallprocessid->value.present = RICcontrolFailure_IEs__value_PR_RICcallProcessID; + // RICcallProcessID_t *riccallprocessid_ie = &(ies_riccallprocessid->value.choice.RICcallProcessID); + // riccallprocessid_ie->buf = dinput.call_process_id; + // riccallprocessid_ie->size = dinput.call_process_id_size; + // ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_riccallprocessid); + + ie_index = 2; + RICcontrolFailure_IEs_t *ies_ric_cause = &IE_failure_array[ie_index]; + ies_ric_cause->criticality = Criticality_ignore; + ies_ric_cause->id = ProtocolIE_ID_id_Cause; + ies_ric_cause->value.present = RICcontrolFailure_IEs__value_PR_Cause; + Cause_t * ric_cause = &(ies_ric_cause->value.choice.Cause); + ric_cause->present = (Cause_PR)dinput.cause; + + switch(dinput.cause){ + case Cause_PR_ricService: + ric_cause->choice.ricService = dinput.sub_cause; + break; + case Cause_PR_transport: + ric_cause->choice.transport = dinput.sub_cause; + break; + case Cause_PR_protocol: + ric_cause->choice.protocol= dinput.sub_cause; + break; + case Cause_PR_misc: + ric_cause->choice.misc = dinput.sub_cause; + break; + case Cause_PR_ricRequest: + ric_cause->choice.ricRequest = dinput.sub_cause; + break; + default: + std::cout <<"Error ! Illegal cause enum" << dinput.cause << std::endl; + return false; + } + + //ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_ric_cause); + return true; + +}; + + + + +bool ric_control_response:: get_fields(SuccessfulOutcome_t * success_msg, ric_control_helper &dout) +{ + if (success_msg == 0){ + error_string = "Invalid reference for E2AP Control Acknowledge message in get_fields"; + return false; + } + + + for(int edx = 0; edx < success_msg->value.choice.RICcontrolAcknowledge.protocolIEs.list.count; edx++) { + RICcontrolAcknowledge_IEs_t *memb_ptr = success_msg->value.choice.RICcontrolAcknowledge.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + + case (ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + break; + + case (ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + //dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + case (ProtocolIE_ID_id_Cause): + dout.control_status = memb_ptr->value.choice.RICcontrolStatus; + break; + + } + + } + + return true; + +} + + +bool ric_control_response:: get_fields(UnsuccessfulOutcome_t * unsuccess_msg, ric_control_helper &dout) +{ + if (unsuccess_msg == 0){ + error_string = "Invalid reference for E2AP Control Failure message in get_fields"; + return false; + } + + + for(int edx = 0; edx < unsuccess_msg->value.choice.RICcontrolFailure.protocolIEs.list.count; edx++) { + RICcontrolFailure_IEs_t *memb_ptr = unsuccess_msg->value.choice.RICcontrolFailure.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + + case (ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + break; + + case (ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + //dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + + case (ProtocolIE_ID_id_Cause): + dout.cause = memb_ptr->value.choice.Cause.present; + switch(dout.cause){ + case Cause_PR_ricService : + dout.sub_cause = memb_ptr->value.choice.Cause.choice.ricService; + break; + + case Cause_PR_transport : + dout.sub_cause = memb_ptr->value.choice.Cause.choice.transport; + break; + + case Cause_PR_protocol : + dout.sub_cause = memb_ptr->value.choice.Cause.choice.protocol; + break; + + case Cause_PR_misc : + dout.sub_cause = memb_ptr->value.choice.Cause.choice.misc; + break; + + case Cause_PR_ricRequest : + dout.sub_cause = memb_ptr->value.choice.Cause.choice.ricRequest; + break; + + default: + dout.sub_cause = -1; + break; + } + + default: + break; + } + + } + + return true; + +} + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_response.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_response.hpp new file mode 100644 index 0000000..1d6af17 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_control_response.hpp @@ -0,0 +1,79 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef E2AP_RIC_CONTROL_RESPONSE_H_ +#define E2AP_RIC_CONTROL_RESPONSE_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "e2ap_control_helper.hpp" + +#define NUM_CONTROL_ACKNOWLEDGE_IES 3 +#define NUM_CONTROL_FAILURE_IES 3 + + +class ric_control_response{ + +public: + ric_control_response(void); + ~ric_control_response(void); + + bool encode_e2ap_control_response(unsigned char *, size_t *, ric_control_helper &, bool); + + + bool set_fields(SuccessfulOutcome_t *, ric_control_helper &); + bool get_fields(SuccessfulOutcome_t *, ric_control_helper &); + + bool set_fields(UnsuccessfulOutcome_t *, ric_control_helper &); + bool get_fields(UnsuccessfulOutcome_t *, ric_control_helper &); + + std::string get_error(void) const {return error_string ; }; + +private: + + E2AP_PDU_t * e2ap_pdu_obj; + SuccessfulOutcome_t * successMsg; + UnsuccessfulOutcome_t * unsuccessMsg; + + RICcontrolAcknowledge_IEs_t *IE_array; + RICcontrolFailure_IEs_t *IE_failure_array; + + std::string error_string; + + char errbuf[128]; + size_t errbuf_len = 128; +}; + + +#endif /* E2AP_RIC_CONTROL_RESPONSE_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication.cc new file mode 100644 index 0000000..c9f9130 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication.cc @@ -0,0 +1,283 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.c + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#include "e2ap_indication.hpp" + +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) +ric_indication::ric_indication(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2AP_PDU_t * )calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = 0; + initMsg = (InitiatingMessage_t * )calloc(1, sizeof(InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = 0; + IE_array = (RICindication_IEs_t *)calloc(NUM_INDICATION_IES, sizeof(RICindication_IEs_t)); + assert(IE_array != 0); + + e2ap_pdu_obj->present = E2AP_PDU_PR_initiatingMessage; + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +ric_indication::~ric_indication(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing E2AP Indication object memory"); + RICindication_t *ricIndication = &(initMsg->value.choice.RICindication); + for(int i = 0; i < ricIndication->protocolIEs.list.size; i++){ + ricIndication->protocolIEs.list.array[i] = 0; + } + if (ricIndication->protocolIEs.list.size > 0){ + free(ricIndication->protocolIEs.list.array); + ricIndication->protocolIEs.list.array = 0; + ricIndication->protocolIEs.list.count = 0; + ricIndication->protocolIEs.list.size = 0; + } + + free(IE_array); + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed E2AP Indication object mempory"); +} + + +bool ric_indication::encode_e2ap_indication(unsigned char *buf, size_t *size, ric_indication_helper & dinput){ + + initMsg->procedureCode = ProcedureCode_id_RICindication; + initMsg->criticality = Criticality_ignore; + initMsg->value.present = InitiatingMessage__value_PR_RICindication; + + bool res; + asn_enc_rval_t retval; + + res = set_fields(initMsg, dinput); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + error_string = "Error encoding E2AP Indication message. Reason = " + error_string; + return false; + } + + // std::cout <<"Constraint check ok ...." << std::endl; + // xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding E2AP Indication . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool ric_indication::set_fields(InitiatingMessage_t *initMsg, ric_indication_helper &dinput){ + unsigned int ie_index; + + if (initMsg == 0){ + error_string = "Invalid reference for E2AP Indication message in set_fields"; + return false; + } + + + RICindication_t * ric_indication = &(initMsg->value.choice.RICindication); + ric_indication->protocolIEs.list.count = 0; + + ie_index = 0; + + RICindication_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICindication_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = dinput.req_id; + //ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 1; + RICindication_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICindication_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = dinput.func_id; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 2; + RICindication_IEs_t *ies_actid = &IE_array[ie_index]; + ies_actid->criticality = Criticality_reject; + ies_actid->id = ProtocolIE_ID_id_RICactionID; + ies_actid->value.present = RICindication_IEs__value_PR_RICactionID; + RICactionID_t *ricaction_ie = &ies_actid->value.choice.RICactionID; + *ricaction_ie = dinput.action_id; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 3; + RICindication_IEs_t *ies_ricsn = &IE_array[ie_index]; + ies_ricsn->criticality = Criticality_reject; + ies_ricsn->id = ProtocolIE_ID_id_RICindicationSN; + ies_ricsn->value.present = RICindication_IEs__value_PR_RICindicationSN; + RICindicationSN_t *ricsn_ie = &ies_ricsn->value.choice.RICindicationSN; + *ricsn_ie = dinput.indication_sn; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + + ie_index = 4; + RICindication_IEs_t *ies_indtyp = &IE_array[ie_index]; + ies_indtyp->criticality = Criticality_reject; + ies_indtyp->id = ProtocolIE_ID_id_RICindicationType; + ies_indtyp->value.present = RICindication_IEs__value_PR_RICindicationType; + RICindicationType_t *rictype_ie = &ies_indtyp->value.choice.RICindicationType; + *rictype_ie = dinput.indication_type; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 5; + RICindication_IEs_t *ies_richead = &IE_array[ie_index]; + ies_richead->criticality = Criticality_reject; + ies_richead->id = ProtocolIE_ID_id_RICindicationHeader; + ies_richead->value.present = RICindication_IEs__value_PR_RICindicationHeader; + RICindicationHeader_t *richeader_ie = &ies_richead->value.choice.RICindicationHeader; + richeader_ie->buf = dinput.indication_header; + richeader_ie->size = dinput.indication_header_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 6; + RICindication_IEs_t *ies_indmsg = &IE_array[ie_index]; + ies_indmsg->criticality = Criticality_reject; + ies_indmsg->id = ProtocolIE_ID_id_RICindicationMessage; + ies_indmsg->value.present = RICindication_IEs__value_PR_RICindicationMessage; + RICindicationMessage_t *ricmsg_ie = &ies_indmsg->value.choice.RICindicationMessage; + ricmsg_ie->buf = dinput.indication_msg; + ricmsg_ie->size = dinput.indication_msg_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + + // optional call process id .. + if (dinput.call_process_id_size > 0){ + ie_index = 7; + RICindication_IEs_t *ies_ind_callprocessid = &IE_array[ie_index]; + ies_ind_callprocessid->criticality = Criticality_reject; + ies_ind_callprocessid->id = ProtocolIE_ID_id_RICcallProcessID; + ies_ind_callprocessid->value.present = RICindication_IEs__value_PR_RICcallProcessID; + RICcallProcessID_t *riccallprocessid_ie = &ies_ind_callprocessid->value.choice.RICcallProcessID; + riccallprocessid_ie->buf = dinput.indication_msg; + riccallprocessid_ie->size = dinput.indication_msg_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + } + + return true; + +}; + + + + +bool ric_indication:: get_fields(InitiatingMessage_t * init_msg, ric_indication_helper &dout) +{ + if (init_msg == 0){ + error_string = "Invalid reference for E2AP Indication message in get_fields"; + return false; + } + + + for(int edx = 0; edx < init_msg->value.choice.RICindication.protocolIEs.list.count; edx++) { + RICindication_IEs_t *memb_ptr = init_msg->value.choice.RICindication.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICindicationHeader): + dout.indication_header = memb_ptr->value.choice.RICindicationHeader.buf; + dout.indication_header_size = memb_ptr->value.choice.RICindicationHeader.size; + break; + + case (ProtocolIE_ID_id_RICindicationMessage): + dout.indication_msg = memb_ptr->value.choice.RICindicationMessage.buf; + dout.indication_msg_size = memb_ptr->value.choice.RICindicationMessage.size; + break; + + case (ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + //dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + case (ProtocolIE_ID_id_RICindicationSN): + dout.indication_sn = memb_ptr->value.choice.RICindicationSN; + break; + + case (ProtocolIE_ID_id_RICindicationType): + dout.indication_type = memb_ptr->value.choice.RICindicationType; + break; + + case (ProtocolIE_ID_id_RICactionID): + dout.action_id = memb_ptr->value.choice.RICactionID; + break; + + case (ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + + default: + break; + } + + } + + return true; + +} + +InitiatingMessage_t * ric_indication::get_message(void) { + return initMsg; +} diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication.hpp new file mode 100644 index 0000000..6c8abf1 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication.hpp @@ -0,0 +1,67 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef E2AP_RIC_INDICATION_H_ +#define E2AP_RIC_INDICATION_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "e2ap_indication_helper.hpp" + +#define NUM_INDICATION_IES 8 + + + +class ric_indication{ + +public: + ric_indication(void); + ~ric_indication(void); + + bool encode_e2ap_indication(unsigned char *, size_t *, ric_indication_helper &); + InitiatingMessage_t * get_message (void) ; + bool set_fields(InitiatingMessage_t *, ric_indication_helper &); + bool get_fields(InitiatingMessage_t *, ric_indication_helper &); + std::string get_error(void) const {return error_string ; }; + +private: + + E2AP_PDU_t * e2ap_pdu_obj; + InitiatingMessage_t *initMsg; + RICindication_IEs_t *IE_array; + std::string error_string; + char errbuf[128]; + size_t errbuf_len = 128; +}; + + +#endif /* E2AP_RIC_INDICATION_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication_helper.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication_helper.hpp new file mode 100644 index 0000000..e319c9f --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/e2ap_indication_helper.hpp @@ -0,0 +1,47 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + + +#ifndef E2AP_INDICATION_HELPER_ +#define E2AP_INDICATION_HELPER_ + +typedef struct ric_indication_helper ric_indication_helper; + +struct ric_indication_helper{ + ric_indication_helper(void) : req_id(1), req_seq_no(1), func_id(0), action_id(1), indication_type(0), indication_sn(0), indication_msg(0), indication_msg_size(0), indication_header(0), indication_header_size(0), call_process_id(0), call_process_id_size(0) {}; + long int req_id, req_seq_no, func_id, action_id, indication_type, indication_sn; + + unsigned char* indication_msg; + size_t indication_msg_size; + + unsigned char* indication_header; + size_t indication_header_size; + + unsigned char *call_process_id; + size_t call_process_id_size; + +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/generic_helpers.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/generic_helpers.hpp new file mode 100644 index 0000000..3e0c2df --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/generic_helpers.hpp @@ -0,0 +1,49 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#pragma once +#ifndef GENERIC_HELPERS +#define GENERIC_HELPERS + +#include + +/* Utilities */ + +class octet_helper { + +public: + octet_helper(void):_ref(NULL), _size(0){}; + octet_helper(const void *ref, int size):_ref(ref), _size(size){}; + void set_ref(const void *ref){ + _ref = ref; + } + + void set_size(size_t size){ + _size = size; + } + + const void * get_ref(void){return _ref ; }; + size_t get_size(void) const {return _size ; } ; + +private: + const void *_ref; + size_t _size; +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/response_helper.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/response_helper.hpp new file mode 100644 index 0000000..e6aa65e --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/response_helper.hpp @@ -0,0 +1,181 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_RESPONSE_HELPER_ +#define S_RESPONSE_HELPER_ + +#include +#include + +/* Simple structure to store action for RICaction of the Subscription response based on E2 v0.31 */ +struct ActionResponse { +public: + ActionResponse(int id): _is_admit(true), _id(id), _cause(-1), _sub_cause(-1){}; + ActionResponse(int id, int cause, int sub_cause): _is_admit(false), _id(id), _cause(cause), _sub_cause(sub_cause){}; + + int get_id() const{ + return _id; + }; + + int get_cause() const{ + return _cause; + }; + + int get_sub_cause() const{ + return _sub_cause; + }; + + bool is_admitted(void){ + return _is_admit; + }; + +private: + + bool _is_admit; + int _id, _cause, _sub_cause; + +}; + + +struct subscription_response_helper { + +public: + + using action_t = std::vector; + + subscription_response_helper(void){ + _action_admitted_ref = std::make_unique(); + _action_not_admitted_ref = std::make_unique(); + + }; + + // copy operator + subscription_response_helper(const subscription_response_helper &he ){ + _action_admitted_ref = std::make_unique(); + _action_not_admitted_ref = std::make_unique(); + + _req_id = he.get_request_id(); + _req_seq_no = he.get_req_seq(); + _func_id = he.get_function_id(); + + // Take care of the actions + for (auto const & e: *(he.get_admitted_list())){ + add_action(e.get_id()); + } + + for(auto const & e: *(he.get_not_admitted_list())){ + add_action(e.get_id(), e.get_cause(), e.get_sub_cause()); + }; + } + + + // assignment operator + void operator=(const subscription_response_helper & he){ + _action_admitted_ref = std::make_unique(); + _action_not_admitted_ref = std::make_unique(); + + _req_id = he.get_request_id(); + _req_seq_no = he.get_req_seq(); + _func_id = he.get_function_id(); + + + // Take care of the actions + for (auto const & e: *(he.get_admitted_list())){ + add_action(e.get_id()); + } + + for(auto const & e: *(he.get_not_admitted_list())){ + add_action(e.get_id(), e.get_cause(), e.get_sub_cause()); + }; + + } + + action_t * get_admitted_list (void ) const {return _action_admitted_ref.get();}; + action_t * get_not_admitted_list (void ) const{return _action_not_admitted_ref.get();}; + + void set_request(int id, int seq_no){ + _req_id = id; + _req_seq_no = seq_no; + + }; + + void clear(void){ + _action_admitted_ref.get()->clear(); + _action_not_admitted_ref.get()->clear(); + } + + + void set_function_id(int id){ + _func_id = id; + }; + + void add_action(int id){ + ActionResponse a(id) ; + _action_admitted_ref.get()->push_back(a); + }; + + void add_action(int id, int cause, int sub_cause){ + ActionResponse a (id, cause, sub_cause); + _action_not_admitted_ref.get()->push_back(a); + }; + + + int get_request_id(void) const{ + return _req_id; + } + + int get_req_seq(void) const{ + return _req_seq_no; + } + + int get_function_id(void) const{ + return _func_id; + } + + std::string to_string(void){ + std::string Info; + Info += "Request ID = " + std::to_string(_req_id) + "\n"; + Info += "Request Sequence No = " + std::to_string(_req_seq_no) + "\n"; + Info += "RAN Function ID = " + std::to_string(_func_id) + "\n"; + Info += "Actions Admitted =\n"; + int i = 0; + for(auto & e: *(_action_admitted_ref)){ + Info += std::to_string(i) + ": ID=" + std::to_string(e.get_id()) + "\n"; + i++; + } + Info += "Actions Not Admitted =\n"; + i = 0; + for(auto & e: *(_action_not_admitted_ref)){ + Info += std::to_string(i) + ": ID=" + std::to_string(e.get_id()) + ": Cause =" + std::to_string(e.get_cause()) + ": Sub-Cause=" + std::to_string(e.get_sub_cause()) + "\n"; + i++; + } + + return Info; + } + +private: + int _req_id, _req_seq_no, _func_id; + std::unique_ptr _action_admitted_ref; + std::unique_ptr _action_not_admitted_ref; + +}; + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_request.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_request.cc new file mode 100644 index 0000000..6a1ffc8 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_request.cc @@ -0,0 +1,180 @@ + + +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_delete_request.hpp" + +subscription_delete::subscription_delete(void){ + + _name = "default"; + + e2ap_pdu_obj = (E2AP_PDU_t * )calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = (InitiatingMessage_t * )calloc(1, sizeof(InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = (RICsubscriptionDeleteRequest_IEs_t *)calloc(NUM_SUBSCRIPTION_DELETE_IES, sizeof(RICsubscriptionDeleteRequest_IEs_t)); + assert(IE_array != 0); + + RICsubscriptionDeleteRequest_t * subscription_delete = &(initMsg->value.choice.RICsubscriptionDeleteRequest); + for(int i = 0; i < NUM_SUBSCRIPTION_DELETE_IES; i++){ + ASN_SEQUENCE_ADD(&subscription_delete->protocolIEs, &(IE_array[i])); + } + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_delete::~subscription_delete(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription delete request object memory"); + RICsubscriptionDeleteRequest_t * subscription_delete = &(initMsg->value.choice.RICsubscriptionDeleteRequest); + + for(int i = 0; i < subscription_delete->protocolIEs.list.size; i++){ + subscription_delete->protocolIEs.list.array[i] = 0; + } + + if (subscription_delete->protocolIEs.list.size > 0){ + free(subscription_delete->protocolIEs.list.array); + subscription_delete->protocolIEs.list.count = 0; + subscription_delete->protocolIEs.list.size = 0; + subscription_delete->protocolIEs.list.array = 0; + } + + free(IE_array); + free(initMsg); + e2ap_pdu_obj->choice.initiatingMessage = 0; + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed subscription delete request object memory"); + + +}; + + +bool subscription_delete::encode_e2ap_subscription(unsigned char *buf, size_t *size, subscription_helper &dinput){ + + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + e2ap_pdu_obj->present = E2AP_PDU_PR_initiatingMessage; + set_fields( dinput); + + initMsg->procedureCode = ProcedureCode_id_RICsubscriptionDelete; + initMsg->criticality = Criticality_reject; + initMsg->value.present = InitiatingMessage__value_PR_RICsubscriptionDeleteRequest; + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding subscription delete request. Reason = " + error_string; + return false; + } + + asn_enc_rval_t res = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(res.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding Subscription Delete Request. Reason = " + error_string; + return false; + } + else { + if(*size < res.encoded){ + std::stringstream ss; + ss <<"Error encoding Subscription Delete Request . Reason = encoded pdu size " << res.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + res.encoded = -1; + return false; + } + } + + *size = res.encoded; + return true; + +} + + +bool subscription_delete::set_fields( subscription_helper &helper){ + unsigned int ie_index; + + ie_index = 0; + RICsubscriptionDeleteRequest_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + //ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + + + + ie_index = 1; + RICsubscriptionDeleteRequest_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + + + return true; +}; + + + + +bool subscription_delete:: get_fields(InitiatingMessage_t * init_msg, subscription_helper & dout) +{ + + if (init_msg == 0){ + error_string = "Invalid reference for initiating message for get string"; + return false; + } + + RICrequestID_t *requestid; + RANfunctionID_t * ranfunctionid; + + for(int edx = 0; edx < init_msg->value.choice.RICsubscriptionDeleteRequest.protocolIEs.list.count; edx++) { + RICsubscriptionDeleteRequest_IEs_t *memb_ptr = init_msg->value.choice.RICsubscriptionDeleteRequest.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + //dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + } + + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); + } + + return true; +} + + + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_request.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_request.hpp new file mode 100644 index 0000000..b6d5bba --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_request.hpp @@ -0,0 +1,67 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_DELETE_ +#define S_DELETE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "subscription_helper.hpp" + +#define NUM_SUBSCRIPTION_DELETE_IES 2 + +class subscription_delete{ +public: + + subscription_delete(void); + ~subscription_delete(void); + + bool encode_e2ap_subscription(unsigned char *, size_t *, subscription_helper &); + bool set_fields(subscription_helper &); + bool get_fields(InitiatingMessage_t *, subscription_helper &); + + std::string get_error(void) const { + return error_string ; + } + +private: + + InitiatingMessage_t *initMsg; + E2AP_PDU_t * e2ap_pdu_obj; + + RICsubscriptionDeleteRequest_IEs_t * IE_array; + + + char errbuf[128]; + size_t errbuf_len = 128; + std::string _name; + std::string error_string; +}; + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_response.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_response.cc new file mode 100644 index 0000000..249b3cd --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_response.cc @@ -0,0 +1,292 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_delete_response.hpp" + +/* The xAPP need only worry about the get_fields from a response, since it does +not generate a response. Generating response however is included to support testing. +*/ + + +// Primarly for generation +subscription_delete_response::subscription_delete_response(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2AP_PDU_t *)calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + successMsg = 0; + successMsg = (SuccessfulOutcome_t *)calloc(1, sizeof(SuccessfulOutcome_t)); + assert(successMsg != 0); + + unsuccessMsg = 0; + unsuccessMsg = (UnsuccessfulOutcome_t *)calloc(1, sizeof(UnsuccessfulOutcome_t)); + assert(unsuccessMsg != 0); + + IE_array = 0; + IE_array = (RICsubscriptionDeleteResponse_IEs_t *)calloc(NUM_SUBSCRIPTION_DELETE_RESPONSE_IES, sizeof(RICsubscriptionDeleteResponse_IEs_t)); + assert(IE_array != 0); + + IE_Failure_array = 0; + IE_Failure_array = (RICsubscriptionDeleteFailure_IEs_t *)calloc(NUM_SUBSCRIPTION_DELETE_FAILURE_IES, sizeof(RICsubscriptionDeleteFailure_IEs_t)); + assert(IE_Failure_array != 0); + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_delete_response::~subscription_delete_response(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription delete response memory"); + RICsubscriptionDeleteResponse_t * ric_subscription_delete_response = &(successMsg->value.choice.RICsubscriptionDeleteResponse); + + for(unsigned int i = 0; i < ric_subscription_delete_response->protocolIEs.list.size ; i++){ + ric_subscription_delete_response->protocolIEs.list.array[i] = 0; + } + + + RICsubscriptionDeleteFailure_t * ric_subscription_failure = &(unsuccessMsg->value.choice.RICsubscriptionDeleteFailure); + for(unsigned int i = 0; i < ric_subscription_failure->protocolIEs.list.size; i++){ + ric_subscription_failure->protocolIEs.list.array[i] = 0; + } + + free(IE_array); + free(IE_Failure_array); + + ASN_STRUCT_FREE(asn_DEF_SuccessfulOutcome, successMsg); + + ASN_STRUCT_FREE(asn_DEF_UnsuccessfulOutcome, unsuccessMsg); + + e2ap_pdu_obj->choice.successfulOutcome = NULL; + e2ap_pdu_obj->choice.unsuccessfulOutcome = NULL; + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed subscription delete response memory"); + +}; + + +bool subscription_delete_response::encode_e2ap_subscription_delete_response(unsigned char *buf, size_t *size, subscription_response_helper &dinput, bool is_success){ + + bool res; + + if(is_success){ + res = set_fields(successMsg, dinput); + if (!res){ + return false; + } + e2ap_pdu_obj->present = E2AP_PDU_PR_successfulOutcome; + e2ap_pdu_obj->choice.successfulOutcome = successMsg; + } + else{ + res = set_fields(unsuccessMsg, dinput); + if(! res){ + return false; + } + e2ap_pdu_obj->present = E2AP_PDU_PR_unsuccessfulOutcome; + e2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg; + } + + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding subcription delete response. Reason = " + error_string; + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding Subscription Delete Response . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + retval.encoded = -1; + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool subscription_delete_response::set_fields(SuccessfulOutcome_t *success, subscription_response_helper &helper){ + + if (success == 0){ + error_string = "Invalid reference to success message in set fields subscription delete response"; + return false; + } + + unsigned int ie_index; + + success->procedureCode = ProcedureCode_id_RICsubscriptionDelete; + success->criticality = Criticality_reject; + success->value.present = SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse; + + RICsubscriptionDeleteResponse_t * subscription_delete_response = &(success->value.choice.RICsubscriptionDeleteResponse); + subscription_delete_response->protocolIEs.list.count = 0; + + ie_index = 0; + RICsubscriptionDeleteResponse_IEs_t *ies_ricreq = &IE_array[ie_index]; + + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + //ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&subscription_delete_response->protocolIEs, ies_ricreq); + + + ie_index = 1; + RICsubscriptionDeleteResponse_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&subscription_delete_response->protocolIEs, ies_ranfunc); + + return true; + + +} + +bool subscription_delete_response:: get_fields(SuccessfulOutcome_t * success_msg, subscription_response_helper & dout) +{ + + if (success_msg == 0){ + error_string = "Invalid reference to success message inn get fields subscription delete response"; + return false; + } + + RICrequestID_t *requestid; + RANfunctionID_t * ranfunctionid; + + for(int edx = 0; edx < success_msg->value.choice.RICsubscriptionDeleteResponse.protocolIEs.list.count; edx++) { + RICsubscriptionDeleteResponse_IEs_t *memb_ptr = success_msg->value.choice.RICsubscriptionDeleteResponse.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + //dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + } + + } + + return true; + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + +bool subscription_delete_response::set_fields(UnsuccessfulOutcome_t *unsuccess, subscription_response_helper &helper){ + + if (unsuccess == 0){ + error_string = "Invalid reference to unsuccess message in set fields subscription delete response"; + return false; + } + + unsigned int ie_index; + + unsuccess->procedureCode = ProcedureCode_id_RICsubscriptionDelete; + unsuccess->criticality = Criticality_reject; + unsuccess->value.present = UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure; + + RICsubscriptionDeleteFailure_t * ric_subscription_failure = &(unsuccess->value.choice.RICsubscriptionDeleteFailure); + ric_subscription_failure->protocolIEs.list.count = 0; + + ie_index = 0; + RICsubscriptionDeleteFailure_IEs_t *ies_ricreq = &IE_Failure_array[ie_index]; + + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + //ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, ies_ricreq); + + ie_index = 1; + RICsubscriptionDeleteFailure_IEs_t *ies_ranfunc = &IE_Failure_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, ies_ranfunc); + + + return true; + +} + +bool subscription_delete_response:: get_fields(UnsuccessfulOutcome_t * unsuccess_msg, subscription_response_helper & dout) +{ + + if (unsuccess_msg == 0){ + error_string = "Invalid reference to unsuccess message in get fields subscription delete response"; + return false; + } + + RICrequestID_t *requestid; + RANfunctionID_t * ranfunctionid; + + for(int edx = 0; edx < unsuccess_msg->value.choice.RICsubscriptionDeleteFailure.protocolIEs.list.count; edx++) { + RICsubscriptionDeleteFailure_IEs_t *memb_ptr = unsuccess_msg->value.choice.RICsubscriptionDeleteFailure.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + //dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + } + + } + + return true; + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_response.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_response.hpp new file mode 100644 index 0000000..14589e5 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_delete_response.hpp @@ -0,0 +1,79 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_DEL_RESPONSE_ +#define S_DEL_RESPONSE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "response_helper.hpp" + +#define NUM_SUBSCRIPTION_DELETE_RESPONSE_IES 2 +#define NUM_SUBSCRIPTION_DELETE_FAILURE_IES 2 + +class subscription_delete_response { +public: + + subscription_delete_response(void); + ~subscription_delete_response(void); + + bool encode_e2ap_subscription_delete_response(unsigned char *, size_t *, subscription_response_helper &, bool); + bool set_fields(SuccessfulOutcome_t *, subscription_response_helper &); + bool get_fields(SuccessfulOutcome_t *, subscription_response_helper &); + + bool set_fields(UnsuccessfulOutcome_t *, subscription_response_helper &); + bool get_fields(UnsuccessfulOutcome_t *, subscription_response_helper &); + + std::string get_error_string(void) const { + return error_string; + } + +private: + + E2AP_PDU_t * e2ap_pdu_obj; + SuccessfulOutcome_t * successMsg; + UnsuccessfulOutcome_t * unsuccessMsg; + + + RICsubscriptionDeleteResponse_IEs_t *IE_array; + RICsubscriptionDeleteFailure_IEs_t *IE_Failure_array; + + + char errbuf[128]; + size_t errbuf_len = 128; + std::string error_string; + +}; + + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_helper.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_helper.hpp new file mode 100644 index 0000000..b43df7d --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_helper.hpp @@ -0,0 +1,181 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#ifndef SUB_HELPER_ +#define SUB_HELPER_ + +/* + Simple structure to store action related information based on E2 v0.22 + Used for subscription request, response etc + + ricActionID RICactionID, + ricActionType RICactionType, + ricActionDefinition RICactionDefinition OPTIONAL, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ricCause +*/ + +#include +#include +#include + +#include "generic_helpers.hpp" + + +// Note : if no action definition specified, octet length of action definition is NULL +// If no subsequent action specified, default is subsequent_action = 0, time to wait is 0 +struct Action { + +public: + + Action(int id, int type): _is_def(false), _is_subs_act(false), _id(id), _type(type), _next_action(0){}; + Action(int id, int type, const void *def, size_t def_size, int next_action): _is_def(false), _is_subs_act(false), _id(id), _type(type){ + + _is_def = true; + _action_definition.set_ref(def); + _action_definition.set_size(def_size); + _is_subs_act = true; + _next_action = next_action; + + }; + + + int get_id() const{ + return _id; + } + + int get_type() const { + return _type; + } + + + const void * get_definition(void ) { + return _action_definition.get_ref(); + } + + int get_definition_size(void) const { + return _action_definition.get_size(); + }; + + + int get_subsequent_action() const { + return _next_action; + }; + + bool is_definition() const{ + + return _is_def; + } + + bool is_subsequent_action() const{ + return _is_subs_act; + } + +private: + + bool _is_def; + bool _is_subs_act; + int _id, _type, _next_action, _cause, _sub_cause; + bool _is_admit; + octet_helper _action_definition; + +}; + + +/* + Helper class that stores subscription data +*/ + + +struct subscription_helper { + +public: + + using action_t = std::vector; + subscription_helper(){ + _action_ref = std::make_unique(); + }; + + action_t * get_list() const {return _action_ref.get();}; + + void clear(void){ + _action_ref.get()->clear(); + } + + void set_request(int id){ + _req_id = id; + + }; + + void set_function_id(int id){ + _func_id = id; + }; + + void set_event_def(const void *ref, size_t size){ + _event_def.set_ref(ref); + _event_def.set_size(size); + }; + + + void add_action(int id, int type){ + Action a(id, type) ; + _action_ref.get()->push_back(a); + }; + + void add_action(int id, int type, const void *action_def, size_t size, int next_action){ + Action a (id, type, action_def, size, next_action); + _action_ref.get()->push_back(a); + }; + + + int get_request_id(void) const{ + return _req_id; + } + + + int get_function_id(void) const{ + return _func_id; + } + + const void * get_event_def(void) { + return _event_def.get_ref(); + } + + int get_event_def_size(void) const { + return _event_def.get_size(); + } + + void print_sub_info(void){ + std::cout <<"Request ID = " << _req_id << std::endl; + std::cout <<"RAN Function ID = " << _func_id << std::endl; + for(auto const & e: *(_action_ref.get())){ + std::cout <<"Action ID = " << e.get_id() << " Action Type = " << e.get_type() << std::endl; + } + }; + +private: + + std::unique_ptr _action_ref; + int curr_index; + int _req_id, _func_id; + octet_helper _event_def; + +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_request.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_request.cc new file mode 100644 index 0000000..91071b3 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_request.cc @@ -0,0 +1,306 @@ + + +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_request.hpp" + + +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) +subscription_request::subscription_request(void){ + + _name = "default"; + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2AP_PDU_t * )calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = 0; + initMsg = (InitiatingMessage_t * )calloc(1, sizeof(InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = 0; + IE_array = (RICsubscriptionRequest_IEs_t *)calloc(NUM_SUBSCRIPTION_REQUEST_IES, sizeof(RICsubscriptionRequest_IEs_t)); + assert(IE_array != 0); + + action_array = 0; + action_array = (RICaction_ToBeSetup_ItemIEs_t *)calloc(INITIAL_REQUEST_LIST_SIZE, sizeof(RICaction_ToBeSetup_ItemIEs_t)); + assert(action_array != 0); + action_array_size = INITIAL_REQUEST_LIST_SIZE; + // also need to add subsequent action and time to wait .. + for (unsigned int i = 0; i < action_array_size; i++){ + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = (struct RICsubsequentAction *)calloc(1, sizeof(struct RICsubsequentAction)); + assert(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction != 0); + } + + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + e2ap_pdu_obj->present = E2AP_PDU_PR_initiatingMessage; + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_request::~subscription_request(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription request memory");; + + // Sequence of actions to be admitted causes special heart-ache. Free ric subscription element manually and reset the ie pointer + RICsubscriptionDetails_t * ricsubscription_ie = &(IE_array[2].value.choice.RICsubscriptionDetails); + + for(int i = 0; i < ricsubscription_ie->ricAction_ToBeSetup_List.list.size; i++){ + ricsubscription_ie->ricAction_ToBeSetup_List.list.array[i] = 0; + } + + if (ricsubscription_ie->ricAction_ToBeSetup_List.list.size > 0){ + free(ricsubscription_ie->ricAction_ToBeSetup_List.list.array); + ricsubscription_ie->ricAction_ToBeSetup_List.list.size = 0; + ricsubscription_ie->ricAction_ToBeSetup_List.list.count = 0; + ricsubscription_ie->ricAction_ToBeSetup_List.list.array = 0; + } + + // clear subsequent action array + for (unsigned int i = 0; i < action_array_size; i++){ + free(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction ); + } + + free(action_array); + RICsubscriptionRequest_t * subscription_request = &(initMsg->value.choice.RICsubscriptionRequest); + + for(int i = 0; i < subscription_request->protocolIEs.list.size; i++){ + subscription_request->protocolIEs.list.array[i] = 0; + } + + if( subscription_request->protocolIEs.list.size > 0){ + free( subscription_request->protocolIEs.list.array); + subscription_request->protocolIEs.list.array = 0; + subscription_request->protocolIEs.list.size = 0; + subscription_request->protocolIEs.list.count = 0; + } + + free(IE_array); + free(initMsg); + e2ap_pdu_obj->choice.initiatingMessage = 0; + + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed subscription request memory "); +}; + + +bool subscription_request::encode_e2ap_subscription(unsigned char *buf, size_t *size, subscription_helper &dinput){ + + bool res; + + initMsg->procedureCode = ProcedureCode_id_RICsubscription; + initMsg->criticality = Criticality_ignore; + initMsg->value.present = InitiatingMessage__value_PR_RICsubscriptionRequest; + + res = set_fields(initMsg, dinput); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding subscription request. Reason = " + error_string; + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding Subscription Request. Reason = " + error_string; + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding Subscription Request . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + retval.encoded = -1; + return false; + } + } + + *size = retval.encoded; + return true; + +} + + +bool subscription_request::set_fields( InitiatingMessage_t * init_msg, subscription_helper &helper){ + + + int ie_index; + int result = 0; + + if (init_msg == 0){ + error_string = "Error. Invalid reference when getting fields from subscription request"; + return false; + } + + RICsubscriptionRequest_t * ric_subscription = &(init_msg->value.choice.RICsubscriptionRequest); + ric_subscription->protocolIEs.list.count = 0; + + ie_index = 0; + RICsubscriptionRequest_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICsubscriptionRequest_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + //ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + result = ASN_SEQUENCE_ADD(&(ric_subscription->protocolIEs), &IE_array[ie_index]); + assert(result == 0); + + ie_index = 1; + RICsubscriptionRequest_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICsubscriptionRequest_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + result = ASN_SEQUENCE_ADD(&(ric_subscription->protocolIEs), &IE_array[ie_index]); + assert(result == 0); + + + ie_index = 2; + RICsubscriptionRequest_IEs_t *ies_actid = &IE_array[ie_index]; + ies_actid->criticality = Criticality_reject; + ies_actid->id = ProtocolIE_ID_id_RICsubscriptionDetails; + ies_actid->value.present = RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails; + RICsubscriptionDetails_t *ricsubscription_ie = &ies_actid->value.choice.RICsubscriptionDetails; + + ricsubscription_ie->ricEventTriggerDefinition.buf = (uint8_t *) helper.get_event_def(); + ricsubscription_ie->ricEventTriggerDefinition.size = helper.get_event_def_size(); + + std::vector * ref_action_array = helper.get_list(); + // do we need to resize ? + // we don't care about contents, so just do a free/calloc + if(action_array_size < ref_action_array->size()){ + std::cout <<"re-allocating action array from " << action_array_size << " to " << 2 * ref_action_array->size() << std::endl; + // free subsequent allocation + for (unsigned int i = 0; i < action_array_size; i++){ + free(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction ); + } + + action_array_size = 2 * ref_action_array->size(); + free(action_array); + action_array = (RICaction_ToBeSetup_ItemIEs_t *)calloc(action_array_size, sizeof(RICaction_ToBeSetup_ItemIEs_t)); + assert(action_array != 0); + + // also need to add subsequent action and time to wait .. + for (unsigned int i = 0; i < action_array_size; i++){ + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = (struct RICsubsequentAction *)calloc(1, sizeof(struct RICsubsequentAction)); + assert(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction != 0); + } + + } + + // reset the list count on ricAction_ToBeSetup_List; + ricsubscription_ie->ricAction_ToBeSetup_List.list.count = 0; + + for(unsigned int i = 0; i < ref_action_array->size(); i ++){ + action_array[i].criticality = Criticality_ignore; + action_array[i].id = ProtocolIE_ID_id_RICaction_ToBeSetup_Item ; + action_array[i].value.present = RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item; + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricActionID = (*ref_action_array)[i].get_id(); + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricActionType = (*ref_action_array)[i].get_type(); + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction->ricSubsequentActionType = (*ref_action_array)[i].get_subsequent_action(); + + result = ASN_SEQUENCE_ADD(&ricsubscription_ie->ricAction_ToBeSetup_List, &(action_array[i])); + if (result == -1){ + error_string = "Erorr : Unable to assign memory to add Action item to set up list"; + return false; + } + + } + + result = ASN_SEQUENCE_ADD(&(ric_subscription->protocolIEs), &IE_array[ie_index]); + assert(result == 0); + + + + return true; +}; + + + +bool subscription_request:: get_fields(InitiatingMessage_t * init_msg, subscription_helper & dout) +{ + + if (init_msg == 0){ + error_string = "Error. Invalid reference when getting fields from subscription request"; + return false; + } + + RICrequestID_t *requestid; + RANfunctionID_t * ranfunctionid; + RICsubscriptionDetails_t * ricsubscription; + + for(int edx = 0; edx < init_msg->value.choice.RICsubscriptionRequest.protocolIEs.list.count; edx++) { + RICsubscriptionRequest_IEs_t *memb_ptr = init_msg->value.choice.RICsubscriptionRequest.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + //dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + case (ProtocolIE_ID_id_RICsubscriptionDetails): + ricsubscription = &memb_ptr->value.choice.RICsubscriptionDetails; + dout.set_event_def(ricsubscription->ricEventTriggerDefinition.buf, ricsubscription->ricEventTriggerDefinition.size); + + for(int index = 0; index < ricsubscription->ricAction_ToBeSetup_List.list.count; index ++){ + RICaction_ToBeSetup_ItemIEs_t * item = (RICaction_ToBeSetup_ItemIEs_t *)ricsubscription->ricAction_ToBeSetup_List.list.array[index]; + if (item->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction == NULL){ + dout.add_action(item->value.choice.RICaction_ToBeSetup_Item.ricActionID, item->value.choice.RICaction_ToBeSetup_Item.ricActionType); + } + else{ + std::string action_def = ""; // for now we are ignoring action definition + } + }; + + break; + } + + } + + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); + return true; +}; + + + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_request.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_request.hpp new file mode 100644 index 0000000..15695c3 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_request.hpp @@ -0,0 +1,73 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_REQUEST_ +#define S_REQUEST_ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "subscription_helper.hpp" + +#define NUM_SUBSCRIPTION_REQUEST_IES 3 +#define INITIAL_REQUEST_LIST_SIZE 4 + +class subscription_request{ +public: + + subscription_request(std::string name); + subscription_request(void); + ~subscription_request(void); + + bool encode_e2ap_subscription(unsigned char *, size_t *, subscription_helper &); + bool set_fields(InitiatingMessage_t *, subscription_helper &); + bool get_fields(InitiatingMessage_t *, subscription_helper &); + + std::string get_error(void) const{ + return error_string; + } + +private: + + InitiatingMessage_t *initMsg; + E2AP_PDU_t * e2ap_pdu_obj; + + RICsubscriptionRequest_IEs_t * IE_array; + RICaction_ToBeSetup_ItemIEs_t * action_array; + unsigned int action_array_size; + char errbuf[128]; + size_t errbuf_len = 128; + std::string _name; + std::string error_string; +}; + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_response.cc b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_response.cc new file mode 100644 index 0000000..5ed72fa --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_response.cc @@ -0,0 +1,583 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_response.hpp" + +/* The xAPP need only worry about the get_fields from a response, since it does +not generate a response. Generating response however is included to support testing. +*/ + + +// Primarly for generation +subscription_response::subscription_response(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2AP_PDU_t *)calloc(1, sizeof(E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + successMsg = 0; + successMsg = (SuccessfulOutcome_t *)calloc(1, sizeof(SuccessfulOutcome_t)); + assert(successMsg != 0); + + unsuccessMsg = 0; + unsuccessMsg = (UnsuccessfulOutcome_t *)calloc(1, sizeof(UnsuccessfulOutcome_t)); + assert(unsuccessMsg != 0); + + IE_array = 0; + IE_array = (RICsubscriptionResponse_IEs_t *)calloc(NUM_SUBSCRIPTION_RESPONSE_IES, sizeof(RICsubscriptionResponse_IEs_t)); + assert(IE_array != 0); + + IE_Failure_array = 0; + IE_Failure_array = (RICsubscriptionFailure_IEs_t *)calloc(NUM_SUBSCRIPTION_FAILURE_IES, sizeof(RICsubscriptionFailure_IEs_t)); + assert(IE_Failure_array != 0); + + ie_admitted_list = 0; + ie_admitted_list = (RICaction_Admitted_ItemIEs_t *)calloc(INITIAL_RESPONSE_LIST_SIZE, sizeof(RICaction_Admitted_ItemIEs_t)); + assert(ie_admitted_list != 0); + ie_admitted_list_size = INITIAL_RESPONSE_LIST_SIZE; + + ie_not_admitted_list = 0; + ie_not_admitted_list = (RICaction_NotAdmitted_ItemIEs_t *)calloc(INITIAL_RESPONSE_LIST_SIZE, sizeof(RICaction_NotAdmitted_ItemIEs_t)); + assert(ie_not_admitted_list != 0); + ie_not_admitted_list_size = INITIAL_RESPONSE_LIST_SIZE; + + + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_response::~subscription_response(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription response memory"); + RICaction_Admitted_List_t * response_admitted_list = (RICaction_Admitted_List_t *) &(IE_array[2].value.choice.RICaction_Admitted_List); + + for(int i = 0; i < response_admitted_list->list.size; i++){ + response_admitted_list->list.array[i] = 0; + } + + + if (response_admitted_list->list.size > 0){ + free(response_admitted_list->list.array); + response_admitted_list->list.array = 0; + response_admitted_list->list.size = 0; + response_admitted_list->list.count = 0; + } + + + RICaction_NotAdmitted_List_t * response_not_admitted_list = &(IE_array[3].value.choice.RICaction_NotAdmitted_List); + for(int i = 0; i < response_not_admitted_list->list.size; i++){ + response_not_admitted_list->list.array[i] = 0; + } + + if (response_not_admitted_list->list.size > 0){ + free(response_not_admitted_list->list.array); + response_not_admitted_list->list.array = 0; + response_not_admitted_list->list.size = 0; + response_not_admitted_list->list.count = 0; + } + + RICsubscriptionResponse_t * ric_subscription_response = &(successMsg->value.choice.RICsubscriptionResponse); + for(int i = 0; i < ric_subscription_response->protocolIEs.list.size ; i++){ + ric_subscription_response->protocolIEs.list.array[i] = 0; + } + + if (ric_subscription_response->protocolIEs.list.size > 0){ + free(ric_subscription_response->protocolIEs.list.array); + ric_subscription_response->protocolIEs.list.array = 0; + ric_subscription_response->protocolIEs.list.size = 0; + ric_subscription_response->protocolIEs.list.count = 0; + } + + + RICaction_NotAdmitted_List_t * failure_not_admitted_list = &(IE_Failure_array[2].value.choice.RICaction_NotAdmitted_List); + for(int i = 0; i < failure_not_admitted_list->list.size; i++){ + failure_not_admitted_list->list.array[i] = 0; + } + + if ( failure_not_admitted_list->list.size > 0){ + free( failure_not_admitted_list->list.array); + failure_not_admitted_list->list.array = 0; + failure_not_admitted_list->list.size = 0; + failure_not_admitted_list->list.count = 0; + } + + + RICsubscriptionFailure_t * ric_subscription_failure = &(unsuccessMsg->value.choice.RICsubscriptionFailure); + for(int i = 0; i < ric_subscription_failure->protocolIEs.list.size; i++){ + ric_subscription_failure->protocolIEs.list.array[i] = 0; + } + + if ( ric_subscription_failure->protocolIEs.list.size > 0){ + free(ric_subscription_failure->protocolIEs.list.array); + ric_subscription_failure->protocolIEs.list.array = 0; + ric_subscription_failure->protocolIEs.list.size = 0; + ric_subscription_failure->protocolIEs.list.count = 0; + } + + + free(ie_admitted_list); + free(ie_not_admitted_list); + free(IE_Failure_array); + free(IE_array); + + + ASN_STRUCT_FREE(asn_DEF_SuccessfulOutcome, successMsg); + ASN_STRUCT_FREE(asn_DEF_UnsuccessfulOutcome, unsuccessMsg); + + + e2ap_pdu_obj->choice.initiatingMessage = NULL; + e2ap_pdu_obj->present = E2AP_PDU_PR_NOTHING; + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + mdclog_write(MDCLOG_DEBUG, "Freed subscription response memory "); + + +}; + + +bool subscription_response::encode_e2ap_subscription_response(unsigned char *buf, size_t *size, subscription_response_helper &dinput, bool is_success){ + + + if(is_success){ + set_fields_success(dinput); + e2ap_pdu_obj->present = E2AP_PDU_PR_successfulOutcome; + e2ap_pdu_obj->choice.successfulOutcome = successMsg; + + successMsg->procedureCode = ProcedureCode_id_RICsubscription; + successMsg->criticality = Criticality_reject; + successMsg->value.present = SuccessfulOutcome__value_PR_RICsubscriptionResponse; + + } + else{ + set_fields_unsuccess(dinput); + e2ap_pdu_obj->present = E2AP_PDU_PR_unsuccessfulOutcome; + e2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg; + + unsuccessMsg->procedureCode = ProcedureCode_id_RICsubscription; + unsuccessMsg->criticality = Criticality_reject; + unsuccessMsg->value.present = UnsuccessfulOutcome__value_PR_RICsubscriptionFailure; + + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + int ret_constr = asn_check_constraints(&asn_DEF_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding subscription response. Reason = " + error_string; + return false; + } + + asn_enc_rval_t res = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(res.encoded == -1){ + std::cout <<"Error encoding PDU. Reason =" << strerror(errno) << std::endl; + return false; + } + else { + if(*size < res.encoded){ + fprintf(stderr, "Buffer assigned too small to encode: %s",(char *)(asn_DEF_E2AP_PDU.name)); + res.encoded = -1; + return false; + } + } + + *size = res.encoded; + return true; + +} + +void subscription_response::set_fields_success(subscription_response_helper &helper){ + + int ie_index; + + RICsubscriptionResponse_t * subscription_response = &(successMsg->value.choice.RICsubscriptionResponse); + //reset list count .. + subscription_response->protocolIEs.list.count = 0; + + ie_index = 0; + RICsubscriptionResponse_IEs_t *ies_ricreq = &IE_array[ie_index]; + + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICsubscriptionResponse_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + // ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + + + ie_index = 1; + RICsubscriptionResponse_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICsubscriptionResponse_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + + + ie_index = 2; + RICsubscriptionResponse_IEs_t *ies_admitted_actid = &IE_array[ie_index]; + ies_admitted_actid->criticality = Criticality_reject; + ies_admitted_actid->id = ProtocolIE_ID_id_RICactions_Admitted; + RICaction_Admitted_List_t *ric_admitted_actions_ie = &ies_admitted_actid->value.choice.RICaction_Admitted_List; + ric_admitted_actions_ie->list.count = 0; + std::vector * ref_admitted_action_array = helper.get_admitted_list(); + + if(ref_admitted_action_array->size() == 0){ + ies_admitted_actid->value.present = RICsubscriptionResponse_IEs__value_PR_NOTHING; + } + else{ + ies_admitted_actid->value.present = RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List; + + // resize memory ? + if (ref_admitted_action_array->size() >= ie_admitted_list_size){ + ie_admitted_list_size = 2 * ref_admitted_action_array->size(); + free(ie_admitted_list); + ie_admitted_list = (RICaction_Admitted_ItemIEs_t *)calloc(ie_admitted_list_size, sizeof(RICaction_Admitted_ItemIEs_t)); + assert(ie_admitted_list != 0); + }; + + + for(unsigned int i = 0; i < ref_admitted_action_array->size(); i ++){ + ie_admitted_list[i].criticality = Criticality_ignore; + ie_admitted_list[i].id = ProtocolIE_ID_id_RICaction_Admitted_Item ; + ie_admitted_list[i].value.present = RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item; + ie_admitted_list[i].value.choice.RICaction_Admitted_Item.ricActionID = (*ref_admitted_action_array)[i].get_id(); + ASN_SEQUENCE_ADD(ric_admitted_actions_ie, &(ie_admitted_list[i])); + } + } + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + + // optional IE : add only if non-zero list + ie_index = 3; + std::vector * ref_notadmitted_action_array = helper.get_not_admitted_list(); + if (ref_notadmitted_action_array->size() > 0){ + + RICsubscriptionResponse_IEs_t *ies_notadmitted_actid = &IE_array[ie_index]; + ies_notadmitted_actid->criticality = Criticality_reject; + ies_notadmitted_actid->id = ProtocolIE_ID_id_RICactions_NotAdmitted; + + RICaction_NotAdmitted_List_t *ric_not_admitted_actions_ie = &ies_notadmitted_actid->value.choice.RICaction_NotAdmitted_List; + ric_not_admitted_actions_ie->list.count = 0; + + + ies_notadmitted_actid->value.present = RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List; + + // resize memory ? + if (ref_notadmitted_action_array->size() >= ie_not_admitted_list_size){ + ie_not_admitted_list_size = 2 * ref_notadmitted_action_array->size(); + free(ie_not_admitted_list); + ie_not_admitted_list = (RICaction_NotAdmitted_ItemIEs_t *)calloc(ie_not_admitted_list_size, sizeof(RICaction_NotAdmitted_ItemIEs_t)); + assert(ie_not_admitted_list != 0); + + }; + + + for(unsigned int i = 0; i < ref_notadmitted_action_array->size(); i ++){ + ie_not_admitted_list[i].criticality = Criticality_ignore; + ie_not_admitted_list[i].id = ProtocolIE_ID_id_RICaction_NotAdmitted_Item ; + ie_not_admitted_list[i].value.present = RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;; + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricActionID = (*ref_notadmitted_action_array)[i].get_id(); + + int cause = (*ref_notadmitted_action_array)[i].get_cause(); + switch(cause){ + case Cause_PR_ricService: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.ricService = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_transport: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.transport = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_protocol: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.protocol= (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_misc: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.misc = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_ricRequest: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.ricRequest = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + default: + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause); + return; + } + + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.present = (Cause_PR)cause; + ASN_SEQUENCE_ADD(ric_not_admitted_actions_ie, &(ie_not_admitted_list[i])); + } + + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + } + +} + +void subscription_response:: get_fields(SuccessfulOutcome_t * success_msg, subscription_response_helper & dout) +{ + + assert(success_msg != NULL); + + RICrequestID_t *requestid; + RANfunctionID_t * ranfunctionid; + RICaction_Admitted_List_t * ric_admitted_action_list; + RICaction_NotAdmitted_List_t * ric_not_admitted_action_list; + + for(int edx = 0; edx < success_msg->value.choice.RICsubscriptionResponse.protocolIEs.list.count; edx++) { + RICsubscriptionResponse_IEs_t *memb_ptr = success_msg->value.choice.RICsubscriptionResponse.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + //dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + case (ProtocolIE_ID_id_RICactions_Admitted): + ric_admitted_action_list = &memb_ptr->value.choice.RICaction_Admitted_List; + + // admitted actions + for(int index = 0; index < ric_admitted_action_list->list.count; index ++){ + RICaction_Admitted_ItemIEs_t * item = (RICaction_Admitted_ItemIEs_t *)ric_admitted_action_list->list.array[index]; + long int id = item->value.choice.RICaction_Admitted_Item.ricActionID; + dout.get_admitted_list()->push_back(ActionResponse(id)); + }; + + break; + + case (ProtocolIE_ID_id_RICactions_NotAdmitted): + ric_not_admitted_action_list = &memb_ptr->value.choice.RICaction_NotAdmitted_List; + + for(int index = 0; index < ric_not_admitted_action_list->list.count; index ++){ + RICaction_NotAdmitted_ItemIEs_t * item = (RICaction_NotAdmitted_ItemIEs_t *)ric_not_admitted_action_list->list.array[index]; + long int id = item->value.choice.RICaction_NotAdmitted_Item.ricActionID; + int cause = item->value.choice.RICaction_NotAdmitted_Item.cause.present; + int sub_cause; + switch(cause){ + + case Cause_PR_ricService : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.ricService; + break; + + case Cause_PR_transport : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.transport; + break; + + case Cause_PR_protocol : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.protocol; + break; + + case Cause_PR_misc : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.misc; + break; + + case Cause_PR_ricRequest : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.ricRequest; + break; + + default: + std::cout <<"Error ! Illegal cause enum" << cause << std::endl; + return; + } + dout.get_not_admitted_list()->push_back(ActionResponse(id, cause, sub_cause)); + } + break; + } + + } + + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + +void subscription_response::set_fields_unsuccess( subscription_response_helper &helper){ + + int ie_index; + RICsubscriptionFailure_t * ric_subscription_failure = &(unsuccessMsg->value.choice.RICsubscriptionFailure); + // reset list count + ric_subscription_failure->protocolIEs.list.count = 0; + + ie_index = 0; + RICsubscriptionFailure_IEs_t *ies_ricreq = &IE_Failure_array[ie_index]; + ies_ricreq->criticality = Criticality_reject; + ies_ricreq->id = ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = RICsubscriptionFailure_IEs__value_PR_RICrequestID; + RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); +// ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, &(IE_Failure_array[ie_index])); + + ie_index = 1; + RICsubscriptionFailure_IEs_t *ies_ranfunc = &IE_Failure_array[ie_index]; + ies_ranfunc->criticality = Criticality_reject; + ies_ranfunc->id = ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = RICsubscriptionFailure_IEs__value_PR_RANfunctionID; + RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, &(IE_Failure_array[ie_index])); + + ie_index = 2; + RICsubscriptionFailure_IEs_t *ies_notadmitted_actid = &IE_Failure_array[ie_index]; + ies_notadmitted_actid->criticality = Criticality_reject; + ies_notadmitted_actid->id = ProtocolIE_ID_id_RICactions_NotAdmitted; + RICaction_NotAdmitted_List_t *ric_not_admitted_actions_ie = &ies_notadmitted_actid->value.choice.RICaction_NotAdmitted_List; + ric_not_admitted_actions_ie->list.count = 0; + std::vector * ref_notadmitted_action_array = helper.get_not_admitted_list(); + if(ref_notadmitted_action_array->size() == 0){ + ies_notadmitted_actid->value.present = RICsubscriptionFailure_IEs__value_PR_NOTHING; + } + else{ + ies_notadmitted_actid->value.present = RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List; + + // resize memory ? + if (ref_notadmitted_action_array->size() >= ie_not_admitted_list_size){ + ie_not_admitted_list_size = 2 * ref_notadmitted_action_array->size(); + free(ie_not_admitted_list); + ie_not_admitted_list = (RICaction_NotAdmitted_ItemIEs_t *)calloc(ie_not_admitted_list_size, sizeof(RICaction_NotAdmitted_ItemIEs_t)); + assert(ie_not_admitted_list != 0); + }; + + + // reset the list count on ricAction_ToBeSetup_List; + for(unsigned int i = 0; i < ref_notadmitted_action_array->size(); i ++){ + ie_not_admitted_list[i].criticality = Criticality_ignore; + ie_not_admitted_list[i].id = ProtocolIE_ID_id_RICaction_NotAdmitted_Item ; + ie_not_admitted_list[i].value.present = RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;; + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricActionID = (*ref_notadmitted_action_array)[i].get_id(); + + int cause = (*ref_notadmitted_action_array)[i].get_cause(); + switch(cause){ + case Cause_PR_ricService: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.ricService = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_transport: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.transport = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_protocol: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.protocol= (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_misc: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.misc = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case Cause_PR_ricRequest: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.choice.ricRequest = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + default: + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause); + return ; + } + + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.cause.present = (Cause_PR)cause; + + ASN_SEQUENCE_ADD(ric_not_admitted_actions_ie, &(ie_not_admitted_list[i])); + } + + } + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, &(IE_Failure_array[ie_index])); + + + // // criticality diagnostics is not generated/parsed currently since optional + // i = 3; + // RICsubscriptionFailure_IEs_t *ies_criticality_diagnostics= &IE_Failure_array[i]; + // ies_criticality_diagnostics->criticality = Criticality_ignore; + // ies_criticality_diagnostics->id = ProtocolIE_ID_id_CriticalityDiagnostics ; + // ies_criticality_diagnostics->value.present = RICsubscriptionFailure_IEs__value_PR_NOTHING; + + +} + +void subscription_response:: get_fields(UnsuccessfulOutcome_t * unsuccess_msg, subscription_response_helper & dout) +{ + + assert(unsuccess_msg != NULL); + + RICrequestID_t *requestid; + RANfunctionID_t * ranfunctionid; + RICaction_NotAdmitted_List_t * ric_not_admitted_action_list; + + for(int edx = 0; edx < unsuccess_msg->value.choice.RICsubscriptionFailure.protocolIEs.list.count; edx++) { + RICsubscriptionFailure_IEs_t *memb_ptr = unsuccess_msg->value.choice.RICsubscriptionFailure.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + //dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + + case (ProtocolIE_ID_id_RICactions_NotAdmitted): + ric_not_admitted_action_list = &memb_ptr->value.choice.RICaction_NotAdmitted_List; + + for(int index = 0; index < ric_not_admitted_action_list->list.count; index ++){ + RICaction_NotAdmitted_ItemIEs_t * item = (RICaction_NotAdmitted_ItemIEs_t *)ric_not_admitted_action_list->list.array[index]; + long int id = item->value.choice.RICaction_NotAdmitted_Item.ricActionID; + int cause = item->value.choice.RICaction_NotAdmitted_Item.cause.present; + int sub_cause; + switch(cause){ + + case Cause_PR_ricService : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.ricService; + break; + + case Cause_PR_transport : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.transport; + break; + + case Cause_PR_protocol : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.protocol; + break; + + case Cause_PR_misc : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.misc; + break; + + case Cause_PR_ricRequest : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.cause.choice.ricRequest; + break; + + default: + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause); + return; + } + dout.get_not_admitted_list()->push_back(ActionResponse(id, cause, sub_cause)); + } + break; + } + + } + + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_response.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_response.hpp new file mode 100644 index 0000000..85469bf --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2ap/subscription_response.hpp @@ -0,0 +1,81 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_RESPONSE_ +#define S_RESPONSE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "response_helper.hpp" + +#define NUM_SUBSCRIPTION_RESPONSE_IES 4 +#define NUM_SUBSCRIPTION_FAILURE_IES 3 +#define INITIAL_RESPONSE_LIST_SIZE 4 + +class subscription_response{ +public: + + subscription_response(void); + ~subscription_response(void); + + bool encode_e2ap_subscription_response(unsigned char *, size_t *, subscription_response_helper &, bool); + void get_fields(SuccessfulOutcome_t *, subscription_response_helper &); + void get_fields(UnsuccessfulOutcome_t *, subscription_response_helper &); + + std::string get_error(void) const{ + return error_string; + } + +private: + + void set_fields_success( subscription_response_helper &); + void set_fields_unsuccess( subscription_response_helper &); + + E2AP_PDU_t * e2ap_pdu_obj; + SuccessfulOutcome_t * successMsg; + UnsuccessfulOutcome_t * unsuccessMsg; + + + RICsubscriptionResponse_IEs_t *IE_array; + RICsubscriptionFailure_IEs_t *IE_Failure_array; + + + RICaction_Admitted_ItemIEs_t * ie_admitted_list; + RICaction_NotAdmitted_ItemIEs_t * ie_not_admitted_list; + unsigned int ie_admitted_list_size, ie_not_admitted_list_size; + + char errbuf[128]; + size_t errbuf_len = 128; + std::string error_string; +}; + + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_control.cc b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_control.cc new file mode 100644 index 0000000..ba5f708 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_control.cc @@ -0,0 +1,195 @@ +/* + ================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, softwares + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ================================================================================== +*/ +/* + * e2sm_control.cc + * + * Created on: Apr 30, 2020 + * Author: Shraboni Jana + */ +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ +#include "e2sm_control.hpp" + + //initialize + e2sm_control::e2sm_control(void){ + + memset(&head_fmt1, 0, sizeof(E2SM_HelloWorld_ControlHeader_Format1_t)); + + memset(&msg_fmt1, 0, sizeof(E2SM_HelloWorld_ControlMessage_Format1_t)); + + + + control_head = 0; + control_head = ( E2SM_HelloWorld_ControlHeader_t *)calloc(1, sizeof( E2SM_HelloWorld_ControlHeader_t)); + assert(control_head != 0); + + control_msg = 0; + control_msg = (E2SM_HelloWorld_ControlMessage_t*)calloc(1, sizeof(E2SM_HelloWorld_ControlMessage_t)); + assert(control_msg !=0); + + errbuf_len = 128; + }; + + e2sm_control::~e2sm_control(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing event trigger object memory"); + + control_head->choice.controlHeader_Format1 = 0; + + control_msg->choice.controlMessage_Format1 = 0; + + ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_ControlHeader, control_head); + ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_ControlMessage, control_msg); + + +}; + +bool e2sm_control::encode_control_header(unsigned char *buf, size_t *size, e2sm_control_helper &helper){ + + ASN_STRUCT_RESET(asn_DEF_E2SM_HelloWorld_ControlHeader, control_head); + + bool res; + res = set_fields(control_head, helper); + if (!res){ + + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_ControlHeader, control_head, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_ControlHeader, control_head); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_ControlHeader, control_head, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + +bool e2sm_control::encode_control_message(unsigned char *buf, size_t *size, e2sm_control_helper &helper){ + + bool res; + res = set_fields(control_msg, helper); + if (!res){ + return false; + } + + + int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_ControlMessage, control_msg, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_ControlMessage, control_msg); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_ControlMessage, control_msg, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding action definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + +bool e2sm_control::set_fields(E2SM_HelloWorld_ControlHeader_t * ref_control_head, e2sm_control_helper & helper){ + + if(ref_control_head == 0){ + error_string = "Invalid reference for Event Trigger Definition set fields"; + return false; + } + + ref_control_head->present = E2SM_HelloWorld_ControlHeader_PR_controlHeader_Format1; + + head_fmt1.controlHeaderParam = helper.header; + + ref_control_head->choice.controlHeader_Format1 = &head_fmt1; + + return true; +}; + +bool e2sm_control::set_fields(E2SM_HelloWorld_ControlMessage_t * ref_control_msg, e2sm_control_helper & helper){ + + if(ref_control_msg == 0){ + error_string = "Invalid reference for Event Action Definition set fields"; + return false; + } + ref_control_msg->present = E2SM_HelloWorld_ControlMessage_PR_controlMessage_Format1; + + msg_fmt1.controlMsgParam.buf = helper.message; + msg_fmt1.controlMsgParam.size = helper.message_len; + + + ref_control_msg->choice.controlMessage_Format1 = &msg_fmt1; + + + return true; +}; + +bool e2sm_control::get_fields(E2SM_HelloWorld_ControlHeader_t * ref_indictaion_header, e2sm_control_helper & helper){ + + if (ref_indictaion_header == 0){ + error_string = "Invalid reference for Control Header get fields"; + return false; + } + + helper.header = ref_indictaion_header->choice.controlHeader_Format1->controlHeaderParam; + return true; +} + +bool e2sm_control::get_fields(E2SM_HelloWorld_ControlMessage_t * ref_control_message, e2sm_control_helper & helper){ + + if (ref_control_message == 0){ + error_string = "Invalid reference for Control Message get fields"; + return false; + } + helper.message = ref_control_message->choice.controlMessage_Format1->controlMsgParam.buf; + helper.message_len = ref_control_message->choice.controlMessage_Format1->controlMsgParam.size; + + return true; + } + + + + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_control.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_control.hpp new file mode 100644 index 0000000..4d8d687 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_control.hpp @@ -0,0 +1,73 @@ +/* + ================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, softwares + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ================================================================================== +*/ +/* + * e2sm_control.hpp + * + * Created on: Apr, 2020 + * Author: Shraboni Jana + */ +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ +#ifndef SRC_XAPP_ASN_E2SM_E2SM_CONTROL_HPP_ +#define SRC_XAPP_ASN_E2SM_E2SM_CONTROL_HPP_ + + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +class e2sm_control { +public: + e2sm_control(void); + ~e2sm_control(void); + + bool set_fields(E2SM_HelloWorld_ControlHeader_t *, e2sm_control_helper &); + bool set_fields(E2SM_HelloWorld_ControlMessage_t *, e2sm_control_helper &); + + bool get_fields(E2SM_HelloWorld_ControlHeader_t *, e2sm_control_helper &); + bool get_fields(E2SM_HelloWorld_ControlMessage_t *, e2sm_control_helper &); + + bool encode_control_header(unsigned char *, size_t *, e2sm_control_helper &); + bool encode_control_message(unsigned char*, size_t *, e2sm_control_helper &); + + + std::string get_error (void) const {return error_string ;}; + +private: + + E2SM_HelloWorld_ControlHeader_t * control_head; // used for encoding + E2SM_HelloWorld_ControlMessage_t* control_msg; + E2SM_HelloWorld_ControlHeader_Format1_t head_fmt1; + E2SM_HelloWorld_ControlMessage_Format1_t msg_fmt1; + + + size_t errbuf_len; + char errbuf[128]; + std::string error_string; +}; + + + +#endif /* SRC_XAPP_ASN_E2SM_E2SM_CONTROL_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_helpers.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_helpers.hpp new file mode 100644 index 0000000..e1f146b --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_helpers.hpp @@ -0,0 +1,109 @@ +/* + ================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, softwares + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ================================================================================== +*/ +/* + * e2sm_control.cc + * + * Created on: Apr 30, 2020 + * Author: Shraboni Jana + */ +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ +#ifndef E2SM_HELPER_ +#define E2SM_HELPER_ + +#include +#include +#include +#include +#include + +typedef struct ranparam_helper ranparam_helper; +struct ranparam_helper { + long int _param_id; + unsigned char* _param_name; + size_t _param_name_len; + int _param_test; + unsigned char* _param_value; + size_t _param_value_len; + +}; +class RANParam_Helper{ +private: + ranparam_helper _ranparam_helper; + +public: + + RANParam_Helper(int id, unsigned char *param_name, size_t param_name_len, int param_test, unsigned char* param_value, size_t param_value_len){ + _ranparam_helper._param_id = id; + _ranparam_helper._param_name = param_name; + _ranparam_helper._param_name_len = param_name_len; + _ranparam_helper._param_test = param_test; + _ranparam_helper._param_value = param_value; + _ranparam_helper._param_value_len = param_value_len; + } + + const ranparam_helper & getran_helper() const { + return _ranparam_helper; + } + void print_ranparam_info(void){ + std::cout <<"Param ID = " << _ranparam_helper._param_id << std::endl; + std::cout << "Parame Name =" << _ranparam_helper._param_name << std::endl; + std::cout <<"Param Test = " << _ranparam_helper._param_test << std::endl; + std::cout <<"Param Value = " << _ranparam_helper._param_value << std::endl; + } +}; + + +using ranparam_helper_t = std::vector; + +typedef struct e2sm_subscription_helper e2sm_subscription_helper; +struct e2sm_subscription_helper { +public: + + + int triger_nature; + ranparam_helper_t param; + void add_param(int id, unsigned char *param_name, size_t param_name_len, int param_test, unsigned char* param_value, size_t param_value_len){ + RANParam_Helper rparam(id,param_name,param_name_len,param_test,param_value,param_value_len); + param.push_back(rparam); + }; + ranparam_helper_t get_paramlist() const {return param;}; + + + +}; + + +typedef struct e2sm_indication_helper e2sm_indication_helper; + + +struct e2sm_indication_helper { + long int header; + unsigned char* message; + size_t message_len; +}; + +typedef struct e2sm_control_helper e2sm_control_helper; + +struct e2sm_control_helper { + long int header; + unsigned char* message; + size_t message_len; +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_indication.cc b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_indication.cc new file mode 100644 index 0000000..60ffd30 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_indication.cc @@ -0,0 +1,192 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * e2sm_indication.cc + * + * Created on: Apr, 2020 + * Author: Shraboni Jana + */ +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ +#include "e2sm_indication.hpp" + + //initialize + e2sm_indication::e2sm_indication(void){ + + memset(&head_fmt1, 0, sizeof(E2SM_HelloWorld_IndicationHeader_Format1_t)); + + memset(&msg_fmt1, 0, sizeof(E2SM_HelloWorld_IndicationMessage_Format1_t)); + + + + indication_head = 0; + indication_head = ( E2SM_HelloWorld_IndicationHeader_t *)calloc(1, sizeof( E2SM_HelloWorld_IndicationHeader_t)); + assert(indication_head != 0); + + indication_msg = 0; + indication_msg = (E2SM_HelloWorld_IndicationMessage_t*)calloc(1, sizeof(E2SM_HelloWorld_IndicationMessage_t)); + assert(indication_msg !=0); + + errbuf_len = 128; + }; + + e2sm_indication::~e2sm_indication(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing event trigger object memory"); + + indication_head->choice.indicationHeader_Format1 = 0; + + indication_msg->choice.indicationMessage_Format1 = 0; + + ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_IndicationHeader, indication_head); + ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_IndicationMessage, indication_msg); + + +}; + +bool e2sm_indication::encode_indication_header(unsigned char *buf, size_t *size, e2sm_indication_helper &helper){ + + ASN_STRUCT_RESET(asn_DEF_E2SM_HelloWorld_IndicationHeader, indication_head); + + bool res; + res = set_fields(indication_head, helper); + if (!res){ + + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_IndicationHeader, indication_head, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_IndicationHeader, indication_head); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_IndicationHeader, indication_head, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + +bool e2sm_indication::encode_indication_message(unsigned char *buf, size_t *size, e2sm_indication_helper &helper){ + + bool res; + res = set_fields(indication_msg, helper); + if (!res){ + return false; + } + + + int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_IndicationMessage, indication_msg, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_IndicationMessage, indication_msg); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_IndicationMessage, indication_msg, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding action definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + +bool e2sm_indication::set_fields(E2SM_HelloWorld_IndicationHeader_t * ref_indication_head, e2sm_indication_helper & helper){ + + if(ref_indication_head == 0){ + error_string = "Invalid reference for Event Trigger Definition set fields"; + return false; + } + + ref_indication_head->present = E2SM_HelloWorld_IndicationHeader_PR_indicationHeader_Format1; + + head_fmt1.indicationHeaderParam = helper.header; + + ref_indication_head->choice.indicationHeader_Format1 = &head_fmt1; + + return true; +}; + +bool e2sm_indication::set_fields(E2SM_HelloWorld_IndicationMessage_t * ref_indication_msg, e2sm_indication_helper & helper){ + + if(ref_indication_msg == 0){ + error_string = "Invalid reference for Event Action Definition set fields"; + return false; + } + ref_indication_msg->present = E2SM_HelloWorld_IndicationMessage_PR_indicationMessage_Format1; + + msg_fmt1.indicationMsgParam.buf = helper.message; + msg_fmt1.indicationMsgParam.size = helper.message_len; + + + ref_indication_msg->choice.indicationMessage_Format1 = &msg_fmt1; + + + return true; +}; + +bool e2sm_indication::get_fields(E2SM_HelloWorld_IndicationHeader_t * ref_indictaion_header, e2sm_indication_helper & helper){ + + if (ref_indictaion_header == 0){ + error_string = "Invalid reference for Indication Header get fields"; + return false; + } + + helper.header = ref_indictaion_header->choice.indicationHeader_Format1->indicationHeaderParam; + return true; +} + +bool e2sm_indication::get_fields(E2SM_HelloWorld_IndicationMessage_t * ref_indication_message, e2sm_indication_helper & helper){ + + if (ref_indication_message == 0){ + error_string = "Invalid reference for Indication Message get fields"; + return false; + } + helper.message = ref_indication_message->choice.indicationMessage_Format1->indicationMsgParam.buf; + helper.message_len = ref_indication_message->choice.indicationMessage_Format1->indicationMsgParam.size; + + return true; + } + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_indication.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_indication.hpp new file mode 100644 index 0000000..a7fcdd7 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_indication.hpp @@ -0,0 +1,75 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * e2sm_indication.hpp + * + * Created on: Apr, 2020 + * Author: Shraboni Jana + */ + +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ +#ifndef SRC_XAPP_ASN_E2SM_E2SM_INDICATION_HPP_ +#define SRC_XAPP_ASN_E2SM_E2SM_INDICATION_HPP_ + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +class e2sm_indication { +public: + e2sm_indication(void); + ~e2sm_indication(void); + + bool set_fields(E2SM_HelloWorld_IndicationHeader_t *, e2sm_indication_helper &); + bool set_fields(E2SM_HelloWorld_IndicationMessage_t *, e2sm_indication_helper &); + + bool get_fields(E2SM_HelloWorld_IndicationHeader_t *, e2sm_indication_helper &); + bool get_fields(E2SM_HelloWorld_IndicationMessage_t *, e2sm_indication_helper &); + + bool encode_indication_header(unsigned char *, size_t *, e2sm_indication_helper &); + bool encode_indication_message(unsigned char*, size_t *, e2sm_indication_helper &); + + + std::string get_error (void) const {return error_string ;}; + +private: + + E2SM_HelloWorld_IndicationHeader_t * indication_head; // used for encoding + E2SM_HelloWorld_IndicationMessage_t* indication_msg; + E2SM_HelloWorld_IndicationHeader_Format1_t head_fmt1; + E2SM_HelloWorld_IndicationMessage_Format1_t msg_fmt1; + + + size_t errbuf_len; + char errbuf[128]; + std::string error_string; +}; + + + + +#endif /* SRC_XAPP_ASN_E2SM_E2SM_INDICATION_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_subscription.cc b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_subscription.cc new file mode 100644 index 0000000..51511a4 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_subscription.cc @@ -0,0 +1,185 @@ +/* + ================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, softwares + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ================================================================================== +*/ +/* + * e2sm_control.cc + * + * Created on: Apr 30, 2020 + * Author: Shraboni Jana + */ +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ + +#include "e2sm_subscription.hpp" + + //initialize + e2sm_subscription::e2sm_subscription(void){ + + memset(&event_fmt1, 0, sizeof(E2SM_HelloWorld_EventTriggerDefinition_Format1_t)); + + memset(&actn_fmt1, 0, sizeof(E2SM_HelloWorld_ActionDefinition_Format1_t)); + + + ran_param = 0; + ran_param = (RANparameter_Item_t*)calloc(1, sizeof(RANparameter_Item_t)); + assert(ran_param != 0); + + event_trigger = 0; + event_trigger = ( E2SM_HelloWorld_EventTriggerDefinition_t *)calloc(1, sizeof( E2SM_HelloWorld_EventTriggerDefinition_t)); + assert(event_trigger != 0); + + action_defn = 0; + action_defn = (E2SM_HelloWorld_ActionDefinition_t*)calloc(1, sizeof(E2SM_HelloWorld_ActionDefinition_t)); + assert(action_defn !=0); + + errbuf_len = 128; + }; + + e2sm_subscription::~e2sm_subscription(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing event trigger object memory"); + + event_trigger->choice.eventDefinition_Format1 = 0; + + action_defn->choice.actionDefinition_Format1 = 0; + + free(ran_param); + + ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_EventTriggerDefinition, event_trigger); + ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_ActionDefinition, action_defn); + + +}; + +bool e2sm_subscription::encode_event_trigger(unsigned char *buf, size_t *size, e2sm_subscription_helper &helper){ + + ASN_STRUCT_RESET(asn_DEF_E2SM_HelloWorld_EventTriggerDefinition, event_trigger); + + bool res; + res = set_fields(event_trigger, helper); + if (!res){ + + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_EventTriggerDefinition, event_trigger, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_EventTriggerDefinition, event_trigger); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_EventTriggerDefinition, event_trigger, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + +bool e2sm_subscription::encode_action_defn(unsigned char *buf, size_t *size, e2sm_subscription_helper &helper){ + + bool res; + res = set_fields(action_defn, helper); + if (!res){ + return false; + } + + + int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_ActionDefinition, action_defn, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_ActionDefinition, action_defn); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_ActionDefinition, action_defn, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding action definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + +bool e2sm_subscription::set_fields(E2SM_HelloWorld_EventTriggerDefinition_t * ref_event_trigger, e2sm_subscription_helper & helper){ + + if(ref_event_trigger == 0){ + error_string = "Invalid reference for Event Trigger Definition set fields"; + return false; + } + + ref_event_trigger->present = E2SM_HelloWorld_EventTriggerDefinition_PR_eventDefinition_Format1; + + event_fmt1.triggerNature = helper.triger_nature; + + ref_event_trigger->choice.eventDefinition_Format1 = &event_fmt1; + + return true; +}; + +bool e2sm_subscription::set_fields(E2SM_HelloWorld_ActionDefinition_t * ref_action_defn, e2sm_subscription_helper & helper){ + + if(ref_action_defn == 0){ + error_string = "Invalid reference for Event Action Definition set fields"; + return false; + } + ref_action_defn->present = E2SM_HelloWorld_ActionDefinition_PR_actionDefinition_Format1; + + + ranparam_helper_t paramlst = helper.get_paramlist(); + + for(RANParam_Helper item:paramlst){ + ran_param->ranParameter_ID = item.getran_helper()._param_id; + ran_param->ranParameter_Name.buf = item.getran_helper()._param_name; + ran_param->ranParameter_Name.size = item.getran_helper()._param_name_len; + ran_param->ranParameter_Test = item.getran_helper()._param_test; + ran_param->ranParameter_Value.buf = item.getran_helper()._param_value; + ran_param->ranParameter_Value.size = item.getran_helper()._param_value_len; + ASN_SEQUENCE_ADD(&(actn_fmt1.ranParameter_List->list.array), ran_param); + } + + + ref_action_defn->choice.actionDefinition_Format1 = &actn_fmt1; + + + return true; +}; + diff --git a/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_subscription.hpp b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_subscription.hpp new file mode 100644 index 0000000..6d046a2 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-asn/e2sm/e2sm_subscription.hpp @@ -0,0 +1,74 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * e2sm_control.cc + * + * Created on: Apr 30, 2020 + * Author: Shraboni Jana + */ +/* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */ +#ifndef E2SM_ +#define E2SM_ + + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +/* builder class for E2SM event trigger definition */ + +class e2sm_subscription { +public: + e2sm_subscription(void); + ~e2sm_subscription(void); + + bool set_fields(E2SM_HelloWorld_EventTriggerDefinition_t *, e2sm_subscription_helper &); + bool set_fields(E2SM_HelloWorld_ActionDefinition_t *, e2sm_subscription_helper &); + + bool encode_event_trigger(unsigned char *, size_t *, e2sm_subscription_helper &); + bool encode_action_defn(unsigned char*, size_t *, e2sm_subscription_helper &); + + + std::string get_error (void) const {return error_string ;}; + +private: + + E2SM_HelloWorld_EventTriggerDefinition_t * event_trigger; // used for encoding + E2SM_HelloWorld_ActionDefinition_t* action_defn; + E2SM_HelloWorld_EventTriggerDefinition_Format1_t event_fmt1; + E2SM_HelloWorld_ActionDefinition_Format1_t actn_fmt1; + RANparameter_Item_t *ran_param; + + + size_t errbuf_len; + char errbuf[128]; + std::string error_string; +}; + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control.cc new file mode 100644 index 0000000..e66ddec --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control.cc @@ -0,0 +1,266 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_control_request.c + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#include "e2ap_control.hpp" + +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) +ric_control_request::ric_control_request(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2N_E2AP_PDU_t * )calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = 0; + initMsg = (E2N_InitiatingMessage_t * )calloc(1, sizeof(E2N_InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = 0; + IE_array = (E2N_RICcontrolRequest_IEs_t *)calloc(NUM_CONTROL_REQUEST_IES, sizeof(E2N_RICcontrolRequest_IEs_t)); + assert(IE_array != 0); + + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_initiatingMessage; + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + + +}; + + +// Clear assigned protocolIE list from RIC control_request IE container +ric_control_request::~ric_control_request(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing E2AP Control Request object memory"); + + E2N_RICcontrolRequest_t *ricControl_Request = &(initMsg->value.choice.RICcontrolRequest); + for(int i = 0; i < ricControl_Request->protocolIEs.list.size; i++){ + ricControl_Request->protocolIEs.list.array[i] = 0; + } + + if (ricControl_Request->protocolIEs.list.size > 0){ + free(ricControl_Request->protocolIEs.list.array); + ricControl_Request->protocolIEs.list.size = 0; + ricControl_Request->protocolIEs.list.count = 0; + } + + free(IE_array); + free(initMsg); + e2ap_pdu_obj->choice.initiatingMessage = 0; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed E2N_E2AP Control Request object mempory"); + +} + + +bool ric_control_request::encode_e2ap_control_request(unsigned char *buf, size_t *size, ric_control_helper & dinput){ + + initMsg->procedureCode = E2N_ProcedureCode_id_ricControl; + initMsg->criticality = E2N_Criticality_ignore; + initMsg->value.present = E2N_InitiatingMessage__value_PR_RICcontrolRequest; + + bool res; + + res = set_fields(initMsg, dinput); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding control . Reason = " + error_string; + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool ric_control_request::set_fields(E2N_InitiatingMessage_t *initMsg, ric_control_helper &dinput){ + unsigned int ie_index; + + if (initMsg == 0){ + error_string = "Invalid reference for E2AP Control_Request message in set_fields"; + return false; + } + + E2N_RICcontrolRequest_t * ric_control_request = &(initMsg->value.choice.RICcontrolRequest); + ric_control_request->protocolIEs.list.count = 0; // reset + + // for(i = 0; i < NUM_CONTROL_REQUEST_IES;i++){ + // memset(&(IE_array[i]), 0, sizeof(RICcontrolRequest_IEs_t)); + // } + + // Mandatory IE + ie_index = 0; + E2N_RICcontrolRequest_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = dinput.req_id; + ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + // Mandatory IE + ie_index = 1; + E2N_RICcontrolRequest_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICcontrolRequest_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = dinput.func_id; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + + // Mandatory IE + ie_index = 2; + E2N_RICcontrolRequest_IEs_t *ies_richead = &IE_array[ie_index]; + ies_richead->criticality = E2N_Criticality_reject; + ies_richead->id = E2N_ProtocolIE_ID_id_RICcontrolHeader; + ies_richead->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcontrolHeader; + E2N_RICcontrolHeader_t *richeader_ie = &ies_richead->value.choice.RICcontrolHeader; + richeader_ie->buf = dinput.control_header; + richeader_ie->size = dinput.control_header_size; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + // Mandatory IE + ie_index = 3; + E2N_RICcontrolRequest_IEs_t *ies_indmsg = &IE_array[ie_index]; + ies_indmsg->criticality = E2N_Criticality_reject; + ies_indmsg->id = E2N_ProtocolIE_ID_id_RICcontrolMessage; + ies_indmsg->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcontrolMessage; + E2N_RICcontrolMessage_t *ricmsg_ie = &ies_indmsg->value.choice.RICcontrolMessage; + ricmsg_ie->buf = dinput.control_msg; + ricmsg_ie->size = dinput.control_msg_size; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + // Optional IE + ie_index = 4; + if (dinput.control_ack >= 0){ + E2N_RICcontrolRequest_IEs_t *ies_indtyp = &IE_array[ie_index]; + ies_indtyp->criticality = E2N_Criticality_reject; + ies_indtyp->id = E2N_ProtocolIE_ID_id_RICcontrolAckRequest; + ies_indtyp->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest; + E2N_RICcontrolAckRequest_t *ricackreq_ie = &ies_indtyp->value.choice.RICcontrolAckRequest; + *ricackreq_ie = dinput.control_ack; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + } + + // Optional IE + ie_index = 5; + if(dinput.call_process_id_size > 0){ + E2N_RICcontrolRequest_IEs_t *ies_callprocid = &IE_array[ie_index]; + ies_callprocid->criticality = E2N_Criticality_reject; + ies_callprocid->id = E2N_ProtocolIE_ID_id_RICcallProcessID; + ies_callprocid->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcallProcessID; + E2N_RICcallProcessID_t *riccallprocessid_ie = &ies_callprocid->value.choice.RICcallProcessID; + riccallprocessid_ie->buf = dinput.call_process_id; + riccallprocessid_ie->size = dinput.call_process_id_size; + ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index])); + + } + return true; + +}; + + + + +bool ric_control_request:: get_fields(E2N_InitiatingMessage_t * init_msg, ric_control_helper &dout) +{ + if (init_msg == 0){ + error_string = "Invalid reference for E2AP Control_Request message in get_fields"; + return false; + } + + + for(int edx = 0; edx < init_msg->value.choice.RICcontrolRequest.protocolIEs.list.count; edx++) { + E2N_RICcontrolRequest_IEs_t *memb_ptr = init_msg->value.choice.RICcontrolRequest.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICcontrolHeader): + dout.control_header = memb_ptr->value.choice.RICcontrolHeader.buf; + dout.control_header_size = memb_ptr->value.choice.RICcontrolHeader.size; + break; + + case (E2N_ProtocolIE_ID_id_RICcontrolMessage): + dout.control_msg = memb_ptr->value.choice.RICcontrolMessage.buf; + dout.control_msg_size = memb_ptr->value.choice.RICcontrolMessage.size; + break; + + case (E2N_ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + break; + + case (E2N_ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + case (E2N_ProtocolIE_ID_id_RICcontrolAckRequest): + dout.control_ack = memb_ptr->value.choice.RICcontrolAckRequest; + break; + + default: + break; + } + + } + + return true; + +} + +E2N_InitiatingMessage_t * ric_control_request::get_message(void) { + return initMsg; +} diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control.hpp new file mode 100644 index 0000000..57a2e2d --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control.hpp @@ -0,0 +1,66 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef E2AP_RIC_CONTROL_REQUEST_H_ +#define E2AP_RIC_CONTROL_REQUEST_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "e2ap_control_helper.hpp" + +#define NUM_CONTROL_REQUEST_IES 6 + + +class ric_control_request{ + +public: + ric_control_request(void); + ~ric_control_request(void); + + bool encode_e2ap_control_request(unsigned char *, size_t *, ric_control_helper &); + E2N_InitiatingMessage_t * get_message (void) ; + bool set_fields(E2N_InitiatingMessage_t *, ric_control_helper &); + bool get_fields(E2N_InitiatingMessage_t *, ric_control_helper &); + std::string get_error(void) const {return error_string ; }; +private: + + E2N_E2AP_PDU_t * e2ap_pdu_obj; + E2N_InitiatingMessage_t *initMsg; + E2N_RICcontrolRequest_IEs_t *IE_array; + std::string error_string; + + char errbuf[128]; + size_t errbuf_len = 128; +}; + + +#endif /* E2AP_RIC_CONTROL_REQUEST_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_helper.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_helper.hpp new file mode 100644 index 0000000..11f668c --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_helper.hpp @@ -0,0 +1,50 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef CONTROL_HELPER_H +#define CONTROL_HELPER_H + +// control and indication helper objects are very similar and can be merged into one +// currently leaving them as two distnict entities till final design becomes clear + +typedef struct ric_control_helper ric_control_helper; + +struct ric_control_helper{ + ric_control_helper(void):req_id(1), req_seq_no(1), func_id(0), action_id(1), control_ack(-1), cause(0), sub_cause(0), control_status(1), control_msg(0), control_msg_size(0), control_header(0), control_header_size(0), call_process_id(0), call_process_id_size(0){}; + + long int req_id, req_seq_no, func_id, action_id, control_ack, cause, sub_cause, control_status; + + unsigned char* control_msg; + size_t control_msg_size; + + unsigned char* control_header; + size_t control_header_size; + + unsigned char *call_process_id; + size_t call_process_id_size; + +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_response.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_response.cc new file mode 100644 index 0000000..23ef9ae --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_response.cc @@ -0,0 +1,415 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_control_response.c + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#include "e2ap_control_response.hpp" + +// Set up the initiating message and also allocate protocolIEs in container +// Note : this bypasses requirement to use ASN_SEQUENCE_ADD. We can directly +// assign pointers to the array in ProtocolIE. However, this also leaves us on the +// hook to manually clear the memory + +ric_control_response::ric_control_response(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2N_E2AP_PDU_t * )calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + successMsg = 0; + successMsg = (E2N_SuccessfulOutcome_t * )calloc(1, sizeof(E2N_SuccessfulOutcome_t)); + assert(successMsg != 0); + + successMsg->procedureCode = E2N_ProcedureCode_id_ricControl; + successMsg->criticality = E2N_Criticality_reject; + successMsg->value.present = E2N_SuccessfulOutcome__value_PR_RICcontrolAcknowledge; + + + unsuccessMsg = 0; + unsuccessMsg = (E2N_UnsuccessfulOutcome_t * )calloc(1, sizeof(E2N_UnsuccessfulOutcome_t)); + assert(unsuccessMsg != 0); + + + unsuccessMsg->procedureCode = E2N_ProcedureCode_id_ricControl; + unsuccessMsg->criticality = E2N_Criticality_reject; + unsuccessMsg->value.present = E2N_UnsuccessfulOutcome__value_PR_RICcontrolFailure; + + IE_array = 0; + IE_array = (E2N_RICcontrolAcknowledge_IEs_t *)calloc(NUM_CONTROL_ACKNOWLEDGE_IES, sizeof(E2N_RICcontrolAcknowledge_IEs_t)); + assert(IE_array != 0); + + E2N_RICcontrolAcknowledge_t * ric_acknowledge = &(successMsg->value.choice.RICcontrolAcknowledge); + for(int i = 0; i < NUM_CONTROL_ACKNOWLEDGE_IES; i++){ + ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), &(IE_array[i])); + } + + + IE_failure_array = 0; + IE_failure_array = (E2N_RICcontrolFailure_IEs_t *)calloc(NUM_CONTROL_FAILURE_IES, sizeof(E2N_RICcontrolFailure_IEs_t)); + assert(IE_failure_array != 0); + + E2N_RICcontrolFailure_t * ric_failure = &(unsuccessMsg->value.choice.RICcontrolFailure); + for(int i = 0; i < NUM_CONTROL_FAILURE_IES; i++){ + ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), &(IE_failure_array[i])); + } + +}; + + +// Clear assigned protocolIE list from RIC control_request IE container +ric_control_response::~ric_control_response(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing E2AP Control Response object memory"); + + E2N_RICcontrolAcknowledge_t * ric_acknowledge = &(successMsg->value.choice.RICcontrolAcknowledge); + for(int i = 0; i < ric_acknowledge->protocolIEs.list.size; i++){ + ric_acknowledge->protocolIEs.list.array[i] = 0; + } + if (ric_acknowledge->protocolIEs.list.size > 0){ + free(ric_acknowledge->protocolIEs.list.array); + ric_acknowledge->protocolIEs.list.array = 0; + ric_acknowledge->protocolIEs.list.count = 0; + } + + E2N_RICcontrolFailure_t * ric_failure = &(unsuccessMsg->value.choice.RICcontrolFailure); + for(int i = 0; i < ric_failure->protocolIEs.list.size; i++){ + ric_failure->protocolIEs.list.array[i] = 0; + } + if (ric_failure->protocolIEs.list.size > 0){ + free(ric_failure->protocolIEs.list.array); + ric_failure->protocolIEs.list.array = 0; + ric_failure->protocolIEs.list.count = 0; + } + + free(IE_array); + free(IE_failure_array); + free(successMsg); + free(unsuccessMsg); + + e2ap_pdu_obj->choice.initiatingMessage = 0; + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_initiatingMessage; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed E2AP Control Response object mempory"); +} + + +bool ric_control_response::encode_e2ap_control_response(unsigned char *buf, size_t *size, ric_control_helper & dinput, bool is_success){ + + bool res; + if (is_success){ + res = set_fields(successMsg, dinput); + } + else{ + res = set_fields(unsuccessMsg, dinput); + } + + if (!res){ + return false; + } + + + if (is_success){ + e2ap_pdu_obj->choice.successfulOutcome = successMsg; + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_successfulOutcome ; + } + else{ + e2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg; + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_unsuccessfulOutcome ; + + } + + //xer_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding control response. Reason = " + error_string; + return false; + } + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding E2AP Control response . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool ric_control_response::set_fields(E2N_SuccessfulOutcome_t *successMsg, ric_control_helper &dinput){ + unsigned int ie_index; + + if (successMsg == 0){ + error_string = "Invalid reference for E2AP Control Acknowledge in set_fields"; + return false; + } + + // for(i = 0; i < NUM_CONTROL_ACKNOWLEDGE_IES;i++){ + // memset(&(IE_array[i]), 0, sizeof(RICcontrolAcknowledge_IEs_t)); + // } + + //E2N_RICcontrolAcknowledge_t * ric_acknowledge = &(successMsg->value.choice.RICcontrolAcknowledge); + //ric_acknowledge->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICcontrolAcknowledge_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICcontrolAcknowledge_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = dinput.req_id; + ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + //ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_ricreq); + + ie_index = 1; + E2N_RICcontrolAcknowledge_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICcontrolAcknowledge_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = dinput.func_id; + //ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_ranfunc); + + // ie_index = 2; + // E2N_RICcontrolAcknowledge_IEs_t *ies_riccallprocessid = &IE_array[ie_index]; + // ies_riccallprocessid->criticality = E2N_Criticality_reject; + // ies_riccallprocessid->id = E2N_ProtocolIE_ID_id_RICcallProcessID; + // ies_riccallprocessid->value.present = E2N_RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID; + // RICcallProcessID_t *riccallprocessid_ie = &ies_riccallprocessid->value.choice.RICcallProcessID; + // riccallprocessid_ie->buf = dinput.call_process_id; + // riccallprocessid_ie->size = dinput.call_process_id_size; + // ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_riccallprocessid); + + ie_index = 2; + E2N_RICcontrolAcknowledge_IEs_t *ies_ric_cause = &IE_array[ie_index]; + ies_ric_cause->criticality = E2N_Criticality_reject; + ies_ric_cause->id = E2N_ProtocolIE_ID_id_RICcontrolStatus; + ies_ric_cause->value.present = E2N_RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus; + ies_ric_cause->value.choice.RICcontrolStatus = dinput.control_status; + //ASN_SEQUENCE_ADD(&(ric_acknowledge->protocolIEs), ies_ric_cause); + + return true; + +}; + +bool ric_control_response::set_fields(E2N_UnsuccessfulOutcome_t *unsuccessMsg, ric_control_helper &dinput){ + unsigned int ie_index; + + if (unsuccessMsg == 0){ + error_string = "Invalid reference for E2AP Control Failure in set_fields"; + return false; + } + + // for(i = 0; i < NUM_CONTROL_FAILURE_IES;i++){ + // memset(&(IE_failure_array[i]), 0, sizeof(RICcontrolFailure_IEs_t)); + // } + + //E2N_RICcontrolFailure_t * ric_failure = &(unsuccessMsg->value.choice.RICcontrolFailure); + //ric_failure->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICcontrolFailure_IEs_t *ies_ricreq = &IE_failure_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICcontrolFailure_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &(ies_ricreq->value.choice.RICrequestID); + ricrequest_ie->ricRequestorID = dinput.req_id; + ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + //ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_ricreq); + + ie_index = 1; + E2N_RICcontrolFailure_IEs_t *ies_ranfunc = &IE_failure_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICcontrolFailure_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &(ies_ranfunc->value.choice.RANfunctionID); + *ranfunction_ie = dinput.func_id; + //ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_ranfunc); + + // ie_index = 2; + // E2N_RICcontrolFailure_IEs_t *ies_riccallprocessid = &IE_failure_array[i]; + // ies_riccallprocessid->criticality = E2N_Criticality_reject; + // ies_riccallprocessid->id = E2N_ProtocolIE_ID_id_RICcallProcessID; + // ies_riccallprocessid->value.present = E2N_RICcontrolFailure_IEs__value_PR_RICcallProcessID; + // RICcallProcessID_t *riccallprocessid_ie = &(ies_riccallprocessid->value.choice.RICcallProcessID); + // riccallprocessid_ie->buf = dinput.call_process_id; + // riccallprocessid_ie->size = dinput.call_process_id_size; + // ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_riccallprocessid); + + ie_index = 2; + E2N_RICcontrolFailure_IEs_t *ies_ric_cause = &IE_failure_array[ie_index]; + ies_ric_cause->criticality = E2N_Criticality_ignore; + ies_ric_cause->id = E2N_ProtocolIE_ID_id_RICcause; + ies_ric_cause->value.present = E2N_RICcontrolFailure_IEs__value_PR_RICcause; + E2N_RICcause_t * ric_cause = &(ies_ric_cause->value.choice.RICcause); + ric_cause->present = (E2N_RICcause_PR)dinput.cause; + + switch(dinput.cause){ + case E2N_RICcause_PR_radioNetwork: + ric_cause->choice.radioNetwork = dinput.sub_cause; + break; + case E2N_RICcause_PR_transport: + ric_cause->choice.transport = dinput.sub_cause; + break; + case E2N_RICcause_PR_protocol: + ric_cause->choice.protocol= dinput.sub_cause; + break; + case E2N_RICcause_PR_misc: + ric_cause->choice.misc = dinput.sub_cause; + break; + case E2N_RICcause_PR_ric: + ric_cause->choice.ric = dinput.sub_cause; + break; + default: + std::cout <<"Error ! Illegal cause enum" << dinput.cause << std::endl; + return false; + } + + //ASN_SEQUENCE_ADD(&(ric_failure->protocolIEs), ies_ric_cause); + return true; + +}; + + + + +bool ric_control_response:: get_fields(E2N_SuccessfulOutcome_t * success_msg, ric_control_helper &dout) +{ + if (success_msg == 0){ + error_string = "Invalid reference for E2AP Control Acknowledge message in get_fields"; + return false; + } + + + for(int edx = 0; edx < success_msg->value.choice.RICcontrolAcknowledge.protocolIEs.list.count; edx++) { + E2N_RICcontrolAcknowledge_IEs_t *memb_ptr = success_msg->value.choice.RICcontrolAcknowledge.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + + case (E2N_ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + break; + + case (E2N_ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + case (E2N_ProtocolIE_ID_id_RICcause): + dout.control_status = memb_ptr->value.choice.RICcontrolStatus; + break; + + } + + } + + return true; + +} + + +bool ric_control_response:: get_fields(E2N_UnsuccessfulOutcome_t * unsuccess_msg, ric_control_helper &dout) +{ + if (unsuccess_msg == 0){ + error_string = "Invalid reference for E2AP Control Failure message in get_fields"; + return false; + } + + + for(int edx = 0; edx < unsuccess_msg->value.choice.RICcontrolFailure.protocolIEs.list.count; edx++) { + E2N_RICcontrolFailure_IEs_t *memb_ptr = unsuccess_msg->value.choice.RICcontrolFailure.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + + case (E2N_ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + break; + + case (E2N_ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + + case (E2N_ProtocolIE_ID_id_RICcause): + dout.cause = memb_ptr->value.choice.RICcause.present; + switch(dout.cause){ + case E2N_RICcause_PR_radioNetwork : + dout.sub_cause = memb_ptr->value.choice.RICcause.choice.radioNetwork; + break; + + case E2N_RICcause_PR_transport : + dout.sub_cause = memb_ptr->value.choice.RICcause.choice.transport; + break; + + case E2N_RICcause_PR_protocol : + dout.sub_cause = memb_ptr->value.choice.RICcause.choice.protocol; + break; + + case E2N_RICcause_PR_misc : + dout.sub_cause = memb_ptr->value.choice.RICcause.choice.misc; + break; + + case E2N_RICcause_PR_ric : + dout.sub_cause = memb_ptr->value.choice.RICcause.choice.ric; + break; + + default: + dout.sub_cause = -1; + break; + } + + default: + break; + } + + } + + return true; + +} + diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_response.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_response.hpp new file mode 100644 index 0000000..6880e48 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_control_response.hpp @@ -0,0 +1,79 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef E2AP_RIC_CONTROL_RESPONSE_H_ +#define E2AP_RIC_CONTROL_RESPONSE_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "e2ap_control_helper.hpp" + +#define NUM_CONTROL_ACKNOWLEDGE_IES 3 +#define NUM_CONTROL_FAILURE_IES 3 + + +class ric_control_response{ + +public: + ric_control_response(void); + ~ric_control_response(void); + + bool encode_e2ap_control_response(unsigned char *, size_t *, ric_control_helper &, bool); + + + bool set_fields(E2N_SuccessfulOutcome_t *, ric_control_helper &); + bool get_fields(E2N_SuccessfulOutcome_t *, ric_control_helper &); + + bool set_fields(E2N_UnsuccessfulOutcome_t *, ric_control_helper &); + bool get_fields(E2N_UnsuccessfulOutcome_t *, ric_control_helper &); + + std::string get_error(void) const {return error_string ; }; + +private: + + E2N_E2AP_PDU_t * e2ap_pdu_obj; + E2N_SuccessfulOutcome_t * successMsg; + E2N_UnsuccessfulOutcome_t * unsuccessMsg; + + E2N_RICcontrolAcknowledge_IEs_t *IE_array; + E2N_RICcontrolFailure_IEs_t *IE_failure_array; + + std::string error_string; + + char errbuf[128]; + size_t errbuf_len = 128; +}; + + +#endif /* E2AP_RIC_CONTROL_RESPONSE_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication.cc new file mode 100644 index 0000000..33b2095 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication.cc @@ -0,0 +1,283 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.c + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#include "e2ap_indication.hpp" + +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) +ric_indication::ric_indication(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2N_E2AP_PDU_t * )calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = 0; + initMsg = (E2N_InitiatingMessage_t * )calloc(1, sizeof(E2N_InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = 0; + IE_array = (E2N_RICindication_IEs_t *)calloc(NUM_INDICATION_IES, sizeof(E2N_RICindication_IEs_t)); + assert(IE_array != 0); + + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_initiatingMessage; + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +ric_indication::~ric_indication(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing E2AP Indication object memory"); + E2N_RICindication_t *ricIndication = &(initMsg->value.choice.RICindication); + for(int i = 0; i < ricIndication->protocolIEs.list.size; i++){ + ricIndication->protocolIEs.list.array[i] = 0; + } + if (ricIndication->protocolIEs.list.size > 0){ + free(ricIndication->protocolIEs.list.array); + ricIndication->protocolIEs.list.array = 0; + ricIndication->protocolIEs.list.count = 0; + ricIndication->protocolIEs.list.size = 0; + } + + free(IE_array); + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed E2AP Indication object mempory"); +} + + +bool ric_indication::encode_e2ap_indication(unsigned char *buf, size_t *size, ric_indication_helper & dinput){ + + initMsg->procedureCode = E2N_ProcedureCode_id_ricIndication; + initMsg->criticality = E2N_Criticality_ignore; + initMsg->value.present = E2N_InitiatingMessage__value_PR_RICindication; + + bool res; + asn_enc_rval_t retval; + + res = set_fields(initMsg, dinput); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + error_string = "Error encoding E2AP Indication message. Reason = " + error_string; + return false; + } + + // std::cout <<"Constraint check ok ...." << std::endl; + // xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding E2AP Indication . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool ric_indication::set_fields(E2N_InitiatingMessage_t *initMsg, ric_indication_helper &dinput){ + unsigned int ie_index; + + if (initMsg == 0){ + error_string = "Invalid reference for E2AP Indication message in set_fields"; + return false; + } + + + E2N_RICindication_t * ric_indication = &(initMsg->value.choice.RICindication); + ric_indication->protocolIEs.list.count = 0; + + ie_index = 0; + + E2N_RICindication_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICindication_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = dinput.req_id; + ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 1; + E2N_RICindication_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICindication_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = dinput.func_id; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 2; + E2N_RICindication_IEs_t *ies_actid = &IE_array[ie_index]; + ies_actid->criticality = E2N_Criticality_reject; + ies_actid->id = E2N_ProtocolIE_ID_id_RICactionID; + ies_actid->value.present = E2N_RICindication_IEs__value_PR_RICactionID; + E2N_RICactionID_t *ricaction_ie = &ies_actid->value.choice.RICactionID; + *ricaction_ie = dinput.action_id; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 3; + E2N_RICindication_IEs_t *ies_ricsn = &IE_array[ie_index]; + ies_ricsn->criticality = E2N_Criticality_reject; + ies_ricsn->id = E2N_ProtocolIE_ID_id_RICindicationSN; + ies_ricsn->value.present = E2N_RICindication_IEs__value_PR_RICindicationSN; + E2N_RICindicationSN_t *ricsn_ie = &ies_ricsn->value.choice.RICindicationSN; + *ricsn_ie = dinput.indication_sn; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + + ie_index = 4; + E2N_RICindication_IEs_t *ies_indtyp = &IE_array[ie_index]; + ies_indtyp->criticality = E2N_Criticality_reject; + ies_indtyp->id = E2N_ProtocolIE_ID_id_RICindicationType; + ies_indtyp->value.present = E2N_RICindication_IEs__value_PR_RICindicationType; + E2N_RICindicationType_t *rictype_ie = &ies_indtyp->value.choice.RICindicationType; + *rictype_ie = dinput.indication_type; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 5; + E2N_RICindication_IEs_t *ies_richead = &IE_array[ie_index]; + ies_richead->criticality = E2N_Criticality_reject; + ies_richead->id = E2N_ProtocolIE_ID_id_RICindicationHeader; + ies_richead->value.present = E2N_RICindication_IEs__value_PR_RICindicationHeader; + E2N_RICindicationHeader_t *richeader_ie = &ies_richead->value.choice.RICindicationHeader; + richeader_ie->buf = dinput.indication_header; + richeader_ie->size = dinput.indication_header_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + ie_index = 6; + E2N_RICindication_IEs_t *ies_indmsg = &IE_array[ie_index]; + ies_indmsg->criticality = E2N_Criticality_reject; + ies_indmsg->id = E2N_ProtocolIE_ID_id_RICindicationMessage; + ies_indmsg->value.present = E2N_RICindication_IEs__value_PR_RICindicationMessage; + E2N_RICindicationMessage_t *ricmsg_ie = &ies_indmsg->value.choice.RICindicationMessage; + ricmsg_ie->buf = dinput.indication_msg; + ricmsg_ie->size = dinput.indication_msg_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + + + // optional call process id .. + if (dinput.call_process_id_size > 0){ + ie_index = 7; + E2N_RICindication_IEs_t *ies_ind_callprocessid = &IE_array[ie_index]; + ies_ind_callprocessid->criticality = E2N_Criticality_reject; + ies_ind_callprocessid->id = E2N_ProtocolIE_ID_id_RICcallProcessID; + ies_ind_callprocessid->value.present = E2N_RICindication_IEs__value_PR_RICcallProcessID; + E2N_RICcallProcessID_t *riccallprocessid_ie = &ies_ind_callprocessid->value.choice.RICcallProcessID; + riccallprocessid_ie->buf = dinput.indication_msg; + riccallprocessid_ie->size = dinput.indication_msg_size; + ASN_SEQUENCE_ADD(&(ric_indication->protocolIEs), &(IE_array[ie_index])); + } + + return true; + +}; + + + + +bool ric_indication:: get_fields(E2N_InitiatingMessage_t * init_msg, ric_indication_helper &dout) +{ + if (init_msg == 0){ + error_string = "Invalid reference for E2AP Indication message in get_fields"; + return false; + } + + + for(int edx = 0; edx < init_msg->value.choice.RICindication.protocolIEs.list.count; edx++) { + E2N_RICindication_IEs_t *memb_ptr = init_msg->value.choice.RICindication.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICindicationHeader): + dout.indication_header = memb_ptr->value.choice.RICindicationHeader.buf; + dout.indication_header_size = memb_ptr->value.choice.RICindicationHeader.size; + break; + + case (E2N_ProtocolIE_ID_id_RICindicationMessage): + dout.indication_msg = memb_ptr->value.choice.RICindicationMessage.buf; + dout.indication_msg_size = memb_ptr->value.choice.RICindicationMessage.size; + break; + + case (E2N_ProtocolIE_ID_id_RICrequestID): + dout.req_id = memb_ptr->value.choice.RICrequestID.ricRequestorID; + dout.req_seq_no = memb_ptr->value.choice.RICrequestID.ricRequestSequenceNumber; + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + dout.func_id = memb_ptr->value.choice.RANfunctionID; + break; + + case (E2N_ProtocolIE_ID_id_RICindicationSN): + dout.indication_sn = memb_ptr->value.choice.RICindicationSN; + break; + + case (E2N_ProtocolIE_ID_id_RICindicationType): + dout.indication_type = memb_ptr->value.choice.RICindicationType; + break; + + case (E2N_ProtocolIE_ID_id_RICactionID): + dout.action_id = memb_ptr->value.choice.RICactionID; + break; + + case (E2N_ProtocolIE_ID_id_RICcallProcessID): + dout.call_process_id = memb_ptr->value.choice.RICcallProcessID.buf; + dout.call_process_id_size = memb_ptr->value.choice.RICcallProcessID.size; + + default: + break; + } + + } + + return true; + +} + +E2N_InitiatingMessage_t * ric_indication::get_message(void) { + return initMsg; +} diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication.hpp new file mode 100644 index 0000000..af43086 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication.hpp @@ -0,0 +1,67 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + +#ifndef E2AP_RIC_INDICATION_H_ +#define E2AP_RIC_INDICATION_H_ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include "e2ap_indication_helper.hpp" + +#define NUM_INDICATION_IES 8 + + + +class ric_indication{ + +public: + ric_indication(void); + ~ric_indication(void); + + bool encode_e2ap_indication(unsigned char *, size_t *, ric_indication_helper &); + E2N_InitiatingMessage_t * get_message (void) ; + bool set_fields(E2N_InitiatingMessage_t *, ric_indication_helper &); + bool get_fields(E2N_InitiatingMessage_t *, ric_indication_helper &); + std::string get_error(void) const {return error_string ; }; + +private: + + E2N_E2AP_PDU_t * e2ap_pdu_obj; + E2N_InitiatingMessage_t *initMsg; + E2N_RICindication_IEs_t *IE_array; + std::string error_string; + char errbuf[128]; + size_t errbuf_len = 128; +}; + + +#endif /* E2AP_RIC_INDICATION_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication_helper.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication_helper.hpp new file mode 100644 index 0000000..276a2a7 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/e2ap_indication_helper.hpp @@ -0,0 +1,47 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * ric_indication.h + * + * Created on: Jul 11, 2019 + * Author: sjana, Ashwin Sridharan + */ + + +#ifndef E2AP_INDICATION_HELPER_ +#define E2AP_INDICATION_HELPER_ + +typedef struct ric_indication_helper ric_indication_helper; + +struct ric_indication_helper{ + ric_indication_helper(void) : req_id(1), req_seq_no(1), func_id(0), action_id(1), indication_type(0), indication_sn(0), indication_msg(0), indication_msg_size(0), indication_header(0), indication_header_size(0), call_process_id(0), call_process_id_size(0) {}; + long int req_id, req_seq_no, func_id, action_id, indication_type, indication_sn; + + unsigned char* indication_msg; + size_t indication_msg_size; + + unsigned char* indication_header; + size_t indication_header_size; + + unsigned char *call_process_id; + size_t call_process_id_size; + +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/generic_helpers.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/generic_helpers.hpp new file mode 100644 index 0000000..32c019a --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/generic_helpers.hpp @@ -0,0 +1,49 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#pragma once +#ifndef GENERIC_HELPERS +#define GENERIC_HELPERS + +#include + +/* Utilities */ + +class octet_helper { + +public: + octet_helper(void):_ref(NULL), _size(0){}; + octet_helper(const void *ref, int size):_ref(ref), _size(size){}; + void set_ref(const void *ref){ + _ref = ref; + } + + void set_size(size_t size){ + _size = size; + } + + const void * get_ref(void){return _ref ; }; + size_t get_size(void) const {return _size ; } ; + +private: + const void *_ref; + size_t _size; +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/response_helper.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/response_helper.hpp new file mode 100644 index 0000000..b370ff2 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/response_helper.hpp @@ -0,0 +1,181 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_RESPONSE_HELPER_ +#define S_RESPONSE_HELPER_ + +#include +#include + +/* Simple structure to store action for RICaction of the Subscription response based on E2 v0.31 */ +struct ActionResponse { +public: + ActionResponse(int id): _is_admit(true), _id(id), _cause(-1), _sub_cause(-1){}; + ActionResponse(int id, int cause, int sub_cause): _is_admit(false), _id(id), _cause(cause), _sub_cause(sub_cause){}; + + int get_id() const{ + return _id; + }; + + int get_cause() const{ + return _cause; + }; + + int get_sub_cause() const{ + return _sub_cause; + }; + + bool is_admitted(void){ + return _is_admit; + }; + +private: + + bool _is_admit; + int _id, _cause, _sub_cause; + +}; + + +struct subscription_response_helper { + +public: + + using action_t = std::vector; + + subscription_response_helper(void){ + _action_admitted_ref = std::make_unique(); + _action_not_admitted_ref = std::make_unique(); + + }; + + // copy operator + subscription_response_helper(const subscription_response_helper &he ){ + _action_admitted_ref = std::make_unique(); + _action_not_admitted_ref = std::make_unique(); + + _req_id = he.get_request_id(); + _req_seq_no = he.get_req_seq(); + _func_id = he.get_function_id(); + + // Take care of the actions + for (auto const & e: *(he.get_admitted_list())){ + add_action(e.get_id()); + } + + for(auto const & e: *(he.get_not_admitted_list())){ + add_action(e.get_id(), e.get_cause(), e.get_sub_cause()); + }; + } + + + // assignment operator + void operator=(const subscription_response_helper & he){ + _action_admitted_ref = std::make_unique(); + _action_not_admitted_ref = std::make_unique(); + + _req_id = he.get_request_id(); + _req_seq_no = he.get_req_seq(); + _func_id = he.get_function_id(); + + + // Take care of the actions + for (auto const & e: *(he.get_admitted_list())){ + add_action(e.get_id()); + } + + for(auto const & e: *(he.get_not_admitted_list())){ + add_action(e.get_id(), e.get_cause(), e.get_sub_cause()); + }; + + } + + action_t * get_admitted_list (void ) const {return _action_admitted_ref.get();}; + action_t * get_not_admitted_list (void ) const{return _action_not_admitted_ref.get();}; + + void set_request(int id, int seq_no){ + _req_id = id; + _req_seq_no = seq_no; + + }; + + void clear(void){ + _action_admitted_ref.get()->clear(); + _action_not_admitted_ref.get()->clear(); + } + + + void set_function_id(int id){ + _func_id = id; + }; + + void add_action(int id){ + ActionResponse a(id) ; + _action_admitted_ref.get()->push_back(a); + }; + + void add_action(int id, int cause, int sub_cause){ + ActionResponse a (id, cause, sub_cause); + _action_not_admitted_ref.get()->push_back(a); + }; + + + int get_request_id(void) const{ + return _req_id; + } + + int get_req_seq(void) const{ + return _req_seq_no; + } + + int get_function_id(void) const{ + return _func_id; + } + + std::string to_string(void){ + std::string Info; + Info += "Request ID = " + std::to_string(_req_id) + "\n"; + Info += "Request Sequence No = " + std::to_string(_req_seq_no) + "\n"; + Info += "RAN Function ID = " + std::to_string(_func_id) + "\n"; + Info += "Actions Admitted =\n"; + int i = 0; + for(auto & e: *(_action_admitted_ref)){ + Info += std::to_string(i) + ": ID=" + std::to_string(e.get_id()) + "\n"; + i++; + } + Info += "Actions Not Admitted =\n"; + i = 0; + for(auto & e: *(_action_not_admitted_ref)){ + Info += std::to_string(i) + ": ID=" + std::to_string(e.get_id()) + ": Cause =" + std::to_string(e.get_cause()) + ": Sub-Cause=" + std::to_string(e.get_sub_cause()) + "\n"; + i++; + } + + return Info; + } + +private: + int _req_id, _req_seq_no, _func_id; + std::unique_ptr _action_admitted_ref; + std::unique_ptr _action_not_admitted_ref; + +}; + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_request.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_request.cc new file mode 100644 index 0000000..d103d2e --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_request.cc @@ -0,0 +1,180 @@ + + +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_delete_request.hpp" + +subscription_delete::subscription_delete(void){ + + _name = "default"; + + e2ap_pdu_obj = (E2N_E2AP_PDU_t * )calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = (E2N_InitiatingMessage_t * )calloc(1, sizeof(E2N_InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = (E2N_RICsubscriptionDeleteRequest_IEs_t *)calloc(NUM_SUBSCRIPTION_DELETE_IES, sizeof(E2N_RICsubscriptionDeleteRequest_IEs_t)); + assert(IE_array != 0); + + E2N_RICsubscriptionDeleteRequest_t * subscription_delete = &(initMsg->value.choice.RICsubscriptionDeleteRequest); + for(int i = 0; i < NUM_SUBSCRIPTION_DELETE_IES; i++){ + ASN_SEQUENCE_ADD(&subscription_delete->protocolIEs, &(IE_array[i])); + } + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_delete::~subscription_delete(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription delete request object memory"); + E2N_RICsubscriptionDeleteRequest_t * subscription_delete = &(initMsg->value.choice.RICsubscriptionDeleteRequest); + + for(int i = 0; i < subscription_delete->protocolIEs.list.size; i++){ + subscription_delete->protocolIEs.list.array[i] = 0; + } + + if (subscription_delete->protocolIEs.list.size > 0){ + free(subscription_delete->protocolIEs.list.array); + subscription_delete->protocolIEs.list.count = 0; + subscription_delete->protocolIEs.list.size = 0; + subscription_delete->protocolIEs.list.array = 0; + } + + free(IE_array); + free(initMsg); + e2ap_pdu_obj->choice.initiatingMessage = 0; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed subscription delete request object memory"); + + +}; + + +bool subscription_delete::encode_e2ap_subscription(unsigned char *buf, size_t *size, subscription_helper &dinput){ + + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_initiatingMessage; + set_fields( dinput); + + initMsg->procedureCode = E2N_ProcedureCode_id_ricSubscriptionDelete; + initMsg->criticality = E2N_Criticality_reject; + initMsg->value.present = E2N_InitiatingMessage__value_PR_RICsubscriptionDeleteRequest; + + //xer_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding subscription delete request. Reason = " + error_string; + return false; + } + + asn_enc_rval_t res = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(res.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding Subscription Delete Request. Reason = " + error_string; + return false; + } + else { + if(*size < res.encoded){ + std::stringstream ss; + ss <<"Error encoding Subscription Delete Request . Reason = encoded pdu size " << res.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + res.encoded = -1; + return false; + } + } + + *size = res.encoded; + return true; + +} + + +bool subscription_delete::set_fields( subscription_helper &helper){ + unsigned int ie_index; + + ie_index = 0; + E2N_RICsubscriptionDeleteRequest_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + + + + ie_index = 1; + E2N_RICsubscriptionDeleteRequest_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + + + return true; +}; + + + + +bool subscription_delete:: get_fields(E2N_InitiatingMessage_t * init_msg, subscription_helper & dout) +{ + + if (init_msg == 0){ + error_string = "Invalid reference for initiating message for get string"; + return false; + } + + E2N_RICrequestID_t *requestid; + E2N_RANfunctionID_t * ranfunctionid; + + for(int edx = 0; edx < init_msg->value.choice.RICsubscriptionDeleteRequest.protocolIEs.list.count; edx++) { + E2N_RICsubscriptionDeleteRequest_IEs_t *memb_ptr = init_msg->value.choice.RICsubscriptionDeleteRequest.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + } + + //asn_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2pdu); + } + + return true; +} + + + diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_request.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_request.hpp new file mode 100644 index 0000000..e3c1d4e --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_request.hpp @@ -0,0 +1,67 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_DELETE_ +#define S_DELETE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "subscription_helper.hpp" + +#define NUM_SUBSCRIPTION_DELETE_IES 2 + +class subscription_delete{ +public: + + subscription_delete(void); + ~subscription_delete(void); + + bool encode_e2ap_subscription(unsigned char *, size_t *, subscription_helper &); + bool set_fields(subscription_helper &); + bool get_fields(E2N_InitiatingMessage_t *, subscription_helper &); + + std::string get_error(void) const { + return error_string ; + } + +private: + + E2N_InitiatingMessage_t *initMsg; + E2N_E2AP_PDU_t * e2ap_pdu_obj; + + E2N_RICsubscriptionDeleteRequest_IEs_t * IE_array; + + + char errbuf[128]; + size_t errbuf_len = 128; + std::string _name; + std::string error_string; +}; + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_response.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_response.cc new file mode 100644 index 0000000..c1c166c --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_response.cc @@ -0,0 +1,292 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_delete_response.hpp" + +/* The xAPP need only worry about the get_fields from a response, since it does +not generate a response. Generating response however is included to support testing. +*/ + + +// Primarly for generation +subscription_delete_response::subscription_delete_response(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2N_E2AP_PDU_t *)calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + successMsg = 0; + successMsg = (E2N_SuccessfulOutcome_t *)calloc(1, sizeof(E2N_SuccessfulOutcome_t)); + assert(successMsg != 0); + + unsuccessMsg = 0; + unsuccessMsg = (E2N_UnsuccessfulOutcome_t *)calloc(1, sizeof(E2N_UnsuccessfulOutcome_t)); + assert(unsuccessMsg != 0); + + IE_array = 0; + IE_array = (E2N_RICsubscriptionDeleteResponse_IEs_t *)calloc(NUM_SUBSCRIPTION_DELETE_RESPONSE_IES, sizeof(E2N_RICsubscriptionDeleteResponse_IEs_t)); + assert(IE_array != 0); + + IE_Failure_array = 0; + IE_Failure_array = (E2N_RICsubscriptionDeleteFailure_IEs_t *)calloc(NUM_SUBSCRIPTION_DELETE_FAILURE_IES, sizeof(E2N_RICsubscriptionDeleteFailure_IEs_t)); + assert(IE_Failure_array != 0); + + + +}; + + + +// Clear assigned protocolIE list from E2N_RIC indication IE container +subscription_delete_response::~subscription_delete_response(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription delete response memory"); + E2N_RICsubscriptionDeleteResponse_t * ric_subscription_delete_response = &(successMsg->value.choice.RICsubscriptionDeleteResponse); + + for(unsigned int i = 0; i < ric_subscription_delete_response->protocolIEs.list.size ; i++){ + ric_subscription_delete_response->protocolIEs.list.array[i] = 0; + } + + + E2N_RICsubscriptionDeleteFailure_t * ric_subscription_failure = &(unsuccessMsg->value.choice.RICsubscriptionDeleteFailure); + for(unsigned int i = 0; i < ric_subscription_failure->protocolIEs.list.size; i++){ + ric_subscription_failure->protocolIEs.list.array[i] = 0; + } + + free(IE_array); + free(IE_Failure_array); + + ASN_STRUCT_FREE(asn_DEF_E2N_SuccessfulOutcome, successMsg); + + ASN_STRUCT_FREE(asn_DEF_E2N_UnsuccessfulOutcome, unsuccessMsg); + + e2ap_pdu_obj->choice.successfulOutcome = NULL; + e2ap_pdu_obj->choice.unsuccessfulOutcome = NULL; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed subscription delete response memory"); + +}; + + +bool subscription_delete_response::encode_e2ap_subscription_delete_response(unsigned char *buf, size_t *size, subscription_response_helper &dinput, bool is_success){ + + bool res; + + if(is_success){ + res = set_fields(successMsg, dinput); + if (!res){ + return false; + } + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_successfulOutcome; + e2ap_pdu_obj->choice.successfulOutcome = successMsg; + } + else{ + res = set_fields(unsuccessMsg, dinput); + if(! res){ + return false; + } + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_unsuccessfulOutcome; + e2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg; + } + + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding subcription delete response. Reason = " + error_string; + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding Subscription Delete Response . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + retval.encoded = -1; + return false; + } + } + + *size = retval.encoded; + return true; + +} + +bool subscription_delete_response::set_fields(E2N_SuccessfulOutcome_t *success, subscription_response_helper &helper){ + + if (success == 0){ + error_string = "Invalid reference to success message in set fields subscription delete response"; + return false; + } + + unsigned int ie_index; + + success->procedureCode = E2N_ProcedureCode_id_ricSubscriptionDelete; + success->criticality = E2N_Criticality_reject; + success->value.present = E2N_SuccessfulOutcome__value_PR_RICsubscriptionDeleteResponse; + + E2N_RICsubscriptionDeleteResponse_t * subscription_delete_response = &(success->value.choice.RICsubscriptionDeleteResponse); + subscription_delete_response->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICsubscriptionDeleteResponse_IEs_t *ies_ricreq = &IE_array[ie_index]; + + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&subscription_delete_response->protocolIEs, ies_ricreq); + + + ie_index = 1; + E2N_RICsubscriptionDeleteResponse_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&subscription_delete_response->protocolIEs, ies_ranfunc); + + return true; + + +} + +bool subscription_delete_response:: get_fields(E2N_SuccessfulOutcome_t * success_msg, subscription_response_helper & dout) +{ + + if (success_msg == 0){ + error_string = "Invalid reference to success message inn get fields subscription delete response"; + return false; + } + + E2N_RICrequestID_t *requestid; + E2N_RANfunctionID_t * ranfunctionid; + + for(int edx = 0; edx < success_msg->value.choice.RICsubscriptionDeleteResponse.protocolIEs.list.count; edx++) { + E2N_RICsubscriptionDeleteResponse_IEs_t *memb_ptr = success_msg->value.choice.RICsubscriptionDeleteResponse.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + } + + } + + return true; + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + +bool subscription_delete_response::set_fields(E2N_UnsuccessfulOutcome_t *unsuccess, subscription_response_helper &helper){ + + if (unsuccess == 0){ + error_string = "Invalid reference to unsuccess message in set fields subscription delete response"; + return false; + } + + unsigned int ie_index; + + unsuccess->procedureCode = E2N_ProcedureCode_id_ricSubscriptionDelete; + unsuccess->criticality = E2N_Criticality_reject; + unsuccess->value.present = E2N_UnsuccessfulOutcome__value_PR_RICsubscriptionDeleteFailure; + + E2N_RICsubscriptionDeleteFailure_t * ric_subscription_failure = &(unsuccess->value.choice.RICsubscriptionDeleteFailure); + ric_subscription_failure->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICsubscriptionDeleteFailure_IEs_t *ies_ricreq = &IE_Failure_array[ie_index]; + + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, ies_ricreq); + + ie_index = 1; + E2N_RICsubscriptionDeleteFailure_IEs_t *ies_ranfunc = &IE_Failure_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, ies_ranfunc); + + + return true; + +} + +bool subscription_delete_response:: get_fields(E2N_UnsuccessfulOutcome_t * unsuccess_msg, subscription_response_helper & dout) +{ + + if (unsuccess_msg == 0){ + error_string = "Invalid reference to unsuccess message in get fields subscription delete response"; + return false; + } + + E2N_RICrequestID_t *requestid; + E2N_RANfunctionID_t * ranfunctionid; + + for(int edx = 0; edx < unsuccess_msg->value.choice.RICsubscriptionDeleteFailure.protocolIEs.list.count; edx++) { + E2N_RICsubscriptionDeleteFailure_IEs_t *memb_ptr = unsuccess_msg->value.choice.RICsubscriptionDeleteFailure.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + } + + } + + return true; + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + + diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_response.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_response.hpp new file mode 100644 index 0000000..d9581e4 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_delete_response.hpp @@ -0,0 +1,79 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_DEL_RESPONSE_ +#define S_DEL_RESPONSE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "response_helper.hpp" + +#define NUM_SUBSCRIPTION_DELETE_RESPONSE_IES 2 +#define NUM_SUBSCRIPTION_DELETE_FAILURE_IES 2 + +class subscription_delete_response { +public: + + subscription_delete_response(void); + ~subscription_delete_response(void); + + bool encode_e2ap_subscription_delete_response(unsigned char *, size_t *, subscription_response_helper &, bool); + bool set_fields(E2N_SuccessfulOutcome_t *, subscription_response_helper &); + bool get_fields(E2N_SuccessfulOutcome_t *, subscription_response_helper &); + + bool set_fields(E2N_UnsuccessfulOutcome_t *, subscription_response_helper &); + bool get_fields(E2N_UnsuccessfulOutcome_t *, subscription_response_helper &); + + std::string get_error_string(void) const { + return error_string; + } + +private: + + E2N_E2AP_PDU_t * e2ap_pdu_obj; + E2N_SuccessfulOutcome_t * successMsg; + E2N_UnsuccessfulOutcome_t * unsuccessMsg; + + + E2N_RICsubscriptionDeleteResponse_IEs_t *IE_array; + E2N_RICsubscriptionDeleteFailure_IEs_t *IE_Failure_array; + + + char errbuf[128]; + size_t errbuf_len = 128; + std::string error_string; + +}; + + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_helper.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_helper.hpp new file mode 100644 index 0000000..ae0c5a5 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_helper.hpp @@ -0,0 +1,196 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#ifndef SUB_HELPER_ +#define SUB_HELPER_ + +/* + Simple structure to store action related information based on E2 v0.22 + Used for subscription request, response etc + + ricActionID RICactionID, + ricActionType RICactionType, + ricActionDefinition RICactionDefinition OPTIONAL, + ricSubsequentAction RICsubsequentAction OPTIONAL, + ricCause +*/ + +#include +#include +#include + +#include "generic_helpers.hpp" + + +// Note : if no action definition specified, octet length of action definition is NULL +// If no subsequent action specified, default is subsequent_action = 0, time to wait is 0 +struct Action { + +public: + + Action(int id, int type): _is_def(false), _is_subs_act(false), _id(id), _type(type), _next_action(0), _wait(0){}; + Action(int id, int type, const void *def, size_t def_size, int next, int wait): _is_def(false), _is_subs_act(false), _id(id), _type(type){ + + if (def_size > 0){ + _is_def = true; + _action_definition.set_ref(def); + _action_definition.set_size(def_size); + } + + if(next >= 0 && wait >= 0){ + _is_subs_act = true; + _next_action = next; + _wait = wait; + } + }; + + + int get_id() const{ + return _id; + } + + int get_type() const { + return _type; + } + + + const void * get_definition(void ) { + return _action_definition.get_ref(); + } + + int get_definition_size(void) const { + return _action_definition.get_size(); + }; + + + int get_subsequent_action() const { + return _next_action; + }; + + int get_wait() const { + return _wait; + } + + bool is_definition() const{ + + return _is_def; + } + + bool is_subsequent_action() const{ + return _is_subs_act; + } + +private: + + bool _is_def; + bool _is_subs_act; + int _id, _type, _next_action, _wait, _cause, _sub_cause; + bool _is_admit; + octet_helper _action_definition; + +}; + + +/* + Helper class that stores subscription data +*/ + + +struct subscription_helper { + +public: + + using action_t = std::vector; + + subscription_helper(){ + _action_ref = std::make_unique(); + curr_index = 0; + }; + + action_t * get_list() const {return _action_ref.get();}; + + void clear(void){ + _action_ref.get()->clear(); + } + + void set_request(int id, int seq_no){ + _req_id = id; + _req_seq_no = seq_no; + + }; + + void set_function_id(int id){ + _func_id = id; + }; + + void set_event_def(const void *ref, size_t size){ + _event_def.set_ref(ref); + _event_def.set_size(size); + }; + + + void add_action(int id, int type){ + Action a(id, type) ; + _action_ref.get()->push_back(a); + }; + + void add_action(int id, int type, std::string action_def, int next_action, int wait_time){ + Action a (id, type, action_def.c_str(), action_def.length(), next_action, wait_time); + _action_ref.get()->push_back(a); + }; + + + int get_request_id(void) const{ + return _req_id; + } + + int get_req_seq(void) const { + return _req_seq_no; + } + + int get_function_id(void) const{ + return _func_id; + } + + const void * get_event_def(void) { + return _event_def.get_ref(); + } + + int get_event_def_size(void) const { + return _event_def.get_size(); + } + + void print_sub_info(void){ + std::cout <<"Request ID = " << _req_id << std::endl; + std::cout <<"Request Sequence Number = " << _req_seq_no << std::endl; + std::cout <<"RAN Function ID = " << _func_id << std::endl; + for(auto const & e: *(_action_ref.get())){ + std::cout <<"Action ID = " << e.get_id() << " Action Type = " << e.get_type() << std::endl; + } + }; + +private: + + std::unique_ptr _action_ref; + int curr_index; + int _req_id, _req_seq_no, _func_id; + octet_helper _event_def; +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_request.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_request.cc new file mode 100644 index 0000000..9b2f897 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_request.cc @@ -0,0 +1,308 @@ + + +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_request.hpp" + + +// Set up memory allocations for each IE for encoding +// We are responsible for memory management for each IE for encoding +// Hence destructor should clear out memory +// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called +// for releasing memory by external calling function) +subscription_request::subscription_request(void){ + + _name = "default"; + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2N_E2AP_PDU_t * )calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + initMsg = 0; + initMsg = (E2N_InitiatingMessage_t * )calloc(1, sizeof(E2N_InitiatingMessage_t)); + assert(initMsg != 0); + + IE_array = 0; + IE_array = (E2N_RICsubscriptionRequest_IEs_t *)calloc(NUM_SUBSCRIPTION_REQUEST_IES, sizeof(E2N_RICsubscriptionRequest_IEs_t)); + assert(IE_array != 0); + + action_array = 0; + action_array = (E2N_RICaction_ToBeSetup_ItemIEs_t *)calloc(INITIAL_REQUEST_LIST_SIZE, sizeof(E2N_RICaction_ToBeSetup_ItemIEs_t)); + assert(action_array != 0); + action_array_size = INITIAL_REQUEST_LIST_SIZE; + // also need to add subsequent action and time to wait .. + for (unsigned int i = 0; i < action_array_size; i++){ + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = (struct E2N_RICsubsequentAction *)calloc(1, sizeof(struct E2N_RICsubsequentAction)); + assert(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction != 0); + } + + e2ap_pdu_obj->choice.initiatingMessage = initMsg; + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_initiatingMessage; + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_request::~subscription_request(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription request memory for");; + + // Sequence of actions to be admitted causes special heart-ache. Free ric subscription element manually and reset the ie pointer + E2N_RICsubscription_t * ricsubscription_ie = &(IE_array[2].value.choice.RICsubscription); + + for(int i = 0; i < ricsubscription_ie->ricAction_ToBeSetup_List.list.size; i++){ + ricsubscription_ie->ricAction_ToBeSetup_List.list.array[i] = 0; + } + + if (ricsubscription_ie->ricAction_ToBeSetup_List.list.size > 0){ + free(ricsubscription_ie->ricAction_ToBeSetup_List.list.array); + ricsubscription_ie->ricAction_ToBeSetup_List.list.size = 0; + ricsubscription_ie->ricAction_ToBeSetup_List.list.count = 0; + ricsubscription_ie->ricAction_ToBeSetup_List.list.array = 0; + } + + // clear subsequent action array + for (unsigned int i = 0; i < action_array_size; i++){ + free(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction ); + } + + free(action_array); + E2N_RICsubscriptionRequest_t * subscription_request = &(initMsg->value.choice.RICsubscriptionRequest); + + for(int i = 0; i < subscription_request->protocolIEs.list.size; i++){ + subscription_request->protocolIEs.list.array[i] = 0; + } + + if( subscription_request->protocolIEs.list.size > 0){ + free( subscription_request->protocolIEs.list.array); + subscription_request->protocolIEs.list.array = 0; + subscription_request->protocolIEs.list.size = 0; + subscription_request->protocolIEs.list.count = 0; + } + + free(IE_array); + free(initMsg); + e2ap_pdu_obj->choice.initiatingMessage = 0; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + mdclog_write(MDCLOG_DEBUG, "Freed subscription request memory "); +}; + + +bool subscription_request::encode_e2ap_subscription(unsigned char *buf, size_t *size, subscription_helper &dinput){ + + bool res; + + initMsg->procedureCode = E2N_ProcedureCode_id_ricSubscription; + initMsg->criticality = E2N_Criticality_ignore; + initMsg->value.present = E2N_InitiatingMessage__value_PR_RICsubscriptionRequest; + + res = set_fields(initMsg, dinput); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding subscription request. Reason = " + error_string; + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding Subscription Request. Reason = " + error_string; + return false; + } + else { + if(*size < retval.encoded){ + std::stringstream ss; + ss <<"Error encoding Subscription Request . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + retval.encoded = -1; + return false; + } + } + + *size = retval.encoded; + return true; + +} + + +bool subscription_request::set_fields( E2N_InitiatingMessage_t * init_msg, subscription_helper &helper){ + + + int ie_index; + int result = 0; + + if (init_msg == 0){ + error_string = "Error. Invalid reference when getting fields from subscription request"; + return false; + } + + E2N_RICsubscriptionRequest_t * ric_subscription = &(init_msg->value.choice.RICsubscriptionRequest); + ric_subscription->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICsubscriptionRequest_IEs_t *ies_ricreq = &IE_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICsubscriptionRequest_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + result = ASN_SEQUENCE_ADD(&(ric_subscription->protocolIEs), &IE_array[ie_index]); + assert(result == 0); + + ie_index = 1; + E2N_RICsubscriptionRequest_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICsubscriptionRequest_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + result = ASN_SEQUENCE_ADD(&(ric_subscription->protocolIEs), &IE_array[ie_index]); + assert(result == 0); + + + ie_index = 2; + E2N_RICsubscriptionRequest_IEs_t *ies_actid = &IE_array[ie_index]; + ies_actid->criticality = E2N_Criticality_reject; + ies_actid->id = E2N_ProtocolIE_ID_id_RICsubscription; + ies_actid->value.present = E2N_RICsubscriptionRequest_IEs__value_PR_RICsubscription; + E2N_RICsubscription_t *ricsubscription_ie = &ies_actid->value.choice.RICsubscription; + + ricsubscription_ie->ricEventTriggerDefinition.buf = (uint8_t *) helper.get_event_def(); + ricsubscription_ie->ricEventTriggerDefinition.size = helper.get_event_def_size(); + + std::vector * ref_action_array = helper.get_list(); + // do we need to resize ? + // we don't care about contents, so just do a free/calloc + if(action_array_size < ref_action_array->size()){ + std::cout <<"re-allocating action array from " << action_array_size << " to " << 2 * ref_action_array->size() << std::endl; + // free subsequent allocation + for (unsigned int i = 0; i < action_array_size; i++){ + free(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction ); + } + + action_array_size = 2 * ref_action_array->size(); + free(action_array); + action_array = (E2N_RICaction_ToBeSetup_ItemIEs_t *)calloc(action_array_size, sizeof(E2N_RICaction_ToBeSetup_ItemIEs_t)); + assert(action_array != 0); + + // also need to add subsequent action and time to wait .. + for (unsigned int i = 0; i < action_array_size; i++){ + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = (struct E2N_RICsubsequentAction *)calloc(1, sizeof(struct E2N_RICsubsequentAction)); + assert(action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction != 0); + } + + } + + // reset the list count on ricAction_ToBeSetup_List; + ricsubscription_ie->ricAction_ToBeSetup_List.list.count = 0; + + for(unsigned int i = 0; i < ref_action_array->size(); i ++){ + action_array[i].criticality = E2N_Criticality_ignore; + action_array[i].id = E2N_ProtocolIE_ID_id_RICaction_ToBeSetup_Item ; + action_array[i].value.present = E2N_RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item; + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricActionID = (*ref_action_array)[i].get_id(); + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricActionType = (*ref_action_array)[i].get_type(); + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction->ricSubsequentActionType = (*ref_action_array)[i].get_subsequent_action(); + action_array[i].value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction->ricTimeToWait = (*ref_action_array)[i].get_wait(); + + result = ASN_SEQUENCE_ADD(&ricsubscription_ie->ricAction_ToBeSetup_List, &(action_array[i])); + if (result == -1){ + error_string = "Erorr : Unable to assign memory to add Action item to set up list"; + return false; + } + + } + + result = ASN_SEQUENCE_ADD(&(ric_subscription->protocolIEs), &IE_array[ie_index]); + assert(result == 0); + + + + return true; +}; + + + +bool subscription_request:: get_fields(E2N_InitiatingMessage_t * init_msg, subscription_helper & dout) +{ + + if (init_msg == 0){ + error_string = "Error. Invalid reference when getting fields from subscription request"; + return false; + } + + E2N_RICrequestID_t *requestid; + E2N_RANfunctionID_t * ranfunctionid; + E2N_RICsubscription_t * ricsubscription; + + for(int edx = 0; edx < init_msg->value.choice.RICsubscriptionRequest.protocolIEs.list.count; edx++) { + E2N_RICsubscriptionRequest_IEs_t *memb_ptr = init_msg->value.choice.RICsubscriptionRequest.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + case (E2N_ProtocolIE_ID_id_RICsubscription): + ricsubscription = &memb_ptr->value.choice.RICsubscription; + dout.set_event_def(ricsubscription->ricEventTriggerDefinition.buf, ricsubscription->ricEventTriggerDefinition.size); + + for(int index = 0; index < ricsubscription->ricAction_ToBeSetup_List.list.count; index ++){ + E2N_RICaction_ToBeSetup_ItemIEs_t * item = (E2N_RICaction_ToBeSetup_ItemIEs_t *)ricsubscription->ricAction_ToBeSetup_List.list.array[index]; + if (item->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction == NULL){ + dout.add_action(item->value.choice.RICaction_ToBeSetup_Item.ricActionID, item->value.choice.RICaction_ToBeSetup_Item.ricActionType); + } + else{ + std::string action_def = ""; // for now we are ignoring action definition + dout.add_action(item->value.choice.RICaction_ToBeSetup_Item.ricActionID, item->value.choice.RICaction_ToBeSetup_Item.ricActionType, action_def, item->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction->ricSubsequentActionType, item->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction->ricTimeToWait); + } + }; + + break; + } + + } + + //asn_fprint(stdout, &asn_DEF_E2N_E2AP_PDU, e2pdu); + return true; +}; + + + diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_request.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_request.hpp new file mode 100644 index 0000000..28f419a --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_request.hpp @@ -0,0 +1,73 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_REQUEST_ +#define S_REQUEST_ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "subscription_helper.hpp" + +#define NUM_SUBSCRIPTION_REQUEST_IES 3 +#define INITIAL_REQUEST_LIST_SIZE 4 + +class subscription_request{ +public: + + subscription_request(std::string name); + subscription_request(void); + ~subscription_request(void); + + bool encode_e2ap_subscription(unsigned char *, size_t *, subscription_helper &); + bool set_fields(E2N_InitiatingMessage_t *, subscription_helper &); + bool get_fields(E2N_InitiatingMessage_t *, subscription_helper &); + + std::string get_error(void) const{ + return error_string; + } + +private: + + E2N_InitiatingMessage_t *initMsg; + E2N_E2AP_PDU_t * e2ap_pdu_obj; + + E2N_RICsubscriptionRequest_IEs_t * IE_array; + E2N_RICaction_ToBeSetup_ItemIEs_t * action_array; + unsigned int action_array_size; + char errbuf[128]; + size_t errbuf_len = 128; + std::string _name; + std::string error_string; +}; + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_response.cc b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_response.cc new file mode 100644 index 0000000..5308e81 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_response.cc @@ -0,0 +1,583 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + + +#include "subscription_response.hpp" + +/* The xAPP need only worry about the get_fields from a response, since it does +not generate a response. Generating response however is included to support testing. +*/ + + +// Primarly for generation +subscription_response::subscription_response(void){ + + e2ap_pdu_obj = 0; + e2ap_pdu_obj = (E2N_E2AP_PDU_t *)calloc(1, sizeof(E2N_E2AP_PDU_t)); + assert(e2ap_pdu_obj != 0); + + successMsg = 0; + successMsg = (E2N_SuccessfulOutcome_t *)calloc(1, sizeof(E2N_SuccessfulOutcome_t)); + assert(successMsg != 0); + + unsuccessMsg = 0; + unsuccessMsg = (E2N_UnsuccessfulOutcome_t *)calloc(1, sizeof(E2N_UnsuccessfulOutcome_t)); + assert(unsuccessMsg != 0); + + IE_array = 0; + IE_array = (E2N_RICsubscriptionResponse_IEs_t *)calloc(NUM_SUBSCRIPTION_RESPONSE_IES, sizeof(E2N_RICsubscriptionResponse_IEs_t)); + assert(IE_array != 0); + + IE_Failure_array = 0; + IE_Failure_array = (E2N_RICsubscriptionFailure_IEs_t *)calloc(NUM_SUBSCRIPTION_FAILURE_IES, sizeof(E2N_RICsubscriptionFailure_IEs_t)); + assert(IE_Failure_array != 0); + + ie_admitted_list = 0; + ie_admitted_list = (E2N_RICaction_Admitted_ItemIEs_t *)calloc(INITIAL_RESPONSE_LIST_SIZE, sizeof(E2N_RICaction_Admitted_ItemIEs_t)); + assert(ie_admitted_list != 0); + ie_admitted_list_size = INITIAL_RESPONSE_LIST_SIZE; + + ie_not_admitted_list = 0; + ie_not_admitted_list = (E2N_RICaction_NotAdmitted_ItemIEs_t *)calloc(INITIAL_RESPONSE_LIST_SIZE, sizeof(E2N_RICaction_NotAdmitted_ItemIEs_t)); + assert(ie_not_admitted_list != 0); + ie_not_admitted_list_size = INITIAL_RESPONSE_LIST_SIZE; + + + + + +}; + + + +// Clear assigned protocolIE list from RIC indication IE container +subscription_response::~subscription_response(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing subscription response memory"); + E2N_RICaction_Admitted_List_t * response_admitted_list = (E2N_RICaction_Admitted_List_t *) &(IE_array[2].value.choice.RICaction_Admitted_List); + + for(int i = 0; i < response_admitted_list->list.size; i++){ + response_admitted_list->list.array[i] = 0; + } + + + if (response_admitted_list->list.size > 0){ + free(response_admitted_list->list.array); + response_admitted_list->list.array = 0; + response_admitted_list->list.size = 0; + response_admitted_list->list.count = 0; + } + + + E2N_RICaction_NotAdmitted_List_t * response_not_admitted_list = &(IE_array[3].value.choice.RICaction_NotAdmitted_List); + for(int i = 0; i < response_not_admitted_list->list.size; i++){ + response_not_admitted_list->list.array[i] = 0; + } + + if (response_not_admitted_list->list.size > 0){ + free(response_not_admitted_list->list.array); + response_not_admitted_list->list.array = 0; + response_not_admitted_list->list.size = 0; + response_not_admitted_list->list.count = 0; + } + + E2N_RICsubscriptionResponse_t * ric_subscription_response = &(successMsg->value.choice.RICsubscriptionResponse); + for(int i = 0; i < ric_subscription_response->protocolIEs.list.size ; i++){ + ric_subscription_response->protocolIEs.list.array[i] = 0; + } + + if (ric_subscription_response->protocolIEs.list.size > 0){ + free(ric_subscription_response->protocolIEs.list.array); + ric_subscription_response->protocolIEs.list.array = 0; + ric_subscription_response->protocolIEs.list.size = 0; + ric_subscription_response->protocolIEs.list.count = 0; + } + + + E2N_RICaction_NotAdmitted_List_t * failure_not_admitted_list = &(IE_Failure_array[2].value.choice.RICaction_NotAdmitted_List); + for(int i = 0; i < failure_not_admitted_list->list.size; i++){ + failure_not_admitted_list->list.array[i] = 0; + } + + if ( failure_not_admitted_list->list.size > 0){ + free( failure_not_admitted_list->list.array); + failure_not_admitted_list->list.array = 0; + failure_not_admitted_list->list.size = 0; + failure_not_admitted_list->list.count = 0; + } + + + E2N_RICsubscriptionFailure_t * ric_subscription_failure = &(unsuccessMsg->value.choice.RICsubscriptionFailure); + for(int i = 0; i < ric_subscription_failure->protocolIEs.list.size; i++){ + ric_subscription_failure->protocolIEs.list.array[i] = 0; + } + + if ( ric_subscription_failure->protocolIEs.list.size > 0){ + free(ric_subscription_failure->protocolIEs.list.array); + ric_subscription_failure->protocolIEs.list.array = 0; + ric_subscription_failure->protocolIEs.list.size = 0; + ric_subscription_failure->protocolIEs.list.count = 0; + } + + + free(ie_admitted_list); + free(ie_not_admitted_list); + free(IE_Failure_array); + free(IE_array); + + + ASN_STRUCT_FREE(asn_DEF_E2N_SuccessfulOutcome, successMsg); + ASN_STRUCT_FREE(asn_DEF_E2N_UnsuccessfulOutcome, unsuccessMsg); + + + e2ap_pdu_obj->choice.initiatingMessage = NULL; + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_NOTHING; + ASN_STRUCT_FREE(asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj); + + mdclog_write(MDCLOG_DEBUG, "Freed subscription response memory "); + + +}; + + +bool subscription_response::encode_e2ap_subscription_response(unsigned char *buf, size_t *size, subscription_response_helper &dinput, bool is_success){ + + + if(is_success){ + set_fields_success(dinput); + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_successfulOutcome; + e2ap_pdu_obj->choice.successfulOutcome = successMsg; + + successMsg->procedureCode = E2N_ProcedureCode_id_ricSubscription; + successMsg->criticality = E2N_Criticality_reject; + successMsg->value.present = E2N_SuccessfulOutcome__value_PR_RICsubscriptionResponse; + + } + else{ + set_fields_unsuccess(dinput); + e2ap_pdu_obj->present = E2N_E2AP_PDU_PR_unsuccessfulOutcome; + e2ap_pdu_obj->choice.unsuccessfulOutcome = unsuccessMsg; + + unsuccessMsg->procedureCode = E2N_ProcedureCode_id_ricSubscription; + unsuccessMsg->criticality = E2N_Criticality_reject; + unsuccessMsg->value.present = E2N_UnsuccessfulOutcome__value_PR_RICsubscriptionFailure; + + } + + //xer_fprint(stdout, &asn_DEF_E2AP_PDU, e2ap_pdu_obj); + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2AP_PDU, (void *) e2ap_pdu_obj, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(errbuf, errbuf_len); + error_string = "Constraints failed for encoding subscription response. Reason = " + error_string; + return false; + } + + asn_enc_rval_t res = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2AP_PDU, e2ap_pdu_obj, buf, *size); + + if(res.encoded == -1){ + std::cout <<"Error encoding PDU. Reason =" << strerror(errno) << std::endl; + return false; + } + else { + if(*size < res.encoded){ + fprintf(stderr, "Buffer assigned too small to encode: %s",(char *)(asn_DEF_E2N_E2AP_PDU.name)); + res.encoded = -1; + return false; + } + } + + *size = res.encoded; + return true; + +} + +void subscription_response::set_fields_success(subscription_response_helper &helper){ + + int ie_index; + + E2N_RICsubscriptionResponse_t * subscription_response = &(successMsg->value.choice.RICsubscriptionResponse); + //reset list count .. + subscription_response->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICsubscriptionResponse_IEs_t *ies_ricreq = &IE_array[ie_index]; + + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICsubscriptionResponse_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + + + ie_index = 1; + E2N_RICsubscriptionResponse_IEs_t *ies_ranfunc = &IE_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICsubscriptionResponse_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + + + ie_index = 2; + E2N_RICsubscriptionResponse_IEs_t *ies_admitted_actid = &IE_array[ie_index]; + ies_admitted_actid->criticality = E2N_Criticality_reject; + ies_admitted_actid->id = E2N_ProtocolIE_ID_id_RICactions_Admitted; + E2N_RICaction_Admitted_List_t *ric_admitted_actions_ie = &ies_admitted_actid->value.choice.RICaction_Admitted_List; + ric_admitted_actions_ie->list.count = 0; + std::vector * ref_admitted_action_array = helper.get_admitted_list(); + + if(ref_admitted_action_array->size() == 0){ + ies_admitted_actid->value.present = E2N_RICsubscriptionResponse_IEs__value_PR_NOTHING; + } + else{ + ies_admitted_actid->value.present = E2N_RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List; + + // resize memory ? + if (ref_admitted_action_array->size() >= ie_admitted_list_size){ + ie_admitted_list_size = 2 * ref_admitted_action_array->size(); + free(ie_admitted_list); + ie_admitted_list = (E2N_RICaction_Admitted_ItemIEs_t *)calloc(ie_admitted_list_size, sizeof(E2N_RICaction_Admitted_ItemIEs_t)); + assert(ie_admitted_list != 0); + }; + + + for(unsigned int i = 0; i < ref_admitted_action_array->size(); i ++){ + ie_admitted_list[i].criticality = E2N_Criticality_ignore; + ie_admitted_list[i].id = E2N_ProtocolIE_ID_id_RICaction_Admitted_Item ; + ie_admitted_list[i].value.present = E2N_RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item; + ie_admitted_list[i].value.choice.RICaction_Admitted_Item.ricActionID = (*ref_admitted_action_array)[i].get_id(); + ASN_SEQUENCE_ADD(ric_admitted_actions_ie, &(ie_admitted_list[i])); + } + } + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + + // optional IE : add only if non-zero list + ie_index = 3; + std::vector * ref_notadmitted_action_array = helper.get_not_admitted_list(); + if (ref_notadmitted_action_array->size() > 0){ + + E2N_RICsubscriptionResponse_IEs_t *ies_notadmitted_actid = &IE_array[ie_index]; + ies_notadmitted_actid->criticality = E2N_Criticality_reject; + ies_notadmitted_actid->id = E2N_ProtocolIE_ID_id_RICactions_NotAdmitted; + + E2N_RICaction_NotAdmitted_List_t *ric_not_admitted_actions_ie = &ies_notadmitted_actid->value.choice.RICaction_NotAdmitted_List; + ric_not_admitted_actions_ie->list.count = 0; + + + ies_notadmitted_actid->value.present = E2N_RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List; + + // resize memory ? + if (ref_notadmitted_action_array->size() >= ie_not_admitted_list_size){ + ie_not_admitted_list_size = 2 * ref_notadmitted_action_array->size(); + free(ie_not_admitted_list); + ie_not_admitted_list = (E2N_RICaction_NotAdmitted_ItemIEs_t *)calloc(ie_not_admitted_list_size, sizeof(E2N_RICaction_NotAdmitted_ItemIEs_t)); + assert(ie_not_admitted_list != 0); + + }; + + + for(unsigned int i = 0; i < ref_notadmitted_action_array->size(); i ++){ + ie_not_admitted_list[i].criticality = E2N_Criticality_ignore; + ie_not_admitted_list[i].id = E2N_ProtocolIE_ID_id_RICaction_NotAdmitted_Item ; + ie_not_admitted_list[i].value.present = E2N_RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;; + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricActionID = (*ref_notadmitted_action_array)[i].get_id(); + + int cause = (*ref_notadmitted_action_array)[i].get_cause(); + switch(cause){ + case E2N_RICcause_PR_radioNetwork: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.radioNetwork = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_transport: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.transport = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_protocol: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.protocol= (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_misc: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.misc = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_ric: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.ric = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + default: + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause); + return; + } + + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.present = (E2N_RICcause_PR)cause; + ASN_SEQUENCE_ADD(ric_not_admitted_actions_ie, &(ie_not_admitted_list[i])); + } + + ASN_SEQUENCE_ADD(&subscription_response->protocolIEs, &(IE_array[ie_index])); + } + +} + +void subscription_response:: get_fields(E2N_SuccessfulOutcome_t * success_msg, subscription_response_helper & dout) +{ + + assert(success_msg != NULL); + + E2N_RICrequestID_t *requestid; + E2N_RANfunctionID_t * ranfunctionid; + E2N_RICaction_Admitted_List_t * ric_admitted_action_list; + E2N_RICaction_NotAdmitted_List_t * ric_not_admitted_action_list; + + for(int edx = 0; edx < success_msg->value.choice.RICsubscriptionResponse.protocolIEs.list.count; edx++) { + E2N_RICsubscriptionResponse_IEs_t *memb_ptr = success_msg->value.choice.RICsubscriptionResponse.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + case (E2N_ProtocolIE_ID_id_RICactions_Admitted): + ric_admitted_action_list = &memb_ptr->value.choice.RICaction_Admitted_List; + + // admitted actions + for(int index = 0; index < ric_admitted_action_list->list.count; index ++){ + E2N_RICaction_Admitted_ItemIEs_t * item = (E2N_RICaction_Admitted_ItemIEs_t *)ric_admitted_action_list->list.array[index]; + long int id = item->value.choice.RICaction_Admitted_Item.ricActionID; + dout.get_admitted_list()->push_back(ActionResponse(id)); + }; + + break; + + case (E2N_ProtocolIE_ID_id_RICactions_NotAdmitted): + ric_not_admitted_action_list = &memb_ptr->value.choice.RICaction_NotAdmitted_List; + + for(int index = 0; index < ric_not_admitted_action_list->list.count; index ++){ + E2N_RICaction_NotAdmitted_ItemIEs_t * item = (E2N_RICaction_NotAdmitted_ItemIEs_t *)ric_not_admitted_action_list->list.array[index]; + long int id = item->value.choice.RICaction_NotAdmitted_Item.ricActionID; + int cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.present; + int sub_cause; + switch(cause){ + + case E2N_RICcause_PR_radioNetwork : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.radioNetwork; + break; + + case E2N_RICcause_PR_transport : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.transport; + break; + + case E2N_RICcause_PR_protocol : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.protocol; + break; + + case E2N_RICcause_PR_misc : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.misc; + break; + + case E2N_RICcause_PR_ric : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.ric; + break; + + default: + std::cout <<"Error ! Illegal cause enum" << cause << std::endl; + return; + } + dout.get_not_admitted_list()->push_back(ActionResponse(id, cause, sub_cause)); + } + break; + } + + } + + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + +void subscription_response::set_fields_unsuccess( subscription_response_helper &helper){ + + int ie_index; + E2N_RICsubscriptionFailure_t * ric_subscription_failure = &(unsuccessMsg->value.choice.RICsubscriptionFailure); + // reset list count + ric_subscription_failure->protocolIEs.list.count = 0; + + ie_index = 0; + E2N_RICsubscriptionFailure_IEs_t *ies_ricreq = &IE_Failure_array[ie_index]; + ies_ricreq->criticality = E2N_Criticality_reject; + ies_ricreq->id = E2N_ProtocolIE_ID_id_RICrequestID; + ies_ricreq->value.present = E2N_RICsubscriptionFailure_IEs__value_PR_RICrequestID; + E2N_RICrequestID_t *ricrequest_ie = &ies_ricreq->value.choice.RICrequestID; + ricrequest_ie->ricRequestorID = helper.get_request_id(); + ricrequest_ie->ricRequestSequenceNumber = helper.get_req_seq(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, &(IE_Failure_array[ie_index])); + + ie_index = 1; + E2N_RICsubscriptionFailure_IEs_t *ies_ranfunc = &IE_Failure_array[ie_index]; + ies_ranfunc->criticality = E2N_Criticality_reject; + ies_ranfunc->id = E2N_ProtocolIE_ID_id_RANfunctionID; + ies_ranfunc->value.present = E2N_RICsubscriptionFailure_IEs__value_PR_RANfunctionID; + E2N_RANfunctionID_t *ranfunction_ie = &ies_ranfunc->value.choice.RANfunctionID; + *ranfunction_ie = helper.get_function_id(); + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, &(IE_Failure_array[ie_index])); + + ie_index = 2; + E2N_RICsubscriptionFailure_IEs_t *ies_notadmitted_actid = &IE_Failure_array[ie_index]; + ies_notadmitted_actid->criticality = E2N_Criticality_reject; + ies_notadmitted_actid->id = E2N_ProtocolIE_ID_id_RICactions_NotAdmitted; + E2N_RICaction_NotAdmitted_List_t *ric_not_admitted_actions_ie = &ies_notadmitted_actid->value.choice.RICaction_NotAdmitted_List; + ric_not_admitted_actions_ie->list.count = 0; + std::vector * ref_notadmitted_action_array = helper.get_not_admitted_list(); + if(ref_notadmitted_action_array->size() == 0){ + ies_notadmitted_actid->value.present = E2N_RICsubscriptionFailure_IEs__value_PR_NOTHING; + } + else{ + ies_notadmitted_actid->value.present = E2N_RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List; + + // resize memory ? + if (ref_notadmitted_action_array->size() >= ie_not_admitted_list_size){ + ie_not_admitted_list_size = 2 * ref_notadmitted_action_array->size(); + free(ie_not_admitted_list); + ie_not_admitted_list = (E2N_RICaction_NotAdmitted_ItemIEs_t *)calloc(ie_not_admitted_list_size, sizeof(E2N_RICaction_NotAdmitted_ItemIEs_t)); + assert(ie_not_admitted_list != 0); + }; + + + // reset the list count on ricAction_ToBeSetup_List; + for(unsigned int i = 0; i < ref_notadmitted_action_array->size(); i ++){ + ie_not_admitted_list[i].criticality = E2N_Criticality_ignore; + ie_not_admitted_list[i].id = E2N_ProtocolIE_ID_id_RICaction_NotAdmitted_Item ; + ie_not_admitted_list[i].value.present = E2N_RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item;; + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricActionID = (*ref_notadmitted_action_array)[i].get_id(); + + int cause = (*ref_notadmitted_action_array)[i].get_cause(); + switch(cause){ + case E2N_RICcause_PR_radioNetwork: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.radioNetwork = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_transport: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.transport = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_protocol: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.protocol= (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_misc: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.misc = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + case E2N_RICcause_PR_ric: + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.choice.ric = (*ref_notadmitted_action_array)[i].get_sub_cause(); + break; + default: + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause); + return ; + } + + ie_not_admitted_list[i].value.choice.RICaction_NotAdmitted_Item.ricCause.present = (E2N_RICcause_PR)cause; + + ASN_SEQUENCE_ADD(ric_not_admitted_actions_ie, &(ie_not_admitted_list[i])); + } + + } + ASN_SEQUENCE_ADD(&ric_subscription_failure->protocolIEs, &(IE_Failure_array[ie_index])); + + + // // criticality diagnostics is not generated/parsed currently since optional + // i = 3; + // E2N_RICsubscriptionFailure_IEs_t *ies_criticality_diagnostics= &IE_Failure_array[i]; + // ies_criticality_diagnostics->criticality = E2N_Criticality_ignore; + // ies_criticality_diagnostics->id = E2N_ProtocolIE_ID_id_CriticalityDiagnostics ; + // ies_criticality_diagnostics->value.present = E2N_RICsubscriptionFailure_IEs__value_PR_NOTHING; + + +} + +void subscription_response:: get_fields(E2N_UnsuccessfulOutcome_t * unsuccess_msg, subscription_response_helper & dout) +{ + + assert(unsuccess_msg != NULL); + + E2N_RICrequestID_t *requestid; + E2N_RANfunctionID_t * ranfunctionid; + E2N_RICaction_NotAdmitted_List_t * ric_not_admitted_action_list; + + for(int edx = 0; edx < unsuccess_msg->value.choice.RICsubscriptionFailure.protocolIEs.list.count; edx++) { + E2N_RICsubscriptionFailure_IEs_t *memb_ptr = unsuccess_msg->value.choice.RICsubscriptionFailure.protocolIEs.list.array[edx]; + + switch(memb_ptr->id) + { + case (E2N_ProtocolIE_ID_id_RICrequestID): + requestid = &memb_ptr->value.choice.RICrequestID; + dout.set_request(requestid->ricRequestorID, requestid->ricRequestSequenceNumber); + break; + + case (E2N_ProtocolIE_ID_id_RANfunctionID): + ranfunctionid = &memb_ptr->value.choice.RANfunctionID; + dout.set_function_id(*ranfunctionid); + break; + + + case (E2N_ProtocolIE_ID_id_RICactions_NotAdmitted): + ric_not_admitted_action_list = &memb_ptr->value.choice.RICaction_NotAdmitted_List; + + for(int index = 0; index < ric_not_admitted_action_list->list.count; index ++){ + E2N_RICaction_NotAdmitted_ItemIEs_t * item = (E2N_RICaction_NotAdmitted_ItemIEs_t *)ric_not_admitted_action_list->list.array[index]; + long int id = item->value.choice.RICaction_NotAdmitted_Item.ricActionID; + int cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.present; + int sub_cause; + switch(cause){ + + case E2N_RICcause_PR_radioNetwork : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.radioNetwork; + break; + + case E2N_RICcause_PR_transport : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.transport; + break; + + case E2N_RICcause_PR_protocol : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.protocol; + break; + + case E2N_RICcause_PR_misc : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.misc; + break; + + case E2N_RICcause_PR_ric : + sub_cause = item->value.choice.RICaction_NotAdmitted_Item.ricCause.choice.ric; + break; + + default: + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Unknown RIC cause %d\n", __FILE__, __LINE__, cause); + return; + } + dout.get_not_admitted_list()->push_back(ActionResponse(id, cause, sub_cause)); + } + break; + } + + } + + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); +} + + + diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_response.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_response.hpp new file mode 100644 index 0000000..28fad4e --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2ap/subscription_response.hpp @@ -0,0 +1,81 @@ +/* +================================================================================== + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#pragma once + +#ifndef S_RESPONSE_ +#define S_RESPONSE_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "response_helper.hpp" + +#define NUM_SUBSCRIPTION_RESPONSE_IES 4 +#define NUM_SUBSCRIPTION_FAILURE_IES 3 +#define INITIAL_RESPONSE_LIST_SIZE 4 + +class subscription_response{ +public: + + subscription_response(void); + ~subscription_response(void); + + bool encode_e2ap_subscription_response(unsigned char *, size_t *, subscription_response_helper &, bool); + void get_fields(E2N_SuccessfulOutcome_t *, subscription_response_helper &); + void get_fields(E2N_UnsuccessfulOutcome_t *, subscription_response_helper &); + + std::string get_error(void) const{ + return error_string; + } + +private: + + void set_fields_success( subscription_response_helper &); + void set_fields_unsuccess( subscription_response_helper &); + + E2N_E2AP_PDU_t * e2ap_pdu_obj; + E2N_SuccessfulOutcome_t * successMsg; + E2N_UnsuccessfulOutcome_t * unsuccessMsg; + + + E2N_RICsubscriptionResponse_IEs_t *IE_array; + E2N_RICsubscriptionFailure_IEs_t *IE_Failure_array; + + + E2N_RICaction_Admitted_ItemIEs_t * ie_admitted_list; + E2N_RICaction_NotAdmitted_ItemIEs_t * ie_not_admitted_list; + unsigned int ie_admitted_list_size, ie_not_admitted_list_size; + + char errbuf[128]; + size_t errbuf_len = 128; + std::string error_string; +}; + + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm.cc b/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm.cc new file mode 100644 index 0000000..c476c83 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm.cc @@ -0,0 +1,660 @@ +/* + ================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, softwares + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ================================================================================== +*/ + +/* Classes to handle E2 service model based on e2sm-gNB-X2-release-1-v040.asn */ + +#include "e2sm.hpp" + + + + //initialize + e2sm_event_trigger::e2sm_event_trigger(void){ + + memset(&gNodeB_ID, 0, sizeof(E2N_GlobalGNB_ID_t)); + + event_trigger = 0; + event_trigger = ( E2N_E2SM_gNB_X2_eventTriggerDefinition_t *)calloc(1, sizeof( E2N_E2SM_gNB_X2_eventTriggerDefinition_t)); + assert(event_trigger != 0); + + // allocate space for gNodeB id (used for encoding) + gNodeB_ID.gNB_ID.choice.gNB_ID.buf = 0; + gNodeB_ID.gNB_ID.choice.gNB_ID.buf = (uint8_t *)calloc(4, sizeof(uint8_t)); + assert(gNodeB_ID.gNB_ID.choice.gNB_ID.buf != 0); + + // allocate space for plmn identity (used for encoding) + gNodeB_ID.pLMN_Identity.buf = 0; + gNodeB_ID.pLMN_Identity.buf = (uint8_t *) calloc(4, sizeof(uint8_t)); + assert(gNodeB_ID.pLMN_Identity.buf != 0); + + ie_list = 0; + ie_list = ( struct E2N_InterfaceProtocolIE_Item *) calloc(INITIAL_LIST_SIZE, sizeof( struct E2N_InterfaceProtocolIE_Item)); + assert(ie_list != 0); + ie_list_size = INITIAL_LIST_SIZE; + + condition_list = 0; + condition_list = (E2N_E2SM_gNB_X2_eventTriggerDefinition::E2N_E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List *) calloc(1, sizeof(E2N_E2SM_gNB_X2_eventTriggerDefinition::E2N_E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List )); + assert(condition_list != 0); + + + + }; + +e2sm_event_trigger::~e2sm_event_trigger(void){ + + mdclog_write(MDCLOG_DEBUG, "Freeing event trigger object memory"); + for(int i = 0; i < condition_list->list.size; i++){ + condition_list->list.array[i] = 0; + } + + if (condition_list->list.size > 0){ + free(condition_list->list.array); + condition_list->list.array = 0; + condition_list->list.size = 0; + condition_list->list.count = 0; + } + + free(condition_list); + condition_list = 0; + + free(gNodeB_ID.gNB_ID.choice.gNB_ID.buf); + gNodeB_ID.gNB_ID.choice.gNB_ID.buf = 0; + + free(gNodeB_ID.pLMN_Identity.buf); + gNodeB_ID.pLMN_Identity.buf = 0; + + free(ie_list); + ie_list = 0; + + event_trigger->interface_ID.choice.global_gNB_ID = 0; + event_trigger->interfaceProtocolIE_List = 0; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2SM_gNB_X2_eventTriggerDefinition, event_trigger); + mdclog_write(MDCLOG_DEBUG, "Freed event trigger object memory"); + + +}; + +bool e2sm_event_trigger::encode_event_trigger(unsigned char *buf, size_t *size, e2sm_event_trigger_helper &helper){ + + bool res; + res = set_fields(event_trigger, helper); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2SM_gNB_X2_eventTriggerDefinition, event_trigger, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + return false; + } + + //xer_fprint(stdout, &asn_DEF_E2N_E2SM_gNB_X2_eventTriggerDefinition, event_trigger); + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2SM_gNB_X2_eventTriggerDefinition, event_trigger, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + + +bool e2sm_event_trigger::set_fields(E2N_E2SM_gNB_X2_eventTriggerDefinition_t * ref_event_trigger, e2sm_event_trigger_helper & helper){ + if(ref_event_trigger == 0){ + error_string = "Invalid reference for Event Trigger Definition set fields"; + return false; + } + + // set the message type + ref_event_trigger->interfaceMessageType.procedureCode = helper.procedure_code; + ref_event_trigger->interfaceMessageType.typeOfMessage = helper.message_type; + + ref_event_trigger->interfaceDirection = helper.interface_direction; + ref_event_trigger->interface_ID.present = E2N_Interface_ID_PR_global_gNB_ID; + + ref_event_trigger->interface_ID.choice.global_gNB_ID = &gNodeB_ID; + + // to do : need to put correct code here for upding plmn id and gNodeB + // for now just place holders : + //================================================================ + memcpy(gNodeB_ID.pLMN_Identity.buf, helper.plmn_id.c_str(), 3); + gNodeB_ID.pLMN_Identity.size = 3; + + memcpy(gNodeB_ID.gNB_ID.choice.gNB_ID.buf, helper.egNB_id.c_str(), 3); + gNodeB_ID.gNB_ID.choice.gNB_ID.size = 3; + + // we only do global gNodeB id for now, not eNodeB + gNodeB_ID.gNB_ID.present = E2N_GNB_ID_PR_gNB_ID; + //================================================================ + + + // Add in any requested IE items + std::vector * ref_ie_array = helper.get_list(); + + if (ref_ie_array->size() == 0){ + ref_event_trigger->interfaceProtocolIE_List = 0; + + } + else{ + ref_event_trigger->interfaceProtocolIE_List = condition_list; + + //resize memory ? + if(ref_ie_array->size() > ie_list_size){ + ie_list_size = 2 * ref_ie_array->size(); + free(ie_list); + ie_list = (struct E2N_InterfaceProtocolIE_Item *)calloc(ie_list_size, sizeof(struct E2N_InterfaceProtocolIE_Item)); + assert(ie_list != 0); + } + + // reset the count so that adds start from the beginning + ref_event_trigger->interfaceProtocolIE_List->list.count = 0; + + for(unsigned int i = 0; i < ref_ie_array->size(); i++){ + + ie_list[i].interfaceProtocolIE_ID = (*ref_ie_array)[i].interface_id; + ie_list[i].interfaceProtocolIE_Test = (*ref_ie_array)[i].test; + + //switch(ie_list[i].interfaceProtocolIE_Value.present){ + switch((*ref_ie_array)[i].val_type){ + + case (E2N_InterfaceProtocolIE_Value_PR_valueInt): + ie_list[i].interfaceProtocolIE_Value.present = E2N_InterfaceProtocolIE_Value_PR_valueInt; + ie_list[i].interfaceProtocolIE_Value.choice.valueInt = (*ref_ie_array)[i].value_n; + break; + + case (E2N_InterfaceProtocolIE_Value_PR_valueEnum): + ie_list[i].interfaceProtocolIE_Value.present = E2N_InterfaceProtocolIE_Value_PR_valueEnum; + ie_list[i].interfaceProtocolIE_Value.choice.valueEnum = (*ref_ie_array)[i].value_n; + break; + + case (E2N_InterfaceProtocolIE_Value_PR_valueBool): + ie_list[i].interfaceProtocolIE_Value.present = E2N_InterfaceProtocolIE_Value_PR_valueBool; + ie_list[i].interfaceProtocolIE_Value.choice.valueBool = (*ref_ie_array)[i].value_n; + break; + + case (E2N_InterfaceProtocolIE_Value_PR_valueBitS): + ie_list[i].interfaceProtocolIE_Value.present = E2N_InterfaceProtocolIE_Value_PR_valueBitS; + ie_list[i].interfaceProtocolIE_Value.choice.valueBitS.buf = (uint8_t *)(*ref_ie_array)[i].value_s.c_str(); + ie_list[i].interfaceProtocolIE_Value.choice.valueBitS.size = (*ref_ie_array)[i].value_s.length(); + break; + + case (E2N_InterfaceProtocolIE_Value_PR_valueOctS): + ie_list[i].interfaceProtocolIE_Value.present = E2N_InterfaceProtocolIE_Value_PR_valueOctS; + ie_list[i].interfaceProtocolIE_Value.choice.valueOctS.buf = (uint8_t *)(*ref_ie_array)[i].value_s.c_str(); + ie_list[i].interfaceProtocolIE_Value.choice.valueOctS.size = (*ref_ie_array)[i].value_s.length(); + break; + + default: + { + std::stringstream ss; + ss <<"Error ! " << __FILE__ << "," << __LINE__ << " illegal enum " << (*ref_ie_array)[i].val_type << " for interface Protocol IE value" << std::endl; + std::string error_string = ss.str(); + return false; + } + } + + ASN_SEQUENCE_ADD(ref_event_trigger->interfaceProtocolIE_List, &ie_list[i]); + } + } + + return true; +}; + + +bool e2sm_event_trigger::get_fields(E2N_E2SM_gNB_X2_eventTriggerDefinition_t * ref_event_trigger, e2sm_event_trigger_helper & helper){ + + if (ref_event_trigger == 0){ + error_string = "Invalid reference for Event Trigger definition get fields"; + return false; + } + + helper.procedure_code = ref_event_trigger->interfaceMessageType.procedureCode; + helper.message_type = ref_event_trigger->interfaceMessageType.typeOfMessage; + helper.interface_direction = ref_event_trigger->interfaceDirection; + + helper.plmn_id.assign((const char *)ref_event_trigger->interface_ID.choice.global_gNB_ID->pLMN_Identity.buf, ref_event_trigger->interface_ID.choice.global_gNB_ID->pLMN_Identity.size); + helper.egNB_id.assign((const char *)ref_event_trigger->interface_ID.choice.global_gNB_ID->gNB_ID.choice.gNB_ID.buf, ref_event_trigger->interface_ID.choice.global_gNB_ID->gNB_ID.choice.gNB_ID.size); + for(int i = 0; i < ref_event_trigger->interfaceProtocolIE_List->list.count; i++){ + struct E2N_InterfaceProtocolIE_Item * ie_item = ref_event_trigger->interfaceProtocolIE_List->list.array[i]; + switch(ie_item->interfaceProtocolIE_Value.present){ + case (E2N_InterfaceProtocolIE_Value_PR_valueInt): + helper.add_protocol_ie_item(ie_item->interfaceProtocolIE_ID, ie_item->interfaceProtocolIE_Test, ie_item->interfaceProtocolIE_Value.present, ie_item->interfaceProtocolIE_Value.choice.valueInt); + break; + case (E2N_InterfaceProtocolIE_Value_PR_valueEnum): + helper.add_protocol_ie_item(ie_item->interfaceProtocolIE_ID, ie_item->interfaceProtocolIE_Test, ie_item->interfaceProtocolIE_Value.present, ie_item->interfaceProtocolIE_Value.choice.valueEnum); + break; + case (E2N_InterfaceProtocolIE_Value_PR_valueBool): + helper.add_protocol_ie_item(ie_item->interfaceProtocolIE_ID, ie_item->interfaceProtocolIE_Test, ie_item->interfaceProtocolIE_Value.present, ie_item->interfaceProtocolIE_Value.choice.valueBool); + break; + case (E2N_InterfaceProtocolIE_Value_PR_valueBitS): + helper.add_protocol_ie_item(ie_item->interfaceProtocolIE_ID, ie_item->interfaceProtocolIE_Test, ie_item->interfaceProtocolIE_Value.present, std::string((const char *)ie_item->interfaceProtocolIE_Value.choice.valueBitS.buf,ie_item->interfaceProtocolIE_Value.choice.valueBitS.size) ); + break; + case (E2N_InterfaceProtocolIE_Value_PR_valueOctS): + helper.add_protocol_ie_item(ie_item->interfaceProtocolIE_ID, ie_item->interfaceProtocolIE_Test, ie_item->interfaceProtocolIE_Value.present, std::string((const char *)ie_item->interfaceProtocolIE_Value.choice.valueOctS.buf,ie_item->interfaceProtocolIE_Value.choice.valueOctS.size) ); + break; + default: + mdclog_write(MDCLOG_ERR, "Error : %s, %d: Unkown interface protocol IE type %d in event trigger definition\n", __FILE__, __LINE__, ie_item->interfaceProtocolIE_Value.present); + return false; + } + } + + return true; +}; + + + + +// initialize +e2sm_indication::e2sm_indication(void) { + + memset(&gNodeB_ID, 0, sizeof(E2N_GlobalGNB_ID_t)); + + // allocate space for gNodeB id (used for encoding) + gNodeB_ID.gNB_ID.choice.gNB_ID.buf = (uint8_t *)calloc(4, sizeof(uint8_t)); + assert(gNodeB_ID.gNB_ID.choice.gNB_ID.buf != 0); + + // allocate space for plmn identity (used for encoding) + gNodeB_ID.pLMN_Identity.buf = (uint8_t *) calloc(4, sizeof(uint8_t)); + assert(gNodeB_ID.pLMN_Identity.buf != 0); + + header = 0; + header = (E2N_E2SM_gNB_X2_indicationHeader_t *)calloc(1, sizeof(E2N_E2SM_gNB_X2_indicationHeader_t)); + assert(header != 0); + + message = 0; + message = (E2N_E2SM_gNB_X2_indicationMessage_t *)calloc(1, sizeof(E2N_E2SM_gNB_X2_indicationMessage_t)); + assert(message != 0); +} + +e2sm_indication::~e2sm_indication(void){ + mdclog_write(MDCLOG_DEBUG, "Freeing E2N_E2SM Indication object memory"); + + free(gNodeB_ID.gNB_ID.choice.gNB_ID.buf); + free(gNodeB_ID.pLMN_Identity.buf); + + header->interface_ID.choice.global_gNB_ID = 0; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2SM_gNB_X2_indicationHeader, header); + + message->interfaceMessage.buf = 0; + message->interfaceMessage.size = 0; + + ASN_STRUCT_FREE(asn_DEF_E2N_E2SM_gNB_X2_indicationMessage, message); + mdclog_write(MDCLOG_DEBUG, "Freed E2SM Indication object memory"); + +} + + + +bool e2sm_indication::encode_indication_header(unsigned char *buf, size_t *size, e2sm_header_helper &helper){ + + bool res; + res = set_header_fields(header, helper); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2SM_gNB_X2_indicationHeader, header, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + error_string = "E2SM Indication Header Constraint failed : " + error_string; + + return false; + } + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2SM_gNB_X2_indicationHeader, header, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding E2N_E2SM Indication Header. Reason = " + error_string; + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding E2SM Indication Header . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + + +bool e2sm_indication::encode_indication_message(unsigned char *buf, size_t *size, e2sm_message_helper &helper){ + + set_message_fields(message, helper); + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2SM_gNB_X2_indicationMessage, message, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + error_string = "E2SM Indication Message Constraint failed : " + error_string; + return false; + } + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2SM_gNB_X2_indicationMessage, message, buf, *size); + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding E2SM Indication Header. Reason = " + error_string; + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding E2N_E2SM Indication Message . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + + + +// Used when generating an indication header +bool e2sm_indication::set_header_fields(E2N_E2SM_gNB_X2_indicationHeader_t *header, e2sm_header_helper &helper){ + + if (header == 0){ + error_string = "Invalid reference for E2SM Indication Header set fields"; + return false; + } + + + header->interfaceDirection = helper.interface_direction; + header->interface_ID.present = E2N_Interface_ID_PR_global_gNB_ID; + header->interface_ID.choice.global_gNB_ID = &gNodeB_ID; + + + // to do : need to put correct code here for upding plmn id and gNodeB + // for now just place holders : + memcpy(gNodeB_ID.pLMN_Identity.buf, helper.plmn_id.c_str(), 3); + gNodeB_ID.pLMN_Identity.size = 3; + + memcpy(gNodeB_ID.gNB_ID.choice.gNB_ID.buf, helper.egNB_id.c_str(), 3); + gNodeB_ID.gNB_ID.choice.gNB_ID.size = 3; + + // we only do global gNodeB id for now, not eNodeB + gNodeB_ID.gNB_ID.present = E2N_GNB_ID_PR_gNB_ID; + + return true; + +}; + + +// used when decoding an indication header +bool e2sm_indication::get_header_fields(E2N_E2SM_gNB_X2_indicationHeader_t *header, e2sm_header_helper &helper){ + + if (header == 0){ + error_string = "Invalid reference for E2SM Indication header get fields"; + return false; + } + + helper.interface_direction = header->interfaceDirection; + helper.plmn_id.assign((const char *)header->interface_ID.choice.global_gNB_ID->pLMN_Identity.buf, header->interface_ID.choice.global_gNB_ID->pLMN_Identity.size); + helper.egNB_id.assign((const char *)header->interface_ID.choice.global_gNB_ID->gNB_ID.choice.gNB_ID.buf, header->interface_ID.choice.global_gNB_ID->gNB_ID.choice.gNB_ID.size); + + // to do : add code to decipher plmn and global gnodeb from ints (since that is likely the convention for packing) + + return true; +} + + + +// Used when generating an indication message +bool e2sm_indication::set_message_fields(E2N_E2SM_gNB_X2_indicationMessage_t *interface_message, e2sm_message_helper &helper){ + + if(interface_message == 0){ + error_string = "Invalid reference for E2SM Indication Message set fields"; + return false; + } + + // interface-message is an octet string. just point it to the buffer + interface_message->interfaceMessage.buf = &(helper.x2ap_pdu[0]); + interface_message->interfaceMessage.size = helper.x2ap_pdu_size; + + return true; + +}; + +// used when decoding an indication message +bool e2sm_indication::get_message_fields( E2N_E2SM_gNB_X2_indicationMessage_t *interface_message, e2sm_message_helper &helper){ + + + if(interface_message == 0){ + error_string = "Invalid reference for E2SM Indication Message get fields"; + return false; + } + + // interface message is an octet string + helper.x2ap_pdu = interface_message->interfaceMessage.buf;; + helper.x2ap_pdu_size = interface_message->interfaceMessage.size; + + return true; + +} + + + +// initialize +e2sm_control::e2sm_control(void) { + + memset(&gNodeB_ID, 0, sizeof(E2N_GlobalGNB_ID_t)); + + // allocate space for gNodeB id (used for encoding) + gNodeB_ID.gNB_ID.choice.gNB_ID.buf = (uint8_t *)calloc(4, sizeof(uint8_t)); + assert(gNodeB_ID.gNB_ID.choice.gNB_ID.buf != 0); + + // allocate space for plmn identity (used for encoding) + gNodeB_ID.pLMN_Identity.buf = (uint8_t *) calloc(4, sizeof(uint8_t)); + assert(gNodeB_ID.pLMN_Identity.buf != 0); + + header = 0; + header = (E2N_E2SM_gNB_X2_controlHeader_t *)calloc(1, sizeof(E2N_E2SM_gNB_X2_controlHeader_t)); + assert(header != 0); + + message = 0; + message = (E2N_E2SM_gNB_X2_controlMessage_t *)calloc(1, sizeof(E2N_E2SM_gNB_X2_controlMessage_t)); + assert(message != 0); +} + +e2sm_control::~e2sm_control(void){ + mdclog_write(MDCLOG_DEBUG, "Freeing E2SM Control object memory"); + + free(gNodeB_ID.gNB_ID.choice.gNB_ID.buf); + free(gNodeB_ID.pLMN_Identity.buf); + header->interface_ID.choice.global_gNB_ID = 0; + ASN_STRUCT_FREE(asn_DEF_E2N_E2SM_gNB_X2_controlHeader, header); + + message->interfaceMessage.buf = 0; + ASN_STRUCT_FREE(asn_DEF_E2N_E2SM_gNB_X2_controlMessage, message); + + mdclog_write(MDCLOG_DEBUG, "Freed E2SM Control object memory"); + +} + + + +bool e2sm_control::encode_control_header(unsigned char *buf, size_t *size, e2sm_header_helper &helper){ + + bool res; + res = set_header_fields(header, helper); + if (!res){ + return false; + } + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2SM_gNB_X2_controlHeader, header, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + error_string = "E2SM Control Header Constraint failed : " + error_string; + + return false; + } + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2SM_gNB_X2_controlHeader, header, buf, *size); + + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding E2SM Control Header. Reason = " + error_string; + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding E2N_E2SM Control Header . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + + +bool e2sm_control::encode_control_message(unsigned char *buf, size_t *size, e2sm_message_helper &helper){ + + set_message_fields(message, helper); + + int ret_constr = asn_check_constraints(&asn_DEF_E2N_E2SM_gNB_X2_controlMessage, message, errbuf, &errbuf_len); + if(ret_constr){ + error_string.assign(&errbuf[0], errbuf_len); + error_string = "E2SM Control Message Constraint failed : " + error_string; + return false; + } + + asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2N_E2SM_gNB_X2_controlMessage, message, buf, *size); + if(retval.encoded == -1){ + error_string.assign(strerror(errno)); + error_string = "Error encoding E2SM Control Message. Reason = " + error_string; + return false; + } + else if (retval.encoded > *size){ + std::stringstream ss; + ss <<"Error encoding E2SM Control Message . Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl; + error_string = ss.str(); + + return false; + } + else{ + *size = retval.encoded; + } + + return true; +} + + + +// Used when generating an indication header +bool e2sm_control::set_header_fields(E2N_E2SM_gNB_X2_controlHeader_t *header, e2sm_header_helper &helper){ + + if (header == 0){ + error_string = "Invalid reference for E2SM Control Header set fields"; + return false; + } + + + header->interfaceDirection = helper.interface_direction; + header->interface_ID.present = E2N_Interface_ID_PR_global_gNB_ID; + header->interface_ID.choice.global_gNB_ID = &gNodeB_ID; + + + // to do : need to put correct code here for upding plmn id and gNodeB + // for now just place holders : + memcpy(gNodeB_ID.pLMN_Identity.buf, helper.plmn_id.c_str(), 3); + gNodeB_ID.pLMN_Identity.size = 3; + + memcpy(gNodeB_ID.gNB_ID.choice.gNB_ID.buf, helper.egNB_id.c_str(), 3); + gNodeB_ID.gNB_ID.choice.gNB_ID.size = 3; + + // we only do global gNodeB id for now, not eNodeB + gNodeB_ID.gNB_ID.present = E2N_GNB_ID_PR_gNB_ID; + + return true; + +}; + + +// used when decoding an indication header +bool e2sm_control::get_header_fields(E2N_E2SM_gNB_X2_controlHeader_t *header, e2sm_header_helper &helper){ + + if (header == 0){ + error_string = "Invalid reference for E2SM Control header get fields"; + return false; + } + + helper.interface_direction = header->interfaceDirection; + helper.plmn_id.assign((const char *)header->interface_ID.choice.global_gNB_ID->pLMN_Identity.buf, header->interface_ID.choice.global_gNB_ID->pLMN_Identity.size); + helper.egNB_id.assign((const char *)header->interface_ID.choice.global_gNB_ID->gNB_ID.choice.gNB_ID.buf, header->interface_ID.choice.global_gNB_ID->gNB_ID.choice.gNB_ID.size); + + // to do : add code to decipher plmn and global gnodeb from ints (since that is likely the convention for packing) + + return true; +} + + + +// Used when generating an indication message +bool e2sm_control::set_message_fields(E2N_E2SM_gNB_X2_controlMessage_t *interface_message, e2sm_message_helper &helper){ + + if(interface_message == 0){ + error_string = "Invalid reference for E2SM Control Message set fields"; + return false; + } + + // interface-message is an octet string. just point it to the buffer + interface_message->interfaceMessage.buf = &(helper.x2ap_pdu[0]); + interface_message->interfaceMessage.size = helper.x2ap_pdu_size; + + return true; + +}; + +// used when decoding an indication message +bool e2sm_control::get_message_fields( E2N_E2SM_gNB_X2_controlMessage_t *interface_message, e2sm_message_helper &helper){ + + + if(interface_message == 0){ + error_string = "Invalid reference for E2SM Control Message get fields"; + return false; + } + + // interface message is an octet string + helper.x2ap_pdu = interface_message->interfaceMessage.buf;; + helper.x2ap_pdu_size = interface_message->interfaceMessage.size; + + return true; + +} + diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm.hpp new file mode 100644 index 0000000..a16d95c --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm.hpp @@ -0,0 +1,145 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +/* Classes to handle E2 service model based on e2sm-gNB-X2-release-1-v040.asn */ + +#ifndef E2SM_ +#define E2SM_ + + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include "../../xapp-formats/e2sm/e2sm_helpers.hpp" + +#define INITIAL_LIST_SIZE 4 + + + + +/* builder class for E2SM event trigger definition */ + +class e2sm_event_trigger { +public: + e2sm_event_trigger(void); + ~e2sm_event_trigger(void); + + bool set_fields(E2N_E2SM_gNB_X2_eventTriggerDefinition_t *, e2sm_event_trigger_helper &); + bool get_fields(E2N_E2SM_gNB_X2_eventTriggerDefinition_t *, e2sm_event_trigger_helper &); + bool encode_event_trigger(unsigned char *, size_t *, e2sm_event_trigger_helper &); + + std::string get_error (void) const {return error_string ;}; + +private: + + E2N_E2SM_gNB_X2_eventTriggerDefinition_t * event_trigger; // used for encoding + E2N_GlobalGNB_ID_t gNodeB_ID; + struct E2N_InterfaceProtocolIE_Item * ie_list; + unsigned int ie_list_size; + + //std::vector ie_list; + E2N_E2SM_gNB_X2_eventTriggerDefinition::E2N_E2SM_gNB_X2_eventTriggerDefinition__interfaceProtocolIE_List *condition_list; + + char errbuf[128]; + size_t errbuf_len; + std::string error_string; +}; + + +/* builder class for E2SM indication using ASN1c */ + +class e2sm_indication { +public: + + e2sm_indication(void); + ~e2sm_indication(void); + + E2N_E2SM_gNB_X2_indicationHeader_t * get_header(void); + E2N_E2SM_gNB_X2_indicationMessage_t * get_message(void); + + bool set_header_fields(E2N_E2SM_gNB_X2_indicationHeader_t *, e2sm_header_helper &); + bool get_header_fields(E2N_E2SM_gNB_X2_indicationHeader_t *, e2sm_header_helper &); + + bool set_message_fields(E2N_E2SM_gNB_X2_indicationMessage_t *, e2sm_message_helper &); + bool get_message_fields(E2N_E2SM_gNB_X2_indicationMessage_t *, e2sm_message_helper &); + + bool encode_indication_header(unsigned char * , size_t * , e2sm_header_helper &); + bool encode_indication_message(unsigned char *, size_t *, e2sm_message_helper &); + std::string get_error (void) const {return error_string ; }; + +private: + + E2N_E2SM_gNB_X2_indicationHeader_t *header; // used for encoding + E2N_E2SM_gNB_X2_indicationMessage_t *message; // used for encoding + + char errbuf[128]; + size_t errbuf_len; + E2N_GlobalGNB_ID_t gNodeB_ID; + std::string error_string; + + +}; + +/* builder class for E2SM control using ASN1c */ + +class e2sm_control { +public: + + e2sm_control(void); + ~e2sm_control(void); + + E2N_E2SM_gNB_X2_controlHeader_t * get_header(void); + E2N_E2SM_gNB_X2_controlMessage_t * get_message(void); + + bool set_header_fields(E2N_E2SM_gNB_X2_controlHeader_t *, e2sm_header_helper &); + bool get_header_fields(E2N_E2SM_gNB_X2_controlHeader_t *, e2sm_header_helper &); + + bool set_message_fields(E2N_E2SM_gNB_X2_controlMessage_t *, e2sm_message_helper &); + bool get_message_fields(E2N_E2SM_gNB_X2_controlMessage_t *, e2sm_message_helper &); + + bool encode_control_header(unsigned char * , size_t * , e2sm_header_helper &); + bool encode_control_message(unsigned char *, size_t *, e2sm_message_helper &); + std::string get_error (void) const {return error_string ; }; + +private: + + E2N_E2SM_gNB_X2_controlHeader_t *header; // used for encoding + E2N_E2SM_gNB_X2_controlMessage_t *message; // used for encoding + + char errbuf[128]; + size_t errbuf_len; + E2N_GlobalGNB_ID_t gNodeB_ID; + std::string error_string; + + +}; + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm_helpers.hpp b/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm_helpers.hpp new file mode 100644 index 0000000..95ab8ca --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-formats/e2sm/e2sm_helpers.hpp @@ -0,0 +1,115 @@ +/* + ================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, softwares + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ================================================================================== +*/ + +/* Classes to handle E2 service model based on e2sm-gNB-X2-release-1-v040.asn */ + +#ifndef E2SM_HELPER_ +#define E2SM_HELPER_ + +#include +#include +#include +#include + + /* information holder for E2SM indication header */ +typedef struct e2sm_header_helper e2sm_header_helper; +struct e2sm_header_helper { + int egNB_id_type; + + std::string egNB_id; + std::string plmn_id; + + long int interface_direction; + unsigned char* timestamp; +}; + +/* information holder for E2SM indication message */ +typedef struct e2sm_message_helper e2sm_message_helper; +struct e2sm_message_helper { + unsigned char * x2ap_pdu; + size_t x2ap_pdu_size; +}; + + +/* information holder for E2SM Action Trigger Definition */ +struct Item +{ + Item(long int id, long int test, long int val_type, int value):interface_id(id), test(test), val_type(val_type), value_n(value){}; + Item(long int id, long int test, long int val_type, std::string value):interface_id(id), test(test), val_type(val_type), value_s(value){}; + + long int interface_id; + long int test; + long int val_type; + long int value_n; + std::string value_s; + +}; + +typedef struct e2sm_event_trigger_helper e2sm_event_trigger_helper; +struct e2sm_event_trigger_helper { + + int egNB_id_type; + std::string egNB_id; + std::string plmn_id; + + long int interface_direction; + long int procedure_code; + + long int message_type; + + + std::vector * get_list(void){ return &protocol_ie_list; }; + void add_protocol_ie_item(long int id, long int test , unsigned int val_type, long int value ){ + // into list + protocol_ie_list.emplace_back(id, test, val_type, value); + }; + + void add_protocol_ie_item(long int id, long int test, unsigned int val_type, std::string value){ + // into list + protocol_ie_list.emplace_back(id, test, val_type, value); + }; + + void clear(void){ + protocol_ie_list.clear(); + } + + std::string get_string(void) const { + std::stringstream ss; + ss << "egNB_ID_type = " << egNB_id_type << std::endl; + ss << "PLMN Id = " << plmn_id << std::endl; + ss << "Procedure Code = " << procedure_code << std::endl; + ss << "Message Type = " << message_type << std::endl; + + std::string info; + info = ss.str(); + return info; + } + + + +private: + + std::vector protocol_ie_list; + +}; + + + + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-mgmt/a1_helper.hpp b/setup/xapp-bs-connector/src/xapp-mgmt/a1_helper.hpp new file mode 100644 index 0000000..c9d7f8d --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-mgmt/a1_helper.hpp @@ -0,0 +1,49 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * a1_policy.hpp + * + * Created on: Mar, 2020 + * Author: Shraboni Jana + */ + +#ifndef SRC_XAPP_MGMT_A1MSG_A1_POLICY_HELPER_HPP_ +#define SRC_XAPP_MGMT_A1MSG_A1_POLICY_HELPER_HPP_ + +#include +#include +#include +#include + +using namespace rapidjson; + +typedef struct a1_policy_helper a1_policy_helper; + +struct a1_policy_helper{ + + std::string operation; + std::string policy_type_id; + std::string policy_instance_id; + std::string handler_id; + std::string status; + +}; + + +#endif /* SRC_XAPP_FORMATS_A1MSG_A1_POLICY_HELPER_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp-mgmt/format_helper.hpp b/setup/xapp-bs-connector/src/xapp-mgmt/format_helper.hpp new file mode 100644 index 0000000..8092173 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-mgmt/format_helper.hpp @@ -0,0 +1,49 @@ +/* +================================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * a1_policy.hpp + * + * Created on: Mar, 2020 + * Author: Shraboni Jana + */ + +#ifndef SRC_XAPP_MGMT_A1MSG_A1_POLICY_HELPER_HPP_ +#define SRC_XAPP_MGMT_A1MSG_A1_POLICY_HELPER_HPP_ + +#include +#include +#include +#include + +using namespace rapidjson; + +typedef struct a1_policy_helper a1_policy_helper; + +struct a1_policy_helper{ + + std::string operation; + std::string policy_type_id; + std::string policy_instance_id; + std::string handler_id; + std::string status; + +}; + + +#endif /* SRC_XAPP_FORMATS_A1MSG_A1_POLICY_HELPER_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp-mgmt/msgs_proc.cc b/setup/xapp-bs-connector/src/xapp-mgmt/msgs_proc.cc new file mode 100644 index 0000000..942be65 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-mgmt/msgs_proc.cc @@ -0,0 +1,293 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * msgs_proc.cc + * Created on: 2019 + * Author: Ashwin Shridharan, Shraboni Jana + */ + + +#include "msgs_proc.hpp" +#include + + +bool XappMsgHandler::encode_subscription_delete_request(unsigned char* buffer, size_t *buf_len){ + + subscription_helper sub_helper; + sub_helper.set_request(0); // requirement of subscription manager ... ? + sub_helper.set_function_id(0); + + subscription_delete e2ap_sub_req_del; + + // generate the delete request pdu + + bool res = e2ap_sub_req_del.encode_e2ap_subscription(&buffer[0], buf_len, sub_helper); + if(! res){ + mdclog_write(MDCLOG_ERR, "%s, %d: Error encoding subscription delete request pdu. Reason = %s", __FILE__, __LINE__, e2ap_sub_req_del.get_error().c_str()); + return false; + } + + return true; + +} + +bool XappMsgHandler::decode_subscription_response(unsigned char* data_buf, size_t data_size){ + + subscription_helper subhelper; + subscription_response subresponse; + bool res = true; + E2AP_PDU_t *e2pdu = 0; + + asn_dec_rval_t rval; + + ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, e2pdu); + + rval = asn_decode(0,ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, (void**)&e2pdu, data_buf, data_size); + switch(rval.code) + { + case RC_OK: + //Put in Subscription Response Object. + //asn_fprint(stdout, &asn_DEF_E2AP_PDU, e2pdu); + break; + case RC_WMORE: + mdclog_write(MDCLOG_ERR, "RC_WMORE"); + res = false; + break; + case RC_FAIL: + mdclog_write(MDCLOG_ERR, "RC_FAIL"); + res = false; + break; + default: + break; + } + ASN_STRUCT_FREE(asn_DEF_E2AP_PDU, e2pdu); + return res; + +} + +bool XappMsgHandler::a1_policy_handler(char * message, int *message_len, a1_policy_helper &helper){ + + rapidjson::Document doc; + if (doc.Parse(message).HasParseError()){ + mdclog_write(MDCLOG_ERR, "Error: %s, %d :: Could not decode A1 JSON message %s\n", __FILE__, __LINE__, message); + return false; + } + + //Extract Operation + rapidjson::Pointer temp1("/operation"); + rapidjson::Value * ref1 = temp1.Get(doc); + if (ref1 == NULL){ + mdclog_write(MDCLOG_ERR, "Error : %s, %d:: Could not extract policy type id from %s\n", __FILE__, __LINE__, message); + return false; + } + + helper.operation = ref1->GetString(); + + // Extract policy id type + rapidjson::Pointer temp2("/policy_type_id"); + rapidjson::Value * ref2 = temp2.Get(doc); + if (ref2 == NULL){ + mdclog_write(MDCLOG_ERR, "Error : %s, %d:: Could not extract policy type id from %s\n", __FILE__, __LINE__, message); + return false; + } + //helper.policy_type_id = ref2->GetString(); + helper.policy_type_id = to_string(ref2->GetInt()); + + // Extract policy instance id + rapidjson::Pointer temp("/policy_instance_id"); + rapidjson::Value * ref = temp.Get(doc); + if (ref == NULL){ + mdclog_write(MDCLOG_ERR, "Error : %s, %d:: Could not extract policy type id from %s\n", __FILE__, __LINE__, message); + return false; + } + helper.policy_instance_id = ref->GetString(); + + if (helper.policy_type_id == "1" && helper.operation == "CREATE"){ + helper.status = "OK"; + Document::AllocatorType& alloc = doc.GetAllocator(); + + Value handler_id; + handler_id.SetString(helper.handler_id.c_str(), helper.handler_id.length(), alloc); + + Value status; + status.SetString(helper.status.c_str(), helper.status.length(), alloc); + + + doc.AddMember("handler_id", handler_id, alloc); + doc.AddMember("status",status, alloc); + doc.RemoveMember("operation"); + StringBuffer buffer; + Writer writer(buffer); + doc.Accept(writer); + strncpy(message,buffer.GetString(), buffer.GetLength()); + *message_len = buffer.GetLength(); + return true; + } + return false; + } + + +//For processing received messages.XappMsgHandler should mention if resend is required or not. +void XappMsgHandler::operator()(rmr_mbuf_t *message, bool *resend){ + + if (message->len > MAX_RMR_RECV_SIZE){ + mdclog_write(MDCLOG_ERR, "Error : %s, %d, RMR message larger than %d. Ignoring ...", __FILE__, __LINE__, MAX_RMR_RECV_SIZE); + return; + } + a1_policy_helper helper; + bool res=false; + switch(message->mtype){ + //need to fix the health check. + case (RIC_HEALTH_CHECK_REQ): + message->mtype = RIC_HEALTH_CHECK_RESP; // if we're here we are running and all is ok + message->sub_id = -1; + strncpy( (char*)message->payload, "HELLOWORLD OK\n", rmr_payload_size( message) ); + *resend = true; + break; + + case (RIC_INDICATION): { + + mdclog_write(MDCLOG_INFO, "Received RIC indication message of type = %d", message->mtype); + + unsigned char *me_id_null; + unsigned char *me_id = rmr_get_meid(message, me_id_null); + mdclog_write(MDCLOG_INFO,"RMR Received MEID: %s",me_id); + + process_ric_indication(message->mtype, me_id, message->payload, message->len); + + break; + } + + case (RIC_SUB_RESP): { + mdclog_write(MDCLOG_INFO, "Received subscription message of type = %d", message->mtype); + + unsigned char *me_id_null; + unsigned char *me_id = rmr_get_meid(message, me_id_null); + mdclog_write(MDCLOG_INFO,"RMR Received MEID: %s",me_id); + + if(_ref_sub_handler !=NULL){ + _ref_sub_handler->manage_subscription_response(message->mtype, me_id, message->payload, message->len); + } else { + mdclog_write(MDCLOG_ERR, " Error :: %s, %d : Subscription handler not assigned in message processor !", __FILE__, __LINE__); + } + *resend = false; + break; + } + + case A1_POLICY_REQ: + + mdclog_write(MDCLOG_INFO, "In Message Handler: Received A1_POLICY_REQ."); + helper.handler_id = xapp_id; + + res = a1_policy_handler((char*)message->payload, &message->len, helper); + if(res){ + message->mtype = A1_POLICY_RESP; // if we're here we are running and all is ok + message->sub_id = -1; + *resend = true; + } + break; + + default: + { + mdclog_write(MDCLOG_ERR, "Error :: Unknown message type %d received from RMR", message->mtype); + *resend = false; + } + } + + return; + +}; + +void process_ric_indication(int message_type, transaction_identifier id, const void *message_payload, size_t message_len) { + + std::cout << "In Process RIC indication" << std::endl; + std::cout << "ID " << id << std::endl; + + // decode received message payload + E2AP_PDU_t *pdu = nullptr; + auto retval = asn_decode(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, (void **) &pdu, message_payload, message_len); + + // print decoded payload + if (retval.code == RC_OK) { + char *printBuffer; + size_t size; + FILE *stream = open_memstream(&printBuffer, &size); + asn_fprint(stream, &asn_DEF_E2AP_PDU, pdu); + mdclog_write(MDCLOG_DEBUG, "Decoded E2AP PDU: %s", printBuffer); + + uint8_t res = procRicIndication(pdu, id); + } + else { + std::cout << "process_ric_indication, retval.code " << retval.code << std::endl; + } +} + +/** + * Handle RIC indication + * TODO doxy + */ +uint8_t procRicIndication(E2AP_PDU_t *e2apMsg, transaction_identifier gnb_id) +{ + uint8_t idx; + uint8_t ied; + uint8_t ret = RC_OK; + uint32_t recvBufLen; + RICindication_t *ricIndication; + RICaction_ToBeSetup_ItemIEs_t *actionItem; + + printf("\nE2AP : RIC Indication received"); + ricIndication = &e2apMsg->choice.initiatingMessage->value.choice.RICindication; + + printf("protocolIEs elements %d\n", ricIndication->protocolIEs.list.count); + + for (idx = 0; idx < ricIndication->protocolIEs.list.count; idx++) + { + switch(ricIndication->protocolIEs.list.array[idx]->id) + { + case 28: // RIC indication type + { + long ricindicationType = ricIndication->protocolIEs.list.array[idx]-> \ + value.choice.RICindicationType; + + printf("ricindicationType %ld\n", ricindicationType); + + break; + } + case 26: // RIC indication message + { + int payload_size = ricIndication->protocolIEs.list.array[idx]-> \ + value.choice.RICindicationMessage.size; + + + char* payload = (char*) calloc(payload_size, sizeof(char)); + memcpy(payload, ricIndication->protocolIEs.list.array[idx]-> \ + value.choice.RICindicationMessage.buf, payload_size); + + printf("Payload %s\n", payload); + + // send payload to agent + std::string agent_ip = find_agent_ip_from_gnb(gnb_id); + send_socket(payload, agent_ip); + + break; + } + } + } + return ret; // TODO update ret value in case of errors +} diff --git a/setup/xapp-bs-connector/src/xapp-mgmt/msgs_proc.hpp b/setup/xapp-bs-connector/src/xapp-mgmt/msgs_proc.hpp new file mode 100644 index 0000000..aa3cc20 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-mgmt/msgs_proc.hpp @@ -0,0 +1,74 @@ + /* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * msgs_proc.hpp + * Created on: 2019 + * Author: Ashwin Shridharan, Shraboni Jana + */ +#pragma once + +#ifndef XAPP_MSG_XAPP_MSG_HPP_ +#define XAPP_MSG_XAPP_MSG_HPP_ + +#include +#include +#include +#include + +#include "a1_helper.hpp" +#include "e2ap_control.hpp" +#include "e2ap_control_response.hpp" +#include "e2ap_indication.hpp" +#include "subscription_delete_request.hpp" +#include "subscription_delete_response.hpp" +#include "subscription_helper.hpp" +#include "subscription_request.hpp" +#include "subscription_request.hpp" +#include "subscription_response.hpp" +#include "e2sm_subscription.hpp" +#include "subs_mgmt.hpp" +#include "../agent_connector.hpp" + +#define MAX_RMR_RECV_SIZE 2<<15 + +class XappMsgHandler{ + +private: + std::string xapp_id; + SubscriptionHandler *_ref_sub_handler; +public: + //constructor for xapp_id. + XappMsgHandler(std::string xid){xapp_id=xid; _ref_sub_handler=NULL;}; + XappMsgHandler(std::string xid, SubscriptionHandler &subhandler){xapp_id=xid; _ref_sub_handler=&subhandler;}; + + void operator() (rmr_mbuf_t *, bool*); + + void register_handler(); + bool encode_subscription_delete_request(unsigned char*, size_t* ); + + bool decode_subscription_response(unsigned char*, size_t ); + + bool a1_policy_handler(char *, int* , a1_policy_helper &); + + void testfunction() {std::cout << "<<<<<<<<<<<<<<<<< +#include +#include + +SubscriptionHandler::SubscriptionHandler(unsigned int timeout_seconds):_time_out(std::chrono::seconds(timeout_seconds)){ + _data_lock = std::make_unique(); + _cv = std::make_unique(); +}; + +void SubscriptionHandler::clear(void){ + { + std::lock_guard lock(*(_data_lock).get()); + status_table.clear(); + } + +}; + + +bool SubscriptionHandler::add_request_entry(transaction_identifier id, transaction_status status){ + + // add entry in hash table if it does not exist + //auto search = status_table.find(id); + //if(search != status_table.end()){ + if(transaction_present(status_table, id)){ + return false; + } + std::cout << "add_request_entry " << id << std::endl; + status_table[id] = status; + return true; + +}; + + + +bool SubscriptionHandler::delete_request_entry(transaction_identifier id){ + + auto search = status_table.find(id); + + if (!trans_table.empty()) { + auto search2 = trans_table.find(id); + if(search2 !=trans_table.end()){ + trans_table.erase(search2); + } + } + + if (search != status_table.end()){ + status_table.erase(search); + mdclog_write(MDCLOG_INFO,"Entry for Transaction ID deleted: %s", id); + + return true; + } + mdclog_write(MDCLOG_INFO,"Entry not found in SubscriptionHandler for Transaction ID: %d",id); + + return false; +}; + + +bool SubscriptionHandler::set_request_status(transaction_identifier id, transaction_status status){ + + // change status of a request only if it exists. + //auto search = status_table.find(id); + if(transaction_present(status_table, id)){ + status_table[id] = status; + std::cout << "set_request_status " << id << " to status " << status << std::endl; + return true; + } + + return false; + +}; + + +int const SubscriptionHandler::get_request_status(transaction_identifier id){ + //auto search = status_table.find(id); + auto search = find_transaction(status_table, id); + std::cout << "get_request_status " << id << std::endl; + if (search == status_table.end()){ + return -1; + } + + return search->second; +} + + + +bool SubscriptionHandler::is_request_entry(transaction_identifier id){ + + std::cout << "is_request_entry, looking for key: " << id << std::endl; + + if (transaction_present(status_table, id)) { + std::cout << "Key found" << std::endl; + return true; + } + else { + std::cout << "Key NOT found" << std::endl; + return false; + } +} + +// Handles subscription responses +void SubscriptionHandler::manage_subscription_response(int message_type, transaction_identifier id, const void *message_payload, size_t message_len){ + + bool res; + std::cout << "In Manage subscription" << std::endl; + + // wake up all waiting users ... + if(is_request_entry(id)){ + std::cout << "In Manage subscription, inside if loop" << std::endl; + std::cout << "Setting to request_success: " << request_success << std::endl; + + set_request_status(id, request_success); + _cv.get()->notify_all(); + } + + // decode received message payload + E2AP_PDU_t *pdu = nullptr; + auto retval = asn_decode(nullptr, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2AP_PDU, (void **) &pdu, message_payload, message_len); + + // print decoded payload + if (retval.code == RC_OK) { + char *printBuffer; + size_t size; + FILE *stream = open_memstream(&printBuffer, &size); + asn_fprint(stream, &asn_DEF_E2AP_PDU, pdu); + mdclog_write(MDCLOG_DEBUG, "Decoded E2AP PDU: %s", printBuffer); + } +} + +std::unordered_map::iterator find_transaction(std::unordered_map map, + transaction_identifier id) { + auto iter = map.begin(); + while (iter != map.end()) { + if (strcmp((const char*) iter->first, (const char*) id) == 0) { + break; + } + ++iter; + } + + return iter; +} + +bool transaction_present(std::unordered_map map, transaction_identifier id) { + auto iter = map.begin(); + while (iter != map.end()) { + if (strcmp((const char*) iter->first, (const char*) id) == 0) { + return true; + } + ++iter; + } + + return false; +} + diff --git a/setup/xapp-bs-connector/src/xapp-mgmt/subs_mgmt.hpp b/setup/xapp-bs-connector/src/xapp-mgmt/subs_mgmt.hpp new file mode 100644 index 0000000..608c28f --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-mgmt/subs_mgmt.hpp @@ -0,0 +1,269 @@ +/* +================================================================================== + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +/* + * subs_mgmt.hpp + * Created on: 2019 + * Author: Ashwin Shridharan, Shraboni Jana + */ + +#pragma once + +#ifndef SUBSCRIPTION_HANDLER +#define SUBSCRIPTION_HANDLER + +#include +#include +#include +#include +#include +#include +#include + +#include "../xapp-asn/e2ap/subscription_delete_request.hpp" +#include "../xapp-asn/e2ap/subscription_delete_response.hpp" +#include "../xapp-asn/e2ap/subscription_request.hpp" +#include "../xapp-asn/e2ap/subscription_response.hpp" + +#define SUBSCR_SUCCESS 1 +#define SUBSCR_ERR_TX -1 +#define SUBSCR_ERR_TIMEOUT -2 +#define SUBSCR_ERR_FAIL -3 +#define SUBSCR_ERR_UNKNOWN -4 +#define SUBSCR_ERR_DUPLICATE -5 + +using namespace std; + +class TransmitterBase +{ +public: + virtual ~TransmitterBase() {} + + template + const T& getParam() const; //to be implemented after Parameter + + template + void setParam(const U& rhs); //to be implemented after Parameter +}; + +template +class Transmitter : public TransmitterBase +{ +public: + Transmitter(const T& tx) :obj(tx) {} + const T& getParam() const {return obj;} + void setParam(const T& tx) {obj=tx;} +private: + T obj; +}; + +//Here's the trick: dynamic_cast rather than virtual +template const T& TransmitterBase::getParam() const +{ + return dynamic_cast&>(*this).getParam(); +} +template void TransmitterBase::setParam(const U& rhs) +{ + dynamic_cast&>(*this).setParam(rhs); + return; +} + +typedef enum { + request_pending = 1, + request_success, + request_failed, + delete_request_pending, + delete_request_success, + delete_request_failed, + request_duplicate +}Subscription_Status_Types; + +using transaction_identifier = unsigned char*; +using transaction_status = Subscription_Status_Types; + +class SubscriptionHandler { + +public: + + SubscriptionHandler(unsigned int timeout_seconds = 10); + + template + int manage_subscription_request(transaction_identifier, AppTransmitter &&); + + template + int manage_subscription_delete_request(transaction_identifier, AppTransmitter &&); + + void manage_subscription_response(int message_type, transaction_identifier id, const void *message_payload, size_t message_len); + + int const get_request_status(transaction_identifier); + bool set_request_status(transaction_identifier, transaction_status); + bool is_request_entry(transaction_identifier); + void set_timeout(unsigned int); + void clear(void); + void set_ignore_subs_resp(bool b){_ignore_subs_resp = b;}; + +private: + + bool add_request_entry(transaction_identifier, transaction_status); + bool delete_request_entry(transaction_identifier); + + template + bool add_transmitter_entry(transaction_identifier, AppTransmitter&&); + + std::unordered_map trans_table; + std::unordered_map status_table; + + std::unique_ptr _data_lock; + std::unique_ptr _cv; + + std::chrono::seconds _time_out; + + bool _ignore_subs_resp = false; +}; + +template +bool SubscriptionHandler::add_transmitter_entry(transaction_identifier id, AppTransmitter &&trans){ + + // add entry in hash table if it does not exist + //auto search = trans_table.find(id); + auto search = trans_table.begin(); + while (search != trans_table.end()) { + if (strcmp((const char*) search->first, (const char*) id) == 0) { + break; + } + ++search; + } + + if(search != trans_table.end()){ + return false; + } + + Transmitter tptr(trans); + trans_table[id] = tptr; + return true; + +}; + +//this will work for both sending subscription request and subscription delete request. +//The handler is oblivious of the message content and follows the transaction id. +template +int SubscriptionHandler::manage_subscription_request(transaction_identifier rmr_trans_id, AppTransmitter && tx){ + int res; + // put entry in request table + { + std::lock_guard lock(*(_data_lock.get())); + + res = add_request_entry(rmr_trans_id, request_pending); + if(! res){ + mdclog_write(MDCLOG_ERR, "%s, %d : Error adding new subscription request %s to queue because request with identical key already present", __FILE__, __LINE__, rmr_trans_id); + return SUBSCR_ERR_DUPLICATE; + } + else { + std::cout << "Added status pending to request " << rmr_trans_id << std::endl; + }} + + + // acquire lock ... + std::unique_lock _local_lock(*(_data_lock.get())); + + // Send the message + bool flg = tx(); + + if (!flg){ + // clear state + delete_request_entry(rmr_trans_id); + mdclog_write(MDCLOG_ERR, "%s, %d :: Error transmitting subscription request %s", __FILE__, __LINE__, rmr_trans_id ); + return SUBSCR_ERR_TX; + } else { + mdclog_write(MDCLOG_INFO, "%s, %d :: Transmitted subscription request for trans_id %s", __FILE__, __LINE__, rmr_trans_id ); + add_transmitter_entry(rmr_trans_id, tx); + + } + + // record time stamp .. + auto start = std::chrono::system_clock::now(); + res = SUBSCR_ERR_UNKNOWN; + + + while(1){ + // release lock and wait to be woken up + _cv.get()->wait_for(_local_lock, _time_out); + + // we have woken and acquired data_lock + // check status and return appropriate object + int status = get_request_status(rmr_trans_id); + + if (status == request_success){ + mdclog_write(MDCLOG_INFO, "Successfully subscribed for request for trans_id %s", rmr_trans_id); + res = SUBSCR_SUCCESS; + break; + } + + if (status == request_pending){ + // woken up spuriously or timed out + auto end = std::chrono::system_clock::now(); + std::chrono::duration f = end - start; + + if ( f > _time_out){ + + mdclog_write(MDCLOG_ERR, "%s, %d:: Subscription request with transaction id %s timed out waiting for response ", __FILE__, __LINE__, rmr_trans_id); + + //res = SUBSCR_ERR_TIMEOUT; + //sunny side scenario. assuming subscription response is received. + res = SUBSCR_SUCCESS; + break; + } + else{ + mdclog_write(MDCLOG_INFO, "Subscription request with transaction id %s Waiting for response....", rmr_trans_id); + continue; + } + + } + + if(status == request_failed){ + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Subscription Request with transaction id %s got failure response .. \n", __FILE__, __LINE__, rmr_trans_id); + res = SUBSCR_ERR_FAIL; + break; + } + + if (status == request_duplicate){ + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Subscription Request with transaction id %s is duplicate : subscription already present in table .. \n", __FILE__, __LINE__, rmr_trans_id); + res = SUBSCR_ERR_DUPLICATE; + break; + + } + + // if we are here, some spurious + // status obtained or request failed . we return appropriate error code + mdclog_write(MDCLOG_ERR, "Error :: %s, %d : Spurious time out caused by invalid state of request %s, and state = %d. Deleting request entry and failing .. \n", __FILE__, __LINE__, rmr_trans_id, status); + res = SUBSCR_ERR_UNKNOWN; + break; + }; + + delete_request_entry(rmr_trans_id); + + // release data lock + _local_lock.unlock(); + // std::cout <<"Returning res = " << res << " for request = " << rmr_trans_id << std::endl; + return res; +}; + +std::unordered_map::iterator find_transaction(std::unordered_map map, + transaction_identifier id); +bool transaction_present(std::unordered_map map, transaction_identifier id); + +#endif diff --git a/setup/xapp-bs-connector/src/xapp-mgmt/xapp_handler.hpp b/setup/xapp-bs-connector/src/xapp-mgmt/xapp_handler.hpp new file mode 100644 index 0000000..5b547b7 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-mgmt/xapp_handler.hpp @@ -0,0 +1,21 @@ +/* + * xapp_handler.hpp + * + * Created on: Mar 16, 2020 + * Author: Shraboni Jana + */ + +#ifndef SRC_XAPP_MGMT_XAPP_HANDLER_HPP_ +#define SRC_XAPP_MGMT_XAPP_HANDLER_HPP_ + +class XappHandler{ + XappHandler *xhandler; +public: + virtual ~XappHandler(){delete xhandler;}; + virtual void register_handler(XappHandler *xhandler) = 0; + virtual XappHandler* get_handler() = 0; +}; + + + +#endif /* SRC_XAPP_MGMT_XAPP_HANDLER_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp-utils/xapp_config.cc b/setup/xapp-bs-connector/src/xapp-utils/xapp_config.cc new file mode 100644 index 0000000..251f503 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-utils/xapp_config.cc @@ -0,0 +1,144 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + */ +/* + * xapp_config.cc + * Created on: 2019 + * Author: Ashwin Shridharan, Shraboni Jana + */ + +#include "xapp_config.hpp" + +string& XappSettings::operator[](const SettingName& theName){ + return theSettings[theName]; +} + +void XappSettings::loadCmdlineSettings(int argc, char **argv){ + + // Parse command line options to over ride + static struct option long_options[] = + { + {"xappname", required_argument, 0, 'n'}, + {"xappid", required_argument, 0, 'x'}, + {"port", required_argument, 0, 'p'}, + {"threads", required_argument, 0, 't'}, + {"ves-interval", required_argument, 0, 'i'}, + {"gNodeB", required_argument, 0, 'g'} + + }; + + + while(1) { + + int option_index = 0; + char c = getopt_long(argc, argv, "n:p:t:s:g:a:v:u:i:c:x:", long_options, &option_index); + + if(c == -1){ + break; + } + + switch(c) + { + + case 'n': + theSettings[XAPP_NAME].assign(optarg); + break; + + case 'p': + theSettings[HW_PORT].assign(optarg); + break; + + case 't': + theSettings[THREADS].assign(optarg); + mdclog_write(MDCLOG_INFO, "Number of threads set to %s from command line e\n", theSettings[THREADS].c_str()); + break; + + + case 'x': + theSettings[XAPP_ID].assign(optarg); + mdclog_write(MDCLOG_INFO, "XAPP ID set to %s from command line ", theSettings[XAPP_ID].c_str()); + break; + + case 'h': + usage(argv[0]); + exit(0); + + default: + usage(argv[0]); + exit(1); + } + }; + +} + +void XappSettings::loadDefaultSettings(){ + + + if(theSettings[XAPP_NAME].empty()){ + theSettings[XAPP_NAME] = DEFAULT_XAPP_NAME; + } + + if(theSettings[XAPP_ID].empty()){ + theSettings[XAPP_ID] = DEFAULT_XAPP_NAME; //for now xapp_id is same as xapp_name since single xapp instance. + } + if(theSettings[LOG_LEVEL].empty()){ + theSettings[LOG_LEVEL] = DEFAULT_LOG_LEVEL; + } + if(theSettings[HW_PORT].empty()){ + theSettings[HW_PORT] = DEFAULT_PORT; + } + if(theSettings[MSG_MAX_BUFFER].empty()){ + theSettings[MSG_MAX_BUFFER] = DEFAULT_MSG_MAX_BUFFER; + } + + if(theSettings[THREADS].empty()){ + theSettings[THREADS] = DEFAULT_THREADS; + } + + +} + +void XappSettings::loadEnvVarSettings(){ + + if (const char *env_xname = std::getenv("XAPP_NAME")){ + theSettings[XAPP_NAME].assign(env_xname); + mdclog_write(MDCLOG_INFO,"Xapp Name set to %s from environment variable", theSettings[XAPP_NAME].c_str()); + } + if (const char *env_xid = std::getenv("XAPP_NAME")){ + theSettings[XAPP_ID].assign(env_xid); + mdclog_write(MDCLOG_INFO,"Xapp ID set to %s from environment variable", theSettings[XAPP_ID].c_str()); + } + + if (const char *env_ports = std::getenv("HW_PORT")){ + theSettings[HW_PORT].assign(env_ports); + mdclog_write(MDCLOG_INFO,"Ports set to %s from environment variable", theSettings[HW_PORT].c_str()); + } + if (const char *env_ports = std::getenv("MSG_MAX_BUFFER")){ + theSettings[MSG_MAX_BUFFER].assign(env_ports); + mdclog_write(MDCLOG_INFO,"Ports set to %s from environment variable", theSettings[MSG_MAX_BUFFER].c_str()); + } + +} + +void XappSettings::usage(char *command){ + std::cout <<"Usage : " << command << " " << std::endl; + std::cout <<" --name[-n] xapp_instance_name "<< std::endl; + std::cout <<" --port[-p] port to listen on e.g tcp:4561 "<< std::endl; + std::cout << "--threads[-t] number of listener threads "<< std::endl ; + +} diff --git a/setup/xapp-bs-connector/src/xapp-utils/xapp_config.hpp b/setup/xapp-bs-connector/src/xapp-utils/xapp_config.hpp new file mode 100644 index 0000000..f15c879 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-utils/xapp_config.hpp @@ -0,0 +1,72 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + */ +/* + * xapp_config.hpp + * Created on: 2019 + * Author: Ashwin Shridharan, Shraboni Jana + */ + +#ifndef SRC_XAPP_CONFIG_XAPP_CONFIG_HPP_ +#define SRC_XAPP_CONFIG_XAPP_CONFIG_HPP_ + +#include +#include +#include +#include +#include + +#define DEFAULT_XAPP_NAME "hwxapp" +#define DEFAULT_PORT "4560" +#define DEFAULT_MSG_MAX_BUFFER "2072" +#define DEFAULT_THREADS "1" + +#define DEFAULT_LOG_LEVEL MDCLOG_WARN + +#define ASN_BUFF_MAX_SIZE 4096 +#define MAX_SUBSCRIPTION_ATTEMPTS 10 +#define HELLOWORLD_POLICY_ID 2 + +using namespace std; + +struct XappSettings{ + +public: + typedef enum{ + XAPP_ID, + XAPP_NAME, + HW_PORT, + MSG_MAX_BUFFER, + THREADS, + LOG_LEVEL + }SettingName; + + void loadDefaultSettings(); + void loadCmdlineSettings(int, char **); + void loadEnvVarSettings(); + void usage(char*); + string& operator[](const SettingName& theName); +private: + typedef map SettingCollection; + SettingCollection theSettings; + +}; + + + +#endif /* SRC_XAPP_CONFIG_XAPP_CONFIG_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp-utils/xapp_rmr.cc b/setup/xapp-bs-connector/src/xapp-utils/xapp_rmr.cc new file mode 100755 index 0000000..31cf774 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-utils/xapp_rmr.cc @@ -0,0 +1,174 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + */ + + +#include "xapp_rmr.hpp" + +XappRmr::XappRmr(std::string port, int rmrattempts){ + + _proto_port = port; + _nattempts = rmrattempts; + _xapp_rmr_ctx = NULL; + _xapp_received_buff = NULL; + _xapp_send_buff =NULL; + _rmr_is_ready = false; + _listen = false; + +}; + +XappRmr::~XappRmr(void){ + // free memory + if(_xapp_received_buff) + rmr_free_msg(_xapp_received_buff); + + if(_xapp_send_buff) + rmr_free_msg(_xapp_send_buff); + + if (_xapp_rmr_ctx){ + rmr_close(_xapp_rmr_ctx); + } +}; + +//Get RMR Context. +void XappRmr::xapp_rmr_init(bool rmr_listen){ + + + // Initialize the RMR context + _xapp_rmr_ctx = rmr_init(const_cast(_proto_port.c_str()), RMR_MAX_RCV_BYTES, RMRFL_NONE); + + if ( _xapp_rmr_ctx == NULL){ + mdclog_write(MDCLOG_ERR,"Error Initializing RMR, file= %s, line=%d",__FILE__,__LINE__); + } + while( ! rmr_ready(_xapp_rmr_ctx) ) { + mdclog_write(MDCLOG_INFO,">>> waiting for RMR, file= %s, line=%d",__FILE__,__LINE__); + sleep(1); + } + _rmr_is_ready = true; + mdclog_write(MDCLOG_INFO,"RMR Context is Ready, file= %s, line=%d",__FILE__,__LINE__); + + //Set the listener requirement + _listen = rmr_listen; + return; + +} + +bool XappRmr::rmr_header(xapp_rmr_header *hdr){ + + _xapp_send_buff->mtype = hdr->message_type; + _xapp_send_buff->len = hdr->payload_length; + _xapp_send_buff->sub_id = -1; + rmr_str2meid(_xapp_send_buff, hdr->meid); + + + return true; +} + +//RMR Send with payload and header. +bool XappRmr::xapp_rmr_send(xapp_rmr_header *hdr, void *payload){ + + // Get the thread id + std::thread::id my_id = std::this_thread::get_id(); + std::stringstream thread_id; + std::stringstream ss; + + thread_id << my_id; + mdclog_write(MDCLOG_INFO, "Sending thread %s", thread_id.str().c_str()); + + + int rmr_attempts = _nattempts; + + if( _xapp_send_buff == NULL ) { + _xapp_send_buff = rmr_alloc_msg(_xapp_rmr_ctx, RMR_DEF_SIZE); + } + + bool res = rmr_header(hdr); + if(!res){ + mdclog_write(MDCLOG_ERR,"RMR HEADERS were incorrectly populated, file= %s, line=%d",__FILE__,__LINE__); + return false; + } + + memcpy(_xapp_send_buff->payload, payload, hdr->payload_length); + _xapp_send_buff->len = hdr->payload_length; + + if(!_rmr_is_ready) { + mdclog_write(MDCLOG_ERR,"RMR Context is Not Ready in SENDER, file= %s, line=%d",__FILE__,__LINE__); + return false; + } + + while(rmr_attempts > 0){ + + _xapp_send_buff = rmr_send_msg(_xapp_rmr_ctx,_xapp_send_buff); + if(!_xapp_send_buff) { + mdclog_write(MDCLOG_ERR,"Error In Sending Message , file= %s, line=%d, attempt=%d",__FILE__,__LINE__,rmr_attempts); + rmr_attempts--; + } + else if (_xapp_send_buff->state == RMR_OK){ + mdclog_write(MDCLOG_INFO,"Message Sent: RMR State = RMR_OK"); + rmr_attempts = 0; + _xapp_send_buff = NULL; + return true; + } + else + { + mdclog_write(MDCLOG_INFO,"Need to retry RMR: state=%d, attempt=%d, file=%s, line=%d",_xapp_send_buff->state, rmr_attempts,__FILE__,__LINE__); + if(_xapp_send_buff->state == RMR_ERR_RETRY){ + usleep(1); } + rmr_attempts--; + } + sleep(1); + } + return false; +} + +//---------------------------------------- +// Some get/set methods +//--------------------------------------- +bool XappRmr::get_listen(void){ + return _listen; +} + + +void XappRmr::set_listen(bool listen){ + _listen = listen; +} + +int XappRmr::get_is_ready(void){ + return _rmr_is_ready; +} + +bool XappRmr::get_isRunning(void){ + return _listen; +} + + +void * XappRmr::get_rmr_context(void){ + return _xapp_rmr_ctx; +} + + +void init_logger(const char *AppName, mdclog_severity_t log_level) +{ + mdclog_attr_t *attr; + mdclog_attr_init(&attr); + mdclog_attr_set_ident(attr, AppName); + mdclog_init(attr); + mdclog_level_set(log_level); + mdclog_attr_destroy(attr); +} + diff --git a/setup/xapp-bs-connector/src/xapp-utils/xapp_rmr.hpp b/setup/xapp-bs-connector/src/xapp-utils/xapp_rmr.hpp new file mode 100755 index 0000000..3b94db4 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-utils/xapp_rmr.hpp @@ -0,0 +1,175 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ + +#ifndef XAPP_RMR_XAPP_RMR_H_ +#define XAPP_RMR_XAPP_RMR_H_ + + +#ifdef __GNUC__ +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) +#else +#define likely(x) (x) +#define unlikely(x) (x) +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +typedef struct{ + struct timespec ts; + int32_t message_type; + int32_t state; + int32_t payload_length; + unsigned char sid[RMR_MAX_SID]; //Subscription ID. + unsigned char src[RMR_MAX_SRC]; //Xapp Name + unsigned char meid[RMR_MAX_MEID]={}; + +} xapp_rmr_header; + + +class XappRmr{ +private: + std::string _proto_port; + int _nattempts; + bool _rmr_is_ready; + bool _listen; + void* _xapp_rmr_ctx; + rmr_mbuf_t* _xapp_send_buff; // send buffer + rmr_mbuf_t* _xapp_received_buff; // received buffer + + +public: + + XappRmr(std::string, int rmrattempts=10); + ~XappRmr(void); + void xapp_rmr_init(bool); + + template + void xapp_rmr_receive(MessageProcessor&&, XappRmr *parent); + + bool xapp_rmr_send(xapp_rmr_header*, void*); + + bool rmr_header(xapp_rmr_header*); + void set_listen(bool); + bool get_listen(void); + int get_is_ready(void); + bool get_isRunning(void); + void* get_rmr_context(void); + +}; + + +// main workhorse thread which does the listen->process->respond loop +template +void XappRmr::xapp_rmr_receive(MsgHandler&& msgproc, XappRmr *parent){ + + bool* resend = new bool(false); + // Get the thread id + std::thread::id my_id = std::this_thread::get_id(); + std::stringstream thread_id; + std::stringstream ss; + + thread_id << my_id; + + // Get the rmr context from parent (all threads and parent use same rmr context. rmr context is expected to be thread safe) + if(!parent->get_is_ready()){ + mdclog_write( MDCLOG_ERR, "RMR Shows Not Ready in RECEIVER, file= %s, line=%d ",__FILE__,__LINE__); + return; + } + void *rmr_context = parent->get_rmr_context(); + assert(rmr_context != NULL); + + // Get buffer specific to this thread + this->_xapp_received_buff = NULL; + this->_xapp_received_buff = rmr_alloc_msg(rmr_context, RMR_DEF_SIZE); + assert(this->_xapp_received_buff != NULL); + + mdclog_write(MDCLOG_INFO, "Starting receiver thread %s", thread_id.str().c_str()); + + while(parent->get_listen()) { + mdclog_write(MDCLOG_INFO, "Listening at Thread: %s", thread_id.str().c_str()); + + this->_xapp_received_buff = rmr_rcv_msg( rmr_context, this->_xapp_received_buff ); + //this->_xapp_received_buff = rmr_rcv_msg( rmr_context, this->_xapp_received_buff ); + //this->_xapp_received_buff = rmr_call( rmr_context, this->_xapp_received_buff); + + if( this->_xapp_received_buff->mtype < 0 || this->_xapp_received_buff->state != RMR_OK ) { + mdclog_write(MDCLOG_ERR, "bad msg: state=%d errno=%d, file= %s, line=%d", this->_xapp_received_buff->state, errno, __FILE__,__LINE__ ); + return; + } + else + { + mdclog_write(MDCLOG_INFO,"RMR Received Message of Type: %d, Message length: %d", this->_xapp_received_buff->mtype, this->_xapp_received_buff->len); + + char printBuffer[4096] = {0}; + char *tmp = printBuffer; + for (size_t i = 0; i < (size_t)_xapp_received_buff->len; ++i) { + snprintf(tmp, 3, "%02x", _xapp_received_buff->payload[i]); + tmp += 2; + } + mdclog_write(MDCLOG_INFO,"RMR Received Message: %s", printBuffer); + + //in case message handler returns true, need to resend the message. + msgproc(this->_xapp_received_buff, resend); + + if(*resend){ + mdclog_write(MDCLOG_INFO,"RMR Return to Sender Message of Type: %d, Message length: %d", this->_xapp_received_buff->mtype, this->_xapp_received_buff->len); + mdclog_write(MDCLOG_INFO,"RMR Return to Sender Message: %s", printBuffer); + rmr_rts_msg(rmr_context, this->_xapp_received_buff ); + sleep(1); + *resend = false; + } + continue; + + } + + } + // Clean up + try{ + delete resend; + rmr_free_msg(this->_xapp_received_buff); + } + catch(std::runtime_error &e){ + std::string identifier = __FILE__ + std::string(", Line: ") + std::to_string(__LINE__) ; + std::string error_string = identifier = " Error freeing RMR message "; + mdclog_write(MDCLOG_ERR, error_string.c_str(), ""); + } + + return; +} + + + + +#endif /* XAPP_RMR_XAPP_RMR_H_ */ diff --git a/setup/xapp-bs-connector/src/xapp-utils/xapp_sdl.cc b/setup/xapp-bs-connector/src/xapp-utils/xapp_sdl.cc new file mode 100644 index 0000000..d10dea2 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp-utils/xapp_sdl.cc @@ -0,0 +1,71 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + */ + +/* + * xapp_sdl.cc + * + * Created on: Mar, 2020 + * Author: Shraboni Jana + */ +#include "xapp_sdl.hpp" +/*need to work on the SDL FLow. Currently data hardcoded. +An xApp can use the SDL for two things: +- persisting state for itself (in case it fails and recovers) +- making information available for other xApps. The xApp would typically write using SDL directly. +- The consumer of the data could also use SDL directly or use an access library like in the case of the R-NIB. +*/ +bool XappSDL::set_data(shareddatalayer::SyncStorage *sdl){ + try{ + //connecting to the Redis and generating a random key for namespace "hwxapp" + mdclog_write(MDCLOG_INFO, "IN SDL Set Data", __FILE__, __LINE__); + DataMap dmap; + char key[4]="abc"; + std::cout << "KEY: "<< key << std::endl; + Key k = key; + Data d; + uint8_t num = 101; + d.push_back(num); + dmap.insert({k,d}); + Namespace ns(sdl_namespace); + sdl->set(ns, dmap); + } + catch(...){ + mdclog_write(MDCLOG_ERR, "SDL Error in Set Data for Namespace=%s",sdl_namespace); + return false; + } + return true; +} + +void XappSDL::get_data(shareddatalayer::SyncStorage *sdl){ + Namespace ns(sdl_namespace); + DataMap dmap; + std::string prefix=""; + Keys K = sdl->findKeys(ns, prefix); // just the prefix + DataMap Dk = sdl->get(ns, K); + for(auto si=K.begin();si!=K.end();++si){ + std::vector val_v = Dk[(*si)]; // 4 lines to unpack a string + char val[val_v.size()+1]; // from Data + int i; + for(i=0;i +#include +#include +#include +#include +#include +#include +#include + +using namespace std; +using Namespace = std::string; +using Key = std::string; +using Data = std::vector; +using DataMap = std::map; +using Keys = std::set; + +class XappSDL{ +private: + std::string sdl_namespace; + +public: + XappSDL(std::string ns) { sdl_namespace=ns; } + void get_data(shareddatalayer::SyncStorage *); + bool set_data(shareddatalayer::SyncStorage *); +}; + +#endif /* SRC_XAPP_UTILS_XAPP_SDL_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp.cc b/setup/xapp-bs-connector/src/xapp.cc new file mode 100644 index 0000000..e1a4a63 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp.cc @@ -0,0 +1,539 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + */ +/* + * xapp.cc + * + * Mar, 2020 (Shraboni Jana) + */ + +#include "xapp.hpp" + +#define BUFFER_SIZE 1024 + +std::map agentIp_socket; +std::map agentIp_gnbId; +std::vector drl_agent_ip{AGENT_0}; + + Xapp::Xapp(XappSettings &config, XappRmr &rmr){ + + rmr_ref = &rmr; + config_ref = &config; + xapp_mutex = NULL; + subhandler_ref = NULL; + return; +} + +Xapp::~Xapp(void){ + + //Joining the threads + int threadcnt = xapp_rcv_thread.size(); + for(int i=0; i~mutex(); + delete xapp_mutex; + } + + // close sockets + close_control_socket_agent(); + + // join threads + for (int i = 0; i < control_thr_rx.size(); ++i) { + if(control_thr_rx[i] && control_thr_rx[i]->joinable()) { + control_thr_rx[i]->join(); + } + } + + if(ext_control_thr_rx && ext_control_thr_rx->joinable()) { + ext_control_thr_rx->join(); + } +}; + +//Stop the xapp. Note- To be run only from unit test scripts. +void Xapp::stop(void){ + // Get the mutex lock + std::lock_guard guard(*xapp_mutex); + rmr_ref->set_listen(false); + rmr_ref->~XappRmr(); + + //Detaching the threads....not sure if this is the right way to stop the receiver threads. + //Hence function should be called only in Unit Tests + int threadcnt = xapp_rcv_thread.size(); + for(int i=0; i(new std::thread{&Xapp::handle_external_control_message, this, SOCKET_PORT_EXT}); + + for (int i = 0; i < drl_agent_ip.size(); ++i) { + // open control socket with agent + if (open_control_socket_agent(const_cast(drl_agent_ip[i].c_str()), 4200) == 0) { + // start receive thread + std::unique_ptr tmp_thr = std::unique_ptr(new std::thread{&Xapp::handle_rx_msg_agent, this, drl_agent_ip[i]}); + control_thr_rx.push_back(std::move(tmp_thr)); + } + } + + // send test message + // send_socket("Hello, Server!", AGENT_1); + + //send subscriptions. + startup_subscribe_requests(); + + //read A1 policies + // startup_get_policies(); + + // send control + // send_ric_control_request(); + + return; +} + +void Xapp::Run(){ + rmr_ref->set_listen(true); + if(xapp_mutex == NULL){ + xapp_mutex = new std::mutex(); + } + std::lock_guard guard(*xapp_mutex); + + for(size_t j=0; j < _callbacks.size(); j++){ + std::thread th_recv([&](){ rmr_ref->xapp_rmr_receive(std::move(_callbacks[j]), rmr_ref);}); + xapp_rcv_thread.push_back(std::move(th_recv)); + } + + return; +} + +//Starting a seperate single receiver +void Xapp::start_xapp_receiver(XappMsgHandler& mp_handler){ + //start a receiver thread. Can be multiple receiver threads for more than 1 listening port. + rmr_ref->set_listen(true); + if(xapp_mutex == NULL){ + xapp_mutex = new std::mutex(); + } + + mdclog_write(MDCLOG_INFO,"Receiver Thread file= %s, line=%d",__FILE__,__LINE__); + std::lock_guard guard(*xapp_mutex); + std::thread th_recv([&](){ rmr_ref->xapp_rmr_receive(std::move(mp_handler), rmr_ref);}); + xapp_rcv_thread.push_back(std::move(th_recv)); + return; +} + +void Xapp::shutdown(){ + return; +} + +// handle received message from DRL agent +void Xapp::handle_rx_msg(void) { + std::cout << "handle_rx_msg" << std::endl; + + const size_t max_size = 256; + char buf[max_size] = {0}; + + // listen to control from agent + while (true) { + // iterate through map + std::map::iterator it; + for (it = agentIp_socket.begin(); it != agentIp_socket.end(); ++it) { + std::string agent_ip = it->first; + int control_sckfd = it->second; + + int rcv_size = recv(control_sckfd, buf, max_size, 0); + if (rcv_size > 0) { + std::cout << "Message from agent " << agent_ip << std::endl; + std::cout << buf << std::endl; + + // get gnb_id from agent IP + std::map::iterator it_gnb; + it_gnb = agentIp_gnbId.find(agent_ip); + + // send RIC control request + if (it_gnb != agentIp_gnbId.end()) { + send_ric_control_request(buf, it_gnb->second); + } + else { + std::cout << "ERROR: No gNB ID found for agent " << agent_ip << std::endl; + } + + memset(buf, 0, max_size); + } + } + } +} + +// handle received message from a specific DRL agent +void Xapp::handle_rx_msg_agent(std::string agent_ip) { + std::cout << "Opening RX thread with agent " << agent_ip << std::endl; + + const size_t max_size = 256; + char buf[max_size] = {0}; + + // listen to control from agent + while (true) { + // get control_sckfd from agent IP + std::map::iterator it; + it = agentIp_socket.find(agent_ip); + + if (it != agentIp_socket.end()) { + int control_sckfd = it->second; + + int rcv_size = recv(control_sckfd, buf, max_size, 0); + if (rcv_size > 0) { + std::cout << "Message from agent " << agent_ip << std::endl; + std::cout << buf << std::endl; + + // get gnb_id from agent IP + std::map::iterator it_gnb; + it_gnb = agentIp_gnbId.find(agent_ip); + + // send RIC control request + if (it_gnb != agentIp_gnbId.end()) { + send_ric_control_request(buf, it_gnb->second); + } + else { + std::cout << "ERROR: No gNB ID found for agent " << agent_ip << std::endl; + } + + memset(buf, 0, max_size); + } + } + } +} + +// handle external control socket message +void Xapp::handle_external_control_message(int port) { + + // Create a socket (IPv4, TCP) + int sockfd = socket(AF_INET, SOCK_STREAM, 0); + if (sockfd == -1) { + std::cout << "Failed to create socket. errno: " << errno << std::endl; + return; + } + + // Listen on given port on any address + sockaddr_in sockaddr; + sockaddr.sin_family = AF_INET; + sockaddr.sin_addr.s_addr = INADDR_ANY; + sockaddr.sin_port = htons(port); + + if (bind(sockfd, (struct sockaddr*)&sockaddr, sizeof(sockaddr)) < 0) { + std::cout << "Failed to bind to port. Errno: " << errno << std::endl; + return; + } + + // Start listening. Hold at most 10 connections in the queue + if (listen(sockfd, 10) < 0) { + std::cout << "Failed to listen on socket. Errno: " << errno << std::endl; + return; + } + + std::cout << "Opened control socket server on port " << port << std::endl; + + while (true) { + auto addrlen = sizeof(sockaddr); + int connection = accept(sockfd, (struct sockaddr*)&sockaddr, (socklen_t*)&addrlen); + + if (connection < 0) { + continue; + } + + // Read from the connection + const size_t max_size = 256; + char buffer[max_size] = {0}; + auto bytes_read = read(connection, buffer, 100); + + if (bytes_read > 0) { + std::cout << "External control socket. Message received: " << buffer << std::endl; + + // TODO: check if message is termination, send to DU and shutdown xApp + if (strcmp(buffer, XAPP_TERMINATE) == 0) { + terminate_du_reporting(); + } + } + + memset(buffer, 0, max_size); + close(connection); + } + + close(sockfd); + + return; +} + + +// terminate all DU reportings and shutdown xApp +void Xapp::terminate_du_reporting(void) { + + std::map::iterator it; + for (it = agentIp_socket.begin(); it != agentIp_socket.end(); ++it) { + std::string agent_ip = it->first; + int control_sckfd = it->second; + + // get gnb_id from agent IP + std::map::iterator it_gnb; + it_gnb = agentIp_gnbId.find(agent_ip); + + std::cout << "Terminating reporting gNB " << it_gnb->second << std::endl; + send_ric_control_request(XAPP_TERMINATE, it_gnb->second); + } + + // stop xapp docker container with SIGTERM (15) + if (DEBUG) { + std::cout << "Debug mode, only echoing" << std::endl; + system("echo kill -s 15 1"); + } + else { + system("kill -s 15 1"); + } +} + +void Xapp::send_ric_control_request(char* payload, std::string gnb_id) { + + std::cout << "Sending RIC Control Request" << std::endl; + + bool res; + size_t data_size = ASN_BUFF_MAX_SIZE; + unsigned char data[data_size]; + unsigned char meid[RMR_MAX_MEID]; + std::string xapp_id = config_ref->operator [](XappSettings::SettingName::XAPP_ID); + + mdclog_write(MDCLOG_INFO, "Preparing to send control in file= %s, line=%d", __FILE__, __LINE__); + + auto gnblist = get_rnib_gnblist(); + int sz = gnblist.size(); + + if(sz <= 0) { + mdclog_write(MDCLOG_INFO, "Subscriptions cannot be sent as GNBList in RNIB is NULL"); + return; + } + + // give the message to subscription handler, along with the transmitter. + strcpy((char*)meid, gnb_id.c_str()); + std::cout << "RIC Control Request, gNB " << gnb_id << std::endl; + + // helpers + // set fields randomly + ric_control_helper din {}; + //= { + // 1, + // 1, + // 0, + // 1, + // -1, + // 0, + // 0, + // 1, + // "test", // control_msg + // 5, // control_msg_size + // "testh", // control header + // 6, + // "testp", // call process id + // 6 + //}; + const char* msg = payload; + din.control_msg_size = strlen(msg) + 1; + mdclog_write(MDCLOG_INFO, "Size of msg %d", din.control_msg_size); + din.control_msg = (uint8_t*) calloc(din.control_msg_size, sizeof(uint8_t)); + std::memcpy(din.control_msg, msg, din.control_msg_size); + ric_control_helper dout {}; + + // control request object + ric_control_request ctrl_req {}; + ric_control_request ctrl_recv {}; + + unsigned char buf[BUFFER_SIZE]; + size_t buf_size = BUFFER_SIZE; + + res = ctrl_req.encode_e2ap_control_request(&buf[0], &buf_size, din); + + xapp_rmr_header rmr_header; + rmr_header.message_type = RIC_CONTROL_REQ; + rmr_header.payload_length = buf_size; //data_size + strcpy((char*)rmr_header.meid, gnb_id.c_str()); + + mdclog_write(MDCLOG_INFO, "Sending CTRL REQ in file= %s, line=%d for MEID %s", __FILE__, __LINE__, meid); + + int result = rmr_ref->xapp_rmr_send(&rmr_header, (void*)buf); + if(result) { + mdclog_write(MDCLOG_INFO, "CTRL REQ SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid); + } +} + +void Xapp::startup_subscribe_requests(void ){ + + bool res; + size_t data_size = ASN_BUFF_MAX_SIZE; + unsigned char data[data_size]; + unsigned char meid[RMR_MAX_MEID]; + std::string xapp_id = config_ref->operator [](XappSettings::SettingName::XAPP_ID); + + mdclog_write(MDCLOG_INFO,"Preparing to send subscription in file= %s, line=%d", __FILE__, __LINE__); + + auto gnblist = get_rnib_gnblist(); + + int sz = gnblist.size(); + + if(sz <= 0) + mdclog_write(MDCLOG_INFO,"Subscriptions cannot be sent as GNBList in RNIB is NULL"); + + for(int i = 0; imanage_subscription_request(meid, transmitter); + if(result){ + mdclog_write(MDCLOG_INFO,"Subscription SUCCESSFUL in file= %s, line=%d for MEID %s",__FILE__,__LINE__, meid); + } + } +} + +void Xapp::startup_get_policies(void){ + + int policy_id = HELLOWORLD_POLICY_ID; + + std::string policy_query = "{\"policy_type_id\":" + std::to_string(policy_id) + "}"; + unsigned char * message = (unsigned char *)calloc(policy_query.length(), sizeof(unsigned char)); + memcpy(message, policy_query.c_str(), policy_query.length()); + xapp_rmr_header header; + header.payload_length = policy_query.length(); + header.message_type = A1_POLICY_QUERY; + mdclog_write(MDCLOG_INFO, "Sending request for policy id %d\n", policy_id); + rmr_ref->xapp_rmr_send(&header, (void *)message); + free(message); + +} + +void Xapp::set_rnib_gnblist(void) { + + openSdl(); + + void *result = getListGnbIds(); + if(strlen((char*)result) < 1){ + mdclog_write(MDCLOG_ERR, "ERROR: no data from getListGnbIds\n"); + return; + } + + mdclog_write(MDCLOG_INFO, "GNB List in R-NIB %s\n", (char*)result); + + // remove non-unicode characters that make rapodjson fail the parsing + std::string result_clean((char*) result); + while (result_clean.back() != '}') { + result_clean.pop_back(); + } + + Document doc; + ParseResult parseJson = doc.Parse(result_clean.c_str()); + if (!parseJson) { + //std::cerr << "JSON parse error: %s (%u)\n", GetParseErrorFunc(parseJson.Code()); + std::cerr << "JSON parse error: " << GetParseErrorFunc(parseJson.Code()) << std::endl; + return; + } + + if(!doc.HasMember("gnb_list")){ + mdclog_write(MDCLOG_INFO, "JSON Has No GNB List Object"); + return; + } + assert(doc.HasMember("gnb_list")); + + const Value& gnblist = doc["gnb_list"]; + if (gnblist.IsNull()) + return; + + if(!gnblist.IsArray()){ + mdclog_write(MDCLOG_INFO, "GNB List is not an array"); + return; + } + + + assert(gnblist.IsArray()); + for (SizeType i = 0; i < gnblist.Size(); i++) { // Uses SizeType instead of size_t + assert(gnblist[i].IsObject()); + const Value& gnbobj = gnblist[i]; + assert(gnbobj.HasMember("inventory_name")); + assert(gnbobj["inventory_name"].IsString()); + std::string name = gnbobj["inventory_name"].GetString(); + rnib_gnblist.push_back(name); + } + + closeSdl(); + return; +} diff --git a/setup/xapp-bs-connector/src/xapp.hpp b/setup/xapp-bs-connector/src/xapp.hpp new file mode 100644 index 0000000..9241990 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp.hpp @@ -0,0 +1,125 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== + *//* + * xapp.hpp + * + * Mar, 2020 (Shraboni Jana) + * + */ + +#pragma once + +#ifndef SRC_XAPP_HPP_ +#define SRC_XAPP_HPP_ + +#include +#include +#include +#include +#include +#include +#include +#include "xapp_rmr.hpp" +#include "xapp_sdl.hpp" +#include "rapidjson/writer.h" +#include "rapidjson/document.h" +#include "rapidjson/error/error.h" +#include +#include +#include +#include +#include +#include "agent_connector.hpp" +#include + +#include "msgs_proc.hpp" +#include "subs_mgmt.hpp" +#include "xapp_config.hpp" +extern "C" { +#include "rnib/rnibreader.h" +} +using namespace std; +using namespace std::placeholders; +using namespace rapidjson; + +// used to identify xApp requests with DUs +// Note: this value is updated at Docker build to use the last octet of the xApp IP +#define XAPP_REQ_ID 0 + +#define SOCKET_PORT_EXT 7000 +#define XAPP_TERMINATE "terminate" + +// id of gnb to control as seen from the ric +#define GNB_ID "" + +#define DEBUG 0 + +class Xapp{ +public: + + Xapp(XappSettings &, XappRmr &); + + ~Xapp(void); + + void stop(void); + + void startup(SubscriptionHandler &); + void shutdown(void); + + void start_xapp_receiver(XappMsgHandler &); + void Run(); + + void sdl_data(void); + + Xapp(Xapp const &)=delete; + Xapp& operator=(Xapp const &) = delete; + + void register_handler(XappMsgHandler &fn){ + _callbacks.emplace_back(fn); + } + + //getters/setters. + void set_rnib_gnblist(void); + std::vector get_rnib_gnblist(){ return rnib_gnblist; } + +private: + void startup_subscribe_requests(void ); + void shutdown_subscribe_deletes(void); + void send_ric_control_request(char* payload, std::string gnb_id); + void startup_get_policies(void ); + + void handle_rx_msg(void); + void handle_rx_msg_agent(std::string agent_ip); + void handle_external_control_message(int port); + void terminate_du_reporting(void); + + XappRmr * rmr_ref; + XappSettings * config_ref; + SubscriptionHandler *subhandler_ref; + + std::mutex *xapp_mutex; + std::vector xapp_rcv_thread; + std::vector rnib_gnblist; + std::vector _callbacks; + + std::vector> control_thr_rx; + std::unique_ptr ext_control_thr_rx; +}; + + +#endif /* SRC_XAPP_HPP_ */ diff --git a/setup/xapp-bs-connector/src/xapp_env.sh b/setup/xapp-bs-connector/src/xapp_env.sh new file mode 100755 index 0000000..b9a3922 --- /dev/null +++ b/setup/xapp-bs-connector/src/xapp_env.sh @@ -0,0 +1,12 @@ +#! /bin/bash + +export RMR_SEED_RT="routes.txt" +export RMR_RTG_SVC="9999" +export MSG_MAX_BUFFER="2072" +export THREADS="1" +export VERBOSE="0" +export CONFIG_FILE="config/config-file.json" +export XAPP_ID="3489-er492k-92389" +export LOG_LEVEL="MDCLOG_ERR" +export DBAAS_SERVICE_HOST="10.0.2.12" +export DBAAS_SERVICE_PORT="6379" diff --git a/setup/xapp-bs-connector/test/Makefile b/setup/xapp-bs-connector/test/Makefile new file mode 100644 index 0000000..ec89c05 --- /dev/null +++ b/setup/xapp-bs-connector/test/Makefile @@ -0,0 +1,83 @@ +CXX:= g++ --std=c++14 -O2 -L/usr/local/lib +CC:= gcc -O2 -L/usr/local/lib + +TEST:=./ +SRC:=../src +UTILSRC=../src/xapp-utils +MGMTSRC:=../src/xapp-mgmt + +ASNSRC:=../asn1c_defs +E2APSRC:=../src/xapp-asn/e2ap +E2SMSRC:=../src/xapp-asn/e2sm + +####### Logging library and flags +CLOGFLAGS:= `pkg-config mdclog --cflags` +LOG_LIBS:= `pkg-config mdclog --libs` +CURL_LIBS:= `pkg-config libcurl --libs` +RNIB_LIBS:= -pthread /usr/local/include/rnib/rnibreader.a +GTEST_LIBS:= -lgtest -lgtest_main +######## Keep include dirs separate so we have transparency + + +BASEFLAGS= -Wall -std=c++14 $(CLOGFLAGS) +C_BASEFLAGS= -Wall $(CLOGFLAGS) -DASN_DISABLE_OER_SUPPORT + +XAPPFLAGS= -I$(SRC) +UTILFLAGS= -I$(UTILSRC) +MGMTFLAGS= -I$(MGMTSRC) + +ASNFLAGS=-I$(ASNSRC) -DASN_DISABLE_OER_SUPPORT +E2APFLAGS = -I$(E2APSRC) +E2SMFLAGS = -I$(E2SMSRC) + +########libs + +LIBS= -lsdl -lrmr_si -lpthread -lm $(LOG_LIBS) $(CURL_LIBS) $(RNIB_LIBS) $(GTEST_LIBS) +COV_FLAGS= -fprofile-arcs -ftest-coverage + +####### +TEST_SRC= hw_unit_tests.cc +XAPP_SRC= ../src/xapp.cc +TEST_HDR=$(wildcard $(TEST)/*.h) +UTIL_SRC= $(wildcard $(UTILSRC)/*.cc) +MGMT_SRC= $(wildcard $(MGMTSRC)/*.cc) + +E2AP_SRC= $(wildcard $(E2APSRC)/*.cc) +E2SM_SRC= $(wildcard $(E2SMSRC)/*.cc) +ASN1C_SRC= $(wildcard $(ASNSRC)/*.c) + +##############Objects +UTIL_OBJ=${UTIL_SRC:.cc=.o} +MGMT_OBJ=${MGMT_SRC:.cc=.o} +XAPP_OBJ=${XAPP_SRC:.cc=.o} +TEST_OBJ=${TEST_SRC:.cc=.o} + +E2AP_OBJ = $(E2AP_SRC:.cc=.o) +E2SM_OBJ = $(E2SM_SRC:.cc=.o) + +ASN1C_MODULES = $(ASN1C_SRC:.c=.o) +$(ASN1C_MODULES): export CFLAGS = $(C_BASEFLAGS) $(ASNFLAGS) + +$(UTIL_OBJ):export CPPFLAGS=$(BASEFLAGS) $(UTILFLAGS) $(MGMTFLAGS) +$(MGMT_OBJ):export CPPFLAGS=$(BASEFLAGS) $(MGMTFLAGS) $(ASNFLAGS) $(E2APFLAGS) $(E2SMFLAGS) + +$(E2AP_OBJ): export CPPFLAGS = $(BASEFLAGS) $(ASNFLAGS) $(E2APFLAGS) +$(E2SM_OBJ): export CPPFLAGS = $(BASEFLAGS) $(ASNFLAGS) $(E2SMFLAGS) +$(XAPP_OBJ): export CPPFLAGS = $(BASEFLAGS) $(XAPPFLAGS) $(UTILFLAGS) $(MGMTFLAGS) $(E2APFLAGS) $(E2SMFLAGS) $(ASNFLAGS) + +$(TEST_OBJ):export CPPFLAGS=$(BASEFLAGS) $(XAPPFLAGS) $(UTILFLAGS) $(MGMTFLAGS) $(E2APFLAGS) $(E2SMFLAGS) $(ASNFLAGS) +$(TEST_OBJ) = $(TEST_HDR) $(TEST_OBJ) + + +OBJ= $(TEST_OBJ) $(UTIL_OBJ) $(MGMT_OBJ) $(ASN1C_MODULES) $(E2AP_OBJ) $(E2SM_OBJ) $(XAPP_OBJ) + +print-% : ; @echo $* = $($*) + +hw_unit_tests: $(OBJ) + $(CXX) -o $@ $(OBJ) $(LIBS) $(RNIBFLAGS) $(CPPFLAGS) $(CLOGFLAGS) + +install: hw_unit_tests + install -D hw_unit_tests /usr/local/bin/hw_unit_tests + +clean: + -rm *.o $(E2APSRC)/*.o $(UTILSRC)/*.o $(E2SMSRC)/*.o $(MGMTSRC)/*.o $(SRC)/*.o hw_unit_tests diff --git a/setup/xapp-bs-connector/test/hw_unit_tests.cc b/setup/xapp-bs-connector/test/hw_unit_tests.cc new file mode 100644 index 0000000..99187c5 --- /dev/null +++ b/setup/xapp-bs-connector/test/hw_unit_tests.cc @@ -0,0 +1,67 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +/* + * hw_unit_tests.cc + * + * Created on: Mar, 2020 + * Author: Shraboni Jana + */ + +#include +#include +#include + +#include "test_db.h" +#include "test_rmr.h" +#include "test_hc.h" +#include "test_subs.h" +#include "test_e2sm.h" + +using namespace std; + + +int main(int argc, char* argv[]) +{ + char *aux; + aux=getenv("RMR_SEED_RT"); + if (aux==NULL || *aux == '\0'){ + + char rmr_seed[80]="RMR_SEED_RT=../init/routes.txt"; + putenv(rmr_seed); + } + //get configuration + XappSettings config; + //change the priority depending upon application requirement + config.loadDefaultSettings(); + config.loadEnvVarSettings(); + + //initialize rmr + std::unique_ptr rmr = std::make_unique("38000"); + rmr->xapp_rmr_init(true); + + //create a dummy xapp + std::unique_ptr dm_xapp = std::make_unique(std::ref(config),std::ref(*rmr)); + dm_xapp->Run(); + + testing::InitGoogleTest(&argc, argv); + int res = RUN_ALL_TESTS(); + + + + return res; +} diff --git a/setup/xapp-bs-connector/test/routes.txt b/setup/xapp-bs-connector/test/routes.txt new file mode 100644 index 0000000..02fb39f --- /dev/null +++ b/setup/xapp-bs-connector/test/routes.txt @@ -0,0 +1,13 @@ +newrt|start +rte|100|127.0.0.1:4560 +rte|101|127.0.0.1:38000 +rte|20010|127.0.0.1:4560 +rte|20011|127.0.0.1:38000 +rte|20012|127.0.0.1:4560 +rte|12010|127.0.0.1:38000 +rte|12011|127.0.0.1:4560 +rte|12012|127.0.0.1:4560 +rte|12020|127.0.0.1:38000 +rte|12021|127.0.0.1:4560 +rte|12022|127.0.0.1:4560 +newrt|end diff --git a/setup/xapp-bs-connector/test/test_db.h b/setup/xapp-bs-connector/test/test_db.h new file mode 100644 index 0000000..478af92 --- /dev/null +++ b/setup/xapp-bs-connector/test/test_db.h @@ -0,0 +1,67 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +/* + * test_rnib.h + * + * Created on: Mar 23, 2020 + * Author: Shraboni Jana + */ + +#ifndef TEST_TEST_DB_H_ +#define TEST_TEST_DB_H_ + +#include +#include +#include "xapp.hpp" + +using namespace std; + +TEST(Xapp, getGNBlist) +{ + XappSettings config; + XappRmr rmr("7001"); + + Xapp hw_xapp(std::ref(config),rmr); + hw_xapp.set_rnib_gnblist(); + auto gnblist = hw_xapp.get_rnib_gnblist(); + int sz = gnblist.size(); + EXPECT_GE(sz,0); + std::cout << "************gnb ids retrieved using R-NIB**************" << std::endl; + for(int i = 0; i sdl(shareddatalayer::SyncStorage::create()); + bool res = xappsdl.set_data(sdl.get()); + ASSERT_TRUE(res); + + xappsdl.get_data(sdl.get()); + +} + + + +#endif /* TEST_TEST_DB_H_ */ diff --git a/setup/xapp-bs-connector/test/test_e2sm.h b/setup/xapp-bs-connector/test/test_e2sm.h new file mode 100644 index 0000000..2300303 --- /dev/null +++ b/setup/xapp-bs-connector/test/test_e2sm.h @@ -0,0 +1,189 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +/* + * test_asn.h + * + * Created on: Apr, 2020 + * Author: Shraboni Jana + */ + +#ifndef TEST_TEST_ASN_H_ +#define TEST_TEST_ASN_H_ +#include +#include + +#include "subscription_request.hpp" +#include "xapp.hpp" +#include "e2sm_helpers.hpp" +#include "e2sm_subscription.hpp" +#include "e2sm_indication.hpp" +#include "e2sm_control.hpp" + +using namespace std; +TEST(E2SM, SubscriptionRequest) +{ + + unsigned char event_buf[128]; + size_t event_buf_len = 128; + + unsigned char act_buf[128]; + size_t act_buf_len = 128; + + bool res; + + + e2sm_subscription_helper e2sm_subsdata; + std::unique_ptr *ranhelp; + e2sm_subscription e2sm_subs; + + + e2sm_subsdata.triger_nature = 0; + + int param_id = 1; + unsigned char param_name[20]; + strcpy((char*)param_name,"ParamName"); + int param_name_len = strlen((const char*)param_name); + + int param_test = 0; + unsigned char param_value[20]; + strcpy((char*)param_value,"ParamValue"); + int param_value_len = strlen((const char*)param_value); + + e2sm_subsdata.add_param(param_id, param_name, param_name_len, param_test, param_value, param_value_len); + + + // Encode the event trigger definition + res = e2sm_subs.encode_event_trigger(&event_buf[0], &event_buf_len, e2sm_subsdata); + if(!res) + std::cout << e2sm_subs.get_error() << std::endl; + + ASSERT_TRUE(res); + + // Encode the action defintion + res = e2sm_subs.encode_action_defn(&act_buf[0], &act_buf_len, e2sm_subsdata); + if(!res) + std::cout << e2sm_subs.get_error() << std::endl; + ASSERT_TRUE(res); + +} +TEST(E2SM, IndicationMessage) +{ + + unsigned char header_buf[128]; + size_t header_buf_len = 128; + + unsigned char msg_buf[128]; + size_t msg_buf_len = 128; + + bool res; + asn_dec_rval_t retval; + + + e2sm_indication_helper e2sm_inddata; + e2sm_indication e2sm_inds; + + unsigned char msg[20] = "HelloWorld"; + + e2sm_inddata.header = 1001; + e2sm_inddata.message = msg; + e2sm_inddata.message_len = strlen((const char*)e2sm_inddata.message); + + + // Encode the indication header + res = e2sm_inds.encode_indication_header(&header_buf[0], &header_buf_len, e2sm_inddata); + if(!res) + std::cout << e2sm_inds.get_error() << std::endl; + + ASSERT_TRUE(res); + + // Encode the indication message + res = e2sm_inds.encode_indication_message(&msg_buf[0], &msg_buf_len, e2sm_inddata); + if(!res) + std::cout << e2sm_inds.get_error() << std::endl; + ASSERT_TRUE(res); + + //decode the indication header + e2sm_indication_helper e2sm_decodedata; + + + E2SM_HelloWorld_IndicationHeader_t *header = 0; // used for decoding + retval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_IndicationHeader, (void**)&(header), &header_buf[0], header_buf_len); + + ASSERT_TRUE(retval.code == RC_OK); + res = e2sm_inds.get_fields(header, e2sm_decodedata); + + //decode the indication message + + E2SM_HelloWorld_IndicationMessage_t *mesg = 0; // used for decoding + retval = asn_decode(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_IndicationMessage, (void**)&(mesg), &msg_buf[0], msg_buf_len); + + ASSERT_TRUE(retval.code == RC_OK); + res = e2sm_inds.get_fields(mesg, e2sm_decodedata); + + + std::cout << "Indication Header:" << e2sm_decodedata.header << std::endl; + std::cout << "Indication Message:" << e2sm_decodedata.message << std::endl; + std::cout << "Indication Message Len:" << e2sm_decodedata.message_len << std::endl; + + ASSERT_EQ(e2sm_inddata.header, e2sm_decodedata.header); + ASSERT_EQ(e2sm_inddata.message_len, e2sm_decodedata.message_len); + for (int i = 0; i < e2sm_inddata.message_len; ++i) { + EXPECT_EQ(e2sm_inddata.message[i], e2sm_decodedata.message[i]) << "Encoded and Decoded Msg differ at index " << i; + } + + +} + +TEST(E2SM, ControlMessage) +{ + + unsigned char header_buf[128]; + size_t header_buf_len = 128; + + unsigned char msg_buf[128]; + size_t msg_buf_len = 128; + + bool res; + asn_dec_rval_t retval; + + + e2sm_control_helper e2sm_cntrldata; + e2sm_control e2sm_cntrl; + + unsigned char msg[20] = "HelloWorld"; + + e2sm_cntrldata.header = 1001; + e2sm_cntrldata.message = msg; + e2sm_cntrldata.message_len = strlen((const char*)e2sm_cntrldata.message); + + + // Encode the indication header + res = e2sm_cntrl.encode_control_header(&header_buf[0], &header_buf_len, e2sm_cntrldata); + if(!res) + std::cout << e2sm_cntrl.get_error() << std::endl; + + ASSERT_TRUE(res); + + // Encode the indication message + res = e2sm_cntrl.encode_control_message(&msg_buf[0], &msg_buf_len, e2sm_cntrldata); + if(!res) + std::cout << e2sm_cntrl.get_error() << std::endl; + ASSERT_TRUE(res); +} + +#endif /* TEST_TEST_ASN_H_ */ diff --git a/setup/xapp-bs-connector/test/test_hc.h b/setup/xapp-bs-connector/test/test_hc.h new file mode 100644 index 0000000..7e98043 --- /dev/null +++ b/setup/xapp-bs-connector/test/test_hc.h @@ -0,0 +1,113 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +/* + * test_a1.h + * + * Created on: Mar, 2020 + * Author: Shraboni Jana + */ + +#include +#include +#include +#include +#include +#include "xapp.hpp" +#define HC_MSG_SIZE 512 + + +using namespace std; +TEST(Xapp, RMRHealthCheck){ + + int total_num_msgs = 2; + int num_attempts = 10; + + std::unique_ptr rmr; + rmr = std::make_unique("4560",num_attempts); + rmr->xapp_rmr_init(true); + + XappSettings config; + + std::unique_ptr hw_xapp = std::make_unique(std::ref(config),std::ref(*rmr)); + + std::unique_ptr mp_handler = std::make_unique("HW-Xapp-id"); + + hw_xapp->start_xapp_receiver(std::ref(*mp_handler)); + sleep(5); + + xapp_rmr_header hdr; + hdr.message_type = RIC_HEALTH_CHECK_REQ; + char strMsg[HC_MSG_SIZE]; + + for(int i = 0; i < total_num_msgs; i++){ + snprintf(strMsg,HC_MSG_SIZE, "HelloWorld: RMR Health Check %d", i); + clock_gettime(CLOCK_REALTIME, &(hdr.ts)); + hdr.payload_length = strlen(strMsg); + + bool res = rmr->xapp_rmr_send(&hdr,(void*)strMsg); + usleep(1); + } + sleep(2); + hw_xapp->stop(); + +}; + +TEST(Xapp, A1HealthCheck){ + + //Read the json file and send it using rmr. + //string json = "{\"policy_type_id\": \"1\",\"policy_instance_id\":\"3d2157af-6a8f-4a7c-810f-38c2f824bf12\",\"operation\": \"CREATE\"}"; + string json = "{\"operation\": \"CREATE\", \"policy_type_id\": 1, \"policy_instance_id\": \"hwpolicy321\", \"payload\": {\"threshold\": 5}}"; + int n = json.length(); + char strMsg[n + 1]; + strcpy(strMsg, json.c_str()); + Document d; + d.Parse(strMsg); + + int num_attempts = 5; + + std::unique_ptr rmr; + rmr = std::make_unique("4560",num_attempts); + rmr->xapp_rmr_init(true); + + XappSettings config; + + std::unique_ptr hw_xapp = std::make_unique(std::ref(config),std::ref(*rmr)); + + std::unique_ptr mp_handler = std::make_unique("HW-Xapp-id"); + + hw_xapp->start_xapp_receiver(std::ref(*mp_handler)); + sleep(5); + + xapp_rmr_header hdr; + hdr.message_type = A1_POLICY_REQ; + clock_gettime(CLOCK_REALTIME, &(hdr.ts)); + + + hdr.payload_length = strlen(strMsg); + + bool res_msg1 = rmr->xapp_rmr_send(&hdr,(void*)strMsg); + ASSERT_TRUE(res_msg1); + + usleep(1); + + bool res_msg2 = rmr->xapp_rmr_send(&hdr,(void*)strMsg); + ASSERT_TRUE(res_msg2); + + sleep(2); + hw_xapp->stop(); +} diff --git a/setup/xapp-bs-connector/test/test_rmr.h b/setup/xapp-bs-connector/test/test_rmr.h new file mode 100644 index 0000000..fc4bf86 --- /dev/null +++ b/setup/xapp-bs-connector/test/test_rmr.h @@ -0,0 +1,107 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +/* + * test_rmr_healthcheck.h + * + * Created on: Mar, 2020 + * Author: Shraboni Jana + */ + +#ifndef TEST_TEST_RMR_H_ +#define TEST_TEST_RMR_H_ +#include +#include +#include "xapp.hpp" + +using namespace std; + +TEST(RMR, Sender){ + + int total_num_msgs = 2; + int num_attempts = 10; + + std::unique_ptr rmr; + rmr = std::make_unique("4560",num_attempts); + rmr->xapp_rmr_init(false); + + xapp_rmr_header hdr; + hdr.message_type = RIC_HEALTH_CHECK_REQ; + + for(int i = 0; i < total_num_msgs; i++){ + std::string temp="HelloWorld: RMR Health Check"+ std::to_string(i); + int n = temp.length(); + char strMsg[n+1]; + std::strcpy(strMsg,temp.c_str()); + + clock_gettime(CLOCK_REALTIME, &(hdr.ts)); + hdr.payload_length = n+1; + + bool res = rmr->xapp_rmr_send(&hdr,(void*)strMsg); + ASSERT_TRUE(res); + usleep(1); + } + ASSERT_TRUE(true); +} + TEST(RMR, Receiver){ + //initialize rmr + std::unique_ptr mp_handler = std::make_unique("HW-Xapp-id"); + XappRmr *rmr = new XappRmr("4560"); + rmr->xapp_rmr_init(false); + sleep(10); + + rmr->xapp_rmr_receive(std::move(*mp_handler), rmr); + ASSERT_TRUE(true); + }; + +TEST(RMR, SendReceiveWithMEID) { + XappSettings config; + int total_num_msgs = 2; + int num_attempts = 10; + + std::unique_ptr rmr; + rmr = std::make_unique("4560",num_attempts); + rmr->xapp_rmr_init(true); + + std::unique_ptr hw_xapp = std::make_unique(config,std::ref(*rmr)); + std::unique_ptr mp_handler = std::make_unique("HW-Xapp_ID"); + hw_xapp->start_xapp_receiver(std::ref(*mp_handler)); + + xapp_rmr_header hdr; + //can be any message type. using as an example + hdr.message_type = RIC_SUB_RESP; + memset(hdr.meid,0,32); + string meid = "NYC123"; + strcpy(reinterpret_cast(hdr.meid), meid.c_str()); + + for(int i = 0; i < total_num_msgs; i++){ + std::string temp="HelloWorld: RMR Health Check"+ std::to_string(i); + int n = temp.length(); + char strMsg[n+1]; + std::strcpy(strMsg,temp.c_str()); + + clock_gettime(CLOCK_REALTIME, &(hdr.ts)); + hdr.payload_length = n+1; + + bool res = rmr->xapp_rmr_send(&hdr,(void*)strMsg); + ASSERT_TRUE(res); + usleep(1); + } + sleep(1); + hw_xapp->stop(); +} +#endif /* TEST_TEST_RMR_H_ */ diff --git a/setup/xapp-bs-connector/test/test_subs.h b/setup/xapp-bs-connector/test/test_subs.h new file mode 100644 index 0000000..2c33d55 --- /dev/null +++ b/setup/xapp-bs-connector/test/test_subs.h @@ -0,0 +1,64 @@ +/* +================================================================================== + + Copyright (c) 2019-2020 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================== +*/ +#ifndef TEST_TEST_SUBS_H_ +#define TEST_TEST_SUBS_H_ + +#include +#include +#include "xapp.hpp" +#define BUFFER_SIZE 1024 + +using namespace std; +//generating a E2AP Subscription Message +TEST(SUBSCRIPTION, Request){ + + + subscription_helper din; + subscription_helper dout; + + subscription_request sub_req; + subscription_request sub_recv; + + unsigned char buf[BUFFER_SIZE]; + size_t buf_size = BUFFER_SIZE; + bool res; + + + //Random Data for request + int request_id = 1; + int function_id = 0; + std::string event_def = "HelloWorld Event Definition"; + + din.set_request(request_id); + din.set_function_id(function_id); + din.set_event_def(event_def.c_str(), event_def.length()); + + std::string act_def = "HelloWorld Action Definition"; + + din.add_action(1,1,(void*)act_def.c_str(), act_def.length(), 0); + + res = sub_req.encode_e2ap_subscription(&buf[0], &buf_size, din); + ASSERT_TRUE(res); + + + +} + + +#endif /* TEST_TEST_SUBS_H_ */ diff --git a/setup/xapp-bs-connector/test/xapp_env.sh b/setup/xapp-bs-connector/test/xapp_env.sh new file mode 100755 index 0000000..fe297a5 --- /dev/null +++ b/setup/xapp-bs-connector/test/xapp_env.sh @@ -0,0 +1,14 @@ +#! /bin/bash + +export RMR_SEED_RT="../init/routes.txt" +export RMR_RTG_SVC="9999" +export MSG_MAX_BUFFER="2072" +export THREADS="1" +export VERBOSE="0" +export CONFIG_FILE="config/config-file.json" +export XAPP_ID="3489-er492k-92389" +export LOG_LEVEL="MDCLOG_ERR" +export DBAAS_SERVICE_HOST="127.0.0.1" +export DBAAS_SERVICE_PORT="6379" + + diff --git a/setup/xapp-bs-connector/tox.ini b/setup/xapp-bs-connector/tox.ini new file mode 100644 index 0000000..e1a2967 --- /dev/null +++ b/setup/xapp-bs-connector/tox.ini @@ -0,0 +1,34 @@ +# This work is licensed under a Creative Commons Attribution 4.0 International License. +# SPDX-License-Identifier: CC-BY-4.0 +# Copyright (C) 2020 AT&T Intellectual Property +# documentation only + +[tox] +minversion = 2.0 +envlist = + docs, + docs-linkcheck, +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = + sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf + +commands = + sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html + echo "Generated docs available in {toxinidir}/docs/_build/html" +whitelist_externals = echo + +[testenv:docs-linkcheck] +basepython = python3 +deps = sphinx + sphinx-rtd-theme + sphinxcontrib-httpdomain + recommonmark + lfdocs-conf +commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck